[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

# トヨタの株価データを取得
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

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はボリンジャーバンド、RSI、MACDなど、150以上のテクニカル指標を提供しています。今後のこのシリーズでこれらの他の指標について詳しく取り上げる予定です。
  3. ゴールデンクロスまたはデッドクロスがいつ発生するかをどうやって知ることができますか?
    • ゴールデンクロスとデッドクロスは、それぞれ短期移動平均線が長期移動平均線の上または下に交差する場合に発生します。提供されたコード例を使用して、これらのシグナルを特定することができます。
  4. 初心者の投資家にとって有用な他のテクニカル指標は?
    • 初心者の投資家にとって、RSI(相対強弱指数)、MACD(移動平均収束発散)、ボリンジャーバンドなどの指標が価値があるかもしれません。これらの指標は、価格の相対強さと変動性を測定するので、移動平均と併用することで市場のさまざまな側面を分析するのに役立ちます。
  5. 移動平均線分析のみを使用する限界はありますか? それを他の分析方法とどのように組み合わせるべきか?
    • 移動平均線は一般的な市場のトレンドを識別するのに役立ちますが、複雑な市場状況や特定のイベントを分析する際の制限があるかもしれません。それらを根本分析、他のテクニカル指標、経済指標などと補完することが望ましいでしょう。さまざまな分析方法の組み合わせにより、市場の多面的な側面のより正確な理解と予測が可能になります。
© Copyright 2023 CLONE CODING