Diese Strategie ist ein Trendfolgensystem, das den Richtungsbewegungsindex (DMI) mit dem Durchschnittlichen Wahren Bereich (ATR) kombiniert. Der Kernmechanismus verwendet DI + und DI - Indikatoren, um die Markttrendrichtung und -stärke zu identifizieren, während ATR für dynamische Stop-Loss- und Take-Profit-Anpassungen verwendet wird. Die Einführung eines Trendfilterbeweglichen Durchschnitts verbessert die Signalzuverlässigkeit weiter.
Die Strategie beruht auf folgenden Kernmechanismen:
Das Risiko von Schwankungen auf dem Markt - Kann zu aufeinanderfolgenden Stopps in Bereichsgebundenen Märkten führen. Vorschlag: Hinzufügen von Schwingungsindikatoren zur Filterung oder Anpassung von Parameterschwellen.
Die Risikopositionen sind die Risikopositionen, für die die Risikopositionen gemäß Artikel 4 Absatz 1 Buchstabe b der CRR gelten. Vorschlag: Erweitern Sie die Stop-Loss-Positionen entsprechend, um einen Schlupf zu berücksichtigen.
Das Risiko eines falschen Ausbruchs - mögliche Fehleinschätzungen an Trendwendepunkten. Vorschlag: Einfügen von Lautstärkenanzeigern zur Bestätigung des Signals.
Parameterempfindlichkeit - Die Leistung variiert signifikant mit verschiedenen Parameterkombinationen. Vorschlag: Durch Backtesting stabile Parameterbereiche finden.
Signaloptimierung - Erwägen Sie die Einführung des ADX-Indikators zur Bewertung der Trendstärke oder die Hinzufügung von Mechanismen zur Bestätigung des Volumens.
Positionsmanagement - Implementieren dynamischer Positionsgrößen auf der Grundlage der Trendstärke für eine verfeinerte Risikokontrolle.
Zeitstruktur - Überlegen Sie, ob Sie mehrere Zeitrahmen analysieren müssen, um die Signalzuverlässigkeit zu verbessern.
Marktanpassungsfähigkeit - Entwicklung anpassungsfähiger Mechanismen zur Anpassung von Parametern auf der Grundlage verschiedener Instrumenteneigenschaften.
Diese Strategie erreicht dynamisches Trendverfolgen und Risikokontrolle durch Kombination von Richtungs- und Volatilitätsindikatoren. Das Strategiedesign betont Praktikabilität und Funktionsfähigkeit und zeigt eine starke Marktanpassungsfähigkeit. Durch Parameteroptimierung und Signalverbesserungen besteht Raum für weitere Verbesserung.
/*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="空單止盈")