デュアルモメンタム戦略


作成日: 2023-09-28 15:03:57 最終変更日: 2023-09-28 15:03:57
コピー: 2 クリック数: 715
1
フォロー
1617
フォロワー

概要

双動量戦略は,取引信号と退出信号を生成するために,快速と遅速の2つの動量指標を使用する.これは,日線と4時間線のトレンドの品種に適用される迅速に対応する戦略である.この戦略の実装方法は,QuantCTアプリケーションから来ている.

操作モードを多空または多頭のみに設定できます.

また,固定ストップまたはストップを無視して,入場と出場の信号のみに基づいて戦略を実行することもできます.

戦略原則

この戦略は,高速周期 ((デフォルト5日) と遅い周期 ((デフォルト10日) の動力指標を使用する.

スローモーションと高速モーションが同時に0より大きいとき,多信号が生成される.

スローモーションまたはラストモーションが0未満であるとき,平仓信号を生成する。

同様に,スローモーションと高速モーションが同時に0未満であるとき,空き信号が生成する.スローモーションまたは高速モーションが0以上であるとき,平仓信号が生成する.

この戦略は,2つの異なる周期動力の交差を利用して,トレンドの変化を捉え,トレンド追跡を実現します.

優位分析

  • 双動量指標を使用すると,市場トレンドの変化をより正確に捉え,偽信号を減らすことができます.

  • 急速周期動力は,市場の変化に敏感で,トレンドに迅速に反応する.遅い周期は,市場の騒音をフィルターし,取引方向を正しく確保する.

  • 柔軟な選択により,多方向または双方向の取引のみを行い,異なる取引の好みに応じることができます.

  • ストップ・ロスを使用するかどうかを選択し,リスクを制御する.

  • この戦略は反応に敏感であり,特に日線またはより高い周期のトレンド取引に適しており,余分な利益を得ることができます.

リスク分析

  • 双動量策のトレンド判断は,指標値が0以上または0未満であることに依存し,一定の遅れがある.

  • この戦略はトレンド依存的であり,市場を整理する際に不十分なパフォーマンスを発揮し,取引過多を発生させ,取引費用を増加させる可能性が高い.

  • ストップ・ロスを使用しない場合,単一の損失のリスクが大きい.

  • 適切な品種と周期が正しくない場合でも 戦略がうまくいかないのです

リスクを制御するために,運動量周期パラメータを適切に調整し,合理的な固定ストップレッセンスを設定することをお勧めします. 明らかにトレンドしている品種を選択し,日線またはより高い周期でこの戦略を実行します.

最適化の方向

この戦略は以下の点で最適化できます.

  1. MACDやRSIなどの他の指標のフィルタを追加し,トレンドの転換点での誤った取引を避ける.

  2. 市場変動に応じて,自主的なストップを動的に調整する自己適応のストップメカニズムを追加する.

  3. 動量パラメータを最適化して,異なる品種に適したパラメータの組み合わせを見つけます. ステップ・フォーワード・最適化,ウォーク・フォワード・アナリストなどの方法によって実現できます.

  4. ポジション管理機構を追加し,前期収益状況に応じて新しいポジションのサイズを調整する.

  5. 多頭市場と空頭市場を区別し,不対称な出場戦略をとる.空頭市場はより激進的で,多頭市場はより慎重である.

要約する

双動量戦略は,急速と遅い動量指標の交差判断によってトレンドの方向を判断し,市場トレンドの変化を捉える簡単な指標を使用し,内日または日間の明らかなトレンドを追跡するのに適した,優れた余剰収益を得ることができます. 同時に,この戦略には,一定の遅れのリスクがあり,リスクを制御するためにストップと他の指標と組み合わせて,品種とパラメータに最適化して,より安定したパフォーマンスを得ます.

ストラテジーソースコード
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © QuantCT

//@version=4
strategy("Momentum Strategy Idea",
         shorttitle="Momentum", 
         overlay=false,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)

// ____ Inputs

fast_period = input(title="Fast Period", defval=5) 
slow_period = input(title="Slow Period", defval=10)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

mom_fast = mom(close, fast_period)
mom_slow = mom(close, slow_period)
    
enter_long = (mom_slow > 0 and mom_fast > 0)
exit_long = (mom_slow < 0 or mom_fast < 0)
enter_short = (mom_slow < 0 and mom_fast < 0)
exit_short = (mom_slow > 0 or mom_fast > 0)

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 
   
// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)
    
// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

mom_fast_plot = plot(mom_fast, color=colors)
mom_slow_plot = plot(mom_slow, color=colors)
fill(mom_fast_plot, mom_slow_plot, color=colors, transp=50)