ADX、RSI Indicadores de Impulso Estratégia

Autora:ChaoZhang, Data: 2023-12-11 16:06:30
Tags:

img

Resumo

Esta estratégia utiliza os indicadores de ímpeto ADX, RSI e Bollinger Bands para determinar as tendências do mercado e situações de sobrecompra/supervenda, a fim de implementar negociações automatizadas para comprar baixo e vender alto.

Princípios de estratégia

  1. Quando o ADX é superior a 32, indica um mercado em tendência.

  2. O indicador RSI determina os níveis de sobrecompra / sobrevenda. Quando o RSI cruza acima de 30, ele sinaliza um mercado sobrevendido. Quando o RSI cruza abaixo de 70, ele sinaliza um mercado sobrecomprado.

  3. As bandas de Bollinger determinam a consolidação e a ruptura. Quando o preço de fechamento se rompe acima da faixa superior, ele sinaliza o fim da consolidação e a ruptura para cima. Quando o preço de fechamento se rompe abaixo da faixa inferior, ele sinaliza o fim da consolidação e a ruptura para baixo.

Com base nos indicadores acima referidos, a estratégia de negociação é definida do seguinte modo:

Condição de compra:

  1. ADX> 32, em tendência
  2. RSI cruza acima de 30, sobrevendido
  3. Preço de fechamento abaixo da faixa de Bollinger inferior, fim da consolidação da tendência de baixa

Condição de venda:

  1. ADX> 32, em tendência
  2. RSI cruza abaixo de 70, sobrecomprado
  3. Preço de fechamento acima da faixa superior de Bollinger, fim da consolidação de tendência de alta

Análise das vantagens

Esta estratégia utiliza múltiplos indicadores para determinar as condições do mercado, evitando a probabilidade de erro ao confiar em um único indicador.

Em comparação com o uso de indicadores de tendência sozinhos, esta estratégia pode capturar oportunidades de curto prazo de forma mais oportuna. Em comparação com o uso de osciladores exclusivos, esta estratégia pode entender melhor a direção da tendência. Portanto, mantém a vantagem de rastrear tendências, ao mesmo tempo em que tem a flexibilidade de negociação de reversão média. É uma estratégia quantitativa potencialmente eficiente.

Análise de riscos

Os principais riscos desta estratégia incluem:

  1. Risco de sinais falsos dos indicadores Os indicadores podem falhar quando os mercados experimentam eventos extremos.

  2. Risco de que as paradas sejam demasiado apertadas: as flutuações de curto prazo do mercado podem afectar a posição se as paradas forem demasiado apertadas.

  3. Se os parâmetros dos indicadores se limitassem a ser adaptados a dados históricos, a estabilidade seria questionável e poderá não se adaptar à evolução da dinâmica do mercado.

Medidas de gestão de riscos:

  1. Intervir manualmente em condições anormais de mercado para pausar a estratégia e evitar perdas por sinais falsos.

  2. Estabelecer uma distância de parada razoável, combinando com médias móveis para determinar níveis de parada, evitando ser parado prematuramente.

  3. Introdução do módulo de ajuste de parâmetros, otimização dinâmica de parâmetros usando a análise Walk Forward para garantir a robustez.

Orientações de otimização

Os principais aspectos para melhorar esta estratégia incluem:

  1. Otimizar os parâmetros dos indicadores, utilizando algoritmos de aprendizagem automática adaptados a cada mercado.

  2. Engenharia de recursos, introduzindo mais indicadores técnicos e modelos de treinamento como SVM para melhorar a precisão do sinal.

  3. Incorporar estratégias de ruptura baseadas nas características de cada mercado, utilizando canais de preços, suportes/resistências, etc., para reforçar a estabilidade.

  4. Otimizar os mecanismos de captação de lucro e de stop loss através da introdução de trailing stops, moving stops, etc., para maximizar os lucros e controlar eficazmente os riscos.

Conclusão

Esta estratégia de negociação quantitativa de médio prazo utiliza múltiplos indicadores técnicos como ADX, RSI e Bollinger Bands para determinar as condições do mercado e realizar negociações quando mudanças estruturais significativas são identificadas. A lógica é clara e interpretável, reduzindo drasticamente a dependência de um único indicador.


/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
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
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Mais.