
Die Kernidee dieser Strategie ist die Verwendung von ATR-Indikatoren, um eine anpassungsfähige Tracking-Stop-Line einzurichten, um gewinnbringende Positionen maximal zu schützen und vorzeitige Verluste zu vermeiden. Die ATR-Indikatoren sind in der Lage, die Schwankungen des Marktes dynamisch zu erfassen, die Stop-Loss-Distanz an die Marktfluktuation anzupassen und die Wahrscheinlichkeit zu verringern, dass ein Stop-Loss ausgelöst wird, während die Stop-Loss-Sicherung gewährleistet wird.
Diese Strategie verwendet den N-Zyklus-Durchschnittswert des ATR-Indikators, der mit einer Multiplikation als Basis-Stop-Distance multipliziert wird. Je größer der ATR-Wert ist, desto größer ist die Stop-Distance, je weiter die Marktschwankungen sind. Je kleiner der ATR-Wert ist, desto schmaler ist die Stop-Distance.
Die Strategie basiert auf der folgenden Kernlogik:
Berechnen Sie den ATR-Wert des ATR-Zeitraums ((nATRPeriod)).
Die Basis-Stop-Loss-Distanz nLoss wird durch die Multiplikation des ATR-Wertes mit der Multiplikation ((nATRMultip)) ermittelt.
Aktualisieren Sie die Stop-Line xATRTrailingStop entsprechend den aktuellen Höhen, Tiefen und der letzten Periode.
Wenn der aktuelle Tiefpunkt die Stop-Line des vorherigen Zyklus auslöst, wird der Stop-Line die Entfernung von nLoss unter dem Tiefpunkt verlagert.
Wenn der aktuelle Höchststand die Stop-Line des vorangegangenen Zyklus auslöst, wird der Stop-Line unterhalb des Höchststandes eine Entfernung von nLoss überschritten.
Wenn ein Stop-Loss nicht ausgelöst wurde, wird der Stop-Line entsprechend der Entfernung des Schlusskurses von der Stop-Line angepasst.
Zusätzliche Schattenlinie-Schutzdistanz zur weiteren Optimierung der Schadenstopplinie.
Zeichnen Sie die Ober- und Untergrenze der Stop-Line mit einer Brin-Band-Orbit.
Die Position richtet sich nach der Farbe der Stop-Line.
Die Strategie nutzt die ATR-Indikatoren flexibel, so dass die Stop-Line sich an die Marktschwankungen anpassen kann, um eine angemessene Stop-Distance zu gewährleisten und unnötige Positionsverluste durch zu radikale Stopps zu vermeiden.
Diese Strategie hat folgende Vorteile:
Die ATR-Anzeige wird verwendet, um die Stop-Loss-Distanz dynamisch anzupassen, um sich an unterschiedliche Marktbedingungen anzupassen.
Die Multiplikatorparameter sind individuell anpassbar und ermöglichen eine flexible Anpassung der Stoppdistanz.
Die Ober- und Untergrenze der Sichtbarkeit der Stoppschadenlinie bildet die Brin-Band-Orbit.
Optionale Schattenstrahl-Schutzfunktion, um die Whipsaw in der Schwingung zu vermeiden.
Es kann als Tracking-Stop-Loss verwendet werden, um die maximale Rücknahme von Gewinnpositionen zu ermöglichen.
Die Strategie ist klar und verständlich, die Parameter sind weniger optimierbar.
Es ist für verschiedene Sorten und Zyklen geeignet.
Es gibt einige Risiken bei dieser Strategie, die zu beachten sind:
Der ATR-Indikator reagiert zu spät auf Marktausbrüche und kann zu einer zu großen Stop-Loss-Distanz führen.
Eine zu große Multiplikator-Einstellung führt auch zu einer zu großen Stop-Loss-Distanz und erhöht die Gefahr von Verlusten.
Die Schatten-Schutz-Funktion lässt die Stoppschaden-Leitung bei verstärkter Erschütterung zu locker.
Ein Eintritts- und Ausstiegsregeln können nicht als Eintritts- und Ausstiegsstrategie verwendet werden.
Die Optimierungsparameter müssen wiederholt getestet werden, um sie an verschiedene Sorten und Zyklen anzupassen.
Ein Ausbruch der Stop-Loss-Regelung kann zu einer Vergrößerung der Verluste führen und erfordert eine effektive Kapitalverwaltung.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Verschiedene ATR-Zyklusparameter werden getestet, um die Stopp-Distanz zu optimieren.
Anpassung der Multiplikatorparameter, um ein Gleichgewicht zwischen Stoppdistanz und Stoppwahrscheinlichkeit zu finden.
Optimierung der Schattenstrahl-Schutz-Periodenparameter, um Whipsaw zu verhindern.
Versuchen Sie, Einstiegsbedingungen auf Stop-Loss-Basis hinzuzufügen, um dies zu einer Entries/Exits-Strategie zu machen.
Trendschätzungs-Indikatoren werden hinzugefügt und die Stop-Loss-Distanz entsprechend dem Trend angepasst.
In Kombination mit der Wellen-Theorie wird die Stoppdistanz an die Position der Wellen angepasst.
Einführung von Positionskontrollen, um Einzelschäden zu begrenzen.
Die Strategie nutzt die Anpassungsfähigkeit des ATR-Indikators und hat einen Stop-Loss-Mechanismus entwickelt, der sich dynamisch anpasst. Die Strategie ist einfach und kann flexibel nach eigenen Bedürfnissen optimiert werden. Die Strategie kann als Tracking-Stop-Tool verwendet werden, um die Position zu maximieren und den Gewinn zu schützen.
/*backtest
start: 2022-10-12 00:00:00
end: 2023-10-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v2.0 13/10/2014
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort
// The related article is copyrighted material from Stocks & Commodities Jun 2009
// Modified by River to add Bands, and change color of Trailing Stop and add Wick Protection. Now turned into a Strategy for Backtesting Purposes.
// After backtesting, it seems clear that it functions well as a Trailing Stop, but not as an Entry/Exit strategy.
////////////////////////////////////////////////////////////
strategy(title="ATR Trailing Stop Bands Strategy[R] ", overlay = true)
nATRPeriod = input(5)
nATRMultip = input(4)
length = input(30, "#Periods of Wick Protection", minval=2)
bType = input(0, "Max [1] or Avg Wick Protection [0]", minval=0, maxval=1)
avgupperwick = sma(close[1] <= open[1] ? high[1] - open[1] : high[1] - close[1], length)
maxupperwick = highest(close[1] <= open[1] ? high[1] - open[1] : high[1] - close[1], length)
avglowerwick = sma(close[1] > open[1] ? open[1] - low[1] : close[1] - low[1], length)
maxlowerwick = highest(close[1] > open[1] ? open[1] - low[1] : close[1] - low[1], length)
upperwick = bType == 0 ? avgupperwick : maxupperwick
lowerwick = bType == 0 ? avglowerwick : maxlowerwick
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
upperband = iff(high < nz(upperband[1], 0) and high[1] < nz(upperband[1], 0), min(nz(upperband[1]), high + nLoss + upperwick), high + nLoss + upperwick)
lowerband = iff(low > nz(lowerband[1], 0) and low[1] > nz(lowerband[1], 0), max(nz(lowerband[1]), low - nLoss - lowerwick), low - nLoss - lowerwick)
xATRTrailingStop = iff(low > nz(xATRTrailingStop[1], 0) and low[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), low - nLoss - lowerwick),
iff(high < nz(xATRTrailingStop[1], 0) and high[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), high + nLoss + upperwick),
// iff(low <= nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), high + nLoss + upperwick, iff(high >= nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), low - nLoss - lowerwick,0))))
iff(low <= nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), upperband[1], iff(high >= nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), lowerband[1],0))))
pos = iff(close[1] > nz(xATRTrailingStop[1], 0) and low <= nz(xATRTrailingStop[1], 0), 1,
iff(close[1] < nz(xATRTrailingStop[1], 0) and high >= nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color = pos == 1 ? red: pos == -1 ? green : blue
plot(upperband, color=red, title="ATR Upper")
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop", linewidth=2)
plot(lowerband, color=green, title="ATR Lower")
longCondition = (color == green and color[1] == red)
if (longCondition)
strategy.entry("Long", strategy.long)
longExitCondition = (color == red and color[1] == green)
if (longExitCondition)
strategy.close("Long")
shortCondition = (color == red and color[1] == green)
if (shortCondition)
strategy.entry("Short", strategy.short)
shortexitCondition = (color == green and color[1] == red)
if (shortexitCondition)
strategy.close("Short")