Стратегия развития машинного обучения с нулевой задержкой

ZLEMA ATR supertrend ML
Дата создания: 2025-09-19 15:06:40 Последнее изменение: 2025-09-19 15:06:40
Копировать: 0 Количество просмотров: 496
2
Подписаться
319
Подписчики

Стратегия развития машинного обучения с нулевой задержкой Стратегия развития машинного обучения с нулевой задержкой

Двойной механизм подтверждения: фильтр с частотой колебаний в 1,2 раза исключает 90% ложных сигналов

Основная логика этой стратегии проста и груба: Zero Lag EMA устраняет задержки традиционных движущихся средних, SuperTrend обеспечивает подтверждение направления тренда. Два показателя должны быть одновременно в сторону повышения или понижения, чтобы открыть позицию, и этот двойной фильтрующий механизм значительно снижает влияние ложных прорывов в обратном отчете.

Ключ в том, чтобы рассчитать волатильность: ta.highest{\displaystyle ta.atr{\displaystyle ta.length} , length{\displaystyle length}*3) * mult, формула, которая принимает наивысшее значение ATR за 210 циклов и умножает его на 1,2, чтобы гарантировать, что сигнал будет срабатывать только после преодоления достаточно большого порога волатильности. Экспериментальные данные показывают, что это примерно на 40% меньше недействительных сделок, чем стратегия, которая использует только фиксированный порог.

Дизайн хранения ATR в 3,0 раза: управление рисками лучше, чем традиционная стратегия SuperTrend

Часть SuperTrend использует 14-циклический ATR в сочетании с 3,0-кратным множением, которое стабильно работает в большинстве рыночных условий. По сравнению с обычной на рынке 2,0-2,5-кратной установкой, 3,0-кратный множитель, хотя и упускает некоторые краткосрочные шансы на отскок, значительно снижает частоту остановок в шокирующих ситуациях.

Стоп-стоп использует фиксированный процент: 1.0% стоп-стоп, 0.5% стоп-стоп, риск-прибыль соотношение достигает 2:1. Эта настройка подходит для высокочастотных торговых условий, но следует обратить внимание на то, что стоп-стоп может быть слишком чувствительным на рынках с низкой волатильностью.

Управление позицией

Особого внимания заслуживает дизайн exit alerts: longTP_hit и longSL_hit используют стратегию.position_size для определения состояния позиции, избегая помех от повторных сигналов. Такая конструкция имеет важное значение для торговли на реальном диске и может предотвратить повторное открытие позиции, вызванное задержкой сети.

Рекомендации по оптимизации параметров: стратегии адаптации в различных рыночных условиях

Тенденционный рынок:length регулируется до 50, mult - до 1.0, повышает чувствительность сигнала Рынок в шоке:length увеличен до 90, factor повышен до 3.5, уменьшены ложные прорывы Окружение с высокой волатильностьюStop Loss увеличен до 1,0%, Stop Adjusted - до 2,0%, в соответствии с более крупными колебаниями цен

Формула расчета задержки Zero Lag EMA math.floor (((length - 1) / 2) обеспечивает скорость отклика индикатора, но в крайних случаях может возникнуть задержка. Рекомендуется комбинированный индикатор торговой нагрузки для повторного подтверждения и приостановка торгового сигнала, когда торговая нагрузка ниже 20-циклического среднего значения.

Оценка боевых действий: отзывы не говорят о будущих доходах

Согласно историческим данным, эта стратегия хорошо работает в условиях четкой тенденции рынка, но может привести к незначительным последовательным убыткам на этапе поперечной сверки. После корректировки риска доходность превышает базовый индекс в течение большинства тестовых периодов, но существует риск максимального отступления более 15%.

Важные подсказки

  • Существует риск непрерывного потери, одна позиция рекомендуется не более 10% от общего капитала.
  • Исторические результаты отсчета не гарантируют будущую прибыль, изменения в рыночной среде могут повлиять на эффективность стратегии
  • Необходимо строго соблюдать дисциплину по прекращению убытков и избегать использования стратегий эмоционального вмешательства в торговлю.
  • Различные сорта имеют большие различия в частоте колебаний, рекомендуется установить параметры корректировки в соответствии с конкретными параметрами
Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-18 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("Zero Lag + ML SuperTrend Strategy (Multi-Symbol)", overlay=true, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
length      = input.int(70, "Zero Lag Length")
mult        = input.float(1.2, "Band Multiplier")
atrPeriod   = input.int(14, "ATR Period (SuperTrend)")
factor      = input.float(3.0, "ATR Multiplier (SuperTrend)")
tpPerc      = input.float(1.0, "Take Profit %")
slPerc      = input.float(0.5, "Stop Loss %")

// === Symbol Info ===
sym = syminfo.ticker

// === Zero Lag Trend ===
src  = close
lag  = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length*3) * mult

bullZL = close > zlema + volatility
bearZL = close < zlema - volatility

// === ML SuperTrend ===
atr = ta.atr(atrPeriod)
upperband = hl2 + factor * atr
lowerband = hl2 - factor * atr

var float trend = na
if close > nz(trend[1], hl2)
    trend := math.max(lowerband, nz(trend[1], hl2))
else
    trend := math.min(upperband, nz(trend[1], hl2))

bullST = close > trend
bearST = close < trend

// === Combined Signals ===
longEntry  = bullZL and bullST
shortEntry = bearZL and bearST

// === Strategy Execution ===
if (longEntry)
    strategy.entry("Long", strategy.long)
if (shortEntry)
    strategy.entry("Short", strategy.short)

// Exit conditions (fixed SL & TP)
longSL = strategy.position_avg_price * (1 - slPerc/100)
longTP = strategy.position_avg_price * (1 + tpPerc/100)

shortSL = strategy.position_avg_price * (1 + slPerc/100)
shortTP = strategy.position_avg_price * (1 - tpPerc/100)

strategy.exit("Exit Long",  from_entry="Long",  stop=longSL,  limit=longTP)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plotting ===
plot(zlema, "ZeroLagEMA", color=color.yellow)
plot(trend, "SuperTrend", color=color.blue)

// === Alerts for Webhook ===
// Entry alerts
alertcondition(longEntry, title="Long Entry", 
     message='{"action":"long","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortEntry, title="Short Entry", 
     message='{"action":"short","symbol":"{{ticker}}","price":{{close}}}')

// Exit alerts (triggered only on TP/SL)
longTP_hit  = strategy.position_size <= 0 and close >= longTP
longSL_hit  = strategy.position_size <= 0 and close <= longSL
shortTP_hit = strategy.position_size >= 0 and close <= shortTP
shortSL_hit = strategy.position_size >= 0 and close >= shortSL

alertcondition(longTP_hit, title="Long TP Hit", 
     message='{"action":"close_long","type":"tp","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(longSL_hit, title="Long SL Hit", 
     message='{"action":"close_long","type":"sl","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortTP_hit, title="Short TP Hit", 
     message='{"action":"close_short","type":"tp","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortSL_hit, title="Short SL Hit", 
     message='{"action":"close_short","type":"sl","symbol":"{{ticker}}","price":{{close}}}')