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

動的波動性調整トレンド 戦略をフォローする ATRストップ管理によるDI指標に基づく戦略

作者: リン・ハーンチャオチャン, 日付: 2025-01-06 16:18:01
タグ:DIDMIATRSMAマルチ

img

概要

この戦略は,指向動向指数 (DMI) と平均真の範囲 (ATR) を組み合わせたトレンドフォローシステムである.コアメカニズムは,市場のトレンド方向と強さを特定するためにDI+とDI-インジケーターを使用し,動的なストップ・ロストとテイク・プロフィート調整のためにATRを使用する.トレンドフィルタリング移動平均の導入により信号の信頼性がさらに向上する.戦略設計は市場の変動を考慮し,良好な適応性を示する.

戦略原則

この戦略は,次の基本的メカニズムに基づいて機能します.

  1. 傾向の方向性と強さを測定するためにDI+とDI-インジケーターを使用する.DI+がDI-の値を超えると上昇傾向が確認され,下落傾向は逆である.
  2. トレンド確認ツールとしてトレンドフィルタリング移動平均 (SMA) を組み込む.価格と移動平均のポジションが相互に確認されたときにのみシグナルが起動する.
  3. ATR指標を使用して,ストップ・ロストとテイク・プロフィートのレベルを動的に計算し,リスク管理が異なる市場状況に適応することを保証します.
  4. 取引の実行における時間制限を厳格に遵守し,過剰な取引頻度を避ける.

戦略 の 利点

  1. 強力な動的調整 - ATR を通して市場の変動に適応する.
  2. 総合的なリスク管理 - 変動性に基づく動的ストップ・ロスト・メカニズムと利益引き取りメカニズムを実装する.
  3. 高い信号信頼性 - 複数の指標のクロスバリダーションによって偽信号を減らす.
  4. 柔軟なパラメータ - 戦略パラメータは,異なる市場特性に最適化することができます.
  5. 明確な実行ロジック - 正確なエントリーと出口条件は現実の世界での実装を容易にする.

戦略リスク

  1. 波動市場リスク - 範囲限定の市場で連続的な停止を引き起こす可能性があります. 提案: フィルタリングのために振動指標を追加するか,パラメータの値を調整します.

  2. 変動リスク - 高波動期間の間,重大な変動に直面する可能性があります. 提案: スリップに対応するためにストップ・ロスのポジションを適切に拡大します.

  3. 誤ったブレイクリスク - 傾向の転換点における潜在的な誤った判断. 提案:信号の確認のために音量指標を組み込む.

  4. パラメータ感度 - パラメータの組み合わせによって性能が大きく異なります. 提案: バックテストで安定したパラメータ範囲を見つけます.

戦略の最適化方向

  1. シグナル最適化 - 傾向強度評価のためのADX指標を導入するか,ボリューム確認メカニズムを追加することを検討する.

  2. ポジション管理 - より精巧なリスク管理のために,トレンド強度に基づく動的ポジションサイズを導入する.

  3. 時間構造 - シグナル信頼性を高めるため,複数のタイムフレーム分析を検討する.

  4. 市場適応性 - 異なる機器の特徴に基づいて適応性のあるパラメータ調整メカニズムを開発する.

概要

この戦略は,方向性および変動指標を組み合わせて動的トレンドフォローとリスク管理を達成する.戦略設計は,実用性と操作性を強調し,強力な市場適応性を実証する.パラメータ最適化と信号改善を通じて,さらなる強化の余地がある.投資家は実施前に市場特性を徹底的にテストし,特定の調整を行うことをお勧めする.


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

//@version=5
strategy("使用 DI+ 和 DI- 的策略 (最終完整修正且含圖表止損止盈線)", overlay=true)

// 輸入參數
diLength = input.int(title="DI 長度", defval=14)
adxSmoothing = input.int(title="ADX Smoothing", defval=14)
trendFilterLength = input.int(title="趨勢過濾均線長度", defval=20)
strengthThreshold = input.int(title="趨勢強度門檻值", defval=20)
atrLength = input.int(title="ATR 長度", defval=14)
atrMultiplierStop = input.float(title="ATR 停損倍數", defval=1.5)
atrMultiplierTakeProfit = input.float(title="ATR 止盈倍數", defval=2.5)

// 計算 DI+ 和 DI-
[diPlus, diMinus, _] = ta.dmi(diLength, adxSmoothing)

// 計算趨勢過濾均線
trendFilterMA = ta.sma(close, trendFilterLength)

// 判斷趨勢方向和強度
strongUpTrend = diPlus > diMinus + strengthThreshold and close > trendFilterMA
strongDownTrend = diMinus > diPlus + strengthThreshold and close < trendFilterMA

// 計算 ATR
atr = ta.atr(atrLength)

// 追蹤止損止盈價格 (使用 var 宣告,只在進場時更新)
var float longStopPrice = na
var float longTakeProfitPrice = na
var float shortStopPrice = na
var float shortTakeProfitPrice = na

// 進場邏輯
longCondition = strongUpTrend
shortCondition = strongDownTrend

if (longCondition)
    strategy.entry("多單", strategy.long)
    longStopPrice := close - atr * atrMultiplierStop // 進場時計算並更新止損價
    longTakeProfitPrice := close + atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價

if (shortCondition)
    strategy.entry("空單", strategy.short)
    shortStopPrice := close + atr * atrMultiplierStop // 進場時計算並更新止損價
    shortTakeProfitPrice := close - atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價


// 出場邏輯 (使用 time 限制和 ATR)
inLongPosition = strategy.position_size > 0
inShortPosition = strategy.position_size < 0

lastEntryTime = strategy.opentrades.entry_bar_index(strategy.opentrades - 1)

if (inLongPosition and time > lastEntryTime)
    strategy.exit("多單出場", "多單", stop=longStopPrice, limit=longTakeProfitPrice)

if (inShortPosition and time > lastEntryTime)
    strategy.exit("空單出場", "空單", stop=shortStopPrice, limit=shortTakeProfitPrice)

// 繪製 DI+、DI- 和趨勢過濾均線
plot(diPlus, color=color.green, title="DI+")
plot(diMinus, color=color.red, title="DI-")
plot(trendFilterMA, color=color.blue, title="趨勢過濾均線")

// 繪製止損止盈線 (使用 plot 函數繪製)
plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多單停損")
plot(strategy.position_size > 0 ? longTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多單止盈")
plot(strategy.position_size < 0 ? shortStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空單停損")
plot(strategy.position_size < 0 ? shortTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空單止盈")

関連性

もっと