Estratégia dinâmica de acompanhamento de tendências com duplo mecanismo

Autora:ChaoZhang, Data: 2024-01-31 11:13:44
Tags:

img

Resumo

A estratégia de rastreamento de tendência dinâmica de mecanismo duplo combina sinais de duas estratégias de negociação diferentes para rastrear tendências. Primeiro usa a estratégia de reversão 123 para identificar pontos de reversão de preço, depois usa o índice de preço sintético deturpado (D_DSP) para determinar a direção da tendência de preço e, finalmente, gera sinais de negociação combinando ambos os sinais.

Esta estratégia é usada principalmente para rastreamento de tendências de médio prazo. Ao definir pontos de stop-loss dinâmicos por meio de mecanismos duplos, ela pode efetivamente bloquear lucros e evitar perdas de expansão. Enquanto isso, a combinação de indicadores de tendência e reversão para confirmação dupla ajuda a reduzir as negociações ruidosas.

Estratégia lógica

123 Estratégia de reversão

A estratégia 123 Reversal é originária da página 183 do livro de Ulf Jensen How I Tripped My Money in the Futures Market.

Especificamente, ele gera um sinal de compra quando o preço de fechamento é maior do que o fechamento anterior por dois dias consecutivos e o Oscilador Estocástico Lento de 9 dias está abaixo de 50.

Índice de preços sintéticos desvalorizados

O índice Detrended Synthetic Price (D_DSP) indica a direção da tendência dos preços e está em fase com o ciclo dominante dos dados reais de preços.

Se o D_DSP for positivo, indica uma tendência ascendente dos preços; se for negativo, indica uma tendência descendente dos preços.

Mecanismo dual

Esta estratégia combina a estratégia 123 Reversal e os sinais do índice D_DSP. Se ambos os sinais concordarem (tanto longos quanto curtos), as negociações serão geradas. Se os sinais discordarem, as posições serão fechadas.

Esta confirmação dupla filtra o ruído e bloqueia os lucros da tendência.

Vantagens

A maior vantagem desta estratégia é os dois níveis de stop loss que implementa. Em primeiro lugar, os estocásticos rápidos e lentos formam um stop loss escalonado no tempo. Em segundo lugar, a própria estratégia de reversão contém um recurso de stop loss.

A dupla confirmação evita sinais errados de mudanças de preço não-mainstream.

Riscos

O maior risco vem de configurações de parâmetros inflexíveis. Por exemplo, comprimentos de ciclo errados podem causar tendências principais perdidas, perdas de lucros ou perdas crescentes. A confirmação dupla excessivamente rígida também pode causar perdas de parada oportunas perdidas.

Além disso, ao combinar estratégias de inversão e tendência, a compensação de posições quando os sinais discordam pode perder oportunidades quando a tendência continua numa direção dominante.

Optimização

Esta estratégia pode ser otimizada de várias maneiras:

  1. Otimizar os parâmetros do ciclo utilizando mais dados de backtesting para encontrar valores ideais.

  2. Adicionar mais estratégias de stop loss como breakout ou trailing stop loss para definir pontos de stop loss mais dinâmicos e razoáveis.

  3. Ajuste as regras de confirmação dupla para evitar excesso de compensação de posições.

  4. Adicionar filtros como os filtros de volatilidade para evitar julgamentos errôneos da volatilidade da tendência em estágio final.

Conclusão

A estratégia de rastreamento de tendências dinâmicas de duplo mecanismo implementa um rastreamento de tendências e controle de riscos eficazes através de perdas de parada dupla de estocásticos rápidos e lentos e confirmação dupla de reversão e sinais de tendência.

A otimização contínua de regras e parâmetros deve produzir bons resultados. Mas a otimização da estratégia requer grandes quantidades de dados históricos. Os filtros de seleção de ações e os mecanismos de stop loss também precisam de refinamento contínuo.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

D_DSP(Length) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > 0, 1,
             iff(xEMA1_EMA2 < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mais.