
Эта количественная торговая стратегия, называемая “Многовременная динамическая система определения тенденций”, представляет собой комплексную систему, объединяющую различные технические показатели, в которой используются такие элементы, как пересекающиеся скользящие средние ((EMA), относительно сильные показатели ((RSI), средневзвешенные цены на объем сделок ((VWAP) и средний индекс направления ((ADX) для принятия торговых решений. Эта стратегия использует многократный анализ временных рамок, объединяет показатели тренда и динамики, эффективно идентифицирует рынки сверхпродажной зоны и определяет финансовые потоки учреждений, особенно подходит для краткосрочных поворотов тренда.
Ключевые принципы стратегии основаны на совместном подтверждении многоуровневых рыночных показателей. Во-первых, система рассчитывает индексные движущиеся средние за два различных периода (EMA) - короткий период (EMA) (9) и длительный период (EMA) (21) - для идентификации направления тенденции и потенциальных точек перехода. Второе, система получает данные о RSI (RSI) (14) с 15-минутного временного фрейма и вводит анализ на различные временные рамки для подтверждения состояния движения цены.
В частности, для открытого входа необходимо одновременно выполнить следующие условия: краткосрочная EMA с прохождением долгосрочной EMA ((пониженный пересекающийся), 15-минутный RSI больше 30 ((не перепроданный), VWAP значительно ниже двух EMA ((не менее 0,1%), что указывает на наличие у института давления на продажу и пониженный настрой. В то время как для многократного входа в настоящее время требуется только 15-минутный RSI ниже 30 ((перепроданный), не включенный в фильтр EMA и VWAP.
Кроме того, в стратегии также внедрены опциональные фильтры ADX, которые обеспечивают торговлю только в ясных тенденциях путем ручного вычисления значения ADX (до 14 длины по умолчанию) и установки минимального порога (до 20 по умолчанию). Пользователи могут включить или отключить фильтры ADX, что увеличивает гибкость стратегии.
Многопоказательная синхронизация: в сочетании с четырьмя показателями EMA-cross, динамикой RSI, VWAP-институциональным денежным потоком и интенсивностью тренда ADX, образуется многоуровневый механизм подтверждения торговых сигналов, что значительно повышает надежность сигналов.
Анализ многовременных рамокВведение данных RSI в 15-минутных временных рамках позволяет стратегии оценивать динамику рынка с более макроскопической точки зрения, уменьшая потенциальное количество слепых точек, которые могут возникнуть при анализе одного временного периода.
Финансовые перспективыПрименение разрыва между VWAP и EMA в качестве индикатора участия в финансировании учреждений позволяет стратегии лучше идентифицировать реальные рыночные давления и зоны поддержки.
Гибкий режим работыС помощью параметров tradeDirection пользователь может выбрать только плюс, только минус или двунаправленную торговлю в зависимости от рыночной обстановки или личных предпочтений, без необходимости поддерживать несколько версий стратегии.
Фильтр динамических тенденцийВыборный ADX-фильтр помогает стратегии торговать только в ясных тенденциях, эффективно уменьшая ложные сигналы на колеблющихся рынках, сохраняя при этом гибкость отключения этого фильтра.
Интеграция управления рискомВ стратегию встроены механизмы стоп-лосса и стоп-стопа (фиксированные ценовые точки), которые в сочетании с RSI используют условия перекупа и перепродажи в качестве сигнала выхода, формируя полный торговый закрытый цикл.
Эффективность кодаСтратегия: четкая структура кода, логическая модулизация, эффективный вычислительный процесс, удобство обслуживания и дальнейшей оптимизации.
Несовершенство многократного приемаЛогика перепродажи в текущей стратегии основана только на условиях перепродажи RSI < 30, отсутствие перекрестных EMA и фильтров VWAP может привести к преждевременному вхождению или частому перепродаже во время продолжающейся нисходящей тенденции, увеличивая риск потери.
Настройка фиксированной остановки убытковСтратегия использует фиксированные баллы (стоп на 100 пунктов, стоп на 200 пунктов), а не динамические остановки, основанные на процентах или волатильности, которые могут быть недостаточно гибкими в различных волатильных условиях, высокий волатильный период может быть слишком слабым, низкий волатильный период может быть слишком жестким.
Без контроля частоты торговОтсутствие стратегических оценок может привести к повторному входу при последовательном сигнале, формируя перекрытие позиций, непреднамеренно увеличивая рисковый пробел.
Комплексность вычислений ADXРучное вычисление ADX увеличивает сложность кода, хотя и работает правильно, но имеет слабую поддерживаемость, и если вычисления будут искажены, это может привести к ошибочным тенденциям.
VWAP-дифференциальная граница фиксирована:0.1% фиксированный порог VWAP может быть не применим ко всем рыночным условиям, может быть слишком мягким в высоко-волатильных рынках и слишком строгим в низко-волатильных рынках.
Отсутствие анализа чувствительности отслеживания: код не показывает результаты оптимизации параметров или анализа чувствительности, не может быть определено, является ли текущая комбинация параметров (например, EMA 9⁄21, RSI 14, ADX 14⁄20) оптимальной.
Возможна задержкаЗапросы данных через временные рамки (request.security) могут в некоторых случаях вводить задержки данных, особенно в быстро меняющихся рынках, что влияет на точность времени транзакций.
Умение использовать логику множественного входаДля добавления изображений в многостратегию требуется перекрестная фильтрация VWAP-условий и EMA, то есть требуется, чтобы VWAP значительно превышала два EMA (например, 0,1%) и на короткие сроки проносила долгосрочные EMA, чтобы обеспечить многопространственную логическую симметрию и повысить качество сигналов в многостратегию.
Добавление контроля частоты транзакций: в условиях входа добавляет стратегию.opentrades == 0 суждения, предотвращает столкновение позиций, вызванное последовательными сигналами, и лучше контролирует рисковые выходы.
Динамическая параметры остановки: Динамическая корректировка уровня стоп-стоп, основанная на средней реальной величине волны (ATR), чтобы риск-менеджмент был более адаптирован к текущим рыночным колебаниям, вместо текущей фиксированной точечной установки.
Оптимизация расчета ADX: рассмотреть возможность использования встроенной в TradingView функции ta.adx (), чтобы заменить ручное вычисление, упростить код и улучшить обслуживание, а также добавить ADX для определения направления (связь между +DI и -DI) для дальнейшего уточнения направления тенденции.
Динамический порог VWAP: Дизайн VWAP-диапазона как динамического параметра, основанного на рыночной волатильности, например, связанный с ATR, чтобы фильтрующие условия могли адаптироваться к различным рыночным условиям.
Добавить фильтр времени транзакцииВведение контроля за временем торговли, избегание периодов низкой ликвидности или важных новостных объявлений, снижение риска проскальзываний и неожиданных колебаний.
Согласованность тенденций в нескольких временных рамках: Подумайте о том, чтобы добавить более высокие временные рамки (например, 1 час или 4 часа) для определения направления тренда, торгуйте только в тех случаях, когда тенденции совпадают в нескольких временных рамках, чтобы еще больше уменьшить ложные сигналы.
Введение подтверждения объема сделкиУвеличение объемов сделок: подтверждение того, что объем сделок, требуемый при скрещивании EMA, значительно превышает средние значения предыдущих циклов, повышает надежность сигналов об изменении тренда.
“Многовременная динамическая система определения трендов” - это комплексная количественная стратегия, объединяющая различные инструменты технического анализа, обеспечивающая трейдерам относительно надежные сигналы входа и выхода через перекрестные EMA, динамику RSI, многократное подтверждение движения средств VWAP и интенсивности тренда ADX. Эта стратегия уделяет особое внимание анализу поведения средств учреждений в сочетании с розничными настроениями, а также учитывает особенности отслеживания тенденций и обратных сделок.
Несмотря на то, что стратегии хорошо работают в области совместимости и гибкости по многим показателям, существуют такие проблемы, как несовершенство многоусловия, фиксированное управление рисками и возможный повторный вход. Повышение производительности и стабильности стратегий может быть значительно улучшено путем совершенствования многологичности, реализации динамического управления рисками, добавления контроля частоты торгов, оптимизации расчета ADX, разработки динамического VWAP-накопителя и внедрения таких оптимизационных мер, как фильтрация времени торговли и требования к согласованности многократных временных рамок.
В целом, стратегия представляет собой комплексную и гибкую концепцию дизайна торговой системы, которая предоставляет трейдерам инструмент, который теоретически может адаптироваться к различным рыночным условиям, принимая во внимание технические показатели, ценовую структуру, рыночные настроения и институциональное поведение. После оптимизации по рекомендациям стратегия имеет потенциал стать более совершенной и эффективной торговой системой.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MinhPhan MA Crossover Strategy RSI 15m + ADX Toggle", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.001)
// === Inputs ===
shortLen = input.int(9, title="Short EMA")
longLen = input.int(21, title="Long EMA")
useAdxFilter = input.bool(true, title="Enable ADX Filter?")
adxLen = input.int(14, title="ADX Length")
adxThresh = input.float(20, title="Min ADX to Trade")
// === EMAs ===
shortMA = ta.ema(close, shortLen)
longMA = ta.ema(close, longLen)
// === VWAP ===
vwap = ta.vwap
// === RSI from 15-minute timeframe ===
rsi_15m = request.security(syminfo.tickerid, "15", ta.rsi(close, 14))
// === Manual ADX Calculation ===
upMove = high - high[1]
downMove = low[1] - low
plusDM = na(upMove) or upMove <= downMove or upMove < 0 ? 0 : upMove
minusDM = na(downMove) or downMove <= upMove or downMove < 0 ? 0 : downMove
tr = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
smoothedTR = ta.rma(tr, adxLen)
smoothedPlusDM = ta.rma(plusDM, adxLen)
smoothedMinusDM = ta.rma(minusDM, adxLen)
plusDI = 100 * smoothedPlusDM / smoothedTR
minusDI = 100 * smoothedMinusDM / smoothedTR
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLen)
isTrending = useAdxFilter ? adx > adxThresh : true // ADX toggle logic
// === VWAP Gap Filter ===
gapThreshold = 0.001
vwapBelowEMAs =
(shortMA - vwap) / shortMA > gapThreshold and
(longMA - vwap) / longMA > gapThreshold
// === Direction Control ===
tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"])
allowLong = tradeDirection == "Long" or tradeDirection == "Both"
allowShort = tradeDirection == "Short" or tradeDirection == "Both"
// === Entry Conditions ===
if (allowLong and rsi_15m < 30 and isTrending)
strategy.entry("Long", strategy.long)
if (allowShort and rsi_15m > 30 and ta.crossunder(shortMA, longMA) and vwapBelowEMAs and isTrending)
strategy.entry("Short", strategy.short)
// === Exit Conditions ===
if (strategy.position_size > 0 and rsi_15m > 70)
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
if (strategy.position_size < 0 and rsi_15m < 30)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)
// === Plots ===
plot(shortMA, color=color.blue, title="Short EMA")
plot(longMA, color=color.red, title="Long EMA")
plot(vwap, title="VWAP", color=color.purple, linewidth=2)
plot(adx, title="ADX", color=color.orange)
hline(adxThresh, "ADX Threshold", color=color.gray, linestyle=hline.style_dashed)