
Стратегия количественного трейдинга с прорывом в узкой полосе динамически наклонных двойных скользящих средних - это высокотехнологичная система трейдинга, основанная на принципах учения Оливера Велеза, сочетающая в себе ключевые элементы технического анализа и динамического трейдинга. Стратегия использует в основном отношения между краткосрочными (20-циклическими) и долгосрочными (200-циклическими) простыми скользящими средними (SMA) в сочетании с ценовой динамикой, волатильностью и падением, чтобы найти высоковероятные возможности для прорыва в узкой полосе.
Основные принципы стратегии основаны на взаимодействии следующих ключевых факторов:
Двойная система скользящих среднихСтратегия: создание торговой рамки с использованием 20-циклических SMA и 200-циклических SMA. Система ищет потенциальные торговые сигналы, когда эти две средние линии находятся на относительно небольшом расстоянии друг от друга.
Проверка средней линейной скольженияСтратегия: обеспечивает достаточную динамику рынка, рассчитывая 20-циклический угол SMA (с использованием обратной сечения), и рассматривает вход только в том случае, если угол больше 30 градусов.
Тип входящего сигнала:
Фреймворк управления рисками:
Состояние рынкаСтратегия: оценить состояние рынка, рассчитывая относительное расстояние между двумя равномерными линиями:
Требования к многоголовному входу: состояние узкой полосы + эффективный уклон + цена закрытия выше SMA20 + SMA20 выше SMA200 + форма слоновая колонна. Требования к пустому входу: состояние узкой полосы + эффективный уклон + цена закрытия ниже SMA20 + SMA20 ниже SMA200 + форма слоновая колонна.
В результате глубокого анализа кода данная стратегия имеет следующие существенные преимущества:
Механизм многократного подтвержденияСтратегия, объединяющая подтверждающие факторы из нескольких измерений, таких как равнолинейная зависимость, равнолинейный уклон, ценовое положение и особые формы падения, эффективно фильтрует некачественные сигналы и улучшает качество торгов.
Приспосабливание к состоянию рынкаРазличая узко- и широкополосные состояния, стратегия может искать возможности в наиболее подходящих рыночных условиях, чтобы избежать преследования в уже расширенных тенденциях.
Динамическое управление рискамиИспользование ATR в качестве инструмента для измерения волатильности, чтобы гарантировать, что цели по остановке убытков и прибыли могут быть скорректированы в соответствии с динамикой текущей волатильности рынка, а не с использованием фиксированного количества баллов.
Стратегия повышения доходностиПрименение стратегии с двумя стадиями: получение части прибыли и получение конечной прибыли, гарантирует, что часть прибыли будет заперта в благоприятных условиях, и не будет слишком рано уходить из рынка и не пропустить большую тенденцию.
Интеллектуальные механизмы повышения: предоставление возможности набора позиций с помощью цветовых сигналов, позволяющих увеличить позиции в одном и том же тренде до двух раз, оптимизируя эффективность использования капитала.
Мобильная защита от ущербаПрибыль от продажи: прибыль от продажи прибыли от продажи прибыли от продажи прибыли от продажи прибыли.
Визуальная помощь: Стратегия предоставляет четкие визуальные указания и диаграммы, которые помогают трейдеру интуитивно распознавать сигналы и состояние рынка, упрощая процесс принятия решений.
Интеграция ценового поведения и технических показателейНапример, в одном из своих выступлений он приводит примеры того, как люди могут использовать цены в качестве инструмента для выявления цены, а не как инструмент для выявления цены.
Несмотря на обоснованный дизайн стратегии, существуют следующие потенциальные риски и проблемы:
Параметр Чувствительность: эффективность стратегии в значительной степени зависит от настроек ключевых параметров, таких как цикл SMA, длина ATR и коэффициент возврата риска. Разные рынки и временные рамки могут требовать разных комбинаций параметров, требующих полной исторической рецензии и оптимизации.
Риск ложного проникновенияВ некоторых случаях прорывы в узкополосных зонах могут быть ложными, особенно в условиях низкой волатильности рынка. Хотя использование стратегии “колонны слонов” требует снижения ложных прорывов, их нельзя полностью избежать.
Скидки и риски исполненияВ реальной торговле, особенно при значительной волатильности, может возникнуть проблема скольжения, в результате чего фактическая цена входа не соответствует идеальной цене, что влияет на общую структуру возврата риска.
Проблемы с управлением деньгамиПримечание: фиксированное использование 10% капитала и разрешение на два пополнения могут привести к чрезмерному риску в случае последовательных убытков или резких колебаний рынка.
Чрезмерная зависимость от среднейСтратегия зависит от того, как SMA оценивает тренд, однако в условиях колебаний в диапазоне средние линии могут часто пересекаться, что создает слишком много ложных сигналов.
Отсутствие рыночных фильтровСтратегия не была адаптирована к различным макрорынковым условиям (например, высокая или низкая волатильность, бычьи или медвежие рынки), которые могут плохо работать на определенных этапах рынка.
Отмена кривой финансированияПоскольку стратегия позволяет наращивать позиции, в случае резкого реверса тренда это может привести к значительному отводу счетов, особенно когда рынок переворачивается после двух наращиваний.
Решения включают в себя: добавление дополнительных фильтров рыночной среды, корректировку соотношения управления капиталом, динамическую корректировку параметров в зависимости от различных рыночных условий и рассмотрение возможности добавления других технических показателей для подтверждения сигналов.
На основе анализа кода стратегия может быть оптимизирована в следующих направлениях:
Динамический узкополосный порогПричины оптимизации: различные рынки и временные рамки имеют разные характеристики колебаний, и фиксированные пороги могут быть недостаточно гибкими.
Улучшение системы равномерностиМожно рассмотреть возможность добавления промежуточных средних линий (например, 50-циклическая SMA) в систему трёх средних линий, или попытаться заменить SMA на индексные скользящие средние (EMA), повысив чувствительность к изменениям цен. Причины оптимизации: добавление средних точек отсчета может предоставить более полный рыночный взгляд, а EMA более чувствительна к последним изменениям цен.
Улучшение расчетов наклонностиПричины оптимизации: расчет одноточечного скольжения подвержен влиянию краткосрочных колебаний, улучшение может повысить стабильность направления.
Добавить подтверждение транзакцииПричина оптимизации: объем сделок является важным фактором подтверждения эффективности изменения цен и может значительно снизить количество ложных прорывов.
Динамическая доходность рискаПричины оптимизации: динамическая корректировка может оптимизировать ожидаемую прибыль от каждой сделки в зависимости от потенциала прибыли в различных волатильных условиях.
Оптимизация условий набораПричины оптимизации: более строгие условия по наращиванию позиций могут повысить успех дополнительных позиций и снизить общий риск.
Фильтрация рыночной среды: добавление фильтров макрорынковых условий, таких как показатели волатильности (например, VIX) или показатели интенсивности тренда, для уменьшения или приостановки торговли в неблагоприятных рыночных условиях. Причина оптимизации: существенная разница в эффективности стратегии на разных рыночных этапах, и фильтры окружающей среды позволяют избежать торговли в неблагоприятных условиях.
Приспособность к стратегии остановки потерьРазработка адаптивной стратегии остановки убытков, основанной на структуре рынка, например, использование ранних высоких и низких уровней, процентов волатильности или ценовой структуры в качестве динамической точки остановки убытков. Причина оптимизации: остановки убытков с фиксированными кратными ATR иногда не могут хорошо соответствовать структуре рынка, а адаптивный метод может быть более подходящим для фактического поведения цен.
Движущаяся скользящая двойная скользящая средняя узкая полоса прорывная количественная торговая стратегия - это комплексная торговая система, объединяющая элементы технического анализа, предоставляющая трейдерам структурированный способ участия в рынке с помощью четко определенных условий входа, многоуровневого механизма подтверждения и совершенной системы управления рисками. Эта стратегия основана на базовых концепциях технического анализа, таких как SMA, ATR и ценовое поведение, но с помощью методологии Оливера Велеза объединяет эти элементы в четкую торговую систему.
Ключевое преимущество стратегии заключается в том, что она способна идентифицировать высоковероятные возможности прорыва в узких зонах скользящих средних и подтверждает эффективность сигналов с помощью определенных ценовых моделей, таких как “колонна слонов” и “изменение цвета”. В то же время хорошо продуманная структура управления рисками обеспечивает безопасность средств и защиту прибыли.
Тем не менее, стратегия также сталкивается с проблемами, такими как чувствительность параметров, риск ложного прорыва и проблемы управления капиталом. Устойчивость и адаптивность стратегии могут быть дополнительно повышены путем оптимизации узкополосных порогов, расширения системы средних линий, улучшения расчета скольжения, добавления подтверждения объема сделок, внедрения динамического коэффициента возврата риска, оптимизации условий пополнения позиций, добавления фильтрации рыночной среды и разработки адаптивной стратегии по устранению убытков.
В целом, это количественная торговая стратегия, разработанная с рациональной, логической ясностью, которая подходит для инвесторов с определенным опытом торговли, особенно для тех, кто предпочитает технический анализ и систематизированные методы торговли. С соответствующей оптимизацией параметров и управлением рисками эта стратегия имеет потенциал для стабильной торговой деятельности в различных рыночных условиях.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Oliver Velez Advanced Strategy v2", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=2, calc_on_order_fills=true, calc_on_every_tick=true)
// === INPUTS ===
smaLen1 = input.int(20, title="SMA Short")
smaLen2 = input.int(200, title="SMA Long")
atrLen = input.int(14, title="ATR Length")
rr1 = input.float(2.5, title="RR for Partial Profit", step=0.1)
rr2 = input.float(4.0, title="RR for Final Profit", step=0.1)
// === INDICATORS ===
sma20 = ta.sma(close, smaLen1)
sma200 = ta.sma(close, smaLen2)
atr = ta.atr(atrLen)
angle = math.atan(sma20 - sma20[1]) * 180 / math.pi
// === STATES ===
isNarrow = math.abs(sma20 - sma200) / sma200 < 0.015
isWide = math.abs(sma20 - sma200) / sma200 >= 0.02
validSlope = angle > 30
// === CANDLE PATTERNS ===
elephant_long = close > open and (close - open) > 1.5 * atr and high > high[1]
elephant_short = close < open and (open - close) > 1.5 * atr and low < low[1]
color_change_long = close > open and close[1] < open[1]
color_change_short = close < open and close[1] > open[1]
// === LONG ENTRY ===
long_primary = isNarrow and validSlope and close > sma20 and sma20 > sma200 and elephant_long
long_add = isNarrow and color_change_long and close > sma20
long_entry_price = close
long_stop = math.min(low, close - 2 * atr)
long_risk = long_entry_price - long_stop
long_tp1 = long_entry_price + rr1 * long_risk
long_tp2 = long_entry_price + rr2 * long_risk
// === SHORT ENTRY ===
short_primary = isNarrow and validSlope and close < sma20 and sma20 < sma200 and elephant_short
short_add = isNarrow and color_change_short and close < sma20
short_entry_price = close
short_stop = math.max(high, close + 2 * atr)
short_risk = short_stop - short_entry_price
short_tp1 = short_entry_price - rr1 * short_risk
short_tp2 = short_entry_price - rr2 * short_risk
// === LONG EXECUTION ===
if (long_primary)
strategy.entry("Long Entry", strategy.long, comment="Elephant Bar Long")
strategy.exit("Long TP1", from_entry="Long Entry", limit=long_tp1, stop=long_stop)
strategy.exit("Long TP2", from_entry="Long Entry", qty_percent=50, limit=long_tp2)
if (long_add)
strategy.entry("Long Add", strategy.long, comment="Color Change Long")
strategy.exit("Add TP1", from_entry="Long Add", limit=long_tp1, stop=long_stop)
strategy.exit("Add TP2", from_entry="Long Add", qty_percent=50, limit=long_tp2)
// === SHORT EXECUTION ===
if (short_primary)
strategy.entry("Short Entry", strategy.short, comment="Elephant Bar Short")
strategy.exit("Short TP1", from_entry="Short Entry", limit=short_tp1, stop=short_stop)
strategy.exit("Short TP2", from_entry="Short Entry", qty_percent=50, limit=short_tp2)
if (short_add)
strategy.entry("Short Add", strategy.short, comment="Color Change Short")
strategy.exit("Short TP1 Add", from_entry="Short Add", limit=short_tp1, stop=short_stop)
strategy.exit("Short TP2 Add", from_entry="Short Add", qty_percent=50, limit=short_tp2)
// === BREAKEVEN CHECK ===
var float breakeven_price = na
long_breakeven_trigger = high >= long_tp1
short_breakeven_trigger = low <= short_tp1
breakeven_price := long_breakeven_trigger or short_breakeven_trigger ? close : breakeven_price
// === ALERTS ===
alertcondition(long_primary, title="Long Elephant", message="Elephant Bar Long Entry Triggered!")
alertcondition(long_add, title="Color Change Long", message="Color Change Long Entry Triggered!")
alertcondition(long_breakeven_trigger, title="Long Breakeven", message="Move SL to Breakeven for Long")
alertcondition(short_primary, title="Short Elephant", message="Elephant Bar Short Entry Triggered!")
alertcondition(short_add, title="Color Change Short", message="Color Change Short Entry Triggered!")
alertcondition(short_breakeven_trigger, title="Short Breakeven", message="Move SL to Breakeven for Short")
// === PLOTTING ===
plot(sma20, color=color.orange, title="SMA 20")
plot(sma200, color=color.blue, title="SMA 200")
bgcolor(isNarrow ? color.new(color.green, 85) : na)
plotshape(long_primary, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="E")
plotshape(long_add, style=shape.circle, location=location.belowbar, color=color.lime, size=size.tiny, text="A")
plotshape(short_primary, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="E")
plotshape(short_add, style=shape.circle, location=location.abovebar, color=color.maroon, size=size.tiny, text="A")
// === DASHBOARD ===
var label dash = na
label.delete(dash)
dash := label.new(x=bar_index, y=high, text=
"Oliver Velez Strategy\n" +
"SMA 20 Slope: " + str.tostring(angle, "#.##") + "°\n" +
"State: " + (isNarrow ? "NARROW" : "WIDE") + "\n" +
"Last Entry: " + (long_primary ? "Long E-Bar" : long_add ? "Long Add" : short_primary ? "Short E-Bar" : short_add ? "Short Add" : "None") + "\n" +
"Breakeven: " + (breakeven_price != na ? str.tostring(breakeven_price, "#.##") : "No"), style=label.style_label_left, color=color.new(color.black, 85), textcolor=color.white)