Estrategia de las bandas de Bollinger de Supertrend

El autor:¿ Qué pasa?, Fecha: 2023-12-01 16:29:56
Las etiquetas:

img

Resumen general

La estrategia de Supertrend Bollinger Bands es una estrategia común de indicadores de trailing stop basada en el ATR (Average True Range). Esta estrategia utiliza el indicador Supertrend para dibujar canales de tendencia alcista y bajista en el gráfico y genera señales comerciales en combinación con Bollinger Bands.

Estrategia lógica

La estrategia utiliza dos parámetros principales - período y multiplicador, con valores predeterminados de 10 y 3, respectivamente, para calcular las líneas de Supertrend.

Línea superior: Cerrar - (multiplicador x ATR) Línea inferior: cerrar + (multiplicador x ATR)

Cuando el precio de cierre es superior a la línea superior anterior, se considera una señal alcista.

La estrategia también incorpora el indicador de Bollinger Bands, utilizando la banda media como línea de base, y las bandas superior e inferior ubicadas a dos desviaciones estándar de ella.

Ventajas

  1. Utilice ATR para calcular dinámicamente la volatilidad, capturando rápidamente los cambios de tendencia del mercado
  2. La combinación de bandas de Bollinger hace que las señales comerciales sean más confiables
  3. Los parámetros personalizables se adaptan a diferentes entornos de mercado

Los riesgos

  1. Es propenso a señales falsas en los mercados laterales
  2. La configuración incorrecta de los parámetros puede causar una sobrecomercialización
  3. Incapacidad de determinar los puntos de inversión de tendencia, con cierto retraso

Direcciones de optimización

  1. Optimizar el parámetro del período ATR para reducir las operaciones de ruido mediante filtros
  2. Incorporar otros indicadores para determinar el soporte/resistencia con el fin de reducir la probabilidad de retracción de los beneficios
  3. Añadir reglas de dimensionamiento de posiciones para limitar las pérdidas por operación

Resumen de las actividades

La estrategia de Supertrend Bollinger Bands integra los puntos fuertes de múltiples indicadores técnicos y utiliza un mecanismo de parada de seguimiento dinámico para realizar un seguimiento efectivo de las tendencias del mercado. Esta estrategia altamente personalizable se adapta bien a diferentes mercados, por lo que es una estrategia de búsqueda de breakout recomendada. Sin embargo, los riesgos como los whipsaws y el exceso de comercio deben abordarse mediante nuevas optimizaciones para adaptarse a entornos de mercado más complejos.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short)
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

Más.