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