Estratégia de negociação de média móvel dupla baseada no preço sintético desacelerado

Autora:ChaoZhang, Data: 2023-09-19 17:13:28
Tags:

Resumo

Esta é uma estratégia de negociação de média móvel dupla baseada no Detrended Synthetic Price (DSP). DSP é uma função que está em fase com o ciclo dominante de dados de preços reais, obtida subtraindo uma EMA de meio ciclo da EMA de ciclo trimestral.

Estratégia lógica

  1. Calcular a média HL xHL2 do preço de um ciclo de 1/2.

  2. Calcular a EMA de 1/4 de ciclo (xEMA1) e a EMA de 1/2 de ciclo (xEMA2) de xHL2 com base no comprimento.

  3. Obter DSP subtraindo xEMA2 de xEMA1.

  4. Configure os parâmetros da faixa superior e inferior, vá longo quando o DSP cruza acima da faixa superior e vá curto quando cruza abaixo da faixa inferior.

  5. O parâmetro inverso pode alternar entre a direção longa e curta.

Análise das vantagens

Vantagens desta estratégia:

  1. O DSP capta o ciclo de preços dominante, evitando a desorientação de ciclos menores.

  2. O projeto de EMA dupla acompanha efetivamente as alterações do ciclo dominante.

  3. As faixas superiores/inferiores simples evitam o excesso de negociação.

  4. Mudança fácil entre longo/curto utilizando o parâmetro inverso, adaptável a diferentes ambientes de mercado.

  5. Não é necessária a otimização de parâmetros complexos, simples e prático.

Análise de riscos

Principais riscos:

  1. A configuração inadequada do ciclo DSP pode fazer com que o ciclo dominante seja perdido.

  2. A largura da banda precisa de otimização, caso contrário pode ocorrer uma troca excessiva.

  3. O projeto de ciclo fixo tem uma fraca adaptabilidade às violentas mudanças do mercado.

  4. A negociação no DSP sozinho deixa a estratégia vulnerável a flagelos.

  5. A ausência de stop loss pode levar a perdas significativas.

Orientações de otimização

Melhorias:

  1. Otimizar os parâmetros para encontrar a melhor combinação de ciclos.

  2. Adicionar bandas dinâmicas com base na volatilidade.

  3. Incorporar filtros de tendência e volatilidade para reduzir os falsos sinais.

  4. Adicionar mecanismos de stop loss ou trailing stop para controlar o risco.

  5. Teste em vários instrumentos para universalidade.

  6. Introduzir aprendizado de máquina para otimização do ciclo DSP adaptativo.

Resumo

Em geral, esta é uma estratégia de negociação de média móvel dupla muito simples e prática. É construída sobre bases sólidas de análise de ciclo, com DSP rastreando efetivamente o ciclo dominante. Com refinamentos na otimização de parâmetros, stop losses, condições de filtro e muito mais, pode se tornar uma estratégia de negociação quantitativa confiável.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/03/2017
// 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. 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
	     iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xEMA1_EMA2, color=blue, title="D_DSP")

Mais.