DAKELAX-XRPUSDT Bollinger Band Mean Reverssionsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 16:18:34
Tags:

img

Übersicht

DAKELAX-XRPUSDT ist ein Trading-Bot-Strategien für XRPUSDT auf Binance. Es ist eine einfache umgekehrte Mittelstrategie mit Bollinger-Bändern und funktioniert gut im Backtest auf H1-Zeitrahmen von Mai bis August 2019, sowie live.

Strategie Logik

Die Strategie berechnet zunächst den 20-Perioden-SMA und die oberen/unteren Bollinger Bands. Das obere Band ist SMA + 1,5 Standardabweichung und das untere Band ist SMA - 2,2 Standardabweichung. Anschließend wird die Kontraktionsrate der Bands berechnet. Die Bands sind schwarz ausgefüllt, wenn die Kontraktion > 1,3, gelb, wenn < 0,1, sonst rot.

Wenn der Schlusskurs unterhalb des unteren Bandes liegt, geht man mit 20 Münzen lang.

Die Strategie berechnet auch eine 7-Perioden-EMA-Schnelllinie und eine 18-Perioden-EMA-Slowline.

Analyse der Vorteile

  • Bollinger-Bänder und Kontraktionsrate erkennen Trends und Volatilität intuitiv
  • Kombination mit EMA Crossover erhöht die Signalstärke
  • Gute Backtest-Ergebnisse und relativ stabile Live-Handelslage

Risikoanalyse

  • Hohe Ausfallwahrscheinlichkeit bei Ausbruch nach Bandkontraktion
  • Ankäufe mit festem Betrag ohne Positionsgrößerung
  • Zu viele Crossovers in verschiedenen Märkten führen zu Verlusten
  • Betrachtet nur tägliche Faktoren, vermisst größere zeitliche Trends

Überlegen Sie dynamische Positionsgrößen oder Stop-Loss, um Risiken zu kontrollieren. Optimieren Sie die Crossover-Strategie, um Whipsaws in verschiedenen Märkten zu vermeiden. Fügen Sie höhere Zeitrahmen-Trendindikatoren hinzu, um größere Bewegungen zu identifizieren.

Optimierungsrichtlinien

  • Anpassung des Kaufbetrags anhand der Bandbreite, weniger bei Vertragsabschluss und mehr bei Erweiterung

  • Betrachten Sie Akkumulationspositionen, wenn eine Kontraktion gesehen wird, aber das Signal noch nicht ausgelöst wurde

  • Hinzufügen eines längeren Zeitrahmen-Trendindikators zur Bestimmung der Gesamtrichtung, Pause der Strategie bei Unklarheit

  • Einbeziehung von Stop Loss zur Kontrolle des Risikos, kann in der Nähe der jüngsten Tiefs der Bands gesetzt werden

  • Optimieren Sie Crossover-Parameter wie EMA-Perioden, um nicht in die Falle zu geraten

Zusammenfassung

DAKELAX-XRPUSDT ist ein Trading-Bot-Strategien mit Bollinger-Band-Kontraktion mit EMA-Crossover. Es ist intuitiv und hat gute Backtest-Ergebnisse, enthält jedoch einige Risiken. Diese können durch Positionsgrößen, Stop-Strategie, Hinzufügen von Stop-Loss und Optimierung der Crossover-Logik reduziert werden. Insgesamt bietet es ein klares Beispiel für eine Bollinger-Band-Strategie, erfordert aber eine paarespezifische Optimierung für stabile Live-Gewinne.


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

//@version=3
//study(title="Tradebotler DAKELAX Binance:XRPUSDT Study-strategy", overlay=true)
strategy(title="Tradebotler DAKELAX Binance:XRPUSDT Strategy", overlay=true)

buyAmount = input(20, minval=1)

// SMA20
len2 = input(20, minval=1)
src2 = input(close)
out2 = sma(src2, len2)

// BB contraction value (medium tight)
contraction_value = 1.3
// BB contraction value (very tight)
contraction_value2 = 0.1

// 2xSTDEV BB calculation
dev = stdev(src2, len2)
upper_BB = out2  + 1.5*dev
lower_BB = out2  - 2.2*dev
x1 = plot(upper_BB, color=blue, linewidth = 2)
x2 = plot(lower_BB, color=blue, linewidth = 2)

contraction = (upper_BB-lower_BB)/out2

//fills the BBands according to the contraction value (threshold)

// Calculate values
fastMA  = ema(close, 7)
slowMA  = ema(close, 18)

// Determine alert setups
crossUp   = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)

buySignal   = (crossUp or crossUp[1]) and (low > slowMA)
shortSignal = (crossDown or crossDown[1]) and (high < slowMA)

// Highlight alerts on the chart
bgColour =
     (buySignal and barstate.isrealtime) ? green :
     (shortSignal and barstate.isrealtime) ? red :
     na

signalBuy = (buySignal ) ? true : false
signalSell = (shortSignal ) ? true : false

test = true

test := not test[1]

closesBelowLowerBB = close < lower_BB
closesAboveUpperBB = close > upper_BB

tmptext = "blah"

// Plot values
plot(series=fastMA, color=teal)
plot(series=slowMA, color=orange)

plot(out2, color=black, linewidth = 1)
fill(x1, x2, color = contraction > contraction_value ? black : contraction < contraction_value2 ? yellow: red)

isInRed = contraction < contraction_value and contraction >= contraction_value2
isInYellow = contraction < contraction_value and contraction < contraction_value2

if ( closesBelowLowerBB )
    strategy.order('Buy', strategy.long, buyAmount)

if ( closesAboveUpperBB )
    strategy.close_all()



Mehr