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