
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
創新從一行代碼開始!