← К каталогу
Исходный код · ID 4114

ICT Sessions & Killzones [JOAT]

ict sessions & killzones.txt
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор «ICT Sessions & Killzones [JOAT]» отображает на графике TradingView информационные блоки и уровни четырёх основных торговых сессий — Азии, Лондона, Нью-Йорка (утро и вечер). Для каждой сессии рисуется прямоугольник диапазона цен и линии, продолжающие высокие и низкие уровни за пределы сессии.

Индикатор отслеживает события забора (sweep), когда последующая сессия достигает уровня предыдущей, и помечает их на графике. Также рассчитывается дневной биас относительно полуночного открытия и формируются метки сигналов BUY/SELL при совпадении забора с восстановлением уровня и соответствующим биасом.

Встроенная информационная панель показывает текущую активную сессию, её диапазон, дневной биас и последний сигнал. Поддерживаются условные оповещения TradingView для сигналов покупки, продажи, забора уровней и открытия сессий.

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

Настройки программы

НастройкаОписание
tz Часовой пояс сессии — Часовой пояс, используемый для расчёта времени всех торговых сессий.
keepDays Количество дней истории — Количество дней истории, в течение которых хранятся сессионные блоки и линии уровней. Более старые данные удаляются.
extBars Продление уровней (баров) — Количество баров, на которое линии уровней продлеваются за пределы завершения сессии.
asiaOn Азия — Включает или отключает отображение азиатской сессии и связанных с ней элементов.
asiaSes Время азиатской сессии — Временное окно азиатской торговой сессии в выбранном часовом поясе.
asiaCol Цвет азиатской сессии — Цвет заливки прямоугольника азиатской сессии на графике.
lonOn Лондон — Включает или отключает отображение лондонской сессии и связанных с ней элементов.
lonSes Время лондонской сессии — Временное окно лондонской торговой сессии в выбранном часовом поясе.
lonCol Цвет лондонской сессии — Цвет заливки прямоугольника лондонской сессии на графике.
nyaOn Нью-Йорк (утро) — Включает или отключает отображение нью-йоркской утренней сессии и связанных с ней элементов.
nyaSes Время нью-йоркской утренней сессии — Временное окно нью-йоркской утренней торговой сессии в выбранном часовом поясе.
nyaCol Цвет нью-йоркской утренней сессии — Цвет заливки прямоугольника нью-йоркской утренней сессии на графике.
nypOn Нью-Йорк (вечер) — Включает или отключает отображение нью-йоркской вечерней сессии и связанных с ней элементов.
nypSes Время нью-йоркской вечерней сессии — Временное окно нью-йоркской вечерней торговой сессии в выбранном часовом поясе.
nypCol Цвет нью-йоркской вечерней сессии — Цвет заливки прямоугольника нью-йоркской вечерней сессии на графике.
showPDH Предыдущий день (верх/низ) — Отображает пунктирные линии и метки максимума и минимума предыдущего торгового дня.
showMid Полуночное открытие — Отображает горизонтальную линию полуночного открытия (00:00) и метку уровня.
showBox Коробки сессий — Отображает прямоугольники (коробки) для каждой торговой сессии.
showLiq Линии ликвидности сессий — Отображает линии высоких и низких уровней завершённых сессий.
showSwp Метки забора — Отображает метки и маркеры забора уровней (sweep) на графике.
paintOn Монохромные свечи — Включает монохромную окраску свечей: белые для роста, серые для падения.
showSig Метки сигнала BUY/SELL — Отображает метки сигналов BUY и SELL на графике при выполнении условий забора и биаса.
showHUD Панель мониторинга — Отображает или скрывает информационную панель (дашборд) на графике.
hudPos Позиция панели — Положение информационной панели (дашборда) на графике.
hudSize Размер текста панели — Размер текста в информационной панели.
Получить полный код

Поиск по коду файла

indicator("ICT Sessions & Killzones [JOAT]", "Sessions KZ [JOAT]", overlay = true, max_lines_count = 500, max_labels_count = 500, max_boxes_count = 500)

WHITE  = #F5F7FA
LGREY  = #C7CDD6
MGREY  = #8A93A3
DGREY  = #4A505C
INK    = #14181F
PAPER  = #FFFFFF

gGen   = "General"
tz      = input.string("America/New_York", "Session timezone", options = ["America/New_York", "America/Chicago", "Europe/London", "Europe/Berlin", "Asia/Tokyo", "Asia/Shanghai", "Australia/Sydney", "UTC"], group = gGen)
keepDays= input.int(3, "Days of history to keep", minval = 1, maxval = 10, group = gGen, tooltip = "Older session boxes and their liquidity lines are pruned beyond this many days.")
extBars = input.int(24, "Level extension (bars)", minval = 2, maxval = 200, group = gGen)

gAsia  = "Asia"
asiaOn  = input.bool(true, "Asia", inline = "as", group = gAsia)
asiaSes = input.session("2000-0000", "", inline = "as", group = gAsia)
asiaCol = input.color(color.new(#8A93A3, 90), "Shade", group = gAsia)

gLon   = "London"
lonOn   = input.bool(true, "London", inline = "lo", group = gLon)
lonSes  = input.session("0200-0500", "", inline = "lo", group = gLon)
lonCol  = input.color(color.new(#4A505C, 90), "Shade", group = gLon)

gNYa   = "New York AM"
nyaOn   = input.bool(true, "New York AM", inline = "na", group = gNYa)
nyaSes  = input.session("0700-1000", "", inline = "na", group = gNYa)
nyaCol  = input.color(color.new(#14181F, 90), "Shade", group = gNYa)

gNYp   = "New York PM"
nypOn   = input.bool(true, "New York PM", inline = "np", group = gNYp)
nypSes  = input.session("1330-1600", "", inline = "np", group = gNYp)
nypCol  = input.color(color.new(#8A93A3, 92), "Shade", group = gNYp)

gLvl   = "Classic Levels"
showPDH = input.bool(true, "Previous day high / low", group = gLvl)
showMid = input.bool(true, "Midnight (00:00) open", group = gLvl)

gVis   = "Visuals"
showBox = input.bool(true, "Session boxes", group = gVis)
showLiq = input.bool(true, "Session high / low lines", group = gVis)
showSwp = input.bool(true, "Sweep tags", group = gVis)
paintOn = input.bool(true, "Paint monochrome candles", group = gVis)
showSig = input.bool(true, "Bias BUY / SELL tags", group = gVis)
showHUD = input.bool(true, "Dashboard", group = gVis)
hudPos  = input.string("Top Right", "Position", options = ["Top Right", "Top Left", "Bottom Right", "Bottom Left", "Middle Right"], group = gVis)

f_pos(string s) =>
    switch s
        "Top Right"    => position.top_right
        "Top Left"     => position.top_left
        "Bottom Right" => position.bottom_right
        "Bottom Left"  => position.bottom_left
        => position.middle_right

f_price(float p) =>
    str.tostring(p, format.mintick)

f_prune(array<box> bxs, array<line> his, array<line> los, array<label> lbs, array<label> lhs, array<label> lls, int cap) =>
    while array.size(bxs) > cap
        box.delete(array.shift(bxs))
    while array.size(his) > cap
        line.delete(array.shift(his))
    while array.size(los) > cap
        line.delete(array.shift(los))
    while array.size(lbs) > cap
        label.delete(array.shift(lbs))
    while array.size(lhs) > cap
        label.delete(array.shift(lhs))
    while array.size(lls) > cap
        label.delete(array.shift(lls))

newDay = timeframe.change("D")

var bool  asIn = false
var float asHi = na
var float asLo = na
var int   asL  = na
var array<box>   asBx = array.new<box>()
var array<line>  asHl = array.new<line>()
var array<line>  asLl = array.new<line>()
var array<label> asLb = array.new<label>()
var array<label> asLh = array.new<label>()
var array<label> asLo2 = array.new<label>()

var bool  loIn = false
var float loHi = na
var float loLo = na
var int   loL  = na
var array<box>   loBx = array.new<box>()
var array<line>  loHl = array.new<line>()
var array<line>  loLl = array.new<line>()
var array<label> loLb = array.new<label>()
var array<label> loLh = array.new<label>()
var array<label> loLo2 = array.new<label>()

var bool  naIn = false
var float naHi = na
var float naLo = na
var int   naL  = na
var array<box>   naBx = array.new<box>()
var array<line>  naHl = array.new<line>()
var array<line>  naLl = array.new<line>()
var array<label> naLb = array.new<label>()
var array<label> naLh = array.new<label>()
var array<label> naLo2 = array.new<label>()

var bool  npIn = false
var float npHi = na
var float npLo = na
var int   npL  = na
var array<box>   npBx = array.new<box>()
var array<line>  npHl = array.new<line>()
var array<line>  npLl = array.new<line>()
var array<label> npLb = array.new<label>()
var array<label> npLh = array.new<label>()
var array<label> npLo2 = array.new<label>()

asActive = asiaOn and not na(time(timeframe.period, asiaSes, tz))
loActive = lonOn  and not na(time(timeframe.period, lonSes,  tz))
naActive = nyaOn  and not na(time(timeframe.period, nyaSes,  tz))
npActive = nypOn  and not na(time(timeframe.period, nypSes,  tz))

if asActive and not asIn
    asIn := true
    asHi := high
    asLo := low
    asL  := bar_index
else if asActive and asIn
    asHi := math.max(asHi, high)
    asLo := math.min(asLo, low)
if asIn and not asActive
    asIn := false
    if showBox
        bx = box.new(asL, asHi, bar_index - 1, asLo, border_color = color.new(INK, 40), border_width = 1, bgcolor = asiaCol)
        array.push(asBx, bx)
        array.push(asLb, label.new(asL, asHi, "Asia  " + f_price(asHi - asLo), style = label.style_label_lower_right, color = color.new(PAPER, 100), textcolor = MGREY, size = size.tiny))
    if showLiq
        array.push(asHl, line.new(bar_index - 1, asHi, bar_index - 1 + extBars, asHi, color = color.new(INK, 30), width = 1))
        array.push(asLl, line.new(bar_index - 1, asLo, bar_index - 1 + extBars, asLo, color = color.new(INK, 30), width = 1))
        array.push(asLh,  label.new(bar_index - 1 + extBars, asHi, " Asia H " + f_price(asHi), style = label.style_label_left,  color = color.new(PAPER, 100), textcolor = MGREY, size = size.tiny))
        array.push(asLo2, label.new(bar_index - 1 + extBars, asLo, " Asia L " + f_price(asLo), style = label.style_label_left,  color = color.new(PAPER, 100), textcolor = MGREY, size = size.tiny))

if loActive and not loIn
    loIn := true
    loHi := high
    loLo := low
    loL  := bar_index
else if loActive and loIn
    loHi := math.max(loHi, high)
    loLo := math.min(loLo, low)
if loIn and not loActive
    loIn := false
    if showBox
        bx = box.new(loL, loHi, bar_index - 1, loLo, border_color = color.new(INK, 40), border_width = 1, bgcolor = lonCol)
        array.push(loBx, bx)
        array.push(loLb, label.new(loL, loHi, "London  " + f_price(loHi - loLo), style = label.style_label_lower_right, color = color.new(PAPER, 100), textcolor = DGREY, size = size.tiny))
    if showLiq
        array.push(loHl, line.new(bar_index - 1, loHi, bar_index - 1 + extBars, loHi, color = color.new(INK, 25), width = 1))
        array.push(loLl, line.new(bar_index - 1, loLo, bar_index - 1 + extBars, loLo, color = color.new(INK, 25), width = 1))
        array.push(loLh,  label.new(bar_index - 1 + extBars, loHi, " London H " + f_price(loHi), style = label.style_label_left, color = color.new(PAPER, 100), textcolor = DGREY, size = size.tiny))
        array.push(loLo2, label.new(bar_index - 1 + extBars, loLo, " London L " + f_price(loLo), style = label.style_label_left, color = color.new(PAPER, 100), textcolor = DGREY, size = size.tiny))

if naActive and not naIn
    naIn := true
    naHi := high
    naLo := low
    naL  := bar_index
else if naActive and naIn
    naHi := math.max(naHi, high)
    naLo := math.min(naLo, low)
if naIn and not naActive
    naIn := false
    if showBox
        bx = box.new(naL, naHi, bar_index - 1, naLo, border_color = color.new(INK, 20), border_width = 1, bgcolor = nyaCol)
        array.push(naBx, bx)
        array.push(naLb, label.new(naL, naHi, "NY AM  " + f_price(naHi - naLo), style = label.style_label_lower_right, color = color.new(PAPER, 100), textcolor = INK, size = size.tiny))
    if showLiq
        array.push(naHl, line.new(bar_index - 1, naHi, bar_index - 1 + extBars, naHi, color = color.new(INK, 15), width = 1))
        array.push(naLl, line.new(bar_index - 1, naLo, bar_index - 1 + extBars, naLo, color = color.new(INK, 15), width = 1))
        array.push(naLh,  label.new(bar_index - 1 + extBars, naHi, " NY AM H " + f_price(naHi), style = label.style_label_left, color = color.new(PAPER, 100), textcolor = INK, size = size.tiny))
        array.push(naLo2, label.new(bar_index - 1 + extBars, naLo, " NY AM L " + f_price(naLo), style = label.style_label_left, color = color.new(PAPER, 100), textcolor = INK, size = size.tiny))

if npActive and not npIn
    npIn := true
    npHi := high
    npLo := low
    npL  := bar_index
else if npActive and npIn
    npHi := math.max(npHi, high)
    npLo := math.min(npLo, low)
if npIn and not npActive
    npIn := false
    if showBox
        bx = box.new(npL, npHi, bar_index - 1, npLo, border_color = color.new(INK, 40), border_width = 1, bgcolor = nypCol)
        array.push(npBx, bx)
        array.push(npLb, label.new(npL, npHi, "NY PM  " + f_price(npHi - npLo), style = label.style_label_lower_right, color = color.new(PAPER, 100), textcolor = MGREY, size = size.tiny))
    if showLiq
        array.push(npHl, line.new(bar_index - 1, npHi, bar_index - 1 + extBars, npHi, color = color.new(INK, 30), width = 1))
        array.push(npLl, line.new(bar_index - 1, npLo, bar_index - 1 + extBars, npL

Показано первые 50% кода (символов: 15218)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 521,80₽ ≈ $18.60