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
# トヨタの株価データを取得
toyota = Ticker("7203.T")
price_data = toyota.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': sma,
'EMA': ema,
'WMA': wma
})
print(result.tail())
終値 SMA EMA WMA
487 2395.5 2339.800 2361.016998 2382.290476
488 2429.0 2351.350 2367.491570 2390.785714
489 2408.0 2361.175 2371.349515 2396.180952
490 2419.0 2371.225 2375.887657 2401.688095
491 2370.5 2377.750 2375.374547 2401.619048
移動平均を活用することで、市場全体のトレンドの分析が可能となります。
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を利用した市場分析は、投資家にとって重要な情報を提供することができます。単純な移動平均から、ゴールデンクロスやデッドクロスなどの複雑な指標に至るまで、さまざまな方法で市場のトレンドと変動を分析することができます。この洞察は、投資戦略の計画と実施をより正確に行い、微細な市場の動きを理解するのに役立ちます。
CloneCoding
1行のコードから始まる革新!