Estratégia de combinação de reversão de momentum


Data de criação: 2023-10-30 11:49:26 última modificação: 2023-10-30 11:49:26
cópia: 1 Cliques: 644
1
focar em
1617
Seguidores

Estratégia de combinação de reversão de momentum

Visão geral

Esta estratégia consiste em usar uma combinação de dois indicadores de momentum para descobrir mais oportunidades de negociação. O primeiro indicador é a estratégia de inversão de indicadores rápidos e lentos e aleatórios apresentada por Wolf Jansen em seu livro. O segundo indicador é o preço de síntese de tendência de John Ehlers.

Princípio da estratégia

O princípio da estratégia de inversão do indicador aleatório rápido e lento na primeira parte é: Faça mais quando o preço de fechamento estiver abaixo do preço de fechamento do dia anterior por dois dias consecutivos e a linha rápida estiver acima da linha lenta; e faça um vazio quando o preço de fechamento estiver acima do preço de fechamento do dia anterior por dois dias consecutivos e a linha rápida estiver abaixo da linha lenta.

A segunda parte da fórmula de cálculo do preço de síntese de tendência é:

DSP = EMA ((HL/2, 0.25 ciclo) - EMA ((HL/2, 0.5 ciclo)

O HL / 2 é o ponto médio de alta e baixa do preço, 0,25 ciclo EMA representa a tendência de curto prazo do preço, 0,5 ciclo EMA representa a tendência de longo prazo do preço. O preço de síntese de tendência representa a amplitude de queda e queda do preço em relação ao seu ciclo dominante.

A estratégia considera os dois sinais de indicadores em conjunto. Apenas quando os dois indicadores emitem sinais de compra ou venda ao mesmo tempo, a posição é aberta.

Análise de vantagens

  • O uso de dois indicadores para filtrar sinais de incerteza reduz os erros de negociação
  • Os dois indicadores são mutuamente verificados, aumentando a confiabilidade do sinal
  • Estratégias de reversão de indicadores aleatórios rápidos e lentos para capturar oportunidades de reversão de curto prazo
  • A tendência de baixa sintética de preços identifica tendências de linha média e longa
  • A combinação de dois indicadores permite capturar reversões e acompanhar tendências com grande flexibilidade

Análise de Riscos

  • Indicadores rápidos e aleatórios não funcionam bem em uma cidade em crise
  • O preço de síntese de tendência pode emitir um sinal de erro antes do ponto de viragem da tendência
  • Negociar apenas quando os dois indicadores emitem sinais ao mesmo tempo pode perder algumas oportunidades
  • Os parâmetros precisam ser configurados corretamente para que a combinação funcione

Direção de otimização

  • Testar diferentes parâmetros e otimizar o desempenho dos indicadores
  • Pode-se experimentar diferentes pesos de indicadores, como o atraso de um sinal de preço de síntese de tendência
  • Pode-se adicionar um stop loss para controlar o risco.
  • Pode-se integrar mais tipos diferentes de indicadores para construir modelos multifatores

Resumir

A estratégia combina dois diferentes indicadores de dinâmica para melhorar a qualidade do sinal através de uma dupla filtragem e controlar o risco, mantendo a frequência de negociação. No entanto, é necessário ter em conta as limitações do indicador em si e otimizar adequadamente os parâmetros.

Código-fonte da estratégia
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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, SellBand, BuyBand) =>
    pos = 0.0
    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))) 
	pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price) V 2", 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)
SellBand = input(-25)
BuyBand = input(25)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP, SellBand, BuyBand)
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 )