モメンタム反転戦略


作成日: 2023-12-12 17:25:08 最終変更日: 2023-12-12 17:25:08
コピー: 1 クリック数: 639
1
フォロー
1621
フォロワー

モメンタム反転戦略

概要

この戦略は,価格の動力の指標を計算して,価格の移動傾向が逆転しているかどうかを判断し,価格の逆転の機会を捕捉する. 価格の上昇傾向が緩やかになったり,価格の下降傾向が緩やかになったりすると,価格の動力が逆転していることを示し,戦略は多額のポジションを開くか空白にする.

戦略原則

この戦略は主に動向指標の計算に基づいています.動向指標は価格の変化の速度と強さを反映しています.戦略では,MOMとMOM1の2つの動向指標が計算されています.

MOMの計算式は

MOM = 当日の閉店価格 - N日前の閉店価格

MOM1の計算式は

MOM1 = 今日のMOM - 昨日のMOM

MOMとMOM1の値に基づいて,価格が反転したかどうかを判断する.MOM > 0とMOM1 < 0であれば,価格上昇傾向が鈍化し,反転信号が発生し,多めにする.MOM < 0とMOM1 > 0であれば,価格下降傾向が鈍化し,反転信号が発生し,空きをする.

戦略的優位性

  1. 価格の逆転を捉え,市場に入れる
  2. 引き下がり,追いつくのは避けよう
  3. 自動ストップでリスクを減らす

戦略リスク

  1. 価格の変動により,しばしばポジションの開閉が起こりうる.
  2. パラメータが設定されておらず,価格の逆転点を正確に判断できない
  3. 市場の突発が誤った信号をもたらした

主なリスク緩和策は

  1. パラメータを最適化して判断の精度を向上させる
  2. 他の指標と組み合わせたフィルター信号
  3. 市場異常による損失を回避する人為的介入

戦略最適化の方向性

  1. 運動指数パラメータを最適化し,反転時刻を把握する
  2. 取引量などの指標をフィルタリングし,誤信号を回避する.
  3. 単一損失を減らすために Stop Loss Strategies に加わります

要約する

この戦略は,価格動量指標を計算して,価格移動の傾向が逆転するかどうかを判断し,自動で多空を行うことができる.反省は,この戦略は全体的に順調に動作し,価格逆転点を効果的に捉えていることを示している.最適化パラメータ設定,信号フィルタを追加するなどの方法により,戦略の安定性と収益率をさらに向上させることができる.

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

//@version=4
strategy("Momentum - Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_type = strategy.commission.percent, commission_value = 0.2 )

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2

if (mom0 > 0 and momX > 0)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0)
	strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
	strategy.cancel("MomSE")

plot(mom0, color = #0000FF, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")