Esta estratégia integra múltiplos indicadores técnicos, incluindo Supertrend, Dual Moving Average (DEMA) e Bollinger Bands, para tirar partido dos seus pontos fortes e gerar sinais de negociação mais precisos.
A estratégia usa um ATR de 12 períodos e uma média de preços para calcular as faixas superior e inferior do Supertrend e identifica sinais longos e curtos quando o preço quebra essas faixas. Enquanto isso, um DEMA de 200 períodos serve como um indicador auxiliar para julgamento da tendência. Além disso, as faixas de Bollinger ajudam a determinar o momento ideal para entradas e stop-loss.
Os sinais de compra são gerados quando o preço quebra acima da faixa superior. Os sinais de venda são gerados quando o preço quebra abaixo da faixa inferior. Quando o preço quebra através da faixa superior ou inferior do Supertrend, marcadores e o texto
O DEMA é representado acima ou abaixo da curva de preços em branco para julgar a direção geral da tendência do mercado.
As bandas de Bollinger são usadas para identificar o melhor momento para entradas e stop-loss. Suas bandas superior e inferior formam um canal que engloba flutuações de preços, o que ajuda a determinar quando os preços se afastaram de sua faixa normal, ou seja, se tornam excessivamente voláteis.
Após entrar em um comércio, a estratégia utiliza métodos de stop loss e take profit para bloquear lucros ou reduzir perdas, definindo o preço de stop loss e o preço take profit para redução automática da posição.
A integração de vários indicadores permite que esta estratégia aproveite ao máximo os seus pontos fortes individuais para gerar sinais de negociação mais precisos.
O Supertrend é capaz de filtrar o ruído do mercado e evitar o excesso de negociação. O DEMA pode determinar a direção geral da tendência e evitar a negociação contra a tendência.
Os alertas móveis permitem pedidos de negociação oportunos. O stop loss automático e o take profit permitem bloquear os lucros e reduzir as perdas.
A integração de múltiplos indicadores aumenta a complexidade da estratégia e a probabilidade de erros.
Além disso, as configurações de stop loss excessivamente agressivas podem amplificar as perdas.
Podem ser testadas diferentes combinações de parâmetros para encontrar o conjunto óptimo de parâmetros. Os parâmetros também podem ser ajustados com base em diferentes condições de mercado.
A tentativa de utilização independente de indicadores individuais pode reduzir os falsos sinais.
Os critérios de stop loss e de take profit também estão sujeitos a ajustamentos, tais como stop loss de atraso e stop loss parcial.
Esta estratégia combina os pontos fortes de múltiplos indicadores técnicos para a geração de sinais comerciais e tem uma praticidade relativamente elevada.
/*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)