O recurso está a ser carregado... Carregamento...

Estratégia de negociação de reversão de média móvel dupla e combinação de flash de baixo triplo

Autora:ChaoZhang, Data: 2023-10-26 16:26:24
Tags:

img

Resumo

Esta estratégia de negociação faz pleno uso das vantagens dos indicadores técnicos de reversão média móvel e flash de fundo triplo para aplicação combinada.

Princípios de estratégia

A estratégia consiste em duas partes:

  1. Combinação de médias móveis de 2 dias e 20 dias.

  2. Padrão de flash de baixo triplo. O surgimento deste padrão é um sinal de reversão de curto prazo. A condição de formação é: o menor do dia do meio é menor do que o anterior e o dia seguinte, e o preço de fechamento do dia seguinte é maior do que o mais alto do dia anterior.

Quando as médias móveis de 2 dias e 20 dias mostrarem simultaneamente sinais de reversão e forem consistentes com a direção do sinal do padrão flash triplo inferior, tome ações de compra ou venda.

No código, as médias móveis de 2 dias e 20 dias são calculadas primeiro.

Quando o padrão de flash inferior triplo é detectado, o sinal de direção do padrão é definido em 1 ou -1. Leia o sinal do padrão do dia anterior, combine-o com o sinal de média móvel atual e gere o sinal de entrada final.

Assim, filtrando com a combinação de médias móveis e padrões, alguns sinais falsos podem ser filtrados, tornando a estratégia de negociação mais confiável.

Vantagens

  1. A combinação de múltiplos indicadores técnicos pode complementar-se e verificar-se mutuamente e melhorar a fiabilidade do sinal.

  2. A reversão da média móvel pode capturar pontos de reversão das tendências em tempo hábil e aproveitar reversões.

  3. A média móvel de 20 dias acompanha as tendências de médio e longo prazo, e a média móvel de 2 dias capta pontos de entrada após ajustamentos de curto prazo.

  4. A estratégia não é sensível aos parâmetros e é fácil de implementar e otimizar.

Riscos

  1. Os padrões de reversão são propensos a erros de julgamento e a experiência é necessária para julgar a sua confiabilidade.

  2. Os sinais de reversão podem atrasar-se, exigindo a observação das características do padrão e o ajustamento adequado da posição.

  3. Os testes e a otimização são necessários para as diferentes variedades de comércio, podendo ser necessário ajustar alguns parâmetros.

  4. O controlo das perdas deve introduzir um mecanismo de stop loss para evitar que se percam pontos de reversão importantes.

Optimização

  1. Testar diferentes combinações de médias móveis para selecionar os melhores parâmetros para a variedade.

  2. Introduzir outros indicadores auxiliares, tais como volume, bandas de Bollinger, etc., para verificação de múltiplos indicadores.

  3. Adicionar um módulo de stop loss para controlar os drawdowns e os riscos.

  4. Otimizar o horário de entrada para evitar problemas prematuros ou atrasados.

  5. Realizar a otimização de parâmetros para variedades específicas para melhorar a adaptabilidade.

Resumo

A estratégia faz pleno uso das vantagens da reversão média móvel e dos padrões de curto prazo para alcançar uma combinação eficaz de ambos, o que pode melhorar a estabilidade e a taxa de ganho dos sistemas de negociação.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/12/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second 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.
////////////////////////////////////////////////////////////
EMA20(Length ) =>
    pos = 0.0
    xPrice = close
    xXA = ema(xPrice, Length)
    nHH = max(high, high[1])
    nLL = min(low, low[1])
    nXS = iff((nLL > xXA)or(nHH < xXA), nLL, nHH)
    pos := iff(nXS > close[1] , -1, iff(nXS < close[1] , 1, nz(pos[1], 0))) 
	pos

BarR()=>
    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 2/20 EMA & 3 Day Pattern", shorttitle="Combo", overlay = true)
var I1  = "●═════ 2/20 EMA ═════●"
Length = input(14, minval=1, group = I1)
//var I2  = "●═════ 3-Bar-Reversal-Pattern ═════●"
var misc  = "●═════ MISC ═════●"
reverse = input(false, title="Trade reverse", group = misc)
var timePeriodHeader  = "●═════ Time Start ═════●"
d = input(1, title="From Day", minval=1, maxval=31, group=timePeriodHeader)
m = input(1, title="From Month", minval=1, maxval=12, group=timePeriodHeader)
y = input(2005, title="From Year", minval=0, group=timePeriodHeader)

StartTrade = true
prePos3Bar = BarR()

posEMA20 = EMA20(Length)
pos3BarR = security(syminfo.tickerid, "D", prePos3Bar[1], barmerge.gaps_off, barmerge.lookahead_on)
pos = iff(posEMA20 == 1 and pos3BarR == 1 and StartTrade , 1,
	   iff(posEMA20 == -1 and pos3BarR == -1 and StartTrade, -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.