[TA-Lib] #4:利用TA-Lib進行移動平均線分析 - 偵測市場趨勢並捕捉黃金交叉與死亡交叉

使用 TA-Lib 實現移動平均

TA-Lib 是金融市場分析的重要工具,協助計算各種指標。要介紹 TA-Lib,請參閱[TA-Lib] #1 探索技術分析與TA-Lib的基本概念,有關安裝指南,請查閱[TA-Lib] #2: 技術分析的TA-Lib安裝。關於如何使用 yahooquery 檢索價格資料的指引,可在[Python] Yahooquery:取得和管理過去股票和財務數據找到。

移動平均的計算及代碼示例

python
from yahooquery import Ticker
import talib
import pandas as pd

# 檢索台積電的股票數據
tsmc = Ticker("2330.TW")
price_data = tsmc.history(period="2y")
close_prices = price_data['close'].values

# 計算簡單移動平均
sma = talib.SMA(close_prices, timeperiod=20)

# 計算指數移動平均
ema = talib.EMA(close_prices, timeperiod=20)

# 計算加權移動平均
wma = talib.WMA(close_prices, timeperiod=20)

# 顯示結果
result = pd.DataFrame({
    '收盤價': close_prices,
    '簡單移動平均': sma,
    '指數移動平均': ema,
    '加權移動平均': wma
})
print(result.tail())
       收盤價  簡單移動平均      指數移動平均      加權移動平均
482  551.0  567.95  563.569840  561.909524
483  546.0  566.00  561.896522  559.819048
484  541.0  563.50  559.906377  557.438095
485  542.0  561.05  558.201008  555.390476
486  542.0  559.10  556.658055  553.576190

使用 TA-Lib 進行市場趨勢分析

利用移動平均,能分析市場整體趨勢。

python
last_5_sma = sma[-5:]

# 上升趨勢確認
if all(last_5_sma[i] < last_5_sma[i + 1] for i in range(4)):
    print("市場呈現上升趨勢。")
# 下降趨勢確認
elif all(last_5_sma[i] > last_5_sma[i + 1] for i in range(4)):
    print("市場呈現下降趨勢。")
else:
    print("市場趋势平稳。")

此範例中,利用移動平均分析最近5天的市場趨勢。若移動平均連續上升,則被分類為上升趨勢;若下降則為下降趨勢。

python
sma5 = talib.SMA(close_prices, timeperiod=5)
sma20 = talib.SMA(close_prices, timeperiod=20)
sma60 = talib.SMA(close_prices, timeperiod=60)

# 假設:最近5天的短期、中期、長期移動平均
short_ma_last_5 = sma5[-5:]
mid_ma_last_5 = sma20[-5:]
long_ma_last_5 = sma60[-5:]

# 連續上升的移動平均確認
is_short_ma_rising = all(x < y for x, y in zip(short_ma_last_5, short_ma_last_5[1:]))
is_mid_ma_rising = all(x < y for x, y in zip(mid_ma_last_5, mid_ma_last_5[1:]))
is_long_ma_rising = all(x < y for x, y in zip(long_ma_last_5, long_ma_last_5[1:]))

# 趨勢分析
if is_short_ma_rising and is_mid_ma_rising and is_long_ma_rising:
    print("強勢上升趨勢")
elif is_short_ma_rising:
    print("短期上升趨勢")
elif is_long_ma_rising:
    print("長期上升趨勢")
else:
    print("趋势尚不明确")

此範例比較最近5天的短期、中期和長期移動平均,以分析市場趋势。

  • 通過確認每個移動平均是否連續上升,可以識別上升趋势。若短期、中期、和長期移動平均全部上升,則被視為強勢上升趋势;若僅短期上升,則為短期上升趋势;若僅長期上升,則為長期上升趋势。
  • 若為下降趨勢,則根據下降的短期、中期、長期移動平均進一步分類趨勢。
  • 若趋势不明確,即部分短期、中期、長期移動平均上升或下降,可能需要進一步分析。

這種方法通過考慮每個移動平均的變化,優势在於能夠理解整體市場狀況,並精確分析和細分上升和下降趨勢。可以使用不同的期間和移動平均指標進行更精緻的分析,允許在投資策略中靈活應用。

利用 TA-Lib 分析黃金交叉與死亡交叉

黃金交叉

展示過去一年台積電的黃金交叉和死亡交叉的股價圖表
此圖表描述了台積電最近一年的價格走勢,標記了黃金和死亡交叉發生的點。這些信號有助於預測股市趨勢的反轉。

黃金交叉是指短期移動平均線突破長期移動平均線之時。以下代碼展示了如何找到黃金交叉的情況。

python
short_sma = talib.SMA(close_prices, timeperiod=20)
long_sma = talib.SMA(close_prices, timeperiod=60)

# 發現黃金交叉
for i in range(1, len(close_prices)):
    if short_sma[i] > long_sma[i] and short_sma[i-1] <= long_sma[i-1]:
        print(f"黃金交叉確認: 第 {i} 天")

死亡交叉

死亡交叉是指短期移動平均線跌破長期移動平均線之時。以下代碼是查找死亡交叉的示例。

python
# 發現死亡交叉
for i in range(1, len(close_prices)):
    if short_sma[i] < long_sma[i] and short_sma[i-1] >= long_sma[i-1]:
        print(f"死亡交叉確認: 第 {i} 天")

運用移動平均線與 TA-Lib 進行市場分析,能夠為投資人提供關鍵資訊。從簡單的移動平均線到如黃金交叉和死亡交叉等複雜指標,各種方法均可分析市場趨勢和變化。這些洞察有助於更精確地規劃和執行投資策略,並理解微妙的市場動態。


常見問答

  1. 我如何安裝 TA-Lib?
  2. 除了移動平均線,我還可以使用 TA-Lib 計算哪些指標?
    • TA-Lib 提供超過 150 項技術指標,包括布林帶、相對強弱指數、MACD 等。請密切關注本系列,我們計劃詳細介紹這些其他指標。
  3. 我如何知道何時出現黃金交叉或死亡交叉?
    • 黃金交叉和死亡交叉是短期移動平均線突破或跌破長期移動平均線時發生的。您可以使用所提供的代碼範例來識別這些信號。
  4. 對於初學投資者來說,還有哪些技術指標可能有用?
    • 對於初學投資者,像相對強弱指數、移動平均匯聚分歧和布林帶等指標可能很有價值。這些措施評估價格的相對強度和波動性,因此將它們與移動平均線一同使用可有助於分析市場的各個方面。
  5. 僅使用移動平均線分析有限制嗎?應該如何與其他分析方法結合?
    • 雖然移動平均線有助於辨識一般市場趨勢,但在分析複雜市場情況或特定事件方面可能存在限制。建議將它們與基本分析、其他技術指標、經濟指標等相結合,以建立全面的投資策略。結合各種分析方法可以更準確地理解和預測市場的多元方面。
© Copyright 2023 CLONE CODING