Estratégia combinada de reversão de impulso de vários fatores

Autora:ChaoZhang, Data: 2023-11-21 11:20:31
Tags:

img

Resumo

Esta estratégia é uma estratégia de combinação de vários fatores que combina fatores de reversão e fatores de impulso para descobrir oportunidades de reversão no mercado. A estratégia usa primeiro o fator de reversão de longo prazo para identificar oportunidades de reversão após quedas de faixa e, em seguida, usa indicadores de impulso para triagem secundária para filtrar falsos sinais de reversão sob as principais tendências, a fim de bloquear oportunidades de arbitragem de reversão de curto prazo.

Estratégia lógica

A estratégia consiste em duas partes:

  1. 123 Fator de reversão

    Esta parte usa a ideia de reversão intradiária para determinar a relação entre o preço de fechamento do dia anterior e o preço de fechamento dos dois dias anteriores para identificar oportunidades de reversão com linha lenta K. A lógica específica é:

    • Signo de compra: após dois dias consecutivos de queda do preço de fechamento, se o preço de fechamento subir no dia em curso e a linha lenta K de 9 dias for inferior a 50, é gerado um sinal de compra;

    • Sinal de venda: Após dois dias consecutivos de aumento no preço de fechamento, se o preço de fechamento cair no dia atual e a linha rápida K de 9 dias for superior a 50, um sinal de venda é gerado.

  2. Oscilador de Momento Dinâmico de Ehlers (ETSI)

    Esta parte utiliza o método de dinâmica de preços de equilíbrio de três EMA para construir um indicador de dinâmica.

    xPrice1 = close - close[1]
    xPrice2 = abs(close - close[1]) 
    xSMA_R = EMA(EMA(EMA(xPrice1,r), s), u)
    xSMA_aR = EMA(EMA(EMA(xPrice2, r), s), u) 
    xTSI = xSMA_R / xSMA_aR * 100
    xEMA_TSI = EMA(xTSI, N)
    

    onde xSMA_R é o valor suavizado da EMA do ímpeto de preços, xSMA_aR é o valor suavizado da EMA da volatilidade de preços, xTSI é o indicador de ímpeto construído a partir da relação dos dois e xEMA_TSI é o suavização secundária da EMA do xTSI. O indicador determina a direção do sinal de negociação com base na relação entre xTSI e xEMA_TSI.

Por fim, a estratégia ANDs os sinais das duas partes, e só emite ordens de negociação reais quando os sinais de ambos os fatores concordam.

Vantagens da estratégia

A maior vantagem desta estratégia reside no seu design multifator, que pode filtrar sinais falsos e descobrir oportunidades de negociação de alta qualidade.

  1. O fator de reversão 123 pode identificar pontos de recuperação a curto prazo após quedas de faixa.

  2. O indicador de momento de Ehlers pode determinar efetivamente a direção da tendência principal para evitar sinais de reversão que ocorrem sob uma tendência principal, filtrando assim sinais falsos.

  3. A operação AND nas duas partes do sinal pode melhorar a qualidade do sinal e aumentar a estabilidade da estratégia.

Riscos da Estratégia

Embora a estratégia adopte uma concepção multifatorial para controlar os riscos, continuam a existir os seguintes riscos principais:

  1. Os sinais de reversão podem ocorrer em tendências oscilatórias e não obter lucro.

  2. Existe subjetividade nas definições dos parâmetros entre os dois fatores, o que pode ser excessivamente adequado para produtos específicos.

  3. O risco de aumento das perdas após a reversão dos preços reverte-se novamente.

Estes riscos podem ser mitigados através da otimização dos parâmetros para se adaptarem a mais variedades, do controlo das posições após a inversão, do acompanhamento em tempo real das alterações nas relações entre indicadores e de outros meios.

Orientações de otimização

Os principais aspectos para a otimização desta estratégia incluem:

  1. Ajustar os parâmetros dos dois fatores para encontrar amostras de dados que correspondem melhor.

  2. Aumentar as estratégias de stop loss para controlar perdas individuais.

  3. Usando diferentes combinações de parâmetros para variedades de tendências e oscilações.

  4. Aumentar o mecanismo de ponderação dos fatores para dar maior peso aos fatores de melhor desempenho.

  5. Aumentar os algoritmos de aprendizagem automática para obter otimização e atualização automática dos parâmetros.

Conclusão

A estratégia combina com sucesso fatores de reversão e indicadores de momento para alcançar um design otimizado por vários fatores. Pode identificar efetivamente oportunidades de reversão de curto prazo e usar indicadores de momento para realizar verificação secundária dos sinais, melhorando assim a taxa de vitória da estratégia.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/07/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
// r - Length of first EMA smoothing of 1 day momentum        4
// s - Length of second EMA smoothing of 1 day smoothing      8    
// u- Length of third EMA smoothing of 1 day momentum         6  
// Length of EMA signal line                                  3
// Source of Ergotic TSI                                      Close
//
// This is one of the techniques described by William Blau in his book "Momentum,
// Direction and Divergence" (1995). If you like to learn more, we advise you to 
// read this book. His book focuses on three key aspects of trading: momentum, 
// direction and divergence. Blau, who was an electrical engineer before becoming 
// a trader, thoroughly examines the relationship between price and momentum in 
// step-by-step examples. From this grounding, he then looks at the deficiencies 
// in other oscillators and introduces some innovative techniques, including a 
// fresh twist on Stochastics. On directional issues, he analyzes the intricacies 
// of ADX and offers a unique approach to help define trending and non-trending periods.  
//
// 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


ETSI(r,s,u,SmthLen) =>
    pos = 0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(ema(xPrice1,r), s),u)
    xSMA_aR = ema(ema(ema(xPrice2, r), s),u)
    Val1 = 100 * xSMA_R
    Val2 = xSMA_aR
    xTSI = iff (Val2 != 0, Val1 / Val2, 0)
    xEMA_TSI = ema(xTSI, SmthLen)
    pos:= iff(xTSI > xEMA_TSI, 1,
    	   iff(xTSI < xEMA_TSI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic TSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(4, minval=1)
s = input(8, minval=1)
u = input(6, minval=1)
SmthLen = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETSI = ETSI(r,s,u,SmthLen)
pos = iff(posReversal123 == 1 and posETSI == 1 , 1,
	   iff(posReversal123 == -1 and posETSI == -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.