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.
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.
Risikomanagement:
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")