Power Order Blocks
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator power order blocks for tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
«Power Order Blocks» — это индикатор для TradingView, который отображает на графике зоны бычьих и медвежьих Order Blocks. Индикатор фиксирует формирование таких зон при определённом соотношении импульсных свечей и отрисовывает их цветными прямоугольниками с информационными подписями.
Для каждой зоны отображается уровень мощности и количество касаний цены. Внутри зон доступна линия равновесия. При повторном касании активной зоны индикатор показывает метки-стрелки и создаёт условия для оповещений TradingView.
Настройки включают множитель смещения для подтверждения зон, цветовые схемы для бычьих и медвежьих объектов, а также переключатели отображения линии равновесия, интенсивности мощности и меток касаний.
Настройки программы
| Настройка | Описание |
|---|---|
| dispThresh | Множитель смещения — Множитель смещения, определяющий минимальный размер импульсной свечи относительно предыдущей для подтверждения Order Block. |
| bullColor | Цвет бычьего OB — Цвет заливки бычьих Order Block зон на графике. |
| bearColor | Цвет медвежьего OB — Цвет заливки медвежьих Order Block зон на графике. |
| textColor | Цвет текста — Цвет текста в информационных подписях Order Block зон. |
| showEqLine | Показать линию равновесия — Отображает или скрывает пунктирную линию равновесия внутри каждой Order Block зоны. |
| powerFade | Интенсивность мощности — При включении интенсивность заливки зон зависит от уровня мощности: более мощные зоны отображаются насыщеннее, менее мощные — прозрачнее. |
| showRetests | Показать метки касаний — Отображает метки-стрелки при повторном касании цены активных Order Block зон. |
Поиск по коду файла
indicator("Power Order Blocks", overlay=true, max_boxes_count=500, max_labels_count=500, max_lines_count=500)
grp1 = "Order Block Settings"
maxBlocks = 10
dispThresh = input.float(0.5, title="Displacement Multiplier", step=0.1, group=grp1, tooltip="How much larger the engulfing candle must be to validate an OB.")
strLookback = 100
grp2 = "Styling"
bullColor = input.color(#1bd37a, title="Bullish OB Color", group=grp2)
bearColor = input.color(#bc14e6, title="Bearish OB Color", group=grp2)
borderColor = color.new(#ffffff, 100)
textColor = input.color(color.new(#ffffff, 0), title="Text Color", group=grp2)
showEqLine = input.bool(true, title="Show Equilibrium Line", group=grp2, tooltip="Draws a dashed midpoint line inside each Order Block.")
powerFade = input.bool(true, title="Power Intensity", group=grp2, tooltip="Higher power OBs appear more vivid; weaker OBs are more transparent.")
grp3 = "Signals"
showRetests = input.bool(true, title="Show Retest Labels", group=grp3, tooltip="Plots an arrow label when price taps into an active Order Block.")
type OBBlock
box bx
box infoBox
line eqLine
int touches
int birthBar
float obTop
float obBtm
float powerPct
var OBBlock[] bullBlocks = array.new<OBBlock>()
var OBBlock[] bearBlocks = array.new<OBBlock>()
var int lastBullRetestBar = na
var int lastBearRetestBar = na
bool isBearishCandle = close[1] < open[1]
bool isBullishDisp = close > open and close > high[1] and (close - open) > (high[1] - low[1]) * dispThresh
bool bullOB = isBearishCandle and isBullishDisp
bool isBullishCandle = close[1] > open[1]
bool isBearishDisp = close < open and close < low[1] and (open - close) > (high[1] - low[1]) * dispThresh
bool bearOB = isBullishCandle and isBearishDisp
float maxCandleSize = ta.highest(high - low, strLookback)
float atr = ta.atr(14) * 0.2
calcPowerTransp(float powerPct) =>
int transp = math.round(92 - (powerPct / 100.0) * 32)
transp
buildLabel(int touches, float pct) =>
"Power: " + str.tostring(math.round(pct)) + "% | Touches: " + str.tostring(touches)
bool bullRetestRaw = false
bool bearRetestRaw = false
int bullSize = array.size(bullBlocks)
if bullSize > 0
for i = bullSize - 1 to 0
OBBlock ob = array.get(bullBlocks, i)
float btm = ob.obBtm
float top = ob.obTop
if close < btm
box.delete(ob.bx)
box.delete(ob.infoBox)
if not na(ob.eqLine)
line.delete(ob.eqLine)
array.remove(bullBlocks, i)
else
int transp = powerFade ? calcPowerTransp(ob.powerPct) : 80
box.set_bgcolor(ob.bx, color.new(bullColor, transp))
box.set_right(ob.bx, bar_index + 25)
box.set_left(ob.infoBox, bar_index)
box.set_right(ob.infoBox, bar_index + 25)
box.set_top(ob.infoBox, top)
box.set_bottom(ob.infoBox, btm)
if showEqLine and not na(ob.eqLine)
line.set_x2(ob.eqLine, bar_index)
if low[1] <= top and low >= top and bar_index > box.get_left(ob.bx)
bullRetestRaw := true
ob.touches += 1
float pct = maxCandleSize > 0 ? ((top - btm) / maxCandleSize) * 100 : 0
box.set_text(ob.infoBox, "Bullish OB\n" + buildLabel(ob.touches, pct))
int bearSize = array.size(bearBlocks)
if bearSize > 0
for i = bearSize - 1 to 0
OBBlock ob = array.get(bearBlocks, i)
float top = ob.obTop
float btm = ob.obBtm
if close > top
box.delete(ob.bx)
box.delete(ob.infoBox)
if not na(ob.eqLine)
line.delete(ob.eqLine)
array.remove(bearBlocks, i)
else
int transp = powerFade ? calcPowerTransp(ob.powerPct) : 80
box.set_bgcolor(ob.bx, color.new(bearColor, transp))
box.set_right(ob.bx, bar_index + 25)
box.set_left(ob.infoBox, bar_index)
box.set_right(ob.infoBox, bar_index + 25)
box.set_top(ob.infoBox, top)
box.set_bottom(ob.infoBox, btm)
if showEqLine and not na(ob.eqLine)
line.set_x2(ob.eqLine, bar_index)
if high[1] >= btm and high <= btm and bar_index > box.get_left(ob.bx)
bearRetestRaw := true
ob.touches += 1
float pct = maxCandleSize > 0 ? ((top - btm) / maxCandleSize) * 100 : 0
box.set_text(ob.infoBox, "Bearish OB\n" + buildLabel(ob.touches, pct))
bool bullRetest = bullRetestRaw and (na(lastBullRetestBar) or bar_index - lastBullRetestBar >= 10)
bool bearRetest = bearRetestRaw and (na(lastBearRetestBar) or bar_index - lastBearRetestBar >= 10)
if bullRetest
lastBullRetestBar := bar_index
if bearRetest
lastBearRetestBar := bar_index
if bullOB
float obTop = high[1]
float obBtm = low[1]
Показано первые 50% кода (символов: 7018)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.