Esta estratégia é baseada nos trilhos superior e inferior das Bandas de Bollinger para determinar quando o preço atravessa o trilho superior das Bandas de Bollinger para ir longo e atravessa o trilho inferior para ir curto.
Esta estratégia usa o trilho médio / superior / inferior das Bandas de Bollinger para determinar intervalos de preços extremos. O trilho médio é a média móvel simples dos preços de fechamento nos últimos 25 períodos. Os trilhos superior e inferior são um desvio padrão acima e abaixo do trilho médio. Quando o preço atravessa o trilho superior ou inferior, ele indica que há uma quebra e comportamento anormal do preço, que pode ser usado para tomar decisões de negociação.
Se o preço estiver abaixo do trilho inferior, vá longo. Se o preço estiver acima do trilho superior, vá curto. Ao ir longo, defina a perda de parada para o preço de entrada multiplicado pelo fator de perda de parada e tire lucro para o preço de entrada multiplicado pelo fator de lucro.
A estratégia também incorpora algumas regras auxiliares, como permitir apenas um sinal por 24 horas para evitar negociações desnecessárias.
Gestão de riscos:
Em resumo, esta é uma estratégia simples de rastreamento de tendências usando Bandas de Bollinger para determinar preços anormais e rastrear tendências.
/*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")