Acompanhamento dinâmico da estratégia de crossover SMA aprimorada por ADX

SMA ADX 交叉 追踪止损 止盈 止损 趋势跟踪 动量指标 不重绘
Data de criação: 2025-08-04 09:39:26 última modificação: 2025-08-04 09:39:26
cópia: 0 Cliques: 216
2
focar em
319
Seguidores

Acompanhamento dinâmico da estratégia de crossover SMA aprimorada por ADX Acompanhamento dinâmico da estratégia de crossover SMA aprimorada por ADX

Visão geral

A estratégia de cruzamento de SMA de traçado dinâmico ADX é um sistema de negociação quantitativa que combina o sinal de cruzamento de SMA simples com o filtro ADX. A estratégia confirma a intensidade da tendência do mercado com o indicador ADX, executa o sinal de negociação de SMA cruzado apenas se houver bastante dinâmica e usa um mecanismo de stop loss e traçado de stop loss dinâmico para proteger os lucros e limitar o risco.

Princípio da estratégia

A lógica central da estratégia baseia-se nos seguintes componentes-chave:

  1. Sinais de cruzamento SMA: Usando uma média móvel simples de curto prazo (default 3 cycles) que gera um sinal positivo quando o preço atravessa a SMA para cima e um sinal negativo quando o preço atravessa a SMA para baixo.

  2. Filtro ADXO indicador ADX calculado manualmente (o período padrão é de 15), só confirma que o mercado tem força de tendência suficiente para executar uma transação quando o ADX é maior do que o limite definido (o padrão é de 15). Isso efetivamente filtra os falsos sinais em mercados de turbulência.

  3. Gestão de Riscos Dinâmicos:

    • Configure o nível de parada com um número fixo de pontos ((80 pontos por padrão)
    • Configure o nível de perda de um número fixo de pontos (default 35 pontos)
    • Aplicação de um mecanismo de tracking stop loss (default 15), proteção de lucros obtidos durante o desenvolvimento de tendências
  4. Gestão de sessõesA obrigação de manter todas as posições em posição livre no final da sessão de negociação designada (default 16:00) para evitar o risco de overnight.

  5. Alerta em tempo real: Quando o sinal de negociação é acionado, uma mensagem de alerta em formato JSON é gerada, contendo a direção da negociação, o preço de entrada, o preço de parada e o preço de parada.

  6. Função de prevenção de redesenho: fornece a função reso_no_repaint para garantir que o indicador não seja repintado, aumentando a confiabilidade da política.

Vantagens estratégicas

  1. Mecanismo de confirmação de tendênciasA combinação de SMA e ADX permite identificar tendências fortes e reduzir os sinais errôneos em mercados de turbulência. A estratégia aumenta a probabilidade de sucesso das negociações em comparação com a simples estratégia de SMA.

  2. Gestão de Riscos Flexível: Dispõe de uma ampla gama de medidas de controlo de risco, incluindo paradas fixas, paradas de alvo e paradas de rastreamento, permitindo que os comerciantes ajustem os parâmetros de acordo com as suas preferências de risco.

  3. Funções de gestão de sessõesO sistema de liquidação automática de posições no final do dia de negociação, para evitar o risco de overnight, é especialmente adequado para os comerciantes do dia ou para os comerciantes que desejam evitar o risco de notícias e eventos econômicos importantes.

  4. Sistema de alerta em tempo real: Fornece alertas em formato JSON estruturado para facilitar a integração em sistemas de negociação automatizados ou mecanismos de notificação.

  5. Simples e eficazA lógica da estratégia é clara, com poucos parâmetros, fácil de entender e ajustar, para todos os níveis de comerciantes.

  6. Desenho anti-redesenho: Garante a confiabilidade da estratégia no ambiente de disco rígido através da função de prevenção de redesenho.

Risco estratégico

  1. Volatilidade de SMA a curto prazoO SMA de 3 períodos usado por defeito pode ser muito sensível, gerando excesso de sinais de negociação em mercados altamente voláteis, aumentando os custos de negociação e podendo causar perdas contínuas. A solução é ajustar o comprimento do SMA de acordo com diferentes condições de mercado e prazos de tempo.

  2. Gestão de riscos de pontuação fixaA estratégia usa pontos fixos em vez de porcentagens ou múltiplos de ATR para definir o stop loss, o que pode não ser flexível em diferentes ambientes de volatilidade. O stop loss em mercados de alta volatilidade pode ser muito pequeno e o stop loss em mercados de baixa volatilidade pode ser muito grande.

  3. ADX de atrasoO ADX é um indicador de atraso, que pode dar sinais de confirmação somente depois que a tendência se estabeleceu, resultando em entrada tardia. Isso pode ser melhorado através da otimização dos parâmetros do ADX ou em combinação com outros indicadores de liderança.

  4. Falta de distinção entre estados de mercadoA estratégia não distingue entre diferentes estados de mercado (como tendências, oscilações intercalares), e usa a mesma lógica de negociação em todos os ambientes de mercado, o que pode levar a um fraco desempenho em mercados não tendenciais.

  5. Limitação de um único período de tempoA estratégia baseia-se apenas na análise de um único período de tempo e, na falta de confirmação de vários períodos de tempo, pode ter perdido importantes mudanças de mercado no contexto de tendências maiores.

Direção de otimização da estratégia

  1. Melhorias na gestão de riscos dinâmicos: Substituição de um stop loss de pontos fixos por um sistema de gestão de risco dinâmico baseado no ATR, permitindo que a estratégia se adapte a diferentes ambientes de volatilidade do mercado. Por exemplo, pode-se definir um stop loss de 1,5 vezes o ATR e um stop loss de 3 vezes o ATR.

  2. Análise de Multi-Framas de Tempo: Adicionar a confirmação de tendências em quadros de tempo mais elevados, negociando apenas na direção de tendências maiores, aumentando a taxa de vitória. Pode ser adicionado um SMA de período mais longo como um filtro de tendência.

  3. Identificação do estado do mercadoIntrodução de mecanismos de classificação de estados de mercado, como indicadores de volatilidade ou indicadores de intensidade de tendência, aplicando diferentes parâmetros de estratégia ou lógica de negociação em diferentes ambientes de mercado.

  4. Optimização de entradaConsidere adicionar indicadores adicionais de confirmação de entrada, como o RSI (indice de força relativa) ou a faixa de Brin, para melhorar a qualidade do sinal de entrada. Também é possível implementar estratégias de construção de armazém em lotes, reduzindo o risco de entrada em um único ponto.

  5. Parâmetros de adaptação: Implementação de um mecanismo de auto-adaptação de parâmetros que ajusta automaticamente o comprimento do SMA, o limiar ADX e os parâmetros de gerenciamento de risco de acordo com o comportamento recente do mercado, permitindo que a estratégia se adapte a condições de mercado em mudança.

  6. Filtro de tempoO filtro de horário de negociação foi adicionado para evitar períodos de baixa liquidez ou de alta volatilidade nos noticiários, reduzindo o risco de deslizamentos e movimentos anormais.

Resumir

A estratégia de cruzamento SMA de acompanhamento dinâmico ADX é um sistema de negociação completo que combina análise técnica e gerenciamento de risco. Combinando o simples sinal de cruzamento SMA com a confirmação de tendência ADX, a estratégia permite identificar com mais precisão oportunidades de negociação vantajosas. O mecanismo de parada dinâmica e de parada de rastreamento oferece um bom controle de risco, enquanto o recurso de gerenciamento de sessão reduz ainda mais o risco durante a noite.

Apesar de algumas limitações, como a gestão de risco de pontos fixos e análise de um único período de tempo, esses problemas podem ser resolvidos através da direção de otimização apresentada neste artigo. A estratégia tem potencial para ser um sistema de negociação mais robusto e adaptável, através da introdução de melhorias como a gestão de risco dinâmico baseada no ATR, análise de múltiplos períodos de tempo e identificação de estado de mercado.

Em última análise, o sucesso da estratégia depende do ajuste minucioso dos parâmetros do comerciante e da sua adaptabilidade a um mercado e um período de tempo específicos. Recomenda-se a realização de um bom retorno e simulação de negociação antes da negociação real para verificar o desempenho da estratégia em diferentes condições de mercado.

Código-fonte da estratégia
/*backtest
start: 2024-08-04 00:00:00
end: 2025-08-02 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("safa bot alert", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
smaLength         = input.int(3, title="SMA Length")
tpPoints          = input.float(80, title="Take Profit (Points)")
slPoints          = input.float(35, title="Stop Loss (Points)")
trailPoints       = input.float(15, title="Trailing Stop (Points)")
sessionCloseHour  = input.int(16, "Session Close Hour (24h)")
sessionCloseMinute = input.int(0, "Session Close Minute")

// === ADX INPUTS ===
adxLength         = input.int(15, title="ADX Length")
adxThreshold      = input.float(15, title="Minimum ADX to Trade")

// === INDICATORS ===
sma = ta.sma(close, smaLength)
plot(sma, title="3 SMA", color=color.orange)

// === MANUAL ADX CALCULATION ===
upMove   = high - high[1]
downMove = low[1] - low
plusDM   = (upMove > downMove and upMove > 0) ? upMove : 0
minusDM  = (downMove > upMove and downMove > 0) ? downMove : 0

trur    = ta.rma(ta.tr, adxLength)
plusDI  = 100 * ta.rma(plusDM, adxLength) / trur
minusDI = 100 * ta.rma(minusDM, adxLength) / trur
dx      = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx     = ta.rma(dx, adxLength)

plot(adx, title="ADX", color=color.blue)

// === ENTRY CONDITIONS ===
longCondition  = ta.crossover(close, sma) and adx > adxThreshold
shortCondition = ta.crossunder(close, sma) and adx > adxThreshold

// === STRATEGY EXECUTION ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit", from_entry="Long", limit=close + tpPoints, stop=close - slPoints, trail_points=trailPoints, trail_offset=trailPoints)

    // FIRE ALERT
    string alertMsg = '{"signal":"BUY","entry":' + str.tostring(close) + 
                      ',"SL":' + str.tostring(close - slPoints) + 
                      ',"TP":' + str.tostring(close + tpPoints) + 
                      ',"time":"' + str.tostring(time) + '"}'
    alert(alertMsg, alert.freq_once_per_bar_close)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit", from_entry="Short", limit=close - tpPoints, stop=close + slPoints, trail_points=trailPoints, trail_offset=trailPoints)

    // FIRE ALERT
    string alertMsg = '{"signal":"SELL","entry":' + str.tostring(close) + 
                      ',"SL":' + str.tostring(close + slPoints) + 
                      ',"TP":' + str.tostring(close - tpPoints) + 
                      ',"time":"' + str.tostring(time) + '"}'
    alert(alertMsg, alert.freq_once_per_bar_close)

// === FORCE EXIT AT SESSION CLOSE ===
sessionCloseTime = (hour == sessionCloseHour and minute == sessionCloseMinute)
if (sessionCloseTime)
    strategy.close_all(comment="Session Close")

// === NO-REPAINT FUNCTION ===
reso_no_repaint(exp, use, res) =>
    use ? request.security(syminfo.tickerid, res, exp[1], lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_on)[0] : exp