Diese Strategie basiert auf dem Bollinger Bands-Indikator. Es geht lang, wenn der Preis über das untere Band bricht und schließt die Position, wenn der Preis das obere Band berührt. Die Strategie nutzt das Eindämmungsprinzip der Bollinger Bands, um abnormale Preisbreaks für den Kauf niedrig und den Verkauf hoch zu verfolgen.
Der mittlere SMA-Band wird als einfacher gleitender Durchschnitt der jüngsten Schlusskurse berechnet.
Die Standardabweichung StdDev wird so berechnet, dass sie den Preisschwankungsbereich widerspiegelt.
Die oberen Standardabweichungen werden dem mittleren Band SMA hinzugefügt, um das obere Band zu erhalten.
Abziehen Sie den unteren Standardabweichungsschub vom mittleren SMA-Band, um den unteren Band zu erhalten.
Gehen Sie lang, wenn der Schlusskurs von unten nach oben über das untere Band bricht.
Schließen Sie die Position, wenn der Preis das obere Band berührt, da der Preis als abnormal gilt.
Der größte Vorteil dieser Strategie besteht darin, die statistischen Eigenschaften von Bollinger Bands zu nutzen, um abnormale Marktschwankungen effektiv zu verfolgen und Trends zu erfassen.
Bollinger Bands können sich automatisch an die Marktvolatilität anpassen.
Einbruchssignale sind zuverlässiger für den Eindringen.
Die Rückkehr zum Mittel ist vernünftig, um Gewinn zu machen.
Großer Raum für die Anpassung an verschiedene Märkte.
Kann mittelfristige bis langfristige Trends erfassen und auch kurzfristig verwendet werden.
Die potenziellen Risiken dieser Strategie sind hauptsächlich:
Schlechte Performance von Bollinger Bands in Bereich gebundenen Märkten, vermeiden Sie falsche Einträge.
Ausbruchsignale können falsche Ausbrüche sein, müssen vorsichtig beurteilt werden.
Die Gewinnposition ist zu idealisiert, kann auf die tatsächliche Kursentwicklung optimiert werden.
Eine unsachgemäße Einstellung der Parameter kann zu einem übermäßigen Handel oder zu einem übermäßigen Konservatismus führen.
Die Backtestdauer muss lang genug sein, um eine Kurvenanpassung zu vermeiden.
Entsprechende Risikomanagementmaßnahmen:
Hinzufügen von Handelsvolumenindikatoren zu Filtersignalen.
Optimierung von Parametern und Testdaten aus verschiedenen Märkten.
Fügen Sie die Stop-Loss-Level hinzu.
Beurteilen Sie Signaldifferenzen, vermeiden Sie Höchstwerte und Verkaufsschwankungen.
Die Strategie kann in folgenden Aspekten optimiert werden:
Versuchen Sie verschiedene Kombinationen von Bollinger Bands-Parametern, um das Optimum zu finden.
Hinzufügen von MA, MACD usw., um Breakout-Signale zu filtern.
Anwendung von Algorithmen des maschinellen Lernens zur Optimierung der Bollinger-Parameter.
Beurteilen Sie die Stärke der Ausbrüche und passen Sie die Positionsgröße an.
Zur Prüfung der Stabilität werden längere Zeiträume getestet.
Hinzufügen von Stop-Loss-Mechanismen zur Risikokontrolle.
Zusammenfassend ist die Bollinger Bands Strategie eine allgemein zuverlässige Trendfolgestrategie. Sie kann abnormale Kursschwankungen effektiv erfassen. Aber wir sollten auch ihre Abweichung vom tatsächlichen Preis beachten und die Parameter ständig optimieren. Wenn sie für den Live-Handel verwendet wird, ist ein strenges Risikomanagement ein Muss, um Verluste pro Handel zu kontrollieren.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 04:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="BB training No Repainting (OTS Mode)", overlay=true) // Strategy Rules: // 1. Enter trade when price crosses above the lower band // 2. Exit trade when price touches the upper band // // Chart Properties testStartYear = input(2010, "Backtest Start Year") testStartMonth = input(01, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #6c6f6c : na bgcolor(testPeriodBackgroundColor, transp=97) // User provided values smaLength = input(title="SMA Length", type=input.integer, defval=20) // Middle band period length (moving average) stdLength = input(title="StdDev Length", type=input.integer, defval=20) // Range to apply bands to ubOffset = input(title="Upper Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviations above MA lbOffset = input(title="Lower Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviation below MA testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false smaValue = sma(close, smaLength) // Middle band stdDev = stdev(close, stdLength) upperBand = smaValue + stdDev * ubOffset // Top band lowerBand = smaValue - stdDev * lbOffset // Bottom band // Plot bands to chart plot(series=smaValue, title="SMA", color=color.green) plot(series=upperBand, title="UB", color=color.blue, linewidth=2) plot(series=lowerBand, title="LB", color=color.blue, linewidth=2) longCondition = (crossover(close, lowerBand)) closeLongCondition = (close >= upperBand) if (longCondition and testPeriod()) strategy.entry(id="CALL", long=true) strategy.close(id="CALL", when=closeLongCondition)