A estratégia de reversão dupla

Autora:ChaoZhang, Data: 2024-02-26 12:07:32
Tags:

img

Resumo

A estratégia de reversão dupla é uma estratégia quantitativa que combina o padrão de reversão 123 e o padrão de reversão de três barras para melhorar a qualidade do sinal e reduzir o risco.

Princípio da estratégia

A estratégia de reversão dupla reúne dois tipos diferentes de estratégias de negociação. A primeira é a estratégia de reversão 123, que emprega indicadores de diferencial de preço e desencadeia quando os preços se revertem em dois dias consecutivos e os indicadores estocásticos cruzam os valores de limiar. A segunda é a estratégia de padrão de reversão de três barras, que analisa um gráfico de velas de três dias e desencadeia quando o meio do dia publica o mínimo mais baixo e o último dia fecha acima do máximo do dia anterior. A estratégia entra em uma posição longa ou curta quando ambas as estratégias emitem simultaneamente um sinal na mesma direção.

Especificamente, a estratégia de reversão 123 usa um oscilador estocástico de 9 dias para identificar condições de sobrecompra e sobrevenda. Gerar um sinal de compra quando os preços caem por dois dias consecutivos e as leituras estocásticas caem abaixo de 50, e um sinal de venda quando os preços aumentam por dois dias consecutivos e o estocástico supera 50.

A estratégia de reversão dupla requer sinais concordantes de ambas as estratégias antes de tomar quaisquer posições.

Análise das vantagens

Em comparação com os sistemas de estratégia única, a estratégia de inversão dupla tem as seguintes vantagens:

  1. Melhoria da qualidade do sinal, menos falsos sinais
  2. Confirmação de dois indicadores, menor risco de utilização
  3. Captura as oportunidades de reversão a curto e médio prazo
  4. Simples de compreender e implementar

Riscos e soluções

O principal risco da estratégia de reversão dupla é perder algumas oportunidades lucrativas. Devido aos seus rigorosos requisitos de sinal, algumas oportunidades de negociação identificadas por indicadores individuais serão ignoradas. Isso pode ser mitigado ajustando parâmetros para relaxar as condições de um indicador e aumentar a frequência de negociação.

Outro risco é que ambos os indicadores falhem simultaneamente em condições de mercado extremas, produzindo uma maior taxa de sinais falsos. Para tais casos, mecanismos de stop-loss podem ser adicionados para desligar rapidamente as posições e limitar as perdas.

Sugestões de otimização

Outras otimizações para a estratégia de reversão dupla incluem:

  1. Ajustar os parâmetros do indicador estocástico para melhorar a precisão da avaliação da sobrecompra/supervenda
  2. Teste de eficácia entre diferentes instrumentos de negociação para encontrar a melhor adequação dos ativos
  3. Incorporar modelos de aprendizagem de máquina para auxiliar a validação de sinais e melhorar a precisão
  4. Combine mais estatísticas de mercado como mudanças de volume, volatilidade intradiária para determinar o momento ideal de entrada.

Conclusão

A estratégia de reversão dupla combina com sucesso os princípios de reversão média com a análise de padrões de velas, capturando completamente a ciclicidade nos preços.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// This startegy based on 3-day pattern reversal described in "Are Three-Bar 
// Patterns Reliable For Stocks" article by Thomas Bulkowski, presented in 
// January,2000 issue of Stocks&Commodities magazine.
// That pattern conforms to the following rules:
// - It uses daily prices, not intraday or weekly prices;
// - The middle day of the three-day pattern has the lowest low of the three days, with no ties allowed;
// - The last day must have a close above the prior day's high, with no ties allowed;
// - Each day must have a nonzero trading range. 
//
// 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

BarReversalPattern() =>
    pos = 0.0
    pos := iff(open[2] > close[2] and high[1] < high[2] and low[1] < low[2] and low[0] > low[1] and high[0] > high[1], 1,
	         iff(open[2] < close[2] and high[1] > high[2] and low[1] > low[2] and high[0] < high[1] and low[0] < low[1], -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Strategies 123 Reversal and 3-Bar-Reversal-Pattern", shorttitle="Combo Backtest", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
pos3BarReversalPattern = BarReversalPattern()
pos = iff(posReversal123 == 1 and pos3BarReversalPattern == 1 , 1,
	   iff(posReversal123 == -1 and pos3BarReversalPattern == -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 ? red: possig == 1 ? green : blue ) 

Mais.