Estratégia de acompanhamento de tendências com base no stop loss da Chande Kroll e no filtro ADX


Data de criação: 2023-11-06 14:52:27 última modificação: 2023-11-06 14:52:27
cópia: 0 Cliques: 981
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base no stop loss da Chande Kroll e no filtro ADX

Visão geral

A estratégia combina o indicador de parada de Chande Kroll com o indicador de tendência média (ADX) para realizar uma estratégia de acompanhamento de tendência relativamente simples. A parada de Chande Kroll é usada para gerar sinais de entrada de posições longas e curtas, enquanto a ADX é usada para filtrar situações de mercado sem tendências visíveis e evitar que o mercado de vibrações sem direção cause a reincidência de parada.

Princípio da estratégia

A estratégia primeiro calcula a linha longa stop_long e a linha curta stop_short da parada de Chande Kroll. A linha longa é calculada pelo preço mais alto do último período p, e a linha curta pelo preço mais baixo do último período p. Em seguida, os pontos mais altos e mais baixos da linha longa e curta do último período q são usados como a linha de parada curta e curta atual.

Quando o preço de fechamento atravessa a linha curta stop_short, gera um sinal de fazer mais; quando o preço de fechamento atravessa a linha longa stop_long, gera um sinal de fazer mais.

Além disso, a estratégia inclui o indicador ADX para julgar a tendência forte e fraca. O sinal de parada de perda só é acionado quando o ADX é maior do que o limiar.

Vantagens estratégicas

A estratégia combina os benefícios dos indicadores de tendência e dos indicadores de parada, tanto para capturar a reversão de tendência em tempo hábil quanto para evitar o whip saw de um mercado sem direção. A otimização dos parâmetros de parada de Chande Kroll pode suavizar as filtrações, garantindo a parada apenas quando a tendência se reverte. O indicador ADX garante a entrada em jogo apenas quando a tendência é evidente, evitando o salto de parada de um mercado de choque.

Risco estratégico

Se os parâmetros de ADX não forem configurados corretamente, você pode perder a oportunidade de entrar no início da tendência. Se o ADX for configurado com um limite muito alto, você pode perder a oportunidade de entrar no início da tendência por causa do ADX ser muito baixo.

O excesso de ponto de parada também pode levar a posições estratégicas abertas e fechadas com frequência. Isso aumenta os custos de negociação e os custos de deslizamento. O ponto de parada precisa ser razoavelmente configurado para dar uma certa perspectiva à tendência.

Otimização de Estratégia

Pode-se considerar a possibilidade de permitir que o sinal de parada seja acionado apenas quando o ADX ultrapassa um determinado limite, o que aumenta a confiabilidade do tempo de entrada. Também pode ser combinado com outros indicadores de tendência para julgamento, como combinar o valor do ADX com a inclinação da EMA.

A linha de parada também pode considerar o ajuste dinâmico de acordo com o ATR, ampliando o espaço de parada quando a volatilidade do mercado aumenta, evitando ser muito sensível. Ou pode ser combinada com indicadores auxiliares para avaliar a tendência de força e fraqueza, ajustando dinamicamente a linha de parada.

Resumir

A estratégia integra os benefícios do Stop Loss Chande Kroll e do indicador ADX, permitindo uma estratégia de acompanhamento de tendências relativamente simples e prática. A estabilidade e a rentabilidade da estratégia podem ser melhoradas ainda mais com a otimização dos parâmetros. No entanto, é necessário ter cuidado para evitar o risco de um Stop Loss excessivamente sensível e de uma filtragem do ADX excessivamente relaxada.

Código-fonte da estratégia
/*backtest
start: 2022-10-30 00:00:00
end: 2023-06-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title = "Chande Kroll Stop", overlay=true)
p = input.int(10, minval=1)
x = input.int(1, minval=1)
q = input.int(9, minval=1)
first_high_stop = ta.highest(high, p) - x * ta.atr(p)
first_low_stop = ta.lowest(low, p) + x * ta.atr(p)
stop_short = ta.highest(first_high_stop, q)
stop_long = ta.lowest(first_low_stop, q)
plot(stop_long, color=color.blue)
plot(stop_short, color=color.orange)

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_sig = input.int(20, title="minimum ADX threshold for signal")
dirmov(len) =>
	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)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)


if ta.crossunder(close, stop_long) and sig>ADX_sig
    strategy.entry("long", strategy.long)
if ta.crossover(close, stop_short) and sig>ADX_sig
    strategy.entry("short", strategy.short)