Исходный код
Представленный ниже Pine Script v5 код реализует индикатор, который сканирует график на предмет формирования бычьих и медвежьих Order Blocks. Для каждого потенциального блока выполняется проверка объема: объем свечи, формирующей Order Block, должен превышать средний объем за заданный период, умноженный на настраиваемый коэффициент. Это помогает отфильтровать блоки, не подкрепленные значительной активностью. Обнаруженные Order Blocks визуализируются на графике в виде прямоугольников, которые расширяются вправо на заданное количество баров, а также содержат метку с объемом.
//@version=5
indicator("Order Blocks with Volume Validation", overlay=true)
// --- Input Parameters ---
i_lookback = input.int(20, "Volume Lookback Period", minval=1)
i_volumeMultiplier = input.float(1.5, "Volume Multiplier for OB", minval=0.5, step=0.1)
i_obExtendBars = input.int(50, "Extend OB for N Bars", minval=1, maxval=500)
i_bullishColor = input.color(color.new(color.green, 80), "Bullish OB Color")
i_bearishColor = input.color(color.new(color.red, 80), "Bearish OB Color")
i_showLabels = input.bool(true, "Show OB Labels")
// --- Calculate Average Volume ---
avgVolume = ta.sma(volume, i_lookback)
// --- Order Block Detection Logic ---
var box[] bullishOBs = array.new_box()
var box[] bearishOBs = array.new_box()
// Function to check if a candle is a potential bullish OB
// A down-close candle (or doji) followed by a strong move up
isBullishOB(index) =>
isDownCandle = close[index] < open[index]
isDoji = math.abs(close[index] - open[index]) < (high[index] - low[index]) * 0.1 // Small body
isSignificantVolume = volume[index] > avgVolume[index] * i_volumeMultiplier
// Look for a strong move up after the potential OB candle
// The next candle's close is significantly above the potential OB's high
// This creates an "imbalance" or "gap"
isStrongUpMove = close > high[index] // Current candle (index 0) closes above the potential OB's high (index 1)
(isDownCandle or isDoji) and isSignificantVolume and isStrongUpMove
// Function to check if a candle is a potential bearish OB
// An up-close candle (or doji) followed by a strong move down
isBearishOB(index) =>
isUpCandle = close[index] > open[index]
isDoji = math.abs(close[index] - open[index]) < (high[index] - low[index]) * 0.1 // Small body
isSignificantVolume = volume[index] > avgVolume[index] * i_volumeMultiplier
// Look for a strong move down after the potential OB candle
// The next candle's close is significantly below the potential OB's low
// This creates an "imbalance" or "gap"
isStrongDownMove = close < low[index] // Current candle (index 0) closes below the potential OB's low (index 1)
(isUpCandle or isDoji) and isSignificantVolume and isStrongDownMove
// --- Detect and Draw Order Blocks ---
if bar_index > i_lookback then // Ensure enough bars for volume average
// Bullish Order Block: Last down-close candle before a strong up move
if isBullishOB(1) then // Check the previous candle (index 1) as the potential OB
obLow = low[1]
obHigh = high[1]
// Create a new box for the bullish OB
newBox = box.new(x1=bar_index - 1, y1=obLow, x2=bar_index, y2=obHigh,
bgcolor=i_bullishColor, border_color=color.new(color.green, 0),
extend=extend.right, text_size=size.tiny)
box.set_right(newBox, bar_index + i_obExtendBars) // Extend for N bars
if i_showLabels
box.set_text(newBox, "Bullish OB\nVol: " + str.tostring(volume[1], "#.##"))
array.push(bullishOBs, newBox)
// Bearish Order Block: Last up-close candle before a strong down move
if isBearishOB(1) then // Check the previous candle (index 1) as the potential OB
obLow = low[1]
obHigh = high[1]
// Create a new box for the bearish OB
newBox = box.new(x1=bar_index - 1, y1=obLow, x2=bar_index, y2=obHigh,
bgcolor=i_bearishColor, border_color=color.new(color.red, 0),
extend=extend.right, text_size=size.tiny)
box.set_right(newBox, bar_index + i_obExtendBars) // Extend for N bars
if i_showLabels
box.set_text(newBox, "Bearish OB\nVol: " + str.tostring(volume[1], "#.##"))
array.push(bearishOBs, newBox)
Разбор параметров
i_lookback: Период для расчета скользящей средней объема. Используется для определения «нормального» объема и сравнения с ним объема потенциального Order Block. Чем больше период, тем более сглаженным будет средний объем.i_volumeMultiplier: Множитель, применяемый к среднему объему. Объем свечи Order Block должен быть большесредний_объем * i_volumeMultiplier. Увеличение этого значения сделает индикатор более строгим, выделяя только Order Blocks с исключительно высоким объемом. Это схоже с подходом к фильтрации пин-баров с аномальным объемом.i_obExtendBars: Количество баров, на которое Order Block будет продлен вправо. Это позволяет видеть зону влияния блока на будущее движение цены.i_bullishColor: Цвет для визуализации бычьих Order Blocks. Используется полупрозрачный зеленый по умолчанию.i_bearishColor: Цвет для визуализации медвежьих Order Blocks. Используется полупрозрачный красный по умолчанию.i_showLabels: Булевый параметр, определяющий, отображать ли текстовые метки с объемом внутри каждого Order Block.
Как запустить
Чтобы использовать этот скрипт в TradingView, выполните следующие шаги:
- Откройте TradingView и перейдите на график нужного актива.
- В нижней части экрана найдите панель «Pine Editor» и откройте ее.
- Удалите весь существующий код в редакторе (если он есть).
- Скопируйте предоставленный выше Pine Script код и вставьте его в «Pine Editor».
- Нажмите кнопку «Добавить на график» (Add to Chart) в правом верхнем углу панели «Pine Editor».
- Индикатор появится на вашем графике, автоматически выделяя Order Blocks с учетом объема. Вы можете настроить параметры индикатора, такие как период объема или множитель, через меню настроек индикатора на графике.
Этот индикатор может быть полезным дополнением к вашему арсеналу инструментов для анализа рынка, особенно если вы используете концепции Smart Money. Для более глубокого анализа рыночных сессий, которые часто влияют на формирование Order Blocks, рекомендуем ознакомиться с нашей статьей Как отрисовать сессии в Pine Script v5: Азия, Лондон, Нью-Йорк. А для продвинутого анализа объема, такого как кумулятивная дельта объема, изучите Session-Anchored CVD в Pine Script v5: Полное руководство.




