Comb Reverse EMA Volume Weighting Optimization Estratégias de negociação

Autora:ChaoZhang, Data: 2023-12-07 16:39:50
Tags:

img

Resumo

Esta estratégia é uma combinação dupla otimizada de estratégia de negociação ponderada pela EMA reversa. Ela combina estratégia reversa e estratégia ponderada pela EMA, dois tipos diferentes de estratégias, e gera sinais de negociação mais confiáveis julgando se os sinais das duas estratégias são consistentes.

Princípio da estratégia

A parte de reversão usa a estratégia de reversão 123. Esta estratégia combina a relação entre os preços de fechamento dos dois dias anteriores e o oscilador estocástico para gerar sinais.

  • Quando o preço de fechamento de hoje for superior ao de ontem e o preço de fechamento de ontem for inferior ao de anteontem; ao mesmo tempo, a linha lenta estocástica de 9 dias for inferior a 50, vá longo;
  • Quando o preço de fechamento de hoje for inferior ao de ontem e o preço de fechamento de ontem for superior ao de anteontem; ao mesmo tempo, a linha rápida estocástica de 9 dias for superior a 50, vá para curto.

A parte ponderada da EMA utiliza o cálculo da média móvel exponencial e do cálculo ponderado pelo volume.

xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol

As regras específicas de negociação são: quando o indicador nRes for inferior/superior ao preço de encerramento de ontem, negociar long/short.

Por último, a estratégia avalia se os sinais das duas partes são consistentes antes de gerar o sinal de negociação real.

Análise das vantagens

A estratégia combina dois tipos diferentes de estratégias para se verificar e melhorar a confiabilidade dos sinais e reduzir os falsos sinais.

Análise de riscos

A estratégia tem um certo atraso de tempo e é propensa a perder oportunidades de negociação de curto prazo. Além disso, a EMA ponderada não é eficaz para os mercados oscilantes. Além disso, a confiabilidade dos sinais de reversão também precisa ser verificada.

Reduza os parâmetros adequadamente para acelerar a reação. Adicione stop loss para controlar os riscos. Introduza mais fatores para verificar os sinais de reversão.

Optimização

  1. Teste mais combinações de fatores de reversão para encontrar os parâmetros ideais.
  2. Tente diferentes tipos de métodos de ponderação da EMA.
  3. Adicionar stop loss, stop loss de atraso.
  4. Optimize os parâmetros para uma resposta mais rápida.

Resumo

A estratégia integra as vantagens de dois tipos diferentes de estratégias, que podem melhorar a qualidade do sinal e superar as desvantagens de uma única estratégia até certo ponto.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/10/2019
// 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
// The related article is copyrighted material from Stocks & Commodities 2009 Oct 
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

EMA_VW(Length) =>
    pos = 0.0
    xMAVolPrice = ema(volume * close, Length)
    xMAVol = ema(volume, Length)
    nRes = xMAVolPrice / xMAVol
    pos := iff(nRes < close[1], 1,
             iff(nRes > close[1], -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & EMA & Volume Weighting", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthEMA_VM = input(22, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA_VW = EMA_VW(LengthEMA_VM)
pos = iff(posReversal123 == 1 and posEMA_VW == 1 , 1,
	   iff(posReversal123 == -1 and posEMA_VW == -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.