資源の読み込みに... 荷物...

アダプティブ・モメント・ミディアン・リバーション・クロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2025-01-10 15:26:18
タグ:ROCBBSMA

Adaptive Momentum Mean-Reversion Crossover Strategy

概要

この戦略は,モメンタムと平均逆転理論を組み合わせたハイブリッド取引システムである. 変化率 (ROC) インジケーターとボリンジャーバンドを使用して市場過剰購入および過剰販売状況を特定し,特定の値を超えると取引を誘発する. 核心コンセプトはモメンタムシフトを検出し,平均値への価格逆転をキャピタライズすることである.

戦略の原則

この戦略は,短期間の価格変動を計算するために,2つのセットのボリンジャーバンドとともに,2つの期間のROC指標を使用しています: 過売状況とエントリーシグナルのための短期 (18期,標準偏差1.7) および 過買い状況と出口シグナルのための長期 (21期,標準偏差2.1) ロングポジションは,ROCが下のボリンジャーバンドを越えると開始され,弱いボリンジャーバンドから強いボリンジャーバンドに移行することを示し,ROCが上部のボリンジャーバンドを下回ると閉鎖されます. 弱まるボリンジャーバンドをシグナル化します. 戦略はまた,過買い (赤) と過売 (緑) ゾーンを強調するために背景色を使用します.

戦略 の 利点

  1. 高適応性:ボリンジャー帯は,市場の変動に基づいて,その幅を自動的に調整し,異なる市場条件において有効性を維持します.
  2. 堅牢なリスク管理:ピラミディングは無効 (ピラミディング=0),一度に1つの位置のみを確保
  3. 信頼性の高いシグナル:モメンタムと平均逆転戦略の組み合わせにより,市場のターニングポイントがよりよく識別されます
  4. 実用性:実際の取引条件の取引コストとスリップ考慮を含む.

戦略リスク

  1. 変動市場リスク: 変動市場での損失を伴う頻繁な取引を生む可能性があります.
  2. 誤った突破リスク:ROC指標は誤った突破信号を生む可能性があります.
  3. パラメータ敏感性: 戦略のパフォーマンスはボリンジャーバンドとROCパラメータ設定に大きく依存する.
  4. 市場環境依存性: 戦略はトレンド市場においてよりうまく機能するが,極端な変動の際に失敗する可能性がある.

戦略の最適化方向

  1. トレンドフィルタを導入: 市場トレンドをフィルタリングし,指向精度を向上させるために長期移動平均を追加します
  2. パラメータを最適化: 最適なROC期間とボリンジャー帯パラメータの組み合わせを見つけるために,歴史的なデータバックテストを実施
  3. ストップ・ロスのメカニズムを追加する:リスク管理のために固定または後続ストップ・ロスを実装する
  4. 価格ブレイクを検証するためのボリューム指標を組み込む.

概要

アダプティブ・モメンタム・ミニアン・リバーション・クロスオーバー戦略は,ROC指標とデュアル・ボリンジャー・バンドを組み合わせて異なる市場環境に適応できる取引システムを構築する.柔軟性を維持しながらも,戦略はリスク管理を強調し,実用的な価値を示している.継続的な最適化と改善を通じて,この戦略は実際の取引でより良いパフォーマンスの約束を示している.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Adaptive Momentum Reversion Strategy ", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1)

// Input: ROC Period
rocPeriod = input.int(2, title="ROC Period", minval=1)

// Input: Bollinger Bands Settings (Lower Band)
bbLowerLength = input.int(18, title="Lower Bollinger Band Length", minval=1)
bbLowerStdDev = input.float(1.7, title="Lower Bollinger Band StdDev", minval=0.1, step=0.1)

// Input: Bollinger Bands Settings (Upper Band)
bbUpperLength = input.int(21, title="Upper Bollinger Band Length", minval=1)
bbUpperStdDev = input.float(2.1, title="Upper Bollinger Band StdDev", minval=0.1, step=0.1)

// ROC Calculation
rocValue = (close - close[rocPeriod]) / close[rocPeriod] * 100

// Bollinger Bands Calculation
bbLowerBasis = ta.sma(rocValue, bbLowerLength)  // Basis for Lower Band
bbLower = bbLowerBasis - bbLowerStdDev * ta.stdev(rocValue, bbLowerLength)  // Lower Band

bbUpperBasis = ta.sma(rocValue, bbUpperLength)  // Basis for Upper Band
bbUpper = bbUpperBasis + bbUpperStdDev * ta.stdev(rocValue, bbUpperLength)  // Upper Band

// Plot ROC
plot(rocValue, color=color.blue, linewidth=2, title="ROC Value")

// Plot Bollinger Bands
plot(bbLowerBasis, color=color.gray, linewidth=1, title="Lower BB Basis (SMA)")
plot(bbLower, color=color.green, linewidth=1, title="Lower Bollinger Band")
plot(bbUpperBasis, color=color.gray, linewidth=1, title="Upper BB Basis (SMA)")
plot(bbUpper, color=color.red, linewidth=1, title="Upper Bollinger Band")

// Add Zero Line for Reference
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)

// Entry Condition: Long when ROC crosses above the lower Bollinger Band
longCondition = ta.crossover(rocValue, bbLower)
if (longCondition)
    strategy.entry("Long", strategy.long)

// Exit Condition: Exit on Upper Bollinger Band Cross or ROC drops below Lower Band again
exitCondition = ta.crossunder(rocValue, bbUpper)
if (exitCondition)
    strategy.close("Long")

// Background Color for Extreme Conditions
bgcolor(rocValue > bbUpper ? color.new(color.red, 80) : na, title="Overbought (ROC above Upper BB)")
bgcolor(rocValue < bbLower ? color.new(color.green, 80) : na, title="Oversold (ROC below Lower BB)")

関連性

もっと