Bollinger-Band-Umkehrung basierende quantitative Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-22 17:44:40
Tags:

img

Übersicht

Die Strategie wird Bollinger Band Reversal Based Quantitative Strategy genannt. Sie nutzt die oberen und unteren Schienen der Bollinger Bands, um Ein- und Ausstiege zu bestimmen. Wenn der Preis in der Nähe der unteren Schiene der Bands ist und Anzeichen eines Abwärtstrends zeigt, deutet dies darauf hin, dass der Preis umgekehrt sein könnte, also gehen Sie lang. Wenn der Preis auf die obere Schiene steigt, deutet dies darauf hin, dass der Preis nach unten umkehren kann, also gehen Sie kurz.

Strategie Logik

Die Strategie verwendet den RSI-Indikator, um lange Einträge zu bestimmen. Insbesondere überprüft sie, ob der Schlusskurs des jüngsten Balkens niedriger ist als der niedrigste Preis der vorherigen 6 Balken, während die Bollinger Band Breite (BBW) größer als eine Schwelle ist und die Bollinger Band Ratio (BBR) innerhalb eines Bereichs liegt. Wenn diese Kriterien erfüllt sind, zeigt dies an, dass der Preis umgekehrt sein kann, also geh lang.

Wenn der RSI über 70 geht, was bedeutet, dass der Preis überhitzt ist, schließen Sie die Long-Position.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, die oberen und unteren Schienen der Bollinger Bands zur Bestimmung von Einträgen zu nutzen. Wenn BB die Richtung umkehrt, gehen Sie lang oder kurz, um kurzfristige Umkehrmöglichkeiten zu erfassen. Im Vergleich zu einfachen RSI-Strategien hat diese Strategie umsichtigere Kriterien für Einträge und vermeidet so falsche Trades.

Durch die Abstimmung von BBW und BBR kann sie für verschiedene Produkte optimiert und bessere Ergebnisse erzielt werden.

Risikoanalyse

Das Hauptrisiko besteht darin, dass BB Preisumkehrungen nicht perfekt vorhersagt. Wenn der Zeitpunkt nicht angemessen ist, führt dies leicht zu fehlenden besten Einträgen oder schwebenden Verlusten.

Auch kurzfristige Schwankungen können zu häufigen Ein- und Ausstiegen führen, was die Kosten für Provisionen und Verschiebungen erhöht.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen verbessert werden:

  1. Optimierung der Parameter: Test und Abstimmung von BBW, BBR und anderen Parametern für verschiedene Produkte.

  2. Hinzufügen von Stop-Loss-Mechanismen wie Trailing Stop-Loss und Time Stop-Loss, um maximale Verluste zu begrenzen.

  3. Einbeziehung anderer Indikatoren wie KDJ und MACD, um die Einträge zuverlässiger zu machen.

  4. Verbessern Sie die Exit-Logik. Der aktuelle Exit ist einfach. Kann mit der Gewinnentnahme optimiert werden oder auf der Basis von Volatilität ausgeht.

Schlussfolgerung

Diese Strategie nutzt die Eigenschaften von Bollinger Bands, um potenzielle Umkehrpunkte für Ein- und Ausstiege zu bestimmen. Im Vergleich zu einzelnen Indikatoren wie dem RSI hat sie einen genaueren Zeitpunkt. Mit Parameter-Tuning, Stop-Losses und Take-Profits kann sie zuverlässiger sein. Aber die Vorhersage von BB ist nicht perfekt, so dass es immer noch eine gewisse Zufälligkeit in der Leistung gibt.


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

//@version=4

//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")


length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100


basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100

criteriamet = 0
crossUnderB0 = crossunder(bbr,0)

since_x_under = barssince(crossUnderB0)


sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) //  and bbr3 < 0 

if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
	criteriamet := 1
else
	criteriamet := 0	
//plot (criteriamet)

//exit 
exitmet = 0
if rsi > 70
	exitmet := 1
else
	exitmet := 0

if criteriamet == 1
	strategy.entry("long", strategy.long)
if exitmet == 1
	strategy.close("long")



Mehr