Estratégia de negociação de reversão de impulso

Autora:ChaoZhang, Data: 2023-10-09 17:21:27
Tags:

Resumo

A estratégia de negociação Momentum Reversal combina as vantagens das estratégias de reversão e momentum, utilizando sinais de ambos os tipos de indicadores para realizar negociações contra-direcionais em pontos de virada para lucro.

Estratégia lógica

A estratégia consiste em duas partes:

A primeira parte é a estratégia de reversão 123.

  • Ir longo quando o preço de fechamento for superior ao fechamento anterior durante 2 dias consecutivos e o oscilador estocástico lento de 9 dias estiver abaixo de 50.

  • Ir curto quando o preço de fechamento for inferior ao fechamento anterior durante 2 dias consecutivos e o Oscilador Estocástico rápido de 9 dias estiver acima de 50.

A segunda parte é o indicador de momento filtrado.

  1. Calcular a mudança de preço xMom = fechamento - fechamento [1]

  2. Calcule a mudança de preço absoluto xMomAbs = abs ((fechar - fechar[1])

  3. Filtrar xMom se inferior ao limite Filtrar para 0

  4. Filtrar xMomAbs se inferior ao limite Filtrar para 0

  5. Calcular a soma de xMom filtrado em n dias nSum

  6. Calcular a soma dos xMomAbs filtrados ao longo de n dias nAbsSum

  7. Calcular o valor do momento: nRes = 100 * nSum / nAbsSum

  8. Gerar sinal baseado em nRes e bandas TopBand, LowBand

Este indicador filtra pequenas flutuações e extrai informações de impulso das principais tendências.

Por fim, os sinais de negociação são gerados quando os sinais de ambos os indicadores se alinham para longo ou curto.

Análise das vantagens

A estratégia combina as vantagens de dois tipos diferentes de indicadores para melhorar a qualidade do sinal:

  1. A estratégia de reversão 123 detecta tendências de reversão em pontos de virada, evitando ficar preso.

  2. O indicador de momento filtrado foca apenas em grandes movimentos, filtrando o ruído e captando as principais tendências.

  3. Combiná-los verifica os sinais e reduz os negócios incorretos, melhorando a taxa de ganhos.

Análise de riscos

Os principais riscos desta estratégia incluem:

  1. A análise de um único quadro de tempo pode perder uma tendência maior.

  2. As definições dos parâmetros estáticos não se adaptam às alterações do mercado.

  3. A dupla verificação pode perder algumas oportunidades, reduzindo o potencial de lucro.

  4. Os sinais de baixa qualidade podem também ser verificados, levando a perdas.

Orientações de otimização

A estratégia pode ser otimizada em vários aspectos:

  1. Adicione a verificação multi-temporal para evitar ser preso.

  2. Usar parâmetros adaptativos para ajustar os indicadores com base nas condições do mercado.

  3. Otimizar o limiar do filtro para reduzir os falsos sinais.

  4. Adicionar stop loss para controlar o montante da perda de uma única transação.

  5. Ajustar o dimensionamento das posições para otimizar a eficiência da utilização do capital.

Conclusão

Em conclusão, a estratégia de reversão de momento combina os pontos fortes das estratégias de reversão e de momento filtrado para melhorar a qualidade e a lucratividade do sinal até certo ponto.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/09/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
// This indicator plots a CMO which ignores price changes which are less 
// than a threshold value. CMO was developed by Tushar Chande. A scientist, 
// an inventor, and a respected trading system developer, Mr. Chande developed 
// the CMO to capture what he calls "pure momentum". For more definitive 
// information on the CMO and other indicators we recommend the book The New 
// Technical Trader by Tushar Chande and Stanley Kroll.
// The CMO is closely related to, yet unique from, other momentum oriented 
// indicators such as Relative Strength Index, Stochastic, Rate-of-Change, etc. 
// It is most closely related to Welles Wilder`s RSI, yet it differs in several ways:
// - It uses data for both up days and down days in the numerator, thereby directly 
// measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term extreme 
// movements in price are not hidden. Once calculated, smoothing can be applied to the 
// CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly see 
// changes in net momentum using the 0 level. The bounded scale also allows you to 
// conveniently compare values across different securities.
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

CMOfilt(Length,Filter, TopBand, LowBand) =>
    pos = 0
    xMom = close - close[1]
    xMomAbs = abs(close - close[1])
    xMomFilter = fFilter(xMom, xMomAbs, Filter)
    xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
    nSum = sum(xMomFilter, Length)
    nAbsSum = sum(xMomAbsFilter, Length)
    nRes =   100 * nSum / nAbsSum
    pos := iff(nRes > TopBand, 1,
	         iff(nRes < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & CMOfilt", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOfilt = CMOfilt(LengthCMO,Filter, TopBand, LowBand)
pos = iff(posReversal123 == 1 and posCMOfilt == 1 , 1,
	   iff(posReversal123 == -1 and posCMOfilt == -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.