Estratégia de negociação de filtro ADX de rompimento de tendência


Data de criação: 2024-01-04 17:12:30 última modificação: 2024-01-04 17:12:30
cópia: 0 Cliques: 924
1
focar em
1621
Seguidores

Estratégia de negociação de filtro ADX de rompimento de tendência

Visão geral

Esta estratégia é uma estratégia de negociação de linha curta que usa o indicador ADX para filtrar sinais de ruptura. Quando o preço quebra a Bollinger Bollinger Band e ADX está em declínio, feche o mercado; Quando o preço quebra a Bollinger Bollinger Band e ADX está em alta, faça mais.

Princípio da estratégia

Esta estratégia usa o Bollinger Bollinger Band como o principal sinal de ruptura. O Bollinger Band para baixo representa o dobro da diferença padrão do preço, e o Bollinger Band para cima normalmente representa a entrada de um preço em uma forte tendência. Além disso, para evitar falsas rupturas, a estratégia adiciona o indicador ADX como condição de filtragem.

Especificamente, esta estratégia usa o comprimento de 33 ciclos para calcular o preço de fechamento. A linha de trajectória do centro da faixa de Brin é uma média móvel simples de 33 ciclos para o preço de fechamento, com os dois padrões de diferença acima e abaixo do centro. O parâmetro do indicador é definido como quando o preço de fechamento se desvia e o ADX de 8 ciclos é menor do que o ADX de 15 ciclos; quando o preço de fechamento se desvia e o ADX de 8 ciclos é maior que o ADX de 15 ciclos.

Análise de vantagens

Esta é uma estratégia inovadora que combina tendências e indicadores de frequência para filtrar sinais, com as seguintes vantagens:

  1. O uso da faixa de Brin para determinar o ponto de ruptura da tendência é mais compatível com os hábitos da maioria dos traders.
  2. A adição de filtros condicionais ADX pode reduzir os prejuízos causados por falsas rupturas durante oscilações de tendência.
  3. A estratégia é simples, fácil de entender e de otimizar.
  4. O Stop Loss Stop é configurado automaticamente, sem necessidade de intervenção humana, para negociação com algoritmos.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. A configuração inadequada dos parâmetros da faixa de Bryn pode levar a sinais muito frequentes, aumentando os custos de transação.
  2. A configuração incorreta do ADX também pode filtrar alguns sinais válidos.
  3. A distância de parada pode ser muito grande e a perda individual pode aumentar.

Para reduzir esses riscos, podemos ajustar os parâmetros da faixa de Brin para reduzir o alcance da faixa de Brin; ajustar os parâmetros do ciclo ADX para evitar sinais de filtragem excessiva; reduzir adequadamente a distância de parada para controlar a perda individual. Naturalmente, essas otimizações precisam ser testadas por retrospectiva para evitar a sobre-configuração.

Direção de otimização

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

  1. Os dados podem ser testados em diferentes mercados para encontrar a combinação de parâmetros mais adequada.
  2. Pode ser combinado com outros indicadores para filtrar ainda mais os sinais, como volume de transação, média móvel, etc.
  3. Os métodos de aprendizagem de máquina podem ser usados para otimizar automaticamente os parâmetros.
  4. Pode-se considerar o stop loss dinâmico e o stop stop.

Resumir

Esta estratégia é, em geral, uma estratégia de filtragem de ruptura simples e prática. Com base na determinação da tendência da faixa de Bryn, os sinais de filtragem ADX podem, até certo ponto, evitar o ruído do mercado de tremores e aproveitar as oportunidades de tendência.

Código-fonte da estratégia
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)

Price = close

Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev

ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
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
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))

Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2

Take_Profit = input(800)
Stop_Loss = input(400)

strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)