Estrategia cuantitativa basada en la inversión de la banda de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-11-22 17:44:40
Las etiquetas:

img

Resumen general

La estrategia se llama Bollinger Band Reversal Based Quantitative Strategy. Utiliza los rieles superiores e inferiores de las Bandas de Bollinger para determinar entradas y salidas. Cuando el precio está cerca del rieles inferior de las bandas y muestra signos de un avance a la baja, indica que el precio puede estar invirtiendo, así que vaya largo. Cuando el precio sube al rieles superior, indica que el precio puede revertir hacia abajo, así que vaya corto.

Estrategia lógica

La estrategia utiliza el indicador RSI para determinar entradas largas. Específicamente, verifica si el precio de cierre de la barra más reciente es menor que el precio más bajo de las 6 barras anteriores, mientras tanto, el ancho de banda de Bollinger (BBW) es mayor que un umbral y la relación de banda de Bollinger (BBR) está dentro de un rango. Si se cumplen estos criterios, indica que el precio puede estar invirtiendo, así que vaya largo.

La salida es sencilla. Cuando el RSI supera los 70, lo que indica que el precio está sobrecalentado, cierra la posición larga.

Análisis de ventajas

La mayor ventaja de esta estrategia es utilizar los rieles superiores e inferiores de las bandas de Bollinger para determinar las entradas. Cuando BB invierte la dirección, vaya largo o corto para atrapar oportunidades de reversión a corto plazo. En comparación con las estrategias simples de RSI, esta estrategia tiene criterios más prudentes para las entradas, evitando así operaciones incorrectas.

Además, la estrategia es sensible a los parámetros. Al ajustar BBW y BBR, se puede optimizar para diferentes productos y lograr mejores resultados.

Análisis de riesgos

El principal riesgo es que BB no predice perfectamente las reversiones de precios. Si el momento no es apropiado, fácilmente conduce a perder las mejores entradas o pérdidas flotantes.

Además, las fluctuaciones a corto plazo pueden desencadenar entradas y salidas frecuentes, aumentando los costos de las comisiones y deslizamientos.

Direcciones de optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Optimiza los parámetros: prueba y ajusta BBW, BBR y otros parámetros con mayor precisión para diferentes productos.

  2. Añadir mecanismos de stop loss, como los de stop loss trasero y stop loss temporal, para limitar las pérdidas máximas.

  3. Incorporar otros indicadores, como KDJ y MACD, para hacer que las entradas sean más confiables.

  4. Mejorar la lógica de salida. La salida actual es simple. Puede optimizar con la obtención de ganancias o salidas basadas en la volatilidad.

Conclusión

Esta estrategia utiliza las características de las bandas de Bollinger para determinar puntos de reversión potenciales para entradas y salidas. En comparación con indicadores individuales como el RSI, tiene un tiempo más preciso. Con el ajuste de parámetros, stop losses y take profits, puede ser más confiable. Pero la predicción de BB no es perfecta, por lo que todavía hay algo de aleatoriedad en el rendimiento.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")


length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100


basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100

criteriamet = 0
crossUnderB0 = crossunder(bbr,0)

since_x_under = barssince(crossUnderB0)


sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) //  and bbr3 < 0 

if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
	criteriamet := 1
else
	criteriamet := 0	
//plot (criteriamet)

//exit 
exitmet = 0
if rsi > 70
	exitmet := 1
else
	exitmet := 0

if criteriamet == 1
	strategy.entry("long", strategy.long)
if exitmet == 1
	strategy.close("long")



Más.