Эта стратегия использует метод устранения тенденции цен на акции для более четкого наблюдения индикатора MACD. При расчете быстрой линии DEMA и медленной линии DEMA производятся линия MACD и линия сигнала. Торговые сигналы генерируются путем пересечения между линией MACD и линией сигнала. Стратегия также включает фильтры условий даты и месяца и логику остановки потери, чтобы сформировать более полную систему.
В первую очередь, EMA цены рассчитывается, чтобы устранить ценовой тренд и получить уменьшенную EMA. Затем на основе EMA рассчитываются быстрая линия DEMA, медленная линия DEMA и линия MACD. Быстрая линия DEMA рассчитывается путем: сначала расчета EMA1 быстрой линии, затем расчета EMA2 EMA1 и, наконец, расчета DEMA=(2*EMA1-EMA2). Слишком медленная линия DEMA и линия сигнала рассчитываются аналогично. После получения линии MACD (быстрая линия DEMA - медленная линия DEMA) и линии сигнала, генерируется сигнал покупки, когда линия MACD пересекает линию сигнала, а сигнал продажи генерируется, когда линия MACD пересекает линию сигнала ниже. Наконец, комбинируйте фильтры даты и месяца и установите логику остановки.
Основная логика этой стратегии заключается в следующем:
Удалить ценовую тенденцию, чтобы лучше видеть индикатор MACD.
Вычислите быструю линию DEMA, медленную линию DEMA, чтобы получить линию MACD и линию сигнала.
Скрещивание линии MACD и линии сигнала генерирует торговые сигналы.
Добавьте фильтры даты и месяца.
Установите логику остановки.
Основными преимуществами этой стратегии являются:
Устранение ценовой тенденции позволяет более четко выявить перекрестную ситуацию MACD, не поддаваясь введению в заблуждение.
Использование алгоритма DEMA для расчета MACD фильтрует шум и делает сигнал более ясным.
Сочетание фильтров даты и месяца может уменьшить ненужные сделки.
Логика стоп-лосса может сократить потери во времени и контролировать риски.
Использование кроссовера для генерации сигналов уменьшает неправильные сделки.
В целом, комбинируя устранение тренда, расчет DEMA и фильтры состояния, эта стратегия может генерировать относительно четкие и надежные торговые сигналы.
Некоторые риски этой стратегии требуют внимания:
После устранения тренда, перекрестные сигналы MACD могут увеличиться, что требует живых испытаний для проверки целесообразности.
Хотя алгоритм DEMA отфильтровывает некоторые шумы, в расчете индикатора все еще может быть много ложных сигналов.
Условия фильтрации даты и месяца могут быть слишком жесткими, упуская некоторые торговые возможности.
Позиция стоп-лосса должна быть разумно установлена, слишком свободная увеличивает риск, слишком жесткая часто останавливает потерю.
Стратегия основывается в основном на MACD, если рынок не подходит для этого показателя, на производительность может повлиять.
Для оптимизации параметров еще есть большое пространство, которое нуждается в дальнейшем тестировании с помощью бэкстеста и реального трейдинга.
Решения:
Добавьте другие подтверждения показателей, чтобы избежать ложных сигналов.
Оптимизируйте условия фильтрации даты.
Тестируйте и оптимизируйте точки остановки потерь тщательно.
Добавить механизм оценки тренда, чтобы избежать торговли против тренда.
Комплексное обратное тестирование и оптимизация параметров для улучшения стабильности.
Стратегия может быть оптимизирована в следующих аспектах:
Проверьте различные скользящие средние цены, чтобы найти лучшую альтернативу EMA.
Попробуйте различные комбинации параметров для оптимизации скоростной линии MACD, медленной линии и длины линии сигнала.
Добавьте дополнительные показатели, такие как громкость, чтобы избежать ложных сигналов.
Оптимизировать стратегии стоп-лосса, установить разумные движения или ордера стоп-лосса.
Оптимизируйте условия фильтрации даты и месяца, чтобы сделать их более гибкими.
Добавьте суждение о тренде, чтобы избежать торговли против тренда.
Всеобъемлющая оптимизация параметров для улучшения стабильности.
Проверка на более длительный период времени для проверки долгосрочной производительности.
Торговля в режиме реального времени для проверки и дальнейшего изменения параметров на основе реальной торговли.
В целом, эта стратегия использует идею устранения тренда и вычисления DEMA MACD в сочетании с фильтрами даты для генерации торговых сигналов, что является простой, но осуществимой идеей стратегии. Ее самое большое преимущество заключается в том, что она ясно раскрывает модель MACD, не подвергаясь влиянию ценового тренда. Однако все еще есть некоторые риски этой стратегии, которые требуют оптимизации параметров и мер контроля рисков для практического применения. Также есть большое пространство для оптимизации, и при достаточной проверке и оптимизации эта стратегия может стать стабильной и надежной краткосрочной торговой системой.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Trendless MACD Strategy",shorttitle="MACD-T Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.01,initial_capital=100000) maperiod=input(9) ema=ema(close,maperiod) 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(ema,slowmacd) macdslowline2 = ema(macdslowline1,slowmacd) DEMAslow = ((2 * macdslowline1) - macdslowline2 ) macdfastline1 = ema(ema,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 = MACDLine-SignalLine colorbar= MACDSignal>0?green:red plot(MACDSignal,color=colorbar,style=columns,title='Histogram',histbase=0) p1 = plot(MACDLine,color=blue,title='MACDLine') p2=plot(SignalLine,color=red,title="SignalLine") fill(p1,p2,color=blue) longCond = crossover(MACDLine,SignalLine) shortCond = crossunder(MACDLine,SignalLine) monthfrom =input(1) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) yearfrom= input(2018) yearuntil=input(2021) if ( longCond ) strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG") else strategy.cancel(id="LONG") if ( shortCond ) strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT") else strategy.cancel(id="SHORT")