Estratégia de reversão de cruzamento de média móvel dupla


Data de criação: 2023-11-22 10:07:19 última modificação: 2023-11-22 10:07:19
cópia: 1 Cliques: 605
1
focar em
1617
Seguidores

Estratégia de reversão de cruzamento de média móvel dupla

Visão geral

A ideia principal da estratégia é usar o cruzamento de médias de movimento rápido e médias de movimento lento para julgar a tendência do mercado e entrar em jogo quando a linha curta e a média de movimento longa se revertem, para obter o efeito de acompanhar a tendência.

Princípio da estratégia

  1. Configure o período médio de movimento rápido (shortma) (default 7 dias) e o período médio de movimento lento (longma) (default 77 dias)
  2. Quando a linha curta atravessa a linha longa, ela é julgada como um sinal de compra, registrada como barssince ((mabuy), e a linha longa significa entrada na tendência; quando a linha curta atravessa a linha longa abaixo da linha média, ela é julgada como um sinal de venda, registrada como barssince ((masell), e a linha longa significa fim da tendência
  3. Comparando o tamanho do barssince, o número de bares que a linha média curta cruza de cima para baixo indica que a tendência dura mais tempo; ao contrário, o número de bares que a linha média curta cruza de baixo para cima indica que o sinal de reversão é mais forte
  4. Um sinal de compra é emitido quando o número de barras do sinal de venda é maior que o número de barras do sinal de compra; um sinal de venda é emitido quando o número de barras do sinal de compra é maior que o número de barras do sinal de venda
  5. such estratégia é essencialmente uma estratégia de reversão de dupla linha de equilíbrio, julgando o ponto de reversão de tendência através de um reversão de linha de equilíbrio rápida e uma de linha de equilíbrio lenta

Vantagens estratégicas

  1. O uso de julgamento de dupla equilíbrio para filtrar sinais de negociação de ruído parcial
  2. Aumento da comparação barssince, evitando falhas e sinais errôneos de inversão de preço de Close
  3. É fácil de entender e de implementar.
  4. Parâmetros de média móvel personalizáveis para diferentes períodos e mercados

Risco estratégico

  1. A estratégia de linha dupla é mais propensa a produzir mais sinais e a ser negociada com mais frequência.
  2. A configuração inadequada dos parâmetros da média móvel pode perder oportunidades de tendências mais longas
  3. Quando a média de longo prazo é ultrapassada, o ponto de paragem pode ser muito distante e haver um grande recuo.
  4. Não é possível filtrar a espiral e oscilação do mercado.

Direção de otimização da estratégia

  1. Adição de filtros para outros indicadores para evitar ser preso em uma onda de choque
  2. Aumentar o mecanismo de suspensão de perdas
  3. Optimizar a combinação de parâmetros da média móvel
  4. Parâmetros de média móvel ajustados à dinâmica do ciclo de mercado

Resumir

A estratégia em geral é lógica clara e fácil de entender, através de uma linha média rápida e uma linha média lenta invertida para julgar o ponto de mudança de tendência do mercado, em teoria, pode efetivamente acompanhar a tendência. Mas na aplicação prática, ainda é necessário otimizar o algoritmo da estratégia em si e a configuração de parâmetros, para torná-lo mais estável e prático.

Código-fonte da estratégia
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)