Verstärkte Bollinger-Band-Umkehrstrategie

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie verwendet einen erweiterten Bollinger Bands-Indikator, um Preisumkehrpunkte zu identifizieren, geht lang, wenn der Preis sich dem unteren Band nähert, und schließt die Position, wenn eine grüne Kerze erscheint, um die mittlere Umkehr am unteren Band zu erfassen.

Strategie Logik

  1. Berechnen der Standard-BB-Parameter Basis, Dev, Ober-BB und Unter-BB.

  2. Berechnung der SMA und der Abweichungsbereiche upex2 und dnex2 bei einem bestimmten Prozentsatz von der SMA.

  3. Nehmen Sie den Durchschnitt von upex2, dnex2 mit oberem BB, unterem BB, um upex3 und dnex3 zu erhalten.

  4. Bei größeren Höhen und unteren BB-Bändern handelt es sich um neue Höhen und unteren BB-Bändern um neue Unteren.

  5. Long gehen, wenn der Kurs unter dnex liegt, close, wenn grüne Kerze erscheint (schließen > öffnen).

Analyse der Vorteile

  1. Erweiterte BB verbessert die Empfindlichkeit der ursprünglichen BB für frühere Umkehrsignale.

  2. Filtert Whipsaws mit einem Kerzenmuster.

  3. Der Rückstands-Test zeigt eine stabile Rentabilität von 2008 bis 2018, eine glatte Kurve, maximale DD < 20%.

  4. Konfigurierbare Hebelwirkung, Handelszeiten zur Risikokontrolle.

Risikoanalyse

  1. Eine schlechte Abstimmung der BB-Parameter kann zu einem Überhandel oder zu verpassten Chancen führen.

  2. Nur lange, nicht in der Lage, von einer Trendwende zu profitieren.

  3. Der Kerzenfilter kann sich verzögern und nicht rechtzeitig aussteigen.

  4. Die Daten aus den 10-jährigen Rückversuchen reichen nicht aus, um die Robustheit zu testen.

  5. Er kann sich nicht an große Lücken oder Sprünge anpassen.

Optimierungsrichtlinien

  1. Testparameterkombinationen zur Optimierung der BB-Einstellungen.

  2. Hinzufügen anderer Signalfilter, um die Rentabilität zu verbessern.

  3. Überlegen Sie kurzfristige Trades, wenn der Preis den oberen Bereich überschreitet.

  4. Setzen Sie Stop Loss, um Einzelhandelsverluste zu begrenzen.

  5. Entwicklung von Autotuning basierend auf dem sich ändernden Markt.

  6. Optimieren Sie die Einstiegsregeln für Lücken und Sprünge.

  7. Erweiterung der Rückprüfungsperiode auf die Testparameter.

Zusammenfassung

Diese Strategie identifiziert Umkehrpunkte mit verbessertem BB und geht lang in der Nähe des unteren Bandes mit Kerzenfilter für schnelle Gewinnentnahme. Die Backtestleistung ist gut. Aber nur lang, begrenzte Stichprobe, Param-Tuning erforderlich. Kann bei Marktänderungen mit einem Rückgang konfrontiert werden. Die nächsten Schritte sind die Bestätigung von Signalen zur Steigerung der Gewinnrate, kurze Trades, längere Backtest für Robustheit, um die Anpassungsfähigkeit und Stabilität zu verbessern.


/*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"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
p = input(20, "bars")
d = input(25, "percent")
showlines = input(true, defval = true, title = "Show Lines?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

mult = input(2.0, minval=0.001, maxval=50)
basis = sma(close, p)
dev = mult * stdev(close, p)
source = close
upperBB = basis + dev
lowerBB = basis - dev
b1 = plot(basis, color=gray, linewidth=1)
p1 = plot(upperBB, color=aqua,  linewidth=1)
p2 = plot(lowerBB, color=aqua, linewidth=1)

//SMAs
sma = sma(close, p)
upex2 = sma * ((100 + d) / 100)
dnex2 = sma * ((100 - d) / 100)

upex3 = (upex2 + upperBB) / 2
dnex3 = (dnex2 + lowerBB) / 2

upex = max(upperBB, upex3)
dnex = min(lowerBB, dnex3)
//exit = (high > sma and low < sma)
exit = close > open


//Lines
col = showlines ? blue : na
plot(upex, linewidth = 3, color = col, transp = 0)
plot(sma, linewidth = 3, color = col, transp = 0)
plot(dnex, linewidth = 3, color = col, transp = 0)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[p]))
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

if exit
    strategy.close_all()

Mehr