Estratégia de combinação de reversão de média móvel dupla e ATR trailing stop

Autora:ChaoZhang, Data: 2024-01-26 11:26:40
Tags:

img

Resumo

A estratégia de combinação de reversão de média móvel dupla e parada de tração ATR é uma estratégia de negociação quantitativa muito prática. A estratégia usa primeiro a cruz da morte e a cruz de ouro formadas pelas médias móveis duplas para determinar tendências de mercado e pontos de reversão. Ao mesmo tempo, a estratégia também combina a faixa média verdadeira para definir trail stops para garantir lucro enquanto controla riscos.

Princípio da estratégia

Estratégia de inversão de média móvel dupla

A estratégia de inversão de média móvel dupla usa o cruzamento de linhas rápidas e lentas para determinar as tendências do mercado. Quando a linha rápida atravessa abaixo da linha lenta de cima para baixo, ela forma uma cruz de morte, indicando que a tendência do mercado está mudando de alta para baixa. Quando a linha rápida atravessa acima da linha lenta de baixo para cima, ela forma uma cruz de ouro, indicando que a tendência do mercado está mudando de queda para alta.

Especificamente, a estratégia usa a linha rápida do STOCH de 9 dias como linha rápida e a EMA de 3 dias como linha lenta. Quando o fechamento é menor que o fechamento anterior e a linha rápida cruza acima de 50 para cruzar acima da linha lenta, ele limpa a posição para ir curto. Quando o fechamento é maior que o fechamento anterior e a linha rápida cruza abaixo de 50 para cruzar abaixo da linha lenta, ele limpa a posição para ir longo.

ATR Trailing Stop Strategy (Estratégia de suspensão de atraso do ATR)

O indicador ATR pode efetivamente refletir a volatilidade de curto prazo do mercado. A estratégia define o trail stop com base no valor do ATR para sair quando a tendência de preços se inverter.

Especificamente, a estratégia usa o ATR de 5 dias e define o ponto de stop loss em perto menos 3,5 vezes o ATR. Quando o preço atinge o ponto de stop loss, fecha a posição para o stop loss.

Análise das vantagens

A estratégia combinada de reversão dupla da média móvel e de parada de tração ATR combina a vantagem da estratégia de média móvel na determinação de tendências e reversões e a vantagem da estratégia de parada de tração ATR no controlo dos riscos, tornando-a uma estratégia muito prática.

Em especial, a estratégia apresenta as seguintes vantagens:

  1. Utilize a cruz da morte e a cruz dourada formadas por médias móveis duplas para determinar pontos de reversão da tendência do mercado e identificar com precisão os sinais de reversão.

  2. Combinar o indicador STOCH para confirmar os sinais de inversão e evitar os falsos sinais.

  3. O ATR trailing stop define pontos de stop loss com flexibilidade com base na volatilidade do mercado para maximizar o bloqueio de lucros.

  4. A estratégia integra múltiplos indicadores e métodos de análise técnica para tornar a estratégia mais robusta.

  5. A ideia da estratégia é clara e fácil de entender, os parâmetros são flexíveis para ajuste e é fácil de operar na negociação ao vivo.

Análise de riscos

Embora a estratégia tenha muitas vantagens, existem ainda alguns riscos a observar:

  1. Os sinais gerados por médias móveis duplas podem ficar atrasados e incapazes de comprar e vender com precisão em pontos de reversão.

  2. O indicador ATR não é sensível a grandes flutuações do mercado e não pode atualizar a stop loss a tempo.

  3. A combinação de múltiplos parâmetros e condições aumenta a complexidade da estratégia. Parâmetros inadequados podem causar negociação excessivamente agressiva e aumentar os riscos. Os parâmetros precisam ser cuidadosamente avaliados e ajustados gradualmente.

Orientações de otimização

De acordo com a análise de risco acima referida, a estratégia pode ser otimizada nos seguintes aspectos:

  1. Ajustar os parâmetros da média móvel do período para encurtar os períodos de captura precoce das oportunidades de reversão.

  2. Adicionar outros indicadores para determinar sinais de reversão, como MACD, KD, etc., para formar confirmações múltiplas.

  3. Ajustar dinamicamente os períodos ATR ou introduzir a volatilidade do mercado para atualizar o stop loss em tempo real.

  4. Avaliar as diferenças entre os mercados de acções e futuros e ajustar os parâmetros, respectivamente, para os tornar mais adequados a ambos os mercados.

  5. Adicione custos de negociação e deslizamento no backtesting para tornar a estratégia mais próxima do ambiente de negociação ao vivo.

  6. Considere adicionar modelos de aprendizado de máquina para otimizar dinamicamente vários parâmetros.

Resumo

A estratégia combinada de reversão de média móvel dupla e parada de tração ATR é uma estratégia quantitativa eficiente e prática. Combina as duplas vantagens de determinar a reversão do mercado com médias móveis e controlar riscos definindo paradas de tração ATR. Assegura lucro enquanto reduz perdas desnecessárias. A estratégia tem ajuste flexível de parâmetros e é fácil de operar em negociação ao vivo. Ao mesmo tempo, também pode ser estendida e otimizada em vários aspectos para se adaptar a ambientes de mercado mais extensos.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/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.
//
// Secon strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
//
// 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


ATR_TrailingStop(nATRPeriod, nATRMultip) =>
    xATR = atr(nATRPeriod)
    nLoss = nATRMultip * xATR
    pos = 0.0
    xATRTrailingStop = 0.0
    xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
                         iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
                           iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
    pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
    	     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Average True Range Trailing Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nATRPeriod = input(5)
nATRMultip = input(3.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posATR_TrailingStop = ATR_TrailingStop(nATRPeriod, nATRMultip)
pos = iff(posReversal123 == 1 and posATR_TrailingStop == 1 , 1,
	   iff(posReversal123 == -1 and posATR_TrailingStop == -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.