Esta estrategia se basa en los rieles superior e inferior de las bandas de Bollinger para determinar cuándo el precio rompe el rieles superior de las bandas de Bollinger para ir largo y rompe el rieles inferior para ir corto.
Esta estrategia utiliza el tren medio / superior / inferior de las bandas de Bollinger para determinar rangos de precios extremos. El tren medio es el promedio móvil simple de los precios de cierre en los últimos 25 períodos. Los carriles superior e inferior son una desviación estándar por encima y por debajo del tren medio. Cuando el precio rompe el tren superior o inferior, indica que hay una ruptura y un comportamiento anormal del precio, que se puede usar para tomar decisiones comerciales.
Si el precio está por debajo del rieles inferior, ir largo. Si el precio está por encima del rieles superior, ir corto. Cuando ir largo, establecer el stop loss al precio de entrada multiplicado por el factor de stop loss y tomar el beneficio al precio de entrada multiplicado por el factor de tomar el beneficio.
La estrategia también incorpora algunas reglas auxiliares, como permitir solo una señal por 24 horas para evitar operaciones innecesarias.
Gestión de riesgos:
En resumen, esta es una estrategia de seguimiento de tendencias simple que utiliza bandas de Bollinger para determinar precios anormales y seguir tendencias.
/*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")