この戦略は,価格動向指標を利用したトレンドフォロー戦略である.特定の期間中の閉値変動を計算して市場のトレンドを判断し,持続的な上昇または下値トレンドがある場合に対応する長または短入りをします.
この戦略の核心指標は価格の勢いです.この勢いは以下のように計算されます.
momentum = close - close[n]
n は動力期間の長さである.動力 > 0 は,現在の期間に価格が上昇していることを意味します.動力 < 0 は,現在の期間に価格が下がっていることを意味します.
戦略はまず,トレードを実行する前にトレンド判断に必要なキャンドルスタイルの数を表すコンファームバースパラメータを設定する.バックテスト範囲内では,コンファームバースキャンドルスタイルのインパム > 0 が持続する場合は,ロングエントリが行われます.コンファームバースキャンドルスタイルのインパム < 0 が持続する場合は,ショートエントリが行われます.
戦略のトレンド判断の鍵は,モメントが0より大きくまたは小さい連続したキャンドルスタイルの数を数えることにある.これはbcountとdiscount変数を通じて達成される.対応条件が満たされると1増やされ,条件が満たされていない場合0にリセットされる.カウントがconfirmBarsに達すると,対応するロングまたはショートトレードが実行される.
これは比較的シンプルな傾向であり,次の利点がある.
この戦略にはいくつかのリスクもあります:
戦略は,いくつかの側面で最適化することができます:
総括すると,このモメンタムブレークアウト戦略は,導入量取引戦略として適したシンプルで実践的なトレンドフォロー戦略です. 適用においては,取引頻度を制御し,過剰取引を防ぐことに注意が必要です. 一方,戦略が最大限のパフォーマンスを達成するためには,パラメータとフィルターは実際の製品と市場環境に基づいて調整および最適化する必要があります.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Momentum Strategy [TS Trader]", overlay=true) confirmBars = input(1) momentumLength = input(14, title="Momentum Length") price = close momentum = close - close[momentumLength] // === INPUT BACKTEST RANGE === fromYear = input.int(2019, title="Backtest Start Year") fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12) fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31) toYear = input.int(2023, title="Backtest End Year") toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12) toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31) startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00) endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59) inBacktestRange = true // === STRATEGY LOGIC === bcond = momentum > 0 bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 if (bcount == confirmBars and inBacktestRange) strategy.entry("Buy", strategy.long, comment="Long") scond = momentum < 0 scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 if (scount == confirmBars and inBacktestRange) strategy.entry("Sell", strategy.short, comment="Short") // Plotting Momentum plot(momentum, title="Momentum", color=color.purple)