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

Estratégia de negociação baseada nos indicadores ADX e MACD

Autora:ChaoZhang, Data: 2023-12-13 15:45:24
Tags:

img

Resumo

A estratégia é chamada de Trend Following Strategy Based on ADX and MACD Indicators. Utiliza o índice de movimento direcional médio (ADX) para determinar a direção e a força da tendência, combinado com os sinais de negociação da Divergência de convergência média móvel (MACD), para implementar as tendências.

Estratégia lógica

A estratégia calcula as linhas ADX e +DI, -DI para julgar a direção e a intensidade da tendência do mercado. Quando a linha +DI cruza acima de -DI, é uma tendência de alta; quando a -DI cai abaixo de +DI, é uma tendência de queda. Além disso, quando a leitura do ADX está acima de 20, indica que a tendência é forte o suficiente. A estratégia então leva o valor de diferença do indicador MACD (macdline) e as interseções da linha de sinal (linha de sinal) como sinais de compra e venda, para realizar negociações seguindo a tendência.

Especificamente, a lógica dos sinais de negociação é:

sinal longo: +DI > -DI e linha de diferença MACD cruzam acima da linha de sinal
Sinais curtos: -DI > +DI e linha de diferença MACD cruzam abaixo da linha de sinal

Com esta lógica, a estratégia é capaz de capturar o momento de entrada ideal dentro de tendências fortes.

Vantagens

A maior vantagem desta estratégia é que leva em consideração tanto o julgamento da tendência quanto a seleção do momento de entrada, permitindo que os traders encontrem pontos de entrada relativamente bons quando há um mercado direcional forte.

Além disso, uma lógica de stop loss também é implementada. Ele irá cortar as perdas ativamente se a perda da posição exceder o preço de stop loss definido pelo usuário.

Riscos

Embora a estratégia tenha alguns méritos, ainda existem riscos de que se deve estar ciente:

  1. Os sinais de negociação compostos por ADX e MACD podem falhar ou dar sinais falsos em determinadas situações de mercado, resultando em perdas desnecessárias.

  2. O preço de stop loss definido pelo utilizador pode ser penetrado, levando a perdas além das expectativas.

  3. Podem ocorrer demasiadas transacções ineficazes em mercados variados, consumindo custos de transacção.

Para mitigar esses riscos, recomenda-se a otimização de parâmetros do ADX e do MACD, bem como a implementação de regras rigorosas de gestão de dinheiro.

Orientações para a melhoria

Esta estratégia ainda pode ser melhorada:

  1. Poderiam ser introduzidos mais indicadores para formar sinais de negociação mais fortes, por exemplo, combinando o índice de volatilidade para limitar as negociações.

  2. Os parâmetros ADX e MACD poderiam ser automaticamente otimizados através do aprendizado de máquina.

  3. Pode ser estabelecido um mecanismo de stop loss adaptativo para acompanhamento dinâmico das flutuações do mercado.

Estes métodos podem contribuir para melhorar ainda mais a estabilidade e a rentabilidade da estratégia.

Conclusão

Em conclusão, a Estratégia de Seguimento de Tendência Baseada em Indicadores ADX e MACD tem méritos em determinar a direção da tendência, encontrar o momento ideal de entrada, definir a lógica de stop loss, etc., tornando-se um sistema de negociação considerável. Dado o ajuste adequado de parâmetros e controle de risco, é capaz de obter retornos de investimento decentes. Mas os comerciantes ainda devem ser cautelosos com os riscos potenciais e monitorar de perto os ambientes de mercado em mudança. Com monitoramento e aprimoramento sistêmico, a estratégia tem o potencial de alcançar um alfa sustentável.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TUE ADX/MACD Confluence V1.0", overlay=true)

showsignals = input(true, title="Show BUY/SELL Signals")
showcandlecolors = input(true, title="Show Candle Colors")
length = input(14, title="ADX Length")
smoothing = input(10, title="ADX Smoothing")
macdsource = input(close, title="MACD Source")
macdfast = input(12, title="MACD Fast Length")
macdslow = input(26, title="MACD Slow Length")
macdsignal = input(9, title="MACD Signal Length")
colorup = input(color.green, title="Up Candle Color")
colordown = input(color.red, title="Down Candle Color")

/////////////////////////////////////////////////////////////////////////////////////////////// ADX AND MACD CALC
[diplus, diminus, adx] = ta.dmi(length, smoothing)

[macdline, signalline, histline] = ta.macd(macdsource, macdfast, macdslow, macdsignal)

//////////////////////////////////////////////////////////////////////////////////////////////TRADE CALC

longcheck = diplus > diminus and macdline > signalline
shortcheck = diminus > diplus and signalline > macdline

int trade = 0

//Open from nothing

if trade == 0 and longcheck
    trade := 1

else if trade == 0 and shortcheck
    trade := -1
    
//Reversal

else if trade == 1 and shortcheck
    trade := -1
    
else if trade == -1 and longcheck
    trade := 1
    
//Keep status quo until crossover

else
    trade := trade[1]

//////////////////////////////////////////////////////////////////////////////////////////////PLOT 

colors = longcheck ? colorup : shortcheck ? colordown : color.white

plotcandle(open, high, low, close, color = showcandlecolors ? colors : na)

plotshape(trade[1] != 1 and trade == 1 and showsignals, style=shape.labelup, text='BUY', textcolor=color.white, color=color.green, size=size.small, location=location.belowbar)
plotshape(trade[1] != -1 and trade == -1 and showsignals, style=shape.labeldown, text='SELL', textcolor=color.white, color=color.red, size=size.small, location=location.abovebar)

///////////////////////////////////////////////////////////////////////////////////////////// ALERTS

// Add Stop Loss
stopLossPrice = input(100, title="Stop Loss Price")

if trade == 1
    strategy.entry("Long", strategy.long)

if trade == -1
    strategy.entry("Short", strategy.short)

if trade == 1 and close < close[1] - stopLossPrice
    strategy.close("LongExit")

if trade == -1 and close > close[1] + stopLossPrice
    strategy.close("ShortExit")


Mais.