
Die Strategie verwendet die Denkweise des dynamischen Trailing Stops, um die Stop-Line für eine lange und kurze Position auf der Grundlage der ATR und des Preis-Höchstwerts zu berechnen. In Verbindung mit der Idee von Chandelier Exit wird die Richtung der Stop-Line für eine lange und kurze Position beurteilt. Wenn die Stop-Line nach oben bricht, wird sie als pessimistisch beurteilt, und wenn die Stop-Line nach unten bricht, wird sie als pessimistisch beurteilt, und sie wird leer sein.
Die Strategie hat die doppelte Funktion, sowohl die Stop- als auch die Einstiegssignale zu beurteilen.
Die Strategie besteht aus folgenden Teilen:
Berechnung der ATR in Echtzeit basierend auf der von den Benutzern festgelegten ATR-Zykluslänge und -mult. Die Stop-Line für die langen und kurzen Positionen wird dann basierend auf der ATR und den Preis-Höchstwerten berechnet:
longStop = 最高价 - ATR
shortStop = 最低价 + ATR
Vergleichen Sie die Stop-Line der vorherigen K-Linie mit der Stop-Line der aktuellen K-Linie. Wenn die Stop-Line der aktuellen K-Linie durchbrochen wird, wird ein Handelssignal ausgegeben:
长仓止损线上方突破,做多
短仓止损线下方突破,做空
Die Stop-Loss-Distanz und die Stop-Stop-Distanz werden aus dem ATR berechnet, basierend auf dem vom Benutzer festgelegten RiskRewardRatio. Es gibt auch eine Stop-Loss- und eine Stop-Out-Anweisung, wenn Sie eine Position eröffnen.
Diese Strategie hat folgende Vorteile:
Die Strategie nutzt eine dynamische Verfolgung der Stop-Line, um die Verluste rechtzeitig zu stoppen und das Absenkungsrisiko zu kontrollieren.
Die Strategie vereinfacht die Strategielogik, indem sie die Stop-Loss-Linie gleichzeitig als Einstiegsvoraussetzung verwendet.
Das Risiko-Rendite-Verhältnis ist der richtige Weg, um höhere Gewinne zu erzielen.
Die Strategie ist einfach strukturiert, leicht zu verstehen und zu optimieren.
Die Strategie birgt auch einige Risiken:
Die Strategie ist eine bilaterale Handelsstrategie, bei der die Risiken von Über- und Unterhandel eingehen.
Die Einstellung der ATR-Parameter wirkt sich direkt auf die Stop-Loss-Linie und die Handelsfrequenz aus. Eine falsche Einstellung kann dazu führen, dass der Stop-Loss zu locker oder die Handelsfrequenz zu hoch ist.
Diese Strategie ist besser geeignet für einen Durchbruch nach der Berechnung der Mittellinie und nicht für Szenarien, in denen die Tendenz zu stark ist.
Für die oben genannten Risiken können Optimierungen in folgenden Bereichen vorgenommen werden:
In Kombination mit Trendindikatoren wie MA, um die Markttrends zu beurteilen und einen negativen Handel zu vermeiden.
Optimierung der ATR-Parameter und des RRR-Parameters, um die Stop-Loss- und Stop-Out-Parameter zu optimieren.
Erhöhen Sie die Filterbedingungen für die Handelsmengen oder Volatilitätsindikatoren, um die Qualität der Transaktionen zu gewährleisten.
Die Strategie kann noch weiter optimiert werden:
Mit Hilfe von maschinellen Lernmodellen werden Preistrends vorhergesagt und die Einstiegsgenauigkeit verbessert.
Die Preisschwankungen von Options-Hedge-Varianten werden genutzt, um ein risikofreies Portfolio zu erstellen.
Statistische Arbitrage zwischen verschiedenen Märkten und verschiedenen Sorten, um eine stabile Alpha zu erhalten.
Effiziente Strategie-Retesting und Real-Time-Trading durch eine algorithmische Trading-Engine
In diesem Artikel wird eine quantitative Handelsstrategie, die auf einem dynamischen Verfolgungsstillstand basiert, eingehend analysiert. Die Strategie verfügt über eine Stop-Loss-Management- und Handelssignal-Ermittlungsfunktion, die das Risiko effektiv kontrollieren kann. Wir analysieren auch die Vorteile der Strategie, die möglichen Risiken und nachfolgende Optimierungsideen.
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)
// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)
// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr
// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1
// Entry Signals
if (longCondition)
strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)
midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)
fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')
// Alerts
if (dir != dir[1])
strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")