二重のモメンタム戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-28 15:03:57
タグ:

概要

ダブルモメント戦略は,エントリーとアウトシグナルを生成するために,速いおよび遅いモメント指標を使用する.これは,日用および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)








もっと