Esta estrategia de seguimiento de tendencias utiliza un indicador MACD mejorado. Calcula la EMA rápida, la EMA lenta, su diferencia y la EMA de esa diferencia para generar señales.
La lógica es:
Calcular el período de EMA rápido, por ejemplo, 12 días
Calcular el período de EMA lento, por ejemplo, 26 días
Sustraer rápido de la EMA lenta para obtener el MACD
Tome la EMA del MACD como línea de señal, por ejemplo, 9 días
La EMA del MACD menos la señal da una señal mejorada
Ir largo cuando la señal mejorada cruza por encima de la línea cero
Cierre largo cuando la señal reforzada cruza por debajo de la línea cero
La estrategia aprovecha la capacidad de seguimiento de tendencias del MACD y lo optimiza aún más para señales de tendencia de calidad a medio y largo plazo.
El MACD mejorado reduce el ruido y mejora las señales
Indicadores de dirección y fuerza de la combinación EMA rápida/lenta
Los parámetros más lentos se centran en las tendencias a medio y largo plazo
Se requiere una optimización cuidadosa de los períodos de EMA
LONG sólo incapaz de utilizar las oportunidades cortas
Ocurrencia menos frecuente de la señal
Esta estrategia aprovecha el MACD mejorado para mejorar la identificación de tendencias a medio y largo plazo. Pero la optimización y los controles de riesgos son clave. La combinación con otros factores puede mejorar el rendimiento.
/*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)