A estratégia baseia-se em um indicador MACD intensificado para acompanhamento de tendências. Ela calcula simultaneamente a média móvel rápida, a média móvel lenta e a diferença entre elas, e depois faz a média móvel da diferença para gerar um sinal de negociação.
A lógica é a seguinte:
Calcular um ciclo rápido de EMA, como 12 dias
Calcular um ciclo de EMA lento, como 26 dias
Calcule a diferença entre o EMA e o MACD
EMA de linha de sinal para MACD, como o EMA de 9
A diferença entre o MACD e a linha de sinalização gera uma linha de sinal de amplificação
Fazer mais ao passar o eixo zero na linha de sinal de amplificação
Quando o sinal de amplificação atravessa o eixo zero sob a linha, a posição é plana.
Esta estratégia explora as características de rastreamento de tendências do indicador MACD e realiza filtragem de otimização secundária para melhorar a qualidade do sinal, seguindo tendências de linha média e longa.
A redução de ruído do MACD aumentou a precisão do sinal
A EMA está trabalhando para determinar a direção e a intensidade
Tendência de linha longa com foco em parâmetros mais lentos
Parâmetros de ciclo EMA a serem escolhidos com cuidado
O que mais se pode fazer para não aproveitar a oportunidade?
A frequência de sinais é fraca.
A estratégia identifica oportunidades de linhas médias e longas, aumentando a capacidade de acompanhamento de tendências do MACD. No entanto, a otimização de parâmetros e o controle de risco são especialmente importantes. A combinação adequada de outros fatores pode aumentar a eficácia.
/*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)