SuperTrend Bollinger Bands Estrategia de negociación de media móvil doble

El autor:¿ Qué pasa?, Fecha: 2024-02-23 13:58:36
Las etiquetas:

img

Resumen general

Esta estrategia integra múltiples indicadores técnicos, incluidos Supertrend, Dual Moving Average (DEMA) y Bollinger Bands, para aprovechar sus puntos fuertes y generar señales comerciales más precisas.

Estrategia lógica

La estrategia utiliza un ATR de 12 períodos y un promedio de precios para calcular las bandas superior e inferior de Supertrend e identifica señales largas y cortas cuando el precio rompe esas bandas. Mientras tanto, un DEMA de 200 períodos sirve como un indicador auxiliar para el juicio de tendencia. Además, las bandas de Bollinger ayudan a determinar el momento óptimo para las entradas y las pérdidas de parada.

Las señales de compra se generan cuando el precio se rompe por encima de la banda superior. Las señales de venta se generan cuando el precio se rompe por debajo de la banda inferior. Cuando el precio se rompe a través de la banda superior o inferior de Supertrend, se trazarán marcadores y el texto Buy o Sell en las bandas correspondientes. También se envían alertas móviles simultáneamente.

El DEMA se representa por encima o por debajo de la curva de precios en color blanco para juzgar la dirección general de la tendencia del mercado.

Las bandas de Bollinger se utilizan para identificar el mejor momento para las entradas y para detener pérdidas. Sus bandas superior e inferior forman un canal que abarca las fluctuaciones de precios, lo que ayuda a determinar cuándo los precios se han alejado de su rango normal, es decir, se han vuelto excesivamente volátiles.

Después de entrar en una operación, la estrategia utiliza métodos de stop loss y take profit para bloquear las ganancias o reducir las pérdidas estableciendo el precio de stop loss y el precio de take profit para la reducción automática de la posición.

Análisis de ventajas

La integración de múltiples indicadores permite a esta estrategia aprovechar al máximo sus fortalezas individuales para generar señales comerciales más precisas.

Supertrend es capaz de filtrar el ruido del mercado y evitar el exceso de negociación.

Las alertas móviles permiten pedidos de negociación oportunos. El stop loss automático y el take profit permiten bloquear las ganancias y reducir las pérdidas.

Análisis de riesgos

La integración de múltiples indicadores aumenta la complejidad de la estrategia y la probabilidad de errores.

Además, la estabilidad de las alertas móviles también afecta a la eficacia de la toma de ganancias y la parada de pérdidas oportunas.

Direcciones de optimización

Se podrían probar diferentes combinaciones de parámetros para encontrar el conjunto óptimo de parámetros.

El uso independiente de indicadores individuales puede reducir las señales falsas. También se podrían añadir indicadores suplementarios para una mayor optimización.

Los criterios de stop loss y take profit también están sujetos a ajustes, como los de stop loss de seguimiento y los de stop loss parcial.

Resumen de las actividades

Esta estrategia combina los puntos fuertes de múltiples indicadores técnicos para la generación de señales comerciales y tiene una practicidad relativamente alta.


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
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)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
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

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
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.new(color.green, 0))
plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))

dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
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.new(color.red, 0))
plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)
// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    //strategy.exit("Sell")
    //alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    //strategy.exit("Cover")
    //alert("Sell Signal - Supertrend")


// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)

Más.