Основная идея этой стратегии заключается в том, чтобы объединить индикатор Momentum с индикатором SuperTrend, чтобы воспользоваться преимуществами обоих индикаторов для более точных входов и выходов.
В частности, индикатор импульса используется для оценки ускорения или замедления движения цен и изменений в тенденциях.
Часть индикатора импульса
Вычислить значение импульса цены в N дней и вычислить 1-дневный импульс значения импульса. Когда импульс N дней > 0 и импульс 1 дня > 0, это длинный сигнал; когда импульс N дней < 0 и импульс 1 дня < 0, это короткий сигнал.
Часть индикатора SuperTrend
Вычислите значение ATR цены и нарисуйте линию восходящего канала и линию нисходящего канала на основе ATR. Когда цена проходит через восходящий канал снизу, это длинный сигнал, а когда цена проходит через нисходящий канал сверху, это короткий сигнал.
Логика ввода
Возьмите операцию AND длинного сигнала от индикатора импульса и длинного сигнала от СуперТренда, чтобы генерировать окончательный длинный входный сигнал, когда оба происходят одновременно; Возьмите операцию AND короткого сигнала от индикатора импульса и короткого сигнала от СуперТренда, чтобы генерировать окончательный короткий входный сигнал, когда оба происходят одновременно.
Использование индикаторов импульса для определения ускорения или замедления движения цен для определения точек переворота тренда.
Использование индикаторов SuperTrend для определения каналов прорыва цены для захвата точек прорыва.
Взаимная проверка двух типов показателей может уменьшить ложные сигналы и повысить точность записей.
Сочетание логики выхода обоих индикаторов позволяет отслеживать тренд выхода, чтобы избежать преждевременного выхода.
Неправильное установление параметров индикатора импульса N-day может пропустить точки обратного движения.
Неправильное установление параметров SuperTrend может привести к неточному рисунку канала и ложным сигналам.
Взаимная проверка обоих показателей может упустить некоторые возможности.
Комбинация параметров должна быть скорректирована, чтобы найти оптимальную пару параметров для максимизации потенциала стратегии.
Соответствующие решения:
Используйте анализ прохождения, чтобы найти оптимальные параметры.
Добавить модуль оптимизации параметров для оптимизации параметров в реальном времени.
Приспособите логику сочетания двух показателей и рассмотрите всесторонне.
Добавление адаптивного модуля оптимизации параметров для корректировки в режиме реального времени в соответствии с рыночными условиями
Добавление модели машинного обучения для помощи в оценке точности индикаторных сигналов
Расширить число индикаторов, чтобы сформировать набор индикаторов, и использовать механизм голосования для генерации сигналов входа
Использование моделей глубокого обучения вместо традиционных индикаторов для оценки времени входа и выхода на основе данных
Эта стратегия объединяет сильные стороны индикаторов импульса и супертенденции с помощью двойной проверки для улучшения точности вводов и использует индикаторы для оценки времени выхода. По сравнению с использованием индикаторов в одиночку, она может уменьшить ложные сигналы и достичь более высоких показателей выигрыша. Благодаря оптимизации параметров, машинному обучению и другим технологиям расширения, все еще есть место для дальнейшего улучшения эффективности стратегии и она заслуживает углубленных исследований и применения.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum + SuperTrend Strategy", overlay=true) // Momentum Strategy length = input(12) price = close momentum(seria, length) => mom = seria - seria[length] mom mom0 = momentum(price, length) mom1 = momentum(mom0, 1) momLongCondition = mom0 > 0 and mom1 > 0 momShortCondition = mom0 < 0 and mom1 < 0 // SuperTrend Strategy Periods = input(10) Multiplier = input(3.0) changeATR = input(true) src = input(hl2) atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = nz(up[1], up) up := close[1] > up1 ? max(up, up1) : up dn = src + (Multiplier * atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend buySignal = trend == 1 and trend[1] == -1 sellSignal = trend == -1 and trend[1] == 1 // Combined Entry Conditions longCondition = momLongCondition and buySignal shortCondition = momShortCondition and sellSignal // Strategy Entries if (longCondition) strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE") else strategy.cancel("MomLE") if (shortCondition) strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE") else strategy.cancel("MomSE") // Plot SuperTrend on the chart upPlot = plot(trend == 1 ? up : na, title="SuperTrend Up", color=color.green, linewidth=2) dnPlot = plot(trend == -1 ? dn : na, title="SuperTrend Down", color=color.red, linewidth=2) // Highlight the SuperTrend region fill(upPlot, dnPlot, color = trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90), title="SuperTrend Highlight") // Plot SuperTrend Buy/Sell signals on the chart plotshape(series=buySignal, title="SuperTrend Buy Signal", color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="SuperTrend Sell Signal", color=color.red, style=shape.triangledown, size=size.small) // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © naveen1119