Исходный код
Ниже представлен готовый к использованию код стратегии ORB для Pine Script v5. Он автоматически определяет максимум и минимум заданного интервала (например, первые 30 минут сессии NYSE) с учетом указанного часового пояса, строит уровни и осуществляет вход на пробой с динамическим ATR-стопом.
//@version=5
strategy('Opening Range Breakout (ORB) with Timezone', overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Inputs
string tzInput = input.string('America/New_York', title='Timezone', tooltip='Use standard IANA timezone database names, e.g., America/New_York')
string sessionInput = input.string('0930-1000', title='Opening Range Session', tooltip='Format: HHMM-HHMM')
string tradeSession = input.string('1000-1600', title='Trading Window', tooltip='Format: HHMM-HHMM')
float atrMultiplier = input.float(1.5, title='ATR Stop Multiplier', minval=0.1)
int atrLength = input.int(14, title='ATR Length')
// Time calculations
inSession = not na(time(timeframe.period, sessionInput + ':23456', tzInput))
inTradeWindow = not na(time(timeframe.period, tradeSession + ':23456', tzInput))
// State variables
var float orbHigh = na
var float orbLow = na
var bool sessionStarted = false
// Detect session transition
sessionNew = inSession and not inSession[1]
if sessionNew
orbHigh := high
orbLow := low
sessionStarted := true
else if inSession
orbHigh := math.max(orbHigh, high)
orbLow := math.min(orbLow, low)
// Reset at the end of the trading day or before next session
if not inTradeWindow and not inSession
sessionStarted := false
// Plotting
plotColor = sessionStarted and not inSession ? color.blue : color.new(color.blue, 100)
plot(orbHigh, title='ORB High', color=plotColor, style=plot.style_linebr, linewidth=2)
plot(orbLow, title='ORB Low', color=plotColor, style=plot.style_linebr, linewidth=2)
// ATR for dynamic SL/TP
atr = ta.atr(atrLength)
// Strategy Execution
longCondition = inTradeWindow and sessionStarted and not inSession and ta.crossover(close, orbHigh) and strategy.position_size == 0
shortCondition = inTradeWindow and sessionStarted and not inSession and ta.crossunder(close, orbLow) and strategy.position_size == 0
if longCondition
stopLoss = orbHigh - (atr * atrMultiplier)
takeProfit = orbHigh + (atr * atrMultiplier * 2.0)
strategy.entry('ORB Long', strategy.long)
strategy.exit('Exit Long', 'ORB Long', stop=stopLoss, limit=takeProfit)
if shortCondition
stopLoss = orbLow + (atr * atrMultiplier)
takeProfit = orbLow - (atr * atrMultiplier * 2.0)
strategy.entry('ORB Short', strategy.short)
strategy.exit('Exit Short', 'ORB Short', stop=stopLoss, limit=takeProfit)
// Force close at the end of trading window
if not inTradeWindow and strategy.position_size != 0
strategy.close_all(comment='End of Day Close') Разбор параметров
tzInput: Строковый идентификатор часового пояса в формате IANA (например,'America/New_York'). Позволяет жестко зафиксировать время расчета уровней независимо от настроек отображения графика в TradingView.sessionInput: Временной интервал для формирования утреннего диапазона (по умолчанию'0930-1000').tradeSession: Разрешенное окно для совершения сделок (по умолчанию'1000-1600'). Вне этого окна новые позиции не открываются, а открытые принудительно закрываются в конце дня.atrMultiplier: Множитель индикатора ATR для расчета динамического Stop Loss и Take Profit.atrLength: Период скользящей средней для расчета ATR.
Как запустить
Для запуска стратегии выполните следующие шаги:
1. Откройте платформу TradingView и перейдите на вкладку Pine Editor в нижней панели.
2. Скопируйте представленный выше код и вставьте его в редактор, заменив стандартный шаблон.
3. Нажмите кнопку Add to Chart (Добавить на график).
4. В настройках стратегии (иконка шестеренки на графике) укажите нужный часовой пояс актива в параметре Timezone. Например, для американских акций используйте America/New_York, а для европейских индексов — соответствующий европейский часовой пояс.
Для более глубокого анализа рыночных расхождений и арбитража рекомендуем изучить наш материал про Индикатор TVWAP Spread в Pine Script v5: Арбитраж в TradingView.
Если вы торгуете криптовалютой или макро-активами, полезным дополнением к пробойным стратегиям станет Pine Script v5: Поиск Интрадей Раскорреляции BTC и DXY с ta.correlation.
Чтобы оценить эффективность полученной стратегии, вы можете использовать наше руководство по созданию кастомной таблицы статистики в Pine Script v5: Winrate и Profit Factor.




