Estrategia de seguimiento inteligente dual-B

El autor:¿ Qué pasa?, Fecha: 2024-01-18 15:41:20
Las etiquetas:

img

Esta es una estrategia de negociación que utiliza bandas de Bollinger. La estrategia tiene como objetivo identificar oportunidades cuando los precios fluctúan violentamente usando bandas de Bollinger y tomar decisiones de compra o venta correspondientes.

Principio de la estrategia

La estrategia calcula la banda superior, la banda media y la banda inferior de las bandas de Bollinger para determinar si el precio actual se encuentra dentro del rango volátil y, por lo tanto, tomar decisiones sobre la apertura o cierre de posiciones. Cuando el precio se acerca a la banda superior, se considera el punto extremo para largos y la estrategia elige cerrar posiciones largas. Cuando el precio cae cerca de la banda inferior, se considera el punto extremo para cortes y la estrategia elige abrir posiciones largas.

Además, la estrategia también introduce factores de reversión de tendencia. Si hay una señal de reversión, también desencadenará las decisiones de compra o venta correspondientes.

  1. Calcular las bandas de Bollinger superiores, medias e inferiores
  2. Juzgar si el precio rompe las bandas y señales de reversión
    1. Rompiendo la banda media como señal de tendencia
    2. Cerca de la banda superior o inferior como señales de inversión
  3. Enviar órdenes de compra, venta o cierre

Utilizando las características de las bandas de Bollinger y combinando factores de tendencia y reversión, la estrategia intenta capturar puntos de reversión cuando aumenta la volatilidad.

Ventajas de la estrategia

En comparación con las estrategias de promedios móviles ordinarios, esta estrategia tiene las siguientes ventajas:

  1. Más sensibles, capaces de aprovechar las oportunidades cuando los precios fluctúan violentamente
  2. Combinar factores de tendencia y de reversión para evitar pérdidas por reversiones prematuras
  3. Tiene un cierto efecto FILTER para evitar compras/ventas innecesarias en zonas no volátiles
  4. Juzgar la dirección de la tendencia principal a través de la banda media para reducir la frecuencia de negociación
  5. Aumentar las condiciones del filtro de inversión para reducir los errores de evaluación

En general, esta estrategia combina relativamente bien las bandas de Bollinger y las barras de precios.

Riesgos y optimización

Sin embargo, esta estrategia sigue teniendo algunos riesgos:

  1. Los parámetros BB incorrectos no captan plenamente las fluctuaciones de precios
  2. Si la señal de reversión es incorrecta, falta de reversión o error en la evaluación de las reversiones
  3. Poca eficacia de las señales de banda media cuando la tendencia no es clara

En consecuencia, las optimizaciones futuras pueden centrarse en:

  1. Optimización adaptativa de los parámetros de BB basados en diferentes productos
  2. Aumentar los modelos de aprendizaje automático para juzgar la probabilidad de inversión
  3. Cambiar a otros indicadores cuando la tendencia no es clara
  4. Combine más patrones de precios para filtrar las señales comerciales

Conclusión

En conclusión, esta es una plantilla típica de estrategia de negociación de Bollinger Bands. Evita operaciones ineficaces excesivas comunes para el uso de Bollinger Bands solo al introducir el juicio de inversión de tendencia para filtrar las señales, lo que teóricamente puede conducir a un buen rendimiento de la estrategia.


/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, 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")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Más.