Estratégia de tendência de convergência da média móvel reforçada

Autora:ChaoZhang, Data: 14 de setembro de 2023 16:46:53
Tags:

Estratégia lógica

Esta estratégia de seguir tendências utiliza um indicador MACD aprimorado. Ele calcula a EMA rápida, a EMA lenta, sua diferença e a EMA dessa diferença para gerar sinais.

A lógica é:

  1. Calcular o período de EMA rápido, por exemplo 12 dias

  2. Calcular o período de EMA lento, por exemplo, 26 dias

  3. Subtrair rápido da EMA lenta para obter MACD

  4. Tomar a EMA do MACD como linha de sinal, por exemplo, 9 dias

  5. A EMA do sinal MACD menos dá um sinal reforçado

  6. Vai longo quando o sinal reforçado cruza acima da linha zero

  7. Fechar longo quando o sinal reforçado cruza abaixo da linha zero

A estratégia aproveita a capacidade de seguir a tendência do MACD e o otimiza ainda mais para sinais de tendência de qualidade de médio a longo prazo.

Vantagens

  • O MACD melhorado reduz o ruído e melhora os sinais

  • Indicadores de direção e força da combinação EMA rápida/lenta

  • Os parâmetros mais lentos concentram-se nas tendências de médio a longo prazo

Riscos

  • É necessária uma otimização cuidadosa dos períodos de EMA

  • LONG só incapaz de usar oportunidades de curto prazo

  • Ocorrência menos frequente do sinal

Resumo

Esta estratégia aproveita o MACD aprimorado para melhorar a identificação de tendências de médio a longo prazo.


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

//@version=3
//study("MACDAS")
// strategy("macdas",shorttitle="macdas",overlay=true,default_qty_value=10000,initial_capital=10000,currency=currency.USD)

// Date range filter
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

inTimeRange = true


fastperiod = input(12,title="fastperiod",minval=1,maxval=500)
slowperiod = input(26,title="slowperiod",minval=1,maxval=500)
signalperiod = input(9,title="signalperiod",minval=1,maxval=500)
fastMA = ema(close, fastperiod)
slowMA = ema(close, slowperiod)
macd = fastMA - slowMA
signal = ema(macd, signalperiod)
macdAS = macd - signal
signalAS = ema(macdAS, signalperiod)
plot(macdAS, color=blue, linewidth=2)
plot(signalAS, color=red, linewidth=2)
plot(0, color=black)

strategy.entry("LONG", strategy.long, when =inTimeRange and crossover(macdAS,signalAS))
strategy.close("LONG", when= inTimeRange and crossunder(macdAS,signalAS))

plotshape(crossover(macdAS, signalAS) , style = shape.arrowup, text="Long",color=green,size=size.huge)
plotshape(crossover(signalAS,macdAS) , style = shape.arrowdown, text="End Long",color=red,size=size.huge)



Mais.