
A estratégia de acompanhamento de tendências de dupla média móvel move-se através do cálculo de uma média móvel de duplo índice de preços, formando uma linha rápida e uma linha lenta, julgando a tendência de preços de acordo com a forma cruzada das duas linhas. A estratégia pertence à estratégia de negociação quantitativa baseada no acompanhamento de tendências.
A estratégia primeiro calcula a média móvel de índice duplo do preço, incluindo a linha rápida e a linha lenta. A linha rápida tem um parâmetro de 4 ciclos e a linha lenta tem um parâmetro de 8 ciclos. Quando as duas linhas se cruzam, geram um sinal de compra e venda. Quando a linha rápida atravessa a linha lenta de baixo, geram um sinal de compra; quando a linha rápida atravessa a linha lenta de cima para baixo, geram um sinal de venda.
A estratégia permite, em primeiro lugar, negociar de acordo com a tendência dos preços, evitando custos de transação. Em segundo lugar, a dupla linha de média móvel filtra o ruído parcial dos preços, permitindo uma boa compreensão da tendência dos preços. Em segundo lugar, os parâmetros da estratégia são otimizados com flexibilidade, o ciclo de média móvel e os parâmetros MACD podem ser ajustados para se adaptar a diferentes variedades e parâmetros.
A estratégia depende de otimização de parâmetros, e se os parâmetros não forem configurados corretamente, gerará uma grande quantidade de sinais errados. Além disso, a linha média móvel dupla tem atraso e pode perder o ponto de viragem do preço. Além disso, a negociação de tendências é propensa a formar um padrão de caça de alta e queda, com certo risco.
A estratégia pode ser melhorada em vários aspectos:
Optimizar os parâmetros de ciclo de uma média móvel dupla, procurando a melhor combinação de parâmetros
Adicionar outros indicadores de filtragem de sinais, como RSI, KD, etc, para melhorar a qualidade do sinal
Aumentar as estratégias de parada de perdas e parar os perdas em tempo hábil quando a tendência se inverte
Ajustar o tamanho da posição de acordo com a evolução do mercado e controlar o risco
Optimizar para diferentes variedades de transação
Combinação de estratégias avançadas, como aprendizado de máquina, para melhorar a eficácia das estratégias
Esta estratégia é uma estratégia simples de acompanhamento de tendências baseada em duas medias móveis. A estratégia é clara, fácil de implementar, com ajuste de parâmetros flexíveis, e é adequada como estratégia de entrada para negociação quantitativa.
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 12/11/2017
// The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by
// William Blau, except the SMI includes a signal line. The SMI uses double moving averages
// of price minus previous price over 2 time frames. The signal line, which is an EMA of the
// SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine
// tune these signals. The user may change the input (close), method (EMA), period lengths
// and guide values.
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// WARNING:
// - For purpose educate only
////////////////////////////////////////////////////////////
strategy(title="SMI Ergodic Oscillator")
fastPeriod = input(4, minval=1)
slowPeriod = input(8, minval=1)
SmthLen = input(3, minval=1)
TopBand = input(0.5, step=0.1)
LowBand = input(-0.5, step=0.1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xPrice = close
xPrice1 = xPrice - xPrice[1]
xPrice2 = abs(xPrice - xPrice[1])
xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod)
xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod)
xSMI = xSMA_R / xSMA_aR
xEMA_SMI = ema(xSMI, SmthLen)
pos = iff(xEMA_SMI < xSMI, -1,
iff(xEMA_SMI > xSMI, 1, nz(pos[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)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xSMI, color=green, title="Ergotic SMI")
plot(xEMA_SMI, color=red, title="SigLin")