勢いを逆転させる戦略

作者: リン・ハーンチャオチャン,日付: 2023年12月12日 17:25:08
タグ:

img

概要

この戦略は,価格トレンドが逆転したかどうかを判断するために,価格トレンドの動力指標を計算し,価格逆転の機会を把握します.価格の上昇傾向または下落傾向が遅くなると,価格トレンドが逆転したことを示します.この時点で,戦略はロングまたはショートポジションを開きます.

戦略の論理

この戦略は主にモメンタム指標の計算に基づいている.モメンタム指標は価格変動の速度と強さを反映している.戦略では2つのモメンタム指標MOMとMOM1が計算されている.

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. 単一の損失を減らすためにストップ損失戦略を追加

概要

この戦略は,価格動向指標を計算し,価格傾向が逆転し,自動的にロングまたはショートになっているかどうかを決定する.バックテストは,この戦略が全体的にスムーズに機能し,価格逆転点を効果的に捉えていることを示しています.パラメータ設定を最適化し,シグナルフィルターを追加することで,戦略の安定性と収益性がさらに向上することができます.


/*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")

もっと