ADX, MA e EMA Estratégia de acompanhamento de tendências a longo prazo

Autora:ChaoZhang, Data: 2024-01-29 11:30:15
Tags:

img

Resumo

Esta estratégia usa principalmente o indicador ADX para julgar a tendência e combina as médias móveis MA e EMA com diferentes configurações de parâmetros para construir uma estratégia de rastreamento de tendência apenas longa. Quando o ADX sobe, ele indica uma direção longa. Quando o preço atravessa o MA e EMA ascendentes, abra posições longas. Quando o ADX cai ou o preço cai abaixo do MA ou EMA, feche posições.

Princípio da estratégia

A estratégia usa principalmente o ADX para julgar a tendência e a força do mercado. O ADX calcula o grau e a direção das mudanças de preço para determinar a existência e a força da tendência. Quando o ADX sobe, significa que está atualmente em uma tendência ascendente. Quando o ADX cai, significa que a tendência está enfraquecendo.

A estratégia também usa duas médias móveis, MA e EMA, com configurações de parâmetros diferentes como julgamento auxiliar. Eles podem efetivamente filtrar a aleatoriedade dos preços e mostrar a principal direção de tendência dos preços. Quando os preços aumentam e quebram a MA e a EMA, é um sinal longo. Quando os preços caem e quebram, é um sinal de fechamento.

Combinando as características do ADX e médias móveis, a estratégia constrói sinais de negociação para julgar a direção da tendência: vá longo quando o ADX sobe e os preços atravessam a MA e EMA ascendentes e feche posições quando o ADX cai ou os preços atravessam a MA / EMA. Implementa uma estratégia de rastreamento de tendência apenas longa.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Utilize o ADX para avaliar a força da tendência, reduzir as transações inválidas e acompanhar as tendências.
  2. A combinação de duas médias móveis com configurações de parâmetros diferentes pode identificar efetivamente tendências.
  3. Apenas as posições longas evitam operações de inversão frequentes e perdas de deslizamento.
  4. Condições de entrada rigorosas podem controlar eficazmente os riscos.
  5. Implementar uma estratégia de acompanhamento de tendências de longo prazo.

Análise de riscos

Há também alguns riscos:

  1. O indicador ADX tem atraso, possivelmente faltando o melhor ponto de entrada.
  2. Apenas as posições longas não podem lucrar com a queda dos mercados.
  3. Existe um certo risco de perda quando as tendências mudam.
  4. Ajustes de parâmetros inadequados também afetam o desempenho da estratégia.

Soluções:

  1. Ajustar os parâmetros ADX para reduzir o atraso de forma razoável.
  2. Configure stop loss para controlar perda única.
  3. Teste e otimize os parâmetros para selecionar o melhor.

Optimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Adicionar uma estratégia de stop loss para controlar melhor os riscos.
  2. Adicionar a gestão de posições para ajustar dinamicamente as posições com base nas condições de mercado.
  3. Teste e otimize os parâmetros para encontrar a melhor combinação.
  4. Adicionar algoritmos de aprendizagem de máquina para otimizar dinamicamente parâmetros.
  5. Construir estratégias de martingale para reduzir o impacto da taxa de lucro.

Conclusão

Em geral, esta é uma estratégia de rastreamento de tendências de longo prazo que usa o ADX para julgar a força da tendência e duas médias móveis como filtros auxiliares. Ele controla efetivamente a ocorrência de negócios inválidos e alcança o efeito de rastreamento de tendências. É uma estratégia relativamente estável de longo prazo.


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
maPeriod = input(50, title="MA Period")
emaPeriod = input(50, title="EMA Period")
dirmov(len) =>
    up = change(high)
    down = -change(low)
    plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(plusDM, len) / truerange)
    minus = fixnan(100 * rma(minusDM, len) / truerange)
    [plus, minus]
adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
maValue = sma(close, maPeriod)
emaValue = ema(close, emaPeriod)
longCondition = sig > sig[1] and close > maValue and close > emaValue
if (longCondition)
    strategy.entry("Long", strategy.long)
exitCondition = sig < sig[1] or  close < maValue or close < emaValue
if (exitCondition)
    strategy.close("Long")
plot(maValue, color=color.blue, title="MA")
plot(emaValue, color=color.orange, title="EMA")
plot(sig, color=color.red, title="ADX")


Mais.