ダブル移動平均取引戦略は,異なるサイクルを持つ2つの移動平均線を使用して取引信号を構築する定量的な取引戦略である.この戦略は,2つの移動平均線間の関係を計算することによって市場動向と機会を判断し,トレンド市場での良好な追跡性能を持っています.
この戦略が利用するコアテクニックは,2つの移動平均線の分析である.この戦略は5日間の短周期移動平均線ma0と21日間の長周期移動平均線ma1を定義する.価格とma0との間の差値osc0とma0とma1との間のosc1を比較することによって,戦略は現在のトレンドの状態を決定する.
osc0>0 と osc1>0 の場合,短期移動平均線が長期線を超越し,上昇傾向を示す. osc0<0 と osc1<0 の場合,短期線が下を横切って,低下傾向を示す. 戦略は上昇傾向が特定されたときにロングポジションと,低下傾向が特定されたときにショートポジションを取ります.
ポジションを取った後,戦略はポジションの利益範囲を判断するために,OSC0とOSC1のリアルタイム変化を監視し続けます.ロングポジションを取った後,OSC0<0とOSC1<0の場合,トレンド逆転を意味し,ロングポジションは閉鎖されるべきです.ショートポジションを取った後,OSC0>0とOSC1>0の場合,また逆転を意味し,ショートポジションは閉鎖されるべきです.
二重移動平均取引戦略には以下の利点があります.
シンプルな原則と理解し実行しやすいので,量子取引の初心者にとって適しています.
トレンドフォロワーで 良質な利益を得て トレンド市場を追跡する能力
移動平均値のサイクルパラメータは,異なる市場条件に調整できます.
他の指標や戦略と組み合わせて より大きな利益を得ることができます
この戦略にはいくつかのリスクもあります:
トレンドが逆転すると,ポジションを間に合って退場できない場合,大きな損失につながる可能性があります.
利回り市場では,ストップロスの頻度が高いため,利益を得ることは困難です.
5日サイクルや21日サイクルなどのパラメータを最適化するのは難しい
遅れた取引信号や 遅れた市場参入が 利潤率に影響を及ぼす可能性があります
二重移動平均取引戦略は,次の側面から最適化することができます:
VOLと組み合わせて,実際のトレンド開始を確認し,偽のブレイクを避ける.
信号の信頼性を確保するために 価格ブレイクやボリューム拡大などのフィルターを追加します
時間をかけて損失を削減するために動的停止を設定する.
移動平均差の
移動平均のサイクルを自動最適化するために 機械学習を利用します
結論として,ダブル移動平均取引戦略は,非常に古典的で実践的なトレンドフォロー戦略です. 練習する初心者にとってシンプルな論理があり,トレンドを追跡するのが上手で,他の技術と組み合わせるのに非常に拡張性があります. しかし,いくつかの欠点もあります. 特殊な市場条件に対処し,リスクを軽減し,安定性を向上させるためにさらなる最適化が必要です.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("[STRATEGY][RS]MA Strategy test V0", overlay=true) length0 = input(5) length1 = input(21) isinsession = not na(time('1', '0400-1500')) price = open ma0 = ema(ema(price, length0), length0) ma1 = ema(ema(price, length1), length1) plot(ma0, color=navy) plot(ma1, color=black) osc0 = price-ma0 osc1 = ma0-ma1 isbull = osc0 > 0 and osc1 > 0 buy_condition = isinsession and isbull and not isbull[1] buy_exit_condition = osc0 < 0 and osc1 < 0 strategy.entry("buy", strategy.long, comment="buy", when=buy_condition) strategy.close(id='buy', when=buy_exit_condition) isbear = osc0 < 0 and osc1 < 0 sell_condition = isinsession and isbear and not isbear[1] sell_exit_condition = osc0 > 0 and osc1 > 0 strategy.entry("sell", strategy.short, comment="sell", when=sell_condition) strategy.close(id='sell', when=sell_exit_condition) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)