Estratégia de negociação cruzada ADX


Data de criação: 2023-12-08 15:49:12 última modificação: 2023-12-08 15:49:12
cópia: 0 Cliques: 961
1
focar em
1621
Seguidores

Estratégia de negociação cruzada ADX

Visão geral

Esta estratégia, combinada com o uso de indicadores de média móvel ((ADX) e índice de movimento ascendente ((DI +) para determinar a direção e a tendência do mercado, e a utilização de médias móveis rápidas e lentas para determinar a direção e o tempo de negociação, pertence a uma estratégia de negociação de seguimento de tendência. Esta estratégia pode efetivamente capturar os pontos de inflexão da linha média curta e funciona melhor em mercados de baixa volatilidade e tendência.

Princípios

A lógica central da estratégia é que um sinal de compra é gerado quando a linha + DI quebra a ADX da direção inferior e um sinal de venda é gerado quando a linha + DI quebra a ADX da direção superior. Portanto, a estratégia depende do cruzamento entre os indicadores DI e ADX para determinar a tendência do mercado e o ponto de reversão.

O que é um sinal de compra quando as seguintes condições são cumpridas: 1 , o EMA rápido é maior do que o EMA lento 2 , a linha DI+ atravessa a linha ADX a partir da direção inferior 3o Nível de ADX inferior a 30

O sinal de venda é emitido quando as seguintes condições são cumpridas: 1 ADX acima de 30 2 , + DI linha caiu de cima para baixo ADX linha

A estratégia também adiciona uma lógica de stop loss, que retira todas as posições quando o preço está abaixo do preço de stop loss.

Vantagens

Esta estratégia, combinada com DI, ADX e indicadores de linha média, é eficaz para determinar o ponto de reversão da tendência do mercado. Tem as seguintes vantagens:

  1. Utilizando os indicadores DI e ADX para determinar sinais de reversão de tendência, localize com precisão os pontos de entrada e saída
  2. O sistema de filtragem do EMA fornece um bom discernimento das grandes tendências para evitar transações erradas
  3. Usar o valor do ADX para avaliar a tendência forte ou fraca, negociar apenas quando a tendência é fraca, evitando o risco de falsa ruptura
  4. Adição de um mecanismo de stop loss para controlar o risco de queda
  5. A entrada é rigorosa, evitando o risco de compras e vendas de agiri
  6. Condições de saída claras, parada e travamento em tempo

Riscos

A estratégia também apresenta alguns riscos que devem ser lembrados:

  1. O ADX está atrasado e pode ter perdido o melhor momento para uma reversão de preço
  2. Os indicadores ADX e DI produzem mais sinais errados quando os mercados estão mais agitados
  3. A configuração incorreta da linha média pode causar oportunidades de negociação perdidas ou sinais de filtragem errados
  4. O preço de stop loss foi definido com demasiada flexibilidade para não controlar o risco de forma eficaz.

Para esses riscos, pode-se melhorar através de métodos como a otimização do ADX e do parâmetro da linha média, o ajuste do nível de stop loss e a combinação de sinais de confirmação de outros indicadores.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. Pode testar ADX de diferentes períodos de comprimento, procurando a melhor combinação de parâmetros
  2. Outros indicadores podem ser adicionados, como o RSI, o Binance e outros para confirmar os sinais de negociação
  3. Combinações de parâmetros e regras de negociação de busca automática baseadas em algoritmos de aprendizagem de máquina
  4. Risco de colisão pode ser corrigido através de um ajuste dinâmico do nível de parada
  5. Modelos de pontuação multifatorial podem ser criados para tornar as regras de entrada e saída mais robustas

Resumir

A estratégia de tendência cruzada do ADX é mais estável no geral, e pode capturar com eficácia o espaço de reversão antes da flutuação, mas é necessário ter cuidado para controlar o risco. A melhor receita após o ajuste de risco pode ser obtida por meio de configurações de parâmetros de otimização adicional, regras de entrada e parada rígidas, entre outros.

Código-fonte da estratégia
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © mohanee

//@version=4
//ADX strategy
SmoothedTrueRange=0.00
SmoothedDirectionalMovementPlus=0.00
SmoothedDirectionalMovementMinus=0.00


strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)

len = input(11, title="ADX Length", minval=1)
threshold = input(30, title="threshold", minval=5)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)
stopLoss =input(8, title="Stop Loss",minval=1)   //


TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange

SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

plot(DIPlus, color=color.green, title="DI+")
//plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
hline(threshold, color=color.black, linestyle=hline.style_dashed)

fastEmaVal=ema(close,fastEma)
slowEmaVal=ema(close,slowEma)




//long condition
longCondition=  ADX < threshold  and crossover(DIPlus,ADX)  and fastEmaVal > slowEmaVal


barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ADXLE", long=true,  when= longCondition  and strategy.position_size<1) 

barcolor(strategy.position_size>1 ? color.blue: na)
bgcolor(strategy.position_size>1 ? color.blue: na)



//Add
strategy.entry(id="ADXLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) ) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ADXLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss


//exit condition
exitCondition=  ADX > threshold  and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal
strategy.close(id="ADXLE",comment="TPExitAll",    qty=strategy.position_size ,   when= exitCondition)   //close all