Адаптивная стратегия прорыва на основе тройного подтверждения

EMA ATR Pivot VOL SMA
Дата создания: 2025-05-22 10:48:17 Последнее изменение: 2025-05-22 10:48:17
Копировать: 0 Количество просмотров: 370
2
Подписаться
319
Подписчики

Адаптивная стратегия прорыва на основе тройного подтверждения Адаптивная стратегия прорыва на основе тройного подтверждения

Обзор

Стратегия, основанная на тройном подтверждении, является количественной торговой стратегией, которая объединяет классическую теорию технического анализа с современными технологиями управления рисками. Эта стратегия объединяет теорию прорыва Джесси Ливермора, метод подтверждения тренда Эда Сейкоты и принципы управления рисками ATR Пола Тюдора Джонса.

Стратегический принцип

Основные принципы стратегии основаны на многоуровневом механизме подтверждения технического анализа. Во-первых, стратегия определяет ключевые уровни сопротивления поддержки, идентифицируя недавние ключевые высокие и низкие точки. Когда цена прорывает эти ключевые позиции, в сочетании с условиями подтверждения тенденции принимаются решения о входе.

Стратегические преимущества

Эта стратегия имеет многочисленные технические преимущества, во-первых, в ее многочисленных механизмах подтверждения. Трехкратная проверка с помощью прорыва центральной оси, фильтрации тренда и подтверждения объема сделки значительно повышает надежность торговых сигналов и уменьшает вероятность ложных прорывов. Во-вторых, выделяется адаптивная производительность стратегии, использование показателя ATR позволяет автоматически корректировать уровень убытков в соответствии с волатильностью рынка, обеспечивая более широкую остановку во время высоких колебаний и строго контролируя риск во время низких колебаний.

Стратегический риск

Несмотря на то, что стратегия была разработана достаточно хорошо, есть некоторые потенциальные риски, о которых следует помнить. Во-первых, риски шокирующего рынка, когда частое ложное прорыв может привести к последовательным небольшим убыткам, когда рынок находится в состоянии поперечной сборки. Решение заключается в добавлении дополнительных фильтров рыночной среды, таких как индикатор ADX, для оценки силы тренда.

Направление оптимизации стратегии

Оптимизация стратегии должна начинаться с нескольких измерений, чтобы повысить общую производительность. Во-первых, можно ввести многократный анализ временных рамок, подтверждающий направление тенденции в более высоких временных рамках, а затем искать входные моменты в более низких временных рамках, что может повысить вероятность успешной торговли и уменьшить регрессивную торговлю. Во-вторых, добавление модуля идентификации рыночной среды, который определяет текущее состояние рынка с помощью показателей волатильности, показателей интенсивности тренда и т. д. и приостанавливает торговлю в условиях, не подходящих для стратегии прорыва.

Подвести итог

Стратегия, основанная на тройном подтверждении, представляет собой типичное применение в сочетании технического анализа и количественных сделок. Стратегия создает относительно полную торговую систему, объединяя несколько технических элементов, таких как прорыв хабов, подтверждение тенденций, проверка объема сделки и управление рисками ATR.

Исходный код стратегии
/*backtest
start: 2024-05-22 00:00:00
end: 2025-05-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("V2_Livermore-Seykota Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Input Parameters ===
pivotLeft      = input.int(5,   "Pivot Left Bars",    minval=1)
pivotRight     = input.int(5,   "Pivot Right Bars",   minval=1)
emaFastLen     = input.int(20,  "Fast EMA Length")
emaMainLen     = input.int(50,  "Main EMA Length")
emaSlowLen     = input.int(200, "Slow EMA Length")
volLen         = input.int(20,  "Volume SMA Length")
atrLen         = input.int(14,  "ATR Length")
atrStopMul     = input.float(3.0, "ATR Stop-Loss Multiplier",    step=0.1)
atrTrailOffset = input.float(3.0, "ATR Trailing Offset Multiplier", step=0.1)
atrTrailMul    = input.float(3.0, "ATR Trailing Multiplier",      step=0.1)

// === Indicator Calculations ===
emaFast = ta.ema(close, emaFastLen)
emaMain = ta.ema(close, emaMainLen)
emaSlow = ta.ema(close, emaSlowLen)
volMA   = ta.sma(volume, volLen)
atrVal  = ta.atr(atrLen)

// === Detect Nearest Pivot High/Low ===
var float pivotHighVal = na
var float pivotLowVal  = na
ph = ta.pivothigh(high, pivotLeft, pivotRight)
pl = ta.pivotlow(low,  pivotLeft, pivotRight)
if not na(ph)
    pivotHighVal := ph
if not na(pl)
    pivotLowVal  := pl

// === Entry Conditions ===
longCond  = not na(pivotHighVal) and ta.crossover(close, pivotHighVal) and (close > emaMain) and (emaFast > emaSlow) and (volume > volMA)
shortCond = not na(pivotLowVal)  and ta.crossunder(close, pivotLowVal)  and (close < emaMain) and (emaFast < emaSlow) and (volume > volMA)

// Execute Entry Orders (only one position at a time)
if (longCond and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)
    pivotHighVal := na  // reset pivot high after entry
if (shortCond and strategy.position_size == 0)
    strategy.entry("Short", strategy.short)
    pivotLowVal  := na  // reset pivot low after entry

// === Stop-Loss Based on ATR ===
longStop  = strategy.position_avg_price - atrVal * atrStopMul
shortStop = strategy.position_avg_price + atrVal * atrStopMul

// Exit Orders with ATR-Based Stop-Loss and Trailing Stop
strategy.exit("Exit Long", from_entry="Long", stop=longStop,  trail_offset=atrVal * atrTrailOffset, trail_points=atrVal * atrTrailMul)
strategy.exit("Exit Short", from_entry="Short", stop=shortStop, trail_offset=atrVal * atrTrailOffset, trail_points=atrVal * atrTrailMul)