
Эта стратегия называется “Стратегия торговли, объединяющая динамические показатели и показатели SuperTrend”. Основная идея этой стратегии заключается в том, чтобы объединить динамические показатели и показатели SuperTrend, чтобы использовать преимущества обоих показателей для более точных входов и выходов.
В частности, динамический индикатор используется для определения ускорения или замедления движения цены, для определения изменения тренда. Супертенд используется для определения того, прорвала ли цена верхний или нижний канал, для определения изменения тренда. Комбинация этих двух может более точно улавливать поворотные точки тренда.
Вычислить значение динамики цены за N дней и вычислить значение динамики за 1 день. Когда динамика цены за N дней > 0 и динамика цены за 1 день > 0 - это сигнал плюса; когда динамика цены за N дней < 0 и динамика цены за 1 день < 0, это сигнал пустоты.
Вычислить значение ATR цены и начертить линию восходящего канала и линию нисходящего канала в соответствии с ATR. Сделать многосигнал, когда цена прорывает восходящий канал снизу, и сделать пустой сигнал, когда цена прорывает нисходящий канал сверху.
Проводить взаимодействие между многосигналом динамического индикатора и многосигналом SuperTrend, одновременно являясь окончательным многосигналом Entry; взаимодействовать между многосигналом динамического индикатора и многосигналом SuperTrend, одновременно являясь окончательным многосигналом Entry.
Используйте динамические индикаторы для определения ускорения или замедления движения цены, чтобы уловить переломные моменты тренда.
Используйте индикатор SuperTrend для определения прорыва цены, чтобы поймать точку прорыва.
Два показателя взаимно проверяются, что позволяет уменьшить количество ложных сигналов и повысить точность записей.
В сочетании с двумя индикаторами Exit logic позволяет отслеживать тренд и избегать преждевременного выхода.
Неправильная настройка параметров N-дневного динамического показателя может привести к пропущенным поворотным точкам тренда.
Неправильно настроенные параметры SuperTrend, неточная карта канала, могут создать ложные сигналы.
Эти два показателя подтверждают друг друга, и, возможно, мы упустили часть возможностей.
Необходимо скорректировать комбинацию параметров, чтобы найти оптимальную пару параметров и максимально использовать потенциал стратегии.
Соответствующие решения:
Найдите оптимальные параметры с помощью метода walk-forward analysis.
Добавление модуля оптимизации параметров, оптимизация параметров в реальном времени.
Комбинированная логика и комплексное рассмотрение обоих показателей.
Добавление модуля оптимизации для адаптации параметров, чтобы параметры могли быть скорректированы в режиме реального времени в соответствии с рыночной обстановкой
Добавление моделей машинного обучения, которые помогут определить точность сигналов индикатора
Расширить набор индикаторов, создать набор индикаторов, использовать механизм голосования для создания сигнала Entry
Использование моделей глубокого обучения вместо традиционных показателей для определения времени входа и выхода с помощью методов, основанных на данных
Эта стратегия использует все преимущества динамических показателей и показателей 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