Эта стратегия использует улучшенный индикатор MACD. Он рассчитывает быструю EMA, медленную EMA, их разницу и EMA этой разницы, чтобы генерировать сигналы.
Логика такова:
Вычислить быстрый период EMA, например, 12-дневный
Расчет медленного периода EMA, например, 26-дневного
Вычесть быструю из медленной EMA, чтобы получить MACD
Примите EMA MACD как линию сигнала, например 9-дневную.
EMA MACD минус сигнал дает усиленный сигнал
Продолжайте, когда усиленный сигнал пересекает нулевую линию.
Закрыть длинный, когда усиленный сигнал пересекает ниже нулевой линии
Стратегия опирается на способность MACD следовать тренду и оптимизирует его для качественных средне- и долгосрочных сигналов тренда.
Улучшенный MACD уменьшает шум и улучшает сигналы
Комбинация быстрого/медленного измерения направления и силы EMA
Более медленные параметры сосредоточены на среднесрочных и долгосрочных тенденциях
Необходимо тщательно оптимизировать периоды EMA
ДЛОГО не в состоянии использовать только короткие возможности
Меньше частое появление сигнала
Эта стратегия использует усовершенствованный MACD для улучшения идентификации средне- и долгосрочных тенденций. Но оптимизация и контроль рисков являются ключевыми. Сочетание с другими факторами может улучшить производительность.
/*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)