Die Ressourcen sind geladen. Beförderung...

Trendtrader Bands Backtest-Strategie auf Basis des gleitenden Durchschnitts des Trendtrader

Schriftsteller:ChaoZhang, Datum: 2023-12-11 13:12:44
Tags:

img

Übersicht

Die Hauptidee dieser Strategie besteht darin, Preistrends zu beurteilen und Handelssignale mithilfe gleitender Durchschnitte und Bollinger-Bänder zu erzeugen. Konkret berechnet sie zunächst den durchschnittlichen wahren Bereich (ATR) über einen bestimmten Zeitraum, um den Volatilitätsbereich zu erhalten, und kombiniert dann höchste und niedrigste Preise, um einen begrenzenden Kanal zu bilden. Wenn der Preis durch diesen Kanal bricht, wird der Schlusskurs auf den Kanalpreis festgelegt. Danach berechnet sie den gleitenden Durchschnitt der begrenzten Schlusskurs, der als Trend Trader Moving Average (AVR) bezeichnet wird. Schließlich ziehen Sie Bollinger-Bänder über und unter dem Trend Trader Moving Average, um Handelssignale zu bilden.

Strategie Logik

Die Strategie berechnet zunächst den ATR-Bereich und bildet einen begrenzenden Kanal, kombiniert mit den höchsten und niedrigsten Preisen. Der Schlusskurs wird nur auf den Kanalpreis beschränkt, wenn er durch den Kanal bricht. Danach berechnet sie den Trend Trader gleitenden Durchschnitt der begrenzten Schlusskurs, der die mittelfristige Trendrichtung widerspiegelt. Schließlich zeichnen Sie ein oberes Band und ein unteres Band parallel zum Trend Trader gleitenden Durchschnitt als Bollinger-Bänder. Durchbrechen des oberen Bandes erzeugt langes Signal und durchbrechen des unteren Bandes erzeugt kurzes Signal.

Der Kern der Beurteilung des Trends liegt im Trend Trader gleitenden Durchschnitt, der die mittelfristige Trendrichtung verkörpert. Die Rolle der Bollinger Bands besteht darin, einige falsche Breakouts zu filtern und Handelssignale zuverlässiger zu machen.

Vorteile

  1. ATR und Preisspanne schaffen einen anpassungsfähigen Kanal zur Verfolgung von Marktvolatilität
  2. Trend Trade AVR beurteilt den mittelfristigen und langfristigen Trend deutlich
  3. Bollinger-Bänder filtern falsche Ausbrüche und verbessern die Signalqualität
  4. Das System spiegelt einen starken Trend wider, langes Halten kann gute Renditen erzielen

Risiken

  1. Die langfristige Haltung kann aufgrund eines plötzlichen Ereignisses einen großen Verlust erleiden.
  2. Eine unsachgemäße Parameter-Einstellung kann zu einem Überhandel, zu erhöhten Transaktionskosten und zu Verschiebungen führen
  3. Die Leistung hängt stark von Parameter-Tuning ab

Lösungen:

  1. Auf geeignete Weise die Haltedauer reduzieren und einen Stop-Loss festlegen
  2. Optimieren Sie die Parameter, um den Signalen ausreichend Puffer zu geben
  3. Verwenden Sie historische Daten und Live-Handel für Parameter-Tuning

Optimierungsrichtlinien

  1. Einstellungen von Forschungsparametern auf verschiedenen Märkten und Zeitrahmen
  2. Prüfen, ob andere Indikatoren falsche Ausbrüche filtern können
  3. Versuchen Sie, den Stop-Loss in das Limit pro Handelsverlust zu integrieren.

Schlussfolgerung

Die Strategie ist insgesamt ein starkes Trendfolgensystem. Sie kann den mittelfristigen Trend beurteilen und Handelssignale in Kombination mit Bollinger-Bändern erzeugen. Durch Parameteroptimierung kann sie ein stabiles Alpha erhalten.


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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/10/2018
// This is plots the indicator developed by Andrew Abraham 
// in the Trading the Trend article of TASC September 1998  
// It was modified, result values wass averages.
// And draw two bands above and below TT line.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader Bands Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
BandStep = input(20),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret :=  iff(close > hiLimit and close > loLimit, hiLimit,
         iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)        
pos = 0.0
pos := iff(close < nResMA - BandStep , -1,
       iff(close > nResMA + BandStep, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(nResMA, color= blue , title="Trend Trader AVR")
plot(nResMA+BandStep, color= red , title="Trend Trader UpBand")
plot(nResMA-BandStep, color= green, title="Trend Trader DnBand")

Mehr