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

ADX DMI MA ATR
Data de criação: 2024-11-28 15:44:59 última modificação: 2024-11-28 15:44:59
cópia: 0 Cliques: 583
1
focar em
1617
Seguidores

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

Visão geral

Esta é uma estratégia de negociação quantitativa baseada em indicadores de tendência média (ADX) e breakouts de preços. A estratégia é baseada em monitorar os valores dos indicadores de ADX para determinar a força da tendência do mercado e, em combinação com os sinais de breakouts de preços, para capturar a dinâmica do mercado. A estratégia é configurada para operar dentro de um determinado período de negociação e permite o gerenciamento de risco por meio de stop loss e limitação de número de transações por dia.

Princípio da estratégia

A lógica central da estratégia inclui os seguintes elementos-chave:

  1. Monitoramento do indicador ADX: O indicador ADX é usado para avaliar a intensidade da tendência do mercado, e quando o valor do ADX é inferior a 17,5 indica que o mercado pode estar prestes a formar uma nova tendência.
  2. A estratégia segue o preço de fechamento mais alto dos últimos 34 ciclos e dispara um sinal de negociação quando o preço atual supera o nível de resistência.
  3. Gerenciamento do período de negociação: a estratégia funciona apenas dentro do período de negociação designado (0730-1430) para evitar o risco de períodos de baixa liquidez.
  4. Mecanismos de controle de risco:
    • Estabelecer um stop loss fixo em dólares para limitar as perdas de transações individuais
    • Limitação de até 3 transações por período de tempo
    • Automaticamente liquida todas as posições detidas no final do período de negociação

Vantagens estratégicas

  1. Capacidade de captura de tendências: Combinação de indicadores ADX e breakouts de preços para identificar com eficiência os estágios iniciais de tendências de mercado.
  2. Gestão de riscos: Inclui medidas de controle de riscos em vários níveis, como paradas fixas, limitação de transações e mecanismos de encerramento automático.
  3. Alto grau de automação: estratégia lógica clara, negociação totalmente automatizada, sem intervenção humana.
  4. Adaptabilidade: Parâmetros podem ser ajustados de acordo com as diferentes condições do mercado, como o valor de parada, o ciclo de retorno, etc.

Risco estratégico

  1. Risco de Falso Breakout: Falso breakout pode ocorrer em um mercado em turbulência, resultando em perdas contínuas.
  2. Dependência de parâmetros: a eficácia da estratégia depende fortemente da definição do ADX e do ciclo de retrocesso.
  3. Limitação de horário: apenas negociação em um determinado horário pode perder oportunidades em outros horários.
  4. Parar: O paramento fixo em dólares pode não ser suficientemente flexível em diferentes ambientes de volatilidade.

Direção de otimização da estratégia

  1. Paradas dinâmicas: Recomenda-se a mudança de paradas fixas em dólares para paradas dinâmicas baseadas no ATR, para se adaptar a diferentes ambientes de volatilidade do mercado.
  2. Filtragem de mercado: aumentar os filtros de volatilidade e ajustar ou suspender a negociação em ambientes de alta volatilidade.
  3. Otimização de entrada: pode ser considerado o aumento da confirmação de volume de transação, aumentando a confiabilidade do sinal de ruptura.
  4. Ajuste de parâmetros dinâmicos: mecanismo de ajuste adaptativo para implementar o ADX e o ciclo de retrocesso.

Resumir

Esta é uma estratégia de acompanhamento de tendências estruturada e com lógica clara. Capturando oportunidades de tendências de mercado em um quadro de gerenciamento de risco eficaz, combinando indicadores ADX com breakouts de preços. Embora haja algum espaço para otimização, a estrutura básica da estratégia é robusta e adequada como componente fundamental do sistema de negociação quantitativa.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HuntGatherTrade
// ========================
// NQ 30 minute, ES 30 minute

//@version=5
strategy("ADX Breakout", overlay=false, initial_capital=25000, default_qty_value=1)

// ===============================
// Input parameters
// ===============================
stopLoss = input(1000.0, title="Stop Loss ($)", group="Exits")
session = input("0730-1430:1234567", group="Trade Session")
highestLB = input(34, title="Highest lookback window", group="Indicator values")

// ===============================
// Trade Session Handling
// ===============================
t = time(timeframe.period, session)

// Reset numTrades at the start of each session
var int numTrades = 0
is_new_session = ta.change(time("D")) != 0
if is_new_session
    numTrades := 0

// ===============================
// Entry Conditions
// ===============================
[plusDI, minusDI, adxValue] = ta.dmi(50, 14)
entryCondition = (close >= ta.highest(close, highestLB)[1]) and (adxValue < 17.5) and (strategy.position_size == 0) and (numTrades < 3) and not na(t)

// ===============================
// 7. Execute Entry
// ===============================
var float stopPricePlot = na

if entryCondition
    entryPrice = close + syminfo.mintick
    strategy.entry("Long Entry", strategy.long, stop=entryPrice)
    //stopPrice = strategy.position_avg_price - (stopLoss / syminfo.pointvalue)
    //strategy.exit("Stop Loss", "Long Entry", stop=stopPrice)
    numTrades += 1

if (strategy.position_size > 0) and (strategy.position_size[1] == 0)
    stopPoints = stopLoss / syminfo.pointvalue
    stopPrice = strategy.position_avg_price - stopPoints
    stopPrice := math.round(stopPrice / syminfo.mintick) * syminfo.mintick
    strategy.exit("Stop Loss", from_entry="Long Entry", stop=stopPrice)


if ta.change(strategy.opentrades) == 1
    float entryPrice = strategy.opentrades.entry_price(0)
    stopPricePlot := entryPrice - (stopLoss / syminfo.pointvalue)

if ta.change(strategy.closedtrades) == 1
    stopPricePlot   := na

plot(stopPricePlot, "Stop-loss level", color.red, 1, plot.style_linebr)

// ===============================
// Exit at End of Session
// ===============================
if na(t) and strategy.position_size != 0
    strategy.close_all(comment="End of Day Exit")