Esta estrategia utiliza un indicador mejorado de Bollinger Bands para identificar los puntos de inversión de precios, va largo cuando el precio se acerca a la banda inferior y cierra la posición cuando aparece una vela verde, con el objetivo de capturar la reversión media en la banda inferior.
Calcular los parámetros estándar BB base, dev, BB superior y BB inferior.
Calcular la SMA y las bandas de desviación upex2 y dnex2 a un cierto porcentaje de la SMA.
Tome el promedio de upex2, dnex2 con BB superior, BB inferior para obtener upex3 y dnex3.
Tomemos mayor de upex3 y superior BB como nueva banda superior upex, menor de dnex3 y inferior BB como nueva banda inferior dnex.
Ir largo cuando el precio está por debajo de dnex, cerrar la posición cuando aparece la vela verde (cerrar > abrir).
El BB mejorado mejora la sensibilidad del BB original para señales de reversión anteriores.
Filtra las flechas con patrón de candelabro.
El análisis de retroceso muestra una rentabilidad estable desde 2008 hasta 2018, curva suave, DD máximo < 20%.
Apalancamiento configurable, horas de negociación para el control de riesgos.
La mala sintonización del parámetro BB puede causar un exceso de negociación o oportunidades perdidas.
Solo por mucho tiempo, sin poder beneficiarse de la inversión de tendencia.
El filtro de vela puede retrasarse, no pudiendo salir a tiempo.
Los datos de 10 años no son suficientes para probar la robustez.
No puede adaptarse a grandes espacios o saltos de apertura.
Combinaciones de parámetros de prueba para optimizar la configuración de BB.
Añadir otros filtros de señal para mejorar la rentabilidad.
Considere las operaciones cortas cuando el precio excede la banda superior.
Establecer el stop loss para limitar las pérdidas de una sola operación.
Desarrollar el ajuste automático basado en el mercado cambiante.
Optimice las reglas de entrada para los huecos y saltos.
Extensión del período de prueba posterior a los parámetros de prueba.
Esta estrategia identifica puntos de reversión con BB mejorado y va largo cerca de la banda inferior con filtro de velas para obtener ganancias rápidas. El rendimiento de la prueba de retroceso es bueno. Pero solo largo, muestra limitada, ajuste de parámetros necesario. Puede enfrentar un descenso cuando el mercado cambia. Los próximos pasos son confirmar señales para aumentar la tasa de ganancia, operaciones cortas, prueba de retroceso más larga para la robustez, para mejorar la adaptabilidad y la estabilidad.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") p = input(20, "bars") d = input(25, "percent") showlines = input(true, defval = true, title = "Show Lines?") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") mult = input(2.0, minval=0.001, maxval=50) basis = sma(close, p) dev = mult * stdev(close, p) source = close upperBB = basis + dev lowerBB = basis - dev b1 = plot(basis, color=gray, linewidth=1) p1 = plot(upperBB, color=aqua, linewidth=1) p2 = plot(lowerBB, color=aqua, linewidth=1) //SMAs sma = sma(close, p) upex2 = sma * ((100 + d) / 100) dnex2 = sma * ((100 - d) / 100) upex3 = (upex2 + upperBB) / 2 dnex3 = (dnex2 + lowerBB) / 2 upex = max(upperBB, upex3) dnex = min(lowerBB, dnex3) //exit = (high > sma and low < sma) exit = close > open //Lines col = showlines ? blue : na plot(upex, linewidth = 3, color = col, transp = 0) plot(sma, linewidth = 3, color = col, transp = 0) plot(dnex, linewidth = 3, color = col, transp = 0) //Trading lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[p])) strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex) if exit strategy.close_all()