Estratégia de combinação de volatilidade de inversão de tendência

Autora:ChaoZhang, Data: 2023-10-24 14:23:58
Tags:

img

Resumo

Esta estratégia combina uma estratégia de inversão de tendência com uma estratégia de volatilidade estatística para gerar sinais de negociação mais fortes.

Como funciona

A estratégia consiste em duas partes:

  1. Estratégia de reversão da tendência

    • Identifique os pontos de reversão da tendência usando o padrão 123. Especificamente, vá longo se o fechamento tiver aumentado por 2 dias consecutivos e a linha lenta estocástica de 9 dias estiver abaixo de 50; vá curto se o fechamento tiver caído por 2 dias consecutivos e a linha rápida estocástica de 9 dias estiver acima de 50.
  2. Estratégia estatística de volatilidade

    • Calcular a volatilidade estatística de 30 dias utilizando o Método de Valor Extremo.

A estratégia gera um sinal comercial apenas quando ambas as estratégias concordam na direção (ambas longas ou ambas curtas).

Análise das vantagens

A estratégia combinada melhora a confiabilidade do sinal combinando dois tipos diferentes de estratégias:

  1. O padrão 123 capta com precisão os pontos de reversão da tendência e evita ser enganado por picos de preços únicos.

  2. A volatilidade estatística concentra-se em períodos de alta volatilidade e de alta oportunidade com base nos movimentos do mercado no último mês.

Através da verificação mútua, as duas estratégias combinadas captam pontos-chave do mercado com mais precisão e geram sinais comerciais mais precisos.

Análise de riscos

  1. 123 padrões não podem evitar completamente o risco de falhas.

  2. A volatilidade estatística considera apenas dados históricos e não pode prever mudanças futuras de volatilidade.

  3. Ambas as estratégias dependem fortemente do ajuste de parâmetros.

  4. Embora seja mais confiável em geral, a abordagem combinada pode perder alguns sinais fortes de estratégias individuais.

Áreas de melhoria

  1. Incorporar mais indicadores como Bollinger Bands, KDJ para formar um mecanismo de votação.

  2. Adicione algoritmos de aprendizagem de máquina para determinar probabilidades de reversão da tendência usando mais dados históricos.

  3. Definir limites de intensidade do sinal para filtrar o ruído.

  4. Otimizar parâmetros para diferentes produtos e prazos.

  5. Adicionar mecanismos de stop loss para controlar o risco da estratégia combinada.

Conclusão

A estratégia melhora a qualidade do sinal, combinando estratégias de inversão de tendência e volatilidade estatística, fornecendo sinais de negociação mais precisos em torno dos pontos de virada do mercado.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/07/2021
// 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 used to calculate the statistical volatility, sometime 
// called historical volatility, based on the Extreme Value Method.
// Please use this link to get more information about Volatility.
//
// 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


SV(Length,TopBand,LowBand) =>
    pos = 0.0
    xMaxC = highest(close, Length)
    xMaxH = highest(high, Length)
    xMinC = lowest(close, Length)
    xMinL = lowest(low, Length)
    SqrTime = sqrt(253 / Length)
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    nRes = iff(Vol < 0,  0, iff(Vol > 2.99, 2.99, Vol))
    pos := iff(nRes > TopBand, 1,
    	     iff(nRes < LowBand, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Statistical Volatility", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Statistical Volatility ----")
LengthSV = input(30, minval=1)
TopBand = input(0.005, step=0.001)
LowBand = input(0.0016, step=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSV = SV(LengthSV,TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSV == 1 , 1,
	   iff(posReversal123 == -1 and posSV == -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.