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.
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.
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:
A lógica para a geração de sinais comerciais é:
A lógica do stop loss é:
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.
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:
A principal vantagem desta estratégia é a sua resposta rápida, que pode efetivamente capturar grandes flutuações causadas por eventos de curto prazo.
A estratégia de reversão de tendências dinâmicas de acompanhamento também comporta alguns riscos:
Para mitigar os riscos acima referidos, a estratégia pode ser otimizada nos seguintes aspectos:
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:
Combinações de vários prazos: Determine a direção da tendência principal em prazos mais longos para evitar negociar contra ela.
Combinações com outros indicadores Incorporar métricas de volatilidade, dados de volume, etc., para melhorar a qualidade do sinal.
Aprendizagem automática para validação adicional. Utilize algoritmos de IA / ML como julgamento auxiliar em sinais comerciais para reduzir negócios errados.
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.
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.
Avaliação da estratégia por meio de backtesting.
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)