Bollinger-Band-Breakout-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-19 14:08:45
Tags:

img

Übersicht

Diese Strategie basiert auf den oberen und unteren Schienen der Bollinger Bands, um festzustellen, wann der Preis durch die oberen Schienen der Bollinger Bands bricht, um lang zu gehen, und durch die unteren Schienen bricht, um kurz zu gehen.

Strategie Logik

Diese Strategie verwendet die mittlere / obere / untere Schiene der Bollinger-Bänder, um extreme Preisschwerpunkte zu bestimmen. Die mittlere Schiene ist der einfache gleitende Durchschnitt der Schlusskurse in den letzten 25 Perioden. Die oberen und unteren Schienen sind eine Standardabweichung über und unter der mittleren Schiene. Wenn der Preis durch die obere oder untere Schiene bricht, zeigt dies an, dass es einen Ausbruch und ein anormales Preisverhalten gibt, das zur Entscheidungsfindung verwendet werden kann.

Wenn der Preis unterhalb der unteren Schiene ist, gehen Sie lang. Wenn der Preis über der oberen Schiene ist, gehen Sie kurz. Wenn Sie lang gehen, setzen Sie den Stop-Loss auf den Einstiegspreis multipliziert mit dem Stop-Loss-Faktor und nehmen Sie den Gewinn auf den Einstiegspreis multipliziert mit dem Take-Profit-Faktor.

Die Strategie enthält auch einige Hilfsregeln, wie z. B. nur ein Signal pro 24 Stunden, um unnötigen Handel zu vermeiden.

Vorteile der Strategie

  1. Die Verwendung von Bollinger Bands zur Bestimmung von abnormalen Preisbereichen gehört zu Trendverfolgungsstrategien, die Preistrends erfassen können.
  2. Die Stop-Loss- und Take-Profit-Parameter werden nach den Grundsätzen festgelegt, um Einzelverluste zu kontrollieren.
  3. Einige Hilfsregeln werden hinzugefügt, um Doppelsignale und unnötigen Handel zu vermeiden.

Risiken der Strategie

  1. Bollinger-Bänder können die Kursentwicklung nicht vollständig repräsentieren und es kann zu falschen Signalen kommen.
  2. Ein falscher Timing von Ausbruchssignalen kann zu Verlusten führen.
  3. Die Dauer und die Dynamik von Trend- oder Nicht-Trendmärkten sind schwer vorherzusagen, was zu unnötigen Long-Positionen führen kann.

Risikomanagement:

  1. Die Bollinger-Band-Parameter anpassen, um das Ausbruchsignal zu optimieren.
  2. Um den Haupttrend zu bestimmen, sind weitere Indikatoren einzubeziehen.
  3. Setzen Sie den Stop-Loss- und Take-Profit-Bereich je nach verschiedenen Produkten und Marktbedingungen.

Optimierungsrichtlinien

  1. Überlegen Sie, ob die Bollinger-Band-Parameter anpassungsfähig optimiert werden können, um sie besser an die aktuellen Marktbedingungen anzupassen.
  2. Einbeziehung anderer Indikatoren zur Beurteilung der Zuverlässigkeit von Trendsignalen und Vermeidung falscher Signale.
  3. Einbeziehung von Modellen für maschinelles Lernen zur automatischen Identifizierung optimaler langer und kürzerer Zeiten.

Schlussfolgerung

Zusammenfassend ist dies eine einfache Trendverfolgungsstrategie, bei der Bollinger-Bänder verwendet werden, um abnormale Preise zu bestimmen und Trends zu verfolgen.


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

//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)

leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
 
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)

var lastSellHour = 0
var disableAdditionalBuysThisDay = false


if(time > lastSellHour + 1000 * 60 * 60 * 6)
    disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
    disableAdditionalBuysThisDay := true
    lastSellHour := time

source = close

//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)

plot(upper, color=color.white)
plot(lower, color=color.white)

strategy.initial_capital = 50000

if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
    strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)

if(strategy.position_size > 0)
    strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
    strategy.close("Long",  when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")





Mehr