ダブル移動平均クロスオーバー戦略 - EMA9/20


作成日: 2024-03-08 15:22:50 最終変更日: 2024-03-08 15:22:50
コピー: 0 クリック数: 793
1
フォロー
1617
フォロワー

ダブル移動平均クロスオーバー戦略 - EMA9/20

戦略概要

双均線交差戦略 - EMA9/20は,2つの指標の移動平均 ((EMA) の交差に基づく量化取引戦略である.この戦略は,9日EMAと20日EMAを取引信号として使用し,両均線交差時に買入または売り出し信号を生成する.同時に,この戦略は,価格と9日EMAの交差を補助信号として使用し,移動ストップを取引リスクを管理する.

戦略原則

この戦略の核心原則は,二つの異なる周期の指標移動平均の交差を利用して市場トレンドを捕捉することである.短期平均線 ((9日EMA) の上での長期平均線 ((20日EMA) の穿越は,市場が上昇傾向に入ると示唆するときに,戦略は買入シグナルを生成する.逆に,短期平均線の下での長期平均線の穿越は,市場が下向き傾向に入ると示唆するときに,戦略は売り出しシグナルを生成する.

均線交差信号に加えて,この戦略は,価格と短期平均線 ((9日EMA) の交差を補助信号として導入している.価格が上を9日EMA穿越すると,買いの信号も発生し,価格が下を9日EMA穿越すると,売りの信号も発生する.こうして,市場傾向の変化をより間に合うように捉えることができる.

リスクをコントロールするために,この戦略は移動ストップの方法を使用する.取引が利益状態に入ると,移動ストップは価格の変化に合わせて止損位置を継続的に調整し,価格が逆転して止損位置を破るまで,利益をロックし,潜在的な損失を制限する.

戦略的優位性

  1. シンプルで理解しやすい:この戦略は古典的な均線交差原理に基づいています. 論理は明確で,理解しやすく,実行できます.

  2. トレンド・トラッキング:この戦略は,2つの異なる周期の均線交差によって,市場の主要なトレンドを効果的に捉えます.

  3. タイムリーストップ:移動ストップの導入により,トレンドが逆転した時にタイムリーでポジションをクリアし,下行リスクをコントロールできます.

  4. パラメータの柔軟性:この戦略のパラメータ (例えば平均線周期,ストップポイント数など) は,異なる市場および品種に応じて,異なる市場環境に対応するために最適化および調整することができます.

戦略リスク

  1. 頻繁に取引:この戦略は均線交差と価格交差の両方のシグナルを使用しているため,取引頻度が高くなり,取引コストが増加する可能性があります.

  2. 振動市場:市場の振動や収束時に,この戦略はより多くの誤信号を生じ,利益レベルが低下する可能性があります.

  3. パラメータに敏感である:この戦略のパフォーマンスは,パラメータの選択に敏感であり,異なるパラメータは,まったく異なる結果をもたらす可能性があります.

最適化の方向

  1. 信号フィルタリング:均線交差と価格交差の信号に基づいて,他の技術指標 (RSI,MACDなど) をフィルタリング条件として導入し,誤った信号を減らす.

  2. ダイナミックパラメータ:市場の変動率,トレンドの強さなどの要因に応じて,ダイナミックに戦略パラメータを調整する (平均線周期,ストップポイント数など),異なる市場状態に適応する.

  3. ポジション管理:市場の傾向と信号の強さに応じて,ポジションの大きさを動的に調整し,トレンドの強度が大きいときにポジションを大きくし,トレンドが不明瞭または信号が弱いときにポジションを小さくします.

  4. 多品種適応: 多品種と市場に戦略を拡大し,分散投資と関連性分析により,全体的なリスクを軽減し,収益の安定性を向上させる.

要約する

双均線交差策略-EMA9/20は,市場動向を2つの異なる周期均線の交差と価格交差によって捉え,移動のストップロスを使用してリスクを制御する簡単な実用的な量化取引策である.この戦略の論理は明確で,理解しやすく,実装し,初心者の学習と使用に適しています.しかし,この戦略には,不安定な市場でのパフォーマンスが悪く,対数パラメータの選択が敏感であるなど,いくつかの限界があります.したがって,実際のアプリケーションでは,特定の市場と品種特性の必要に応じて,戦略の最適化と改善が行われます.

ストラテジーソースコード
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy(title = "EMAs 9 / 20",
		 shorttitle = '9/20 EMAs', 
		 initial_capital = 1000,
		 overlay = true, 
		 default_qty_type = strategy.fixed,
		 commission_type = strategy.commission.cash_per_contract,
		 commission_value = 0.35,
		 default_qty_value = 1)


int trailOffset = 10
int trailPoints = 15


series float oEma9 = ta.ema(ohlc4, 9)
series float oEma20 = ta.ema(ohlc4, 20)

series bool closeCrossoverEma9 = ta.crossover(close, oEma9)
series bool closeCrossunderEma9 = ta.crossover(close, oEma9)

series bool nineCrossover20 = ta.crossover(oEma9, oEma20)
series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20)

//Entry Exits

if nineCrossover20
    strategy.entry("Long 9Cross20", strategy.long, 2)
else if closeCrossoverEma9
    strategy.entry("Long 9CrossClose", strategy.long, 2)
    strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossunder20
    strategy.close("Long 9Cross20")
    
    

if nineCrossunder20
    strategy.entry("Short 9Cross20", strategy.short, 2)
else if closeCrossunderEma9
    strategy.entry("Short 9CrossClose", strategy.short, 2)
    strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossover20
    strategy.close("Short 9Cross20")