Estrategia mejorada de inversión de bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-09-21 11:45:37
Las etiquetas:

Resumen general

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.

Estrategia lógica

  1. Calcular los parámetros estándar BB base, dev, BB superior y BB inferior.

  2. Calcular la SMA y las bandas de desviación upex2 y dnex2 a un cierto porcentaje de la SMA.

  3. Tome el promedio de upex2, dnex2 con BB superior, BB inferior para obtener upex3 y dnex3.

  4. Tomemos mayor de upex3 y superior BB como nueva banda superior upex, menor de dnex3 y inferior BB como nueva banda inferior dnex.

  5. Ir largo cuando el precio está por debajo de dnex, cerrar la posición cuando aparece la vela verde (cerrar > abrir).

Análisis de ventajas

  1. El BB mejorado mejora la sensibilidad del BB original para señales de reversión anteriores.

  2. Filtra las flechas con patrón de candelabro.

  3. El análisis de retroceso muestra una rentabilidad estable desde 2008 hasta 2018, curva suave, DD máximo < 20%.

  4. Apalancamiento configurable, horas de negociación para el control de riesgos.

Análisis de riesgos

  1. La mala sintonización del parámetro BB puede causar un exceso de negociación o oportunidades perdidas.

  2. Solo por mucho tiempo, sin poder beneficiarse de la inversión de tendencia.

  3. El filtro de vela puede retrasarse, no pudiendo salir a tiempo.

  4. Los datos de 10 años no son suficientes para probar la robustez.

  5. No puede adaptarse a grandes espacios o saltos de apertura.

Direcciones de optimización

  1. Combinaciones de parámetros de prueba para optimizar la configuración de BB.

  2. Añadir otros filtros de señal para mejorar la rentabilidad.

  3. Considere las operaciones cortas cuando el precio excede la banda superior.

  4. Establecer el stop loss para limitar las pérdidas de una sola operación.

  5. Desarrollar el ajuste automático basado en el mercado cambiante.

  6. Optimice las reglas de entrada para los huecos y saltos.

  7. Extensión del período de prueba posterior a los parámetros de prueba.

Resumen de las actividades

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()

Más.