
Die Strategie basiert auf dem Auf- und Abstieg der Bollinger Bands, um zu ermitteln, ob der Preis bei einem Aufstieg der Bollinger Bands zu viel macht und bei einem Abstieg der Bollinger Bands leer ist, und gehört zu den Strategien der Trendverfolgung.
Die Strategie nutzt die mittleren, oberen und unteren Bahnen im Brin-Band, um die extreme Preisspanne zu beurteilen. Die mittlere Bahn ist ein einfacher Moving Average der Schlusspreise der letzten 25 Perioden, wobei die oberen und unteren Bahnen die nächste Standardabweichung der mittleren Bahnlinie sind. Wenn der Preis unterhalb der oberen Bahn oder unterhalb der unteren Bahnlinie durchbricht, wird ein Durchbruch angezeigt, der als außergewöhnliches Preisverhalten gilt, bei dem Handelsentscheidungen getroffen werden können.
Wenn der Preis unterhalb der unteren Bahnlinie liegt, kauft man zu viel; wenn der Preis über der oberen Bahnlinie liegt, verkauft man zu wenig. Wenn man übermäßig viel macht, setzt man die Stop-Loss-Linie auf den Einstiegspreis multipliziert mit dem Stop-Factor und die Stop-Loss-Linie auf den Einstiegspreis multipliziert mit dem Stop-Factor.
Die Strategie beinhaltet zusätzliche Regeln, wie z. B. nur ein Signal pro 24 Stunden, um unnötige Transaktionen zu vermeiden.
Maßnahmen zur Risikokontrolle:
Die Strategie ist insgesamt eine einfache Trendverfolgung, die die Brin-Streifen verwendet, um Preisunregelmäßigkeiten zu erkennen und Trends zu verfolgen. Es gibt noch Optimierungsmöglichkeiten in Bezug auf Parameteroptimierung, Risikokontrolle und Signalfilterung, aber die Kernidee ist einfach und klar und eignet sich als Einstieg in die Strategie.
/*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")