Estratégia de negociação da média móvel do DMI

Autora:ChaoZhang, Data: 2023-09-13 14:42:19
Tags:

Recentemente desenvolvi uma nova estratégia quantitativa de negociação baseada principalmente no indicador DMI para identificar os fundos e os tops no mercado.

Estratégia lógica

O indicador DMI, abreviação de índice de movimento direcional médio, foi criado por Welles Wilder na década de 1970 para medir a tendência e a força do mercado.

  • +DI: representa a força da tendência de alta
  • -DI: representa a força da tendência de baixa
  • ADX: representa a força da tendência global

Quando +DI cruza acima de -DI, indica um fortalecimento da tendência de alta e uma posição longa pode ser considerada.

A lógica central desta estratégia é a seguinte:

  1. Caso o +DI caia abaixo de 10 e o -DI suba acima de 40
  2. Caso o -DI caia abaixo de 10 e o +DI suba acima de 40

Isto é, quando o DI inverso diverge significativamente do DI a prazo, pode julgar-se que a tendência atual é susceptível de se inverter e pode ser tomada uma posição de negociação inversa adequadamente.

Para filtrar o ruído, esta estratégia adopta a média móvel do DI com parâmetros definidos como:

  • Período de +DI e -DI é 11
  • Período de suavização do ADX é 11

Ao ajustar os parâmetros da média móvel, a frequência dos sinais de negociação pode ser ajustada.

Esta estratégia é aplicada principalmente à negociação de opções de índice NIFTY50. Também pode ser usada em outros produtos. Especificamente para negociação, escolha opções at-the-money, defina stop loss em 20%, adicione posições se a perda exceder 10%, mas pare se a perda se expandir para mais de 20% do capital inicial.

Vantagens da estratégia

Em comparação com as estratégias cruzadas simples de DI, esta estratégia utiliza médias móveis de DI para filtrar o ruído e reduzir as negociações, reduzindo assim os custos de transação e o deslizamento.

Em comparação com as estratégias de tendência pura, esta estratégia é mais precisa na captação de pontos de reversão da tendência, permitindo entradas oportunas em torno das curvas.

A otimização da estratégia é simples com parâmetros flexíveis para ajuste de desempenho.

Advertências de risco

Esta estratégia fornece apenas sinais direcionais.

DMI pode produzir muitos sinais falsos durante os períodos de gama limitada.

Os crossovers de DI não podem prever completamente inversões de tendência. Pode haver alguns erros de tempo. Outros indicadores devem ser usados para validar os sinais de negociação.

Conclusão

Ao selecionar com médias móveis de DI, esta estratégia pode identificar efetivamente oportunidades de reversão de tendência. Em comparação com outras estratégias de tendência, ela tem a vantagem de habilidades de reconhecimento de reversão mais fortes.


/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © email_analysts
// This code gives indication on the chart to go long based on DMI and exit based on RSI. 
//Default value has been taken as 14 for DMI+ and 6 for RSI.
//@version=5
strategy(title="DMI Strategy", overlay=false)
lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(11, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
//plot(adx, color=#F50057, title="ADX")
plot(plus, color=color.green, title="+DI")
plot(minus, color=color.red, title="-DI")
hlineup = hline(40, color=#787B86)
hlinelow = hline(10, color=#787B86)

buy = plus < 10 and minus > 40
if buy
    strategy.entry('long', strategy.long)

sell = plus > 40 and minus < 10
if sell
    strategy.entry('short', strategy.short)



Mais.