TA-Lib 是金融市場分析的重要工具,協助計算各種指標。要介紹 TA-Lib,請參閱[TA-Lib] #1 探索技術分析與TA-Lib的基本概念,有關安裝指南,請查閱[TA-Lib] #2: 技術分析的TA-Lib安裝。關於如何使用 yahooquery 檢索價格資料的指引,可在[Python] Yahooquery:取得和管理過去股票和財務數據找到。
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
利用移動平均,能分析市場整體趨勢。
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天的市場趨勢。若移動平均連續上升,則被分類為上升趨勢;若下降則為下降趨勢。
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天的短期、中期和長期移動平均,以分析市場趋势。
這種方法通過考慮每個移動平均的變化,優势在於能夠理解整體市場狀況,並精確分析和細分上升和下降趨勢。可以使用不同的期間和移動平均指標進行更精緻的分析,允許在投資策略中靈活應用。
黃金交叉是指短期移動平均線突破長期移動平均線之時。以下代碼展示了如何找到黃金交叉的情況。
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} 天")
死亡交叉是指短期移動平均線跌破長期移動平均線之時。以下代碼是查找死亡交叉的示例。
# 發現死亡交叉
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 進行市場分析,能夠為投資人提供關鍵資訊。從簡單的移動平均線到如黃金交叉和死亡交叉等複雜指標,各種方法均可分析市場趨勢和變化。這些洞察有助於更精確地規劃和執行投資策略,並理解微妙的市場動態。
[TA-Lib] #7: 了解及應用RSI(相對強度指數) |
---|
[TA-Lib] #6: 使用TA-Lib分析和計算MACD |
[TA-Lib] #5 MACD - 如何理解 MACD 指標及其在市場趨勢中的角色 |
[TA-Lib] #4:利用TA-Lib進行移動平均線分析 - 偵測市場趨勢並捕捉黃金交叉與死亡交叉 |
[TA-Lib] #3: 市場趨勢理解 - 短期、中期、長期移動平均線及黃金交叉與死亡交叉 |
CloneCoding
創新從一行代碼開始!