
Стратегия, основанная на тройном подтверждении, является количественной торговой стратегией, которая объединяет классическую теорию технического анализа с современными технологиями управления рисками. Эта стратегия объединяет теорию прорыва Джесси Ливермора, метод подтверждения тренда Эда Сейкоты и принципы управления рисками 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)