Estratégia de reversão da média móvel dupla

Autora:ChaoZhang, Data: 2023-11-24 17:03:47
Tags:

img

Resumo

A estratégia de reversão de cruzamento de média móvel dupla é uma estratégia de seguimento de tendências que combina a estratégia de reversão 123 e a estratégia do oscilador de DiNapoli Detrended para gerar sinais de negociação através de cruzamento de média móvel dupla para acompanhar as tendências do mercado.

Estratégia lógica

A estratégia consiste em duas partes:

  1. 123 Estratégia de reversão: Esta estratégia usa o indicador estocástico para gerar sinais. Envia um sinal de compra quando o preço de fechamento sobe após dois dias consecutivos de queda, enquanto a linha rápida estocástica está abaixo da linha lenta e abaixo de 50; envia um sinal de venda quando o preço de fechamento diminui após dois dias consecutivos de alta, enquanto a linha rápida estocástica está acima da linha lenta e acima de 50.

  2. DiNapoli Detrended Oscillator Strategy: Esta estratégia utiliza a linha média móvel do preço para gerar sinais de negociação quando o preço excede ou cai abaixo da linha média móvel por um certo valor. Especificamente, envia um sinal de compra quando o preço excede o valor de gatilho positivo da linha média móvel e um sinal de venda quando o preço cai abaixo do valor de gatilho negativo da linha média móvel.

Após cada uma das duas estratégias acima gerar sinais de negociação separados, esta estratégia os integra e só envia ordens de negociação reais quando os dois sinais são consistentes, ou seja, quando as médias móveis duplas formam sinais na mesma direção; caso contrário, nenhuma ação é tomada.

Análise das vantagens

Ao combinar dois sinais de negociação de média móvel, esta estratégia permite acompanhar eficazmente as tendências do mercado e tem as seguintes vantagens:

  1. Aproveite plenamente os pontos fortes do indicador estocástico para avaliar a dinâmica e as tendências, evitando perdas causadas por sinais enganosos de qualquer indicador.

  2. O indicador DiNapoli pode identificar de forma eficaz as tendências e evitar a abertura desnecessária de posições devido a flutuações aleatórias.

  3. O cruzamento de médias móveis duplas pode efetivamente reduzir os falsos sinais e melhorar a qualidade do sinal para fornecer evidências fortes para julgar a direção do mercado.

  4. Os parâmetros ajustáveis da estratégia permitem aos utilizadores escolher combinações de parâmetros com base nas suas preferências pessoais para se adaptarem de forma flexível aos diferentes ambientes de mercado.

Análise de riscos

A estratégia apresenta igualmente os seguintes riscos:

  1. Em um mercado de alta, a estratégia pode perder oportunidades de compra devido a configurações excessivamente cautelosas dos parâmetros do indicador. Os parâmetros podem ser ajustados adequadamente para tornar a estratégia mais agressiva.

  2. Em um mercado de baixa, os sinais de cruzamento de média móvel dupla podem atrasar, resultando em condições de sobrecompra e sobrevenda.

  3. No caso de um enorme movimento unilateral do mercado, os sinais de cruzamento de média móvel dupla podem ser lentos.

Optimização

A estratégia pode ser otimizada das seguintes formas:

  1. Testar e otimizar os parâmetros dos indicadores estocástico e diNapoli para encontrar as combinações ideais de parâmetros.

  2. Adicionar outros indicadores de julgamento auxiliares como o indicador de volume para enriquecer a lógica interna da estratégia e melhorar a precisão dos sinais.

  3. Usar métodos de aprendizagem de máquina para treinar e otimizar parâmetros de estratégia e regras de geração de sinais para torná-los totalmente adaptados às mudanças do mercado.

  4. Julgar as estruturas locais com indicadores técnicos avançados para distinguir entre sinais de médio e longo prazo, permitindo que a estratégia funcione em vários prazos.

Conclusão

A estratégia de inversão de cruzamento de média móvel dupla integra dois indicadores para formar sinais de negociação de cruzamento de média móvel dupla, que podem rastrear efetivamente as tendências do mercado e obter retornos relativamente bons enquanto controlam riscos.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/02/2020
// 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
// DiNapoli Detrended Oscillator Strategy
//
// 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

DiNapoli(Length, Trigger) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = close - xSMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes <= Trigger, -1, nz(pos[1], 0)))    
    pos

strategy(title="Combo Backtest 123 Reversal & DiNapoli Detrended Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDiN = input(14, minval=1)
TriggerDiN = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDiN = DiNapoli(LengthDiN, TriggerDiN)
pos = iff(posReversal123 == 1 and posDiN == 1 , 1,
	   iff(posReversal123 == -1 and posDiN == -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.