O recurso está a ser carregado... Carregamento...

Tendência dinâmica de múltiplos indicadores na sequência de uma estratégia baseada na EMA e na SMA

Autora:ChaoZhang, Data: 2024-12-27 14:12:50
Tags:EMASMAATRPPsupertendência

img

Estratégia geral

Esta estratégia é um sistema dinâmico de tendência que combina vários indicadores técnicos. Integra Pivot Points, indicador SuperTrend e sinais cruzados de média móvel para identificar tendências de mercado e oportunidades de negociação.

Princípios de estratégia

A estratégia baseia-se nos seguintes mecanismos essenciais:

  1. Utiliza dados de preços de prazo fixo para análise, evitando interferências de prazos diferentes
  2. Calcula as SMAs com base nas EMAs de 8 e 21 períodos para formar uma tendência após a base
  3. Combina ATR e pontos pivô para calcular o indicador SuperTrend para confirmação da direção da tendência
  4. Considera válidos apenas os sinais de cruzamento SMA se ocorrerem dentro de 3 períodos de um ponto de pivô
  5. Calcula e acompanha dinamicamente os níveis de suporte/resistência para referência de negociação

Vantagens da estratégia

  1. A validação cruzada de múltiplos indicadores melhora a fiabilidade do sinal
  2. Análise de tempo fixo reduz interferência de sinal falso
  3. A validação do ponto pivô garante que as transações ocorram em níveis de preço chave
  4. O acompanhamento dinâmico de suporte/resistência ajuda a determinar os níveis de stop-loss e take profit
  5. O indicador SuperTrend fornece uma confirmação adicional da direcção da tendência
  6. Configurações de parâmetros flexíveis permitem o ajustamento às diferentes condições de mercado

Riscos estratégicos

  1. Indicadores múltiplos podem provocar atraso no sinal
  2. Pode gerar sinais falsos excessivos em mercados variados
  3. Análise de prazo fixo pode perder sinais importantes em outros prazos
  4. A validação do ponto pivô pode causar a perda de algumas oportunidades comerciais importantes
  5. A otimização dos parâmetros pode levar a um sobreajuste

Orientações para a otimização da estratégia

  1. Introduzir um mecanismo de filtragem da volatilidade para reduzir a frequência de negociação durante períodos de baixa volatilidade
  2. Adicionar indicadores de confirmação da força da tendência como o ADX ou o MACD
  3. Desenvolver um sistema adaptativo de parâmetros que se ajuste dinamicamente com base nas condições do mercado
  4. Incorporar análise de volume para melhorar a confiabilidade do sinal
  5. Implementar um mecanismo dinâmico de stop-loss que se ajuste com base na volatilidade do mercado

Resumo

Esta estratégia estabelece uma tendência relativamente completa após o sistema de negociação através da combinação de múltiplos indicadores técnicos. Sua principal vantagem reside na melhoria da confiabilidade do sinal através de análise de período de tempo fixo e validação de ponto de pivô. Embora existam certos riscos de atraso, estes podem ser efetivamente controlados através de otimização de parâmetros e medidas de gerenciamento de riscos. Os comerciantes são aconselhados a realizar um backtesting completo antes da implementação ao vivo e ajustar parâmetros de acordo com características específicas do mercado.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Buy Sell Pivot Point", overlay=true)

// Input Parameters
prd = input.int(defval=2, title="Periodo Pivot Point", minval=1, maxval=50)
Factor = input.float(defval=3, title="Fator ATR", minval=1, step=0.1)
Pd = input.int(defval=10, title="Periodo ATR", minval=1)
showpivot = input.bool(defval=false, title="Mostrar Pivot Points")
showlabel = input.bool(defval=true, title="Mostrar Buy/Sell Labels")
showcl = input.bool(defval=false, title="Mostrar PP Center Line")
showsr = input.bool(defval=false, title="Mostrar Support/Resistance")
sma1_length = input.int(defval=8, title="SMA 1")
sma2_length = input.int(defval=21, title="SMA 2")
timeframe_fix = input.timeframe("D", title="Timeframe Fixo")

// Request data from the fixed timeframe
fix_close = request.security(syminfo.tickerid, timeframe_fix, close)
fix_high = request.security(syminfo.tickerid, timeframe_fix, high)
fix_low = request.security(syminfo.tickerid, timeframe_fix, low)
fix_ph = request.security(syminfo.tickerid, timeframe_fix, ta.pivothigh(prd, prd))
fix_pl = request.security(syminfo.tickerid, timeframe_fix, ta.pivotlow(prd, prd))
fix_atr = request.security(syminfo.tickerid, timeframe_fix, ta.atr(Pd))

// Convert Pivot High/Low to valid boolean for conditions
ph_cond = not na(fix_ph)
pl_cond = not na(fix_pl)

// Draw Pivot Points
plotshape(ph_cond and showpivot, title="Pivot High", text="H", style=shape.labeldown, color=color.red, textcolor=color.red, location=location.abovebar, offset=-prd)
plotshape(pl_cond and showpivot, title="Pivot Low", text="L", style=shape.labelup, color=color.lime, textcolor=color.lime, location=location.belowbar, offset=-prd)

// Calculate the Center line using pivot points
var float center = na
lastpp = ph_cond ? fix_ph : pl_cond ? fix_pl : na
if not na(lastpp)
    center := na(center) ? lastpp : (center * 2 + lastpp) / 3

// Upper/Lower bands calculation
Up = center - (Factor * fix_atr)
Dn = center + (Factor * fix_atr)

// Get the trend
var float TUp = na
var float TDown = na
var int Trend = 0
TUp := na(TUp[1]) ? Up : fix_close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := na(TDown[1]) ? Dn : fix_close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
Trend := fix_close > TDown[1] ? 1 : fix_close < TUp[1] ? -1 : nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// Plot the trend
linecolor = Trend == 1 ? color.lime : Trend == -1 ? color.red : na
plot(Trailingsl, color=linecolor, linewidth=2, title="PP SuperTrend")

// Plot Center Line
plot(showcl ? center : na, color=showcl ? (center < fix_close ? color.blue : color.red) : na, title="Center Line")

// Calculate Base EMAs
ema_8 = ta.ema(fix_close, 8)
ema_21 = ta.ema(fix_close, 21)

// Calculate SMAs based on EMAs
sma1 = ta.sma(ema_8, sma1_length)
sma2 = ta.sma(ema_21, sma2_length)

// Plot SMAs
plot(sma1, color=#ffff00, linewidth=2, title="SMA 1 (based on EMA 8)")
plot(sma2, color=#aa00ff, linewidth=2, title="SMA 2 (based on EMA 21)")

// Initialize variables to track pivot points
var float last_pivot_time = na

// Update the pivot time when a new pivot is detected
if (ph_cond)
    last_pivot_time := bar_index
if (pl_cond)
    last_pivot_time := bar_index

// Calculate the crossover/crossunder signals
buy_signal = ta.crossover(sma1, sma2)  // SMA 8 crossing SMA 21 upwards
sell_signal = ta.crossunder(sma1, sma2)  // SMA 8 crossing SMA 21 downwards

// Ensure signal is only valid if it happens within 3 candles of a pivot point
valid_buy_signal = buy_signal and (bar_index - last_pivot_time <= 3)
valid_sell_signal = sell_signal and (bar_index - last_pivot_time <= 3)

// Plot Buy/Sell Signals
plotshape(valid_buy_signal and showlabel, title="Buy Signal", text="BUY", style=shape.labelup, color=color.lime, textcolor=color.black, location=location.belowbar)
plotshape(valid_sell_signal and showlabel, title="Sell Signal", text="SELL", style=shape.labeldown, color=color.red, textcolor=color.white, location=location.abovebar)

// Get S/R levels using Pivot Points
var float resistance = na
var float support = na
support := pl_cond ? fix_pl : support[1]
resistance := ph_cond ? fix_ph : resistance[1]

// Plot S/R levels
plot(showsr and not na(support) ? support : na, color=showsr ? color.lime : na, style=plot.style_circles, offset=-prd)
plot(showsr and not na(resistance) ? resistance : na, color=showsr ? color.red : na, style=plot.style_circles, offset=-prd)

// Execute trades based on valid signals
if valid_buy_signal
    strategy.entry("Buy", strategy.long)
if valid_sell_signal
    strategy.entry("Sell", strategy.short)

// Alerts
alertcondition(valid_buy_signal, title="Buy Signal", message="Buy Signal Detected")
alertcondition(valid_sell_signal, title="Sell Signal", message="Sell Signal Detected")
alertcondition(Trend != Trend[1], title="Trend Changed", message="Trend Changed")


Relacionados

Mais.