Estratégia de rejeição de média móvel com base no filtro de índice direcional médio

ADX MA WMA
Data de criação: 2024-05-17 10:35:58 última modificação: 2024-05-17 10:35:58
cópia: 1 Cliques: 644
1
focar em
1617
Seguidores

Estratégia de rejeição de média móvel com base no filtro de índice direcional médio

Visão geral

A estratégia usa várias médias móveis ((MA) como principal sinal de negociação e combina o índice de direção média ((ADX) como filtro. A principal idéia da estratégia é identificar oportunidades potenciais de múltiplas cabeças e cabeças vazias, comparando a relação entre a MA rápida, a MA lenta e a MA média.

Princípio da estratégia

  1. Calcule o MA rápido, o MA lento e o MA médio.
  2. Identificar potenciais níveis de pluralidade e vazio, comparando a relação entre o preço de fechamento e o MA lento.
  3. A relação entre o preço de fechamento e o MA rápido é usada para confirmar os níveis de heads e heads vazios.
  4. O indicador ADX é calculado manualmente para medir a intensidade da tendência.
  5. Quando o MA rápido atravessa o MA médio para cima, o ADX é maior do que o limiar definido e o nível de multiplicação é confirmado, gerando um sinal de entrada multiplo.
  6. Quando o MA rápido atravessa o MA médio para baixo, o ADX é maior do que o limiar definido e o nível de cabeçote é confirmado, gerando um sinal de entrada de cabeçote.
  7. Quando o preço de fechamento atravessa a MA lenta para baixo, gera um sinal de saída de cabeça; quando o preço de fechamento atravessa a MA lenta para cima, gera um sinal de saída de cabeça vazia.

Vantagens estratégicas

  1. O uso de MAs múltiplos permite uma captura mais abrangente das mudanças nas tendências e dinâmicas do mercado.
  2. A identificação de potenciais oportunidades de negociação pode ser feita comparando a relação entre o MA rápido, o MA lento e o MA médio.
  3. Usando o indicador ADX como filtro, pode-se evitar a produção de muitos falsos sinais em mercados de turbulência, aumentando a confiabilidade dos sinais de negociação.
  4. A lógica da estratégia é clara, fácil de entender e de implementar.

Risco estratégico

  1. A estratégia pode gerar mais falsos sinais em situações de tendências pouco visíveis ou de turbulência no mercado, resultando em negociações frequentes e perdas.
  2. A estratégia depende de indicadores atrasados como MA e ADX, podendo perder algumas oportunidades de formação de tendências iniciais.
  3. A configuração de parâmetros de uma estratégia (como o comprimento da MA e o limiar ADX) tem um grande impacto na performance da estratégia e precisa ser otimizada de acordo com diferentes mercados e variedades.

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

  1. Considere a introdução de outros indicadores técnicos, como RSI, MACD, etc., para aumentar a confiabilidade e a diversidade dos sinais de negociação.
  2. Para diferentes ambientes de mercado, pode-se definir uma combinação diferente de parâmetros para se adaptar às mudanças do mercado.
  3. Introduzir medidas de gestão de risco, como stop loss e gestão de posições, para controlar potenciais perdas.
  4. Combinado com análises fundamentais, como dados econômicos e mudanças de política, para obter uma visão mais abrangente do mercado.

Resumir

A estratégia de rejeição linear baseada no filtro do índice de direção média utiliza vários indicadores de MA e ADX para identificar oportunidades de negociação potenciais e filtrar sinais de negociação de baixa qualidade. A lógica da estratégia é clara, fácil de entender e implementar, mas na aplicação prática precisa prestar atenção às mudanças no ambiente do mercado e ser otimizada em combinação com outros indicadores técnicos e medidas de gerenciamento de risco.

Código-fonte da estratégia
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
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/
// © gavinc745

//@version=5
strategy("MA Rejection Strategy with ADX Filter", overlay=true)

// Input parameters
fastMALength = input.int(10, title="Fast MA Length", minval=1)
slowMALength = input.int(50, title="Slow MA Length", minval=1)
averageMALength = input.int(20, title="Average MA Length", minval=1)
adxLength = input.int(14, title="ADX Length", minval=1)
adxThreshold = input.int(20, title="ADX Threshold", minval=1)

// Calculate moving averages
fastMA = ta.wma(close, fastMALength)
slowMA = ta.wma(close, slowMALength)
averageMA = ta.wma(close, averageMALength)

// Calculate ADX manually
dmPlus = high - high[1]
dmMinus = low[1] - low
trueRange = ta.tr

dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength)
dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength)
trSmoothed = ta.wma(trueRange, adxLength)

diPlus = dmPlusSmoothed / trSmoothed * 100
diMinus = dmMinusSmoothed / trSmoothed * 100
adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength)

// Identify potential levels
potentialLongLevel = low < slowMA and close > slowMA
potentialShortLevel = high > slowMA and close < slowMA

// Confirm levels
confirmedLongLevel = potentialLongLevel and close > fastMA
confirmedShortLevel = potentialShortLevel and close < fastMA

// Entry signals
longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold
shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold

// Exit signals
longExit = ta.crossunder(close, slowMA)
shortExit = ta.crossover(close, slowMA)

// Plot signals
plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// Plot moving averages and ADX
plot(fastMA, title="Fast MA", color=color.blue)
plot(slowMA, title="Slow MA", color=color.red)
plot(averageMA, title="Average MA", color=color.orange)
// plot(adx, title="ADX", color=color.purple)
// hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed)

// Execute trades
if longEntry
    strategy.entry("Long", strategy.long)
else if longExit
    strategy.close("Long")

if shortEntry
    strategy.entry("Short", strategy.short)
else if shortExit
    strategy.close("Short")