ATR-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie verwendet den Average True Range (ATR), um Preistrends zu erfassen, und setzt auf der Grundlage des ATR Stops für die Trendverfolgung.

Wie es funktioniert

  1. Berechnet den ATR-Wert.

  2. Feststellung des Stop-Loss-Niveaus anhand des ATR.

  3. Geben Sie Long/Short ein, wenn der Preis den Stop-Level überschreitet.

  4. Verriegeln Sie den Gewinn, indem Sie die Stopps dynamisch anpassen.

Vorteile

  • ATR passt die Haltestellen automatisch an, kein manuelles Eingreifen erforderlich
  • Einfache und intuitive Logik, einfach umzusetzen
  • Hilft, nicht in die Falle zu geraten, rechtzeitige Stop-Loss
  • Gewinne aus Reittrends
  • Handelsfrequenz über ATR-Parameter gesteuert

Risiken

  • Schlechte ATR-Parameter können dazu führen, dass die Haltestellen zu locker oder eng sind
  • Unmöglichkeit, das Ende des Trends effektiv zu ermitteln
  • Es gibt eine gewisse Zeitverzögerung.
  • Umkehrungen können die Gewinne schmälern

Optimierungsrichtlinien

  • Optimierung des ATR-Periodenparameters
  • Versuche verschiedene ATR-Multiplikatoren für den Stoppweg
  • Hinzufügen von Filtern zur Erkennung von Trendumkehrungen
  • Erforschen Sie maschinelles Lernen für die Optimierung von Parametern
  • Erwägen Sie zusätzliche Profit-Mechanismen

Schlussfolgerung

Die Strategie erfasst Trends effektiv mit ATR und sperrt Gewinne mit dynamischen Stopps. Feinabstimmungsparameter können die Leistung verbessern. Aber ATR-Verzögerung kann nicht vollständig beseitigt werden. Insgesamt eine einfache und praktische Trendfolgelösung.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy(title="ATR Strategy", overlay = true,  commission_type=strategy.commission.percent,commission_value=0.075)
//credits to HPotter for the orginal code
nATRPeriod = input(5)
nATRMultip = input(3.5)
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), math.max(nz(xATRTrailingStop[1]), close - nLoss),
                    iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), math.min(nz(xATRTrailingStop[1]), close + nLoss), 
                        iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
	    iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 

strategy.entry("Long", strategy.long, when = barbuy) 
strategy.entry("Short", strategy.short, when = barsell) 

barcolor(barbuy? color.green:color.red)



Mehr