Estratégia de reversão de impulso de vários prazos

Autora:ChaoZhang, Data: 2023-10-30 10:42:54
Tags:

img

Resumo

Esta estratégia combina indicadores de impulso em diferentes prazos para identificar a reversão da tendência em múltiplas escalas de tempo.

Estratégia lógica

A estratégia consiste em dois componentes:

  1. 123 Reversão

Ele usa cruzamento de linha rápida estocástica abaixo da linha lenta, juntamente com padrões de reversão de preços para identificar reversões de tendência de curto prazo. Especificamente, ele vai longo quando o preço fecha mais alto do que o fechamento anterior e a linha rápida estocástica atravessa abaixo da linha lenta e abaixo de 50; ele vai curto quando o preço fecha mais baixo do que o fechamento anterior e a linha rápida estocástica atravessa acima da linha lenta e acima de 50. Esta parte visa capturar configurações de reversão média com base em leituras de sobrecompra / sobrevenda.

  1. (Melhor-Melhor) / Indicador Próximo

Este indicador mede a volatilidade da barra atual. Valores mais altos sugerem maior volatilidade e reversões potenciais, enquanto valores mais baixos indicam diminuição da volatilidade e continuação da tendência.

Em conjunto, os dois componentes permitem à estratégia detectar reversões em prazos curtos e médios a longos.

Vantagens

  • Melhoria da precisão com indicadores multi-tempo

    A utilização de indicadores de curto e médio-longo prazo garante a fiabilidade do sinal e evita falsos sinais.

  • Parâmetros flexíveis do indicador

    Os parâmetros do Estocástico e do (H-L) /C podem ser ajustados para os regimes de mercado, tornando a estratégia robusta.

  • Lógica simples e intuitiva

    Com Stochastic como núcleo e um filtro de tendência, a estrutura é simples e fácil de entender.

  • Extensão

    O quadro simples permite a fácil incorporação de mais indicadores para construir modelos multifatores.

Riscos

  • Possui um desempenho inferior em tendência persistente

    A natureza de inversão da média torna-o menos ideal para mercados com tendências fortes.

  • Risco de falsos sinais

    O estocástico e (H-L) /C podem emitir sinais errados em mercados anormais.

  • A afinação dos indicadores requer especialização

    Os parâmetros devem ser otimizados para adaptar-se às mudanças dos mercados, caso contrário, o desempenho pode sofrer.

  • Necessário dimensionamento da posição adequado

    Como estratégia de reversão, é importante uma gestão prudente do risco no dimensionamento das posições.

Oportunidades de melhoria

  • Mais fatores no modelo multifator

    Podem ser adicionados fatores adicionais como volume, outros indicadores de reversão para criar modelos multifatores.

  • Implementar o stop loss

    A suspensão de perdas no tempo ou base móvel poderia ajudar a controlar a perda de uma única negociação.

  • Optimização de parâmetros

    Podem ser explorados métodos mais sistemáticos de ajuste de parâmetros, como algoritmos genéticos.

  • Aprendizagem de máquina

    Algoritmos de ML podem ajudar a melhorar a precisão da previsão de reversão.

  • Análise do sentimento

    Incorporar dados alternativos como o sentimento social pode ajudar a prever reversões.

Conclusão

Esta estratégia combina indicadores de curto e médio prazo para identificar reversões em diferentes prazos. Tem vantagens como parâmetros flexíveis, estrutura simples, extensibilidade. Os próximos passos podem incluir mais fatores, stop loss, otimização de parâmetros, aprendizado de máquina para melhorar ainda mais a lucratividade e a gestão de riscos.


//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/05/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.
//
// Second strategy
//  This histogram displays (high-low)/close
//  Can be applied to any time frame.
//
// 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

HLCHist(input_barsback, input_percentorprice, input_smalength) =>
    xPrice = (high-low)/close
    xPriceHL = (high-low)
    xPrice1 = iff(input_percentorprice, xPrice * 100, xPriceHL)
    xPrice1SMA = sma(abs(xPrice1), input_smalength)
    pos = 0.0
    pos := iff(xPrice1SMA[input_barsback] > abs(xPrice1), 1,
    	   iff(xPrice1SMA[input_barsback] < abs(xPrice1), -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & (H-L)/C Histogram", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
input_barsback = input(4, title="Look Back")
input_percentorprice = input(false, title="% change")
input_smalength = input(13, title="SMA Length")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLCHist = HLCHist(input_barsback, input_percentorprice, input_smalength)
pos = iff(posReversal123 == 1 and posHLCHist == 1 , 1,
	   iff(posReversal123 == -1 and posHLCHist == -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.