Estratégia de inversão de tendência dinâmica

Autora:ChaoZhang, Data: 2024-01-16 15:35:18
Tags:

img

Resumo

A estratégia de inversão de tendência dinâmica é uma estratégia de negociação quantitativa de curto prazo baseada no indicador sequencial JD. Ao rastrear altas e baixas de preços em tempo real, esta estratégia determina a direção e o ímpeto da tendência atual para capturar eficientemente os pontos de reversão do mercado para o tempo de entrada e saída.

  1. Utilize os máximos e mínimos dos preços em vez dos preços de fechamento para determinar tendências, o que pode capturar as mudanças de preço mais rapidamente.
  2. O número máximo de contadores é de 7 em vez de 9, permitindo uma geração mais rápida de sinais comerciais.
  3. Adicionar opções para linhas de suporte/resistência e reversões de 5 contagens como stop loss.

Esta estratégia é adequada para quadros de tempo de curto prazo, como gráficos de 5 e 15 minutos, que podem capturar efetivamente as flutuações de preços e as oportunidades de reversão de curto prazo.

Estratégia lógica

A lógica central da Estratégia de Reversão de Rastreamento de Tendência Dinâmica é baseada no indicador sequencial JD. Ao comparar os preços altos e baixos do período atual com os dos dois períodos anteriores, este indicador determina se ocorreram altos ou baixos sucessivos e gera uma contagem sequencial de 1 a 7.

Em especial, as seguintes variáveis são definidas na estratégia:

  • sp_up: verdadeiro quando o preço elevado actual excede o preço elevado de há dois períodos
  • sp_dn: verdadeiro quando o preço baixo atual cai abaixo do preço baixo de 2 períodos atrás
  • sp_ct: a contagem atual, incrementos de 1 cada vez que sp_up ou sp_dn é verdade, com um máximo de 7
  • sp_com: verdadeiro quando a contagem é igual a 7
  • sp_usr: o preço médio na contagem 7 e sp_up, servindo como resistência ascendente
  • sp_dsr: o preço médio na contagem 7 e sp_dn, servindo como suporte descendente

A lógica para a geração de sinais comerciais é:

  • sinal longo: sp_com é verdadeiro e sp_dn é verdadeiro, indicando conclusão da contagem e uma tendência de queda
  • sinal curto: sp_com é verdadeiro e sp_up é verdadeiro, indicando conclusão da contagem e uma tendência de alta

A lógica do stop loss é:

  • Long SL: inversão da contagem para 5 (sp_up true) ou cruzamento do preço acima de sp_usr
  • SL curto: inversão da contagem para 5 (sp_dn true) ou cruzamento do preço abaixo de sp_dsr

Ao comparar altos/baixos em tempo real para determinar a direção e a força da tendência, juntamente com o cronograma baseado na contagem para a entrada, esta estratégia pode efetivamente capturar oportunidades de reversão de curto prazo.

Análise das vantagens

Em comparação com as estratégias tradicionais da JD Sequential, a estratégia de inversão de tendência dinâmica tem as seguintes vantagens:

  1. Uma geração de sinal mais rápida. Usar comparação alta/baixa é mais rápido do que preços de fechamento na captura de tendências, e uma contagem de 7 gera sinais mais rápidos do que 9 contagens.
  2. Mecanismo de stop loss aprimorado. A adição de reversões de 5 contagens e stop loss de suporte/resistência permite um melhor controle do risco.
  3. Configurações flexíveis: opções para incluir stop loss e exibir contagens parciais adicionam flexibilidade.
  4. Os sinais de alta frequência combinados com o stop loss adequado se encaixam bem em prazos de curto prazo.

A principal vantagem desta estratégia é a sua resposta rápida, que pode efetivamente capturar grandes flutuações causadas por eventos de curto prazo.

Análise de riscos

A estratégia de reversão de tendências dinâmicas de acompanhamento também comporta alguns riscos:

  1. Aumento dos custos de negociação devido à negociação de alta frequência.
  2. Comparar altos e baixos em mercados variados pode frequentemente desencadear negociações e perdas injustificadas.
  3. Paradas potencialmente agressivas: as paradas duras são vulneráveis a picos e devem ser ajustadas em tempo útil.

Para mitigar os riscos acima referidos, a estratégia pode ser otimizada nos seguintes aspectos:

  1. Reduzir o tamanho das posições para reduzir o uso de capital por transação.
  2. Interromper a negociação durante os mercados agitados/variados para evitar negociações ineficazes.
  3. Use paradas de atraso ou paradas de fuga para reduzir as chances de ser preso.

Orientações de otimização

A estratégia de reversão da tendência dinâmica de acompanhamento das tendências pode ser ainda melhorada, principalmente nas seguintes direcções:

  1. Combinações de vários prazos: Determine a direção da tendência principal em prazos mais longos para evitar negociar contra ela.

  2. Combinações com outros indicadores Incorporar métricas de volatilidade, dados de volume, etc., para melhorar a qualidade do sinal.

  3. Aprendizagem automática para validação adicional. Utilize algoritmos de IA / ML como julgamento auxiliar em sinais comerciais para reduzir negócios errados.

  4. Optimização de parâmetros como períodos de contagem, sessões de negociação, dimensionamento de posições, etc. para se adequar a diferentes condições de mercado.

  5. Expandir os mecanismos de controlo dos riscos, introduzir técnicas de gestão de riscos mais sofisticadas, como paradas adaptativas, dimensionamento de posições, etc., para restringir ainda mais os riscos.

  6. Avaliação da estratégia por meio de backtesting.

Conclusão

A estratégia de reversão de rastreamento de tendência dinâmica capta oportunidades de reversão de curto prazo por meio da comparação em tempo real de máximos e mínimos de preços para determinar a direção e a força da tendência, juntamente com as regras de 7-count dentro do indicador sequencial JD para o tempo de negociação.

A principal força desta estratégia reside em sua resposta rápida adequada para a negociação de reversão de curto prazo. Ao mesmo tempo, existem riscos como altas frequências de negociação e paradas agressivas. As direções de otimização futuras incluem ajuste de parâmetros, aprimoramento dos controles de risco, combinações de vários prazos, etc. Através de otimizações e iterações contínuas, esta estratégia tem o potencial de se tornar uma ferramenta poderosa para capturar de forma eficiente os sinais de reversão de curto prazo.


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

// @NeoButane 7 Dec. 2018
// JD Aggressive Sequential Setup
// Not based off official Tom DeMarke documentation. As such, I have named the indicator JD instead oF TD to reflect this, and as a joke.
//
// Difference vs. TD Sequential: faster trade exits and a unique entry. Made for low timeframes.
// - Highs or lows are compared instead of close.
// - Mirrors only the Setup aspect of TD Sequential (1-9, not to 13)
// - Count maxes out at 7 instead of 9. Also part of the joke if I'm going to be honest here

// v1 - Release - Made as a strategy, 7 count
//    . S/R on 7 count
//   .. Entry on 7 count
//  ... Exit on 5 count or S/R cross

//@version=3
title = "JD Aggressive Sequential Setup"
vers  = " 1.0 [NeoButane]"
total = title + vers
strategy(total, total, 1, 0)

xx        = input(true, "Include S/R Crosses Into Stop Loss")
show_sp   = input(true, "Show Count 1-4")
sp_ct     = 0
inc_sp(x) => nz(x) == 7 ? 1 : nz(x) + 1
sp_up     = high > high[2]
sp_dn     = low < low[2]
sp_col    = sp_up ? green : red
sp_comCol = sp_up ? red : green
sp_ct    := sp_up ? (nz(sp_up[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : sp_dn ? (nz(sp_dn[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : na
sp_com    = sp_ct == 7
sp_sr     = valuewhen(sp_ct == 5, close, 0)
sp_usr    = valuewhen(sp_ct == 7 and sp_up, sma(hlc3, 2), 0)
sp_usr   := sp_usr <= sp_usr[1] * 1.0042 and sp_usr >= sp_usr[1] * 0.9958 ? sp_usr[1] : sp_usr
sp_dsr    = valuewhen(sp_ct == 7 and sp_dn, sma(hlc3, 2), 0)
sp_dsr   := sp_dsr <= sp_dsr[1] * 1.0042 and sp_dsr >= sp_dsr[1] * 0.9958 ? sp_dsr[1] : sp_dsr
locc = location.abovebar
plotchar(show_sp and sp_ct == 1, 'Setup: 1', '1', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 2, 'Setup: 2', '2', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 3, 'Setup: 3', '3', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 4, 'Setup: 4', '4', locc, sp_col, editable=false)
plotshape(sp_ct == 5, 'Setup: 5', shape.xcross, locc, sp_comCol, 0, 0, '5', sp_col)
plotshape(sp_ct == 6, 'Setup: 6', shape.circle, locc, sp_comCol, 0, 0, '6', sp_col)
plotshape(sp_ct == 7, 'Setup: 7', shape.circle, locc, sp_comCol, 0, 0, '7', sp_col)
// plot(sp_sr, "5 Count Support/Resistance", gray, 2, 6)
plot(sp_usr, "7 Count Resistance", maroon, 2, 6)
plot(sp_dsr, "7 Count Support", green, 2, 6)

long  = (sp_com and sp_dn)
short = (sp_com and sp_up)
sl_l  = xx ? crossunder(close, sp_dsr) or (sp_ct == 5 and sp_up) or short : (sp_ct == 5 and sp_up) or short
sl_s  = xx ? crossover(close, sp_usr) or (sp_ct == 5 and sp_dn) or long : (sp_ct == 5 and sp_dn) or long

strategy.entry('L', 1, when = long)
strategy.close('L', when = sl_l)
strategy.entry('S', 0, when = short)
strategy.close('S', when = sl_s)

Mais.