Эта стратегия объединяет MACD и DEMA двойные индикаторы, чтобы сформировать торговый сигнал с помощью многополосного металлического винта. Стратегия захватывает время поворота MACD, используя фильтр DEMA для отключения шума для оптимального входа.
Вычислить скоростную DEMAfast, получив цену DEMA, с длиной цикла fastmacd。
Вычислить медленную линию DEMAslow, получив значение DEMA для prices, с длиной цикла slowmacd。
MACD-линия представляет собой разницу между быстро-медленной линией: DEMAfast - DEMAslow。
Signal line - значение DEMA для MACD-линий, а длина цикла - signalmacd。
Многополосный перекрест как торговый сигнал: золотой форк с лишним, мертвый - с пустым.
Добавлена фильтрация по датам и годам, чтобы сигналы появлялись только в пределах указанных дат.
Основные преимущества этой стратегии:
В сочетании с MACD и DEMA, показатели дополняют друг друга. MACD ловит повороты, DEMA фильтрует, чтобы улучшить качество сигнала.
Двухколесная конструкция DEMA позволяет снизить задержку и шум MACD-показателей.
Пересечение многополосных линий легко определяется, создание сигнала простое и четкое.
Гибкий диапазон торговых дат, адаптированный к различным стратегическим потребностям.
Параметры MACD оптимизируют портфель, гибко реагируя на различные ситуации.
Основные риски этой стратегии:
MACD, как индикатор, отслеживающий тенденции, не подходит для шокирующего горизонтального рынка.
Многопространственное скрещивание может привести к появлению ложного сигнала и требует эффективной фильтрации.
Недостаточная стратегия сдерживания убытков может привести к чрезмерным убыткам.
Оптимизация параметров не является всеобъемлющей, эффективность различных сортов сильно различается.
Фильтрация даты сделки слишком жесткая и требует динамической коррекции.
Решение проблемы:
В сочетании с динамическим индикатором, избегайте поперечного хода.
Повышение ценовых условий, фильтрация ложных перекрестных сигналов
Установка разумного первоначального стоп-лосса и стоп-лосса для отслеживания.
Тестирование эффективности параметров различных сортов, динамическая оптимизация.
Фильтрационные даты корректируются в зависимости от текущей ситуации.
В этой стратегии можно рассмотреть следующие варианты оптимизации:
Повышение показателей загрузки для фильтрации сигналов.
Оптимизация комбинации MACD-параметров для тестирования данных различных сортов.
Настройка стратегии остановки убытков, такой как фиксированный остановка, отслеживание остановки убытков и т. д.
Динамично корректируйте свои стоп-позиции в зависимости от волатильности рынка.
Следить за тенденциями и изменять размер позиций.
Стратегия MACD DEMA сочетает в себе преимущества двух индикаторов, используя тенденцию захвата перекрестных сигналов. Однако MACD по своей природе является запаздывающей, необходимо обратить внимание на фильтрацию ложных сигналов. Кроме того, стратегия остановки убытков требует оптимизации для уменьшения иррациональных остановок.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(" MACD DEMA STRATEGY ", overlay=true)
source=close
price=source
fastmacd = input(12,title='MACD Fast Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')
macdslowline1 = ema(close,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )
macdfastline1 = ema(close,fastmacd)
macdfastline2 = ema(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)
MACDLine = (DEMAfast - DEMAslow)
SignalLine1 = ema(MACDLine, signalmacd)
SignalLine2 = ema(SignalLine1, signalmacd)
SignalLine = ((2 * SignalLine1) - SignalLine2 )
MACDSignal = SignalLine-MACDLine
colorbar= MACDSignal>0?green:red
yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)
if ( crossover(MACDLine,SignalLine) )
strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND", comment="AL")
else
strategy.cancel(id="MMAL")
if ( crossunder(MACDLine,SignalLine) )
strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND", comment="SAT")
else
strategy.cancel(id="MMSAT")