ダブルインデックス移動平均モメンタムクロスオーバー定量取引戦略

TEMA EMA SMA MA RSI
作成日: 2025-01-06 13:53:11 最終変更日: 2025-01-06 13:53:11
コピー: 1 クリック数: 348
1
フォロー
1617
フォロワー

ダブルインデックス移動平均モメンタムクロスオーバー定量取引戦略

概要

この戦略は、三重指数移動平均 (TEMA) に基づいたトレンド追跡取引システムです。この戦略は、短期 TEMA と長期 TEMA のクロスオーバー信号を比較することで市場動向を捉え、ボラティリティ ストップを組み合わせることでリスクを管理します。この戦略は 5 分間の時間枠で実行され、シグナル生成の基礎として 300 期間および 500 期間の TEMA インジケーターを使用します。

戦略原則

戦略の中核となるロジックは、次の主要な要素に基づいています。

  1. 2つの異なる期間(300と500)のTEMAインジケーターを使用してトレンドの方向を特定する
  2. 短期TEMAが長期TEMAを上向きに交差すると、システムはロングシグナルを生成します。
  3. 短期TEMAが長期TEMAを下向きに交差すると、システムはショートシグナルを生成します。
  4. 10期間の高値と安値を使用してストップロスポジションを設定します
  5. 市場に参入した後、ポジションを閉じる前に反転シグナルが表示されるまでポジションを保持します。

戦略的優位性

  1. 強力な信号安定性: より長い期間のTEMAを使用すると、市場のノイズを効果的にフィルタリングし、誤った信号を減らすことができます。
  2. 完璧なリスク管理:ボラティリティストップロスと組み合わせることで、単一取引のリスクを効果的に管理できます。
  3. 強力なトレンド把握能力:TEMAは従来の移動平均よりも早くトレンドに反応します
  4. 完全な取引ループ: 明確なエントリー、ストップロス、利益確定条件を含む
  5. 強力なパラメータ調整機能:市場特性に応じて主要パラメータを柔軟に調整可能

戦略リスク

  1. 不安定な市場のリスク: 横ばいで不安定な市場では誤ったシグナルが簡単に生成され、継続的な損失につながります。
  2. スリッページリスク: 5分サイクルは急激な変動時に大きなスリッページが発生する可能性がある
  3. ファンド管理リスク: 固定ポイントのストップロスは、変動の激しい時期に過度の損失を引き起こす可能性があります。
  4. シグナルラグ: TEMAインジケーター自体には一定のラグがあり、最適なエントリーポイントを逃す可能性があります。
  5. パラメータ感度: 最適なパラメータは市場環境によって大きく異なります。

戦略最適化の方向性

  1. 市場環境の認識を高める: トレンドの強さの指標を追加し、さまざまな市場環境で異なるパラメータを使用します。
  2. ストップロス方式の最適化: ストップロスの適応性を向上させるために、ATR ダイナミック ストップロスの使用を検討します。
  3. ポジション管理の改善:トレンドの強さに応じてオープンポジションの数を動的に調整します。
  4. 早期警告メカニズムの強化:重要な価格位置で早期警告シグナルを発する
  5. ボリュームインジケーターを追加: ボリュームを組み合わせて信号の有効性を確認します

要約する

この戦略は、TEMA インジケーターのクロスオーバーを通じてトレンドを捉え、動的なストップロスでリスクを管理する完全なトレンド追跡システムです。この戦略は、明確な論理、簡単な実装、優れた実用性を備えています。ただし、実際の取引では、市場環境の識別とリスク管理に注意を払う必要があり、バックテストの検証に基づいて実際の市場状況に応じてパラメータを最適化することをお勧めします。

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("TEMA Strategy for Gold", overlay=true)

// Inputs
tema_short_length = input.int(300, title="Short TEMA Length")
tema_long_length = input.int(500, title="Long TEMA Length")
pip_value = input.float(0.10, title="Pip Value (10 pips = 1 point for Gold)")

// Calculate TEMA
tema_short = ta.ema(2 * ta.ema(close, tema_short_length) - ta.ema(ta.ema(close, tema_short_length), tema_short_length), tema_short_length)
tema_long = ta.ema(2 * ta.ema(close, tema_long_length) - ta.ema(ta.ema(close, tema_long_length), tema_long_length), tema_long_length)

// Plot TEMA
plot(tema_short, color=color.blue, title="300 TEMA")
plot(tema_long, color=color.red, title="500 TEMA")

// Crossover conditions
long_condition = ta.crossover(tema_short, tema_long)
short_condition = ta.crossunder(tema_short, tema_long)

// Calculate recent swing high/low
swing_low = ta.lowest(low, 10)
swing_high = ta.highest(high, 10)

// Convert pips to price
pip_adjustment = pip_value * syminfo.mintick

// Long entry logic
if (long_condition and strategy.position_size == 0)
    stop_loss_long = swing_low - pip_adjustment
    strategy.entry("Long", strategy.long)
    label.new(bar_index, swing_low, style=label.style_label_down, text="Buy", color=color.green)

// Short entry logic
if (short_condition and strategy.position_size == 0)
    stop_loss_short = swing_high + pip_adjustment
    strategy.entry("Short", strategy.short)
    label.new(bar_index, swing_high, style=label.style_label_up, text="Sell", color=color.red)

// Exit logic
if (strategy.position_size > 0 and short_condition)
    strategy.close("Long")
    label.new(bar_index, high, style=label.style_label_up, text="Exit Long", color=color.red)

if (strategy.position_size < 0 and long_condition)
    strategy.close("Short")
    label.new(bar_index, low, style=label.style_label_down, text="Exit Short", color=color.green)