Quantum Imbalance Trap
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «quantum imbalance trap@shepherdfxtradingtools.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор написан на Pine Script v6 и использует технические расчёты, запрос данных других таймфреймов, графические примитивы и таблицы для отображения информации.
Настройки программы
| Настройка | Описание |
|---|---|
| imb_len | Длина окна импульса — Количество баров для расчёта среднего объёма и определения импульса |
| atr_len | Период ATR — Период усреднения истинного диапазона для волатильности |
| imb_thresh | Порог тела к диапазону — Минимальное соотношение тела свечи к полному диапазону для признака значимого тела |
| vol_mult | Множитель объёмного скачка — Множитель среднего объёма, при превышении которого считается объёмный скачок |
| use_div | Подтверждение расхождением RSI — Включает дополнительную проверку расхождения цены и RSI для подтверждения сигнала |
| use_liq_sweep | Требовать пробой ликвидности — Включает проверку пробоя ближайшего экстремума предыдущих баров |
| use_mtf_align | Выравнивание по старшему таймфрейму — Включает фильтрацию сигналов по направлению тренда на выбранном старшем таймфрейме |
| htf_tf | Старший таймфрейм — Таймфрейм для анализа направления тренда при включённом выравнивании |
| use_ext_box | Динамическая зона ре-входа — Продлевает горизонтальную зону входа при активной позиции до достижения стоп-лосса |
| sl_atr | Множитель стоп-лосса ATR — Множитель ATR для расчёта расстояния стоп-лосса от точки входа |
| tp1_r | Цель прибыли 1 (кратность R) — Первая цель прибыли в кратности от расстояния стоп-лосса |
| tp2_r | Цель прибыли 2 (кратность R) — Вторая цель прибыли в кратности от расстояния стоп-лосса |
| tp3_r | Цель прибыли 3 (кратность R) — Третья цель прибыли в кратности от расстояния стоп-лосса |
| alrt_bull | Оповещение бычьего сигнала — Включает отправку оповещения при формировании бычьего сигнала |
| alrt_bear | Оповещение медвежьего сигнала — Включает отправку оповещения при формировании медвежьего сигнала |
| use_session | Включить фильтр сессий — Включает фильтрацию сигналов по времени торговой сессии |
| sess_london | Лондонская сессия (07:00–10:30 UTC) — Разрешает сигналы в период лондонской утренней сессии |
| sess_ny | Нью-Йоркская сессия (12:30–15:00 UTC) — Разрешает сигналы в период нью-йоркской сессии |
| show_zone | Показать зону входа — Отображает прямоугольную зону вокруг точки входа |
| show_label | Показать ценовые метки — Отображает метки с ценами входа, стоп-лосса и целей прибыли |
| dash_bg | Цвет фона дашборда — Фоновый цвет элементов дашборда |
| dash_txt | Цвет текста дашборда — Цвет текста в дашборде |
| bull_col | Цвет бычьего сигнала — Цвет линий и меток для бычьих сигналов |
| bear_col | Цвет медвежьего сигнала — Цвет линий и меток для медвежьих сигналов |
| sl_col | Цвет стоп-лосса — Цвет линии стоп-лосса |
| tp1_col | Цель прибыли 1 — цвет — Цель прибыли 1 |
| tp2_col | Цель прибыли 2 — цвет — Цель прибыли 2 |
| tp3_col | Цель прибыли 3 — цвет — Цель прибыли 3 |
| zone_col | Цвет зоны входа — Цвет фона зоны входа и её границы |
Поиск по коду файла
indicator("Quantum Imbalance Trap", overlay=true, max_lines_count=500, max_boxes_count=200, max_labels_count=300)
string GRP_QIT = "Signal Detection"
string GRP_SMC = "Smart Money Concepts"
string GRP_OF = "Order Flow"
string GRP_RISK = "Risk Management"
string GRP_ALERT = "Alerts & Sessions"
string GRP_DASH = "Dashboard"
string GRP_VIS = "Visual Style"
int imb_len = input.int(10, "Imbalance Lookback (Bars)", minval=3, maxval=50, group=GRP_QIT)
int atr_len = input.int(14, "ATR Period", minval=5, maxval=50, group=GRP_QIT)
float imb_thresh = input.float(0.55,"Body-to-Range Threshold", minval=0.2, maxval=0.95, step=0.05, group=GRP_QIT)
float vol_mult = input.float(1.2, "Volume Spike Multiplier", minval=0.5, maxval=4.0, step=0.1, group=GRP_QIT)
bool use_div = input.bool(false, "RSI Divergence Confirmation", group=GRP_QIT)
bool use_liq_sweep = input.bool(false, "Require Liquidity Sweep", group=GRP_SMC)
bool use_mtf_align = input.bool(false, "Higher Timeframe Alignment", group=GRP_OF)
string htf_tf = input.timeframe("60", "Higher Timeframe", group=GRP_OF)
bool use_ext_box = input.bool(false, "Dynamic Re-entry Zone", group=GRP_OF)
float sl_atr = input.float(1.5, "Stop Loss ATR Multiplier", minval=0.5, maxval=5.0, step=0.1, group=GRP_RISK)
float tp1_r = input.float(1.5, "Take Profit 1 (R-Multiple)", minval=0.5, maxval=5.0, step=0.1, group=GRP_RISK)
float tp2_r = input.float(2.5, "Take Profit 2 (R-Multiple)", minval=1.0, maxval=8.0, step=0.1, group=GRP_RISK)
float tp3_r = input.float(3.5, "Take Profit 3 (R-Multiple)", minval=2.0, maxval=12.0, step=0.1, group=GRP_RISK)
bool alrt_bull = input.bool(true, "Bullish Signal Alert", group=GRP_ALERT)
bool alrt_bear = input.bool(true, "Bearish Signal Alert", group=GRP_ALERT)
bool use_session = input.bool(false, "Enable Session Filter", group=GRP_ALERT)
bool sess_london = input.bool(false, "London Open (07:00–10:30 UTC)", group=GRP_ALERT)
bool sess_ny = input.bool(false, "New York Open (12:30–15:00 UTC)", group=GRP_ALERT)
bool show_zone = input.bool(true, "Show Entry Zone", group=GRP_DASH)
bool show_label = input.bool(true, "Show Price Labels", group=GRP_DASH)
color dash_bg = input.color(color.rgb(5, 20, 10, 5), "Background Color", group=GRP_DASH)
color dash_txt = input.color(color.rgb(235, 225, 190, 0), "Text Color", group=GRP_DASH)
color bull_col = input.color(color.rgb(0, 191, 255, 0), "Bullish Color", group=GRP_VIS)
color bear_col = input.color(color.rgb(255, 140, 0, 0), "Bearish Color", group=GRP_VIS)
color sl_col = input.color(color.rgb(220, 0, 180, 0), "Stop Loss Color", group=GRP_VIS)
color tp1_col = input.color(color.rgb(255, 230, 0, 0), "Take Profit 1 Color", group=GRP_VIS)
color tp2_col = input.color(color.rgb(180, 255, 50, 0), "Take Profit 2 Color", group=GRP_VIS)
color tp3_col = input.color(color.rgb(255, 100, 200, 0), "Take Profit 3 Color", group=GRP_VIS)
color zone_col = input.color(color.rgb(0, 230, 255, 80), "Entry Zone Color", group=GRP_VIS)
string clean_ticker = syminfo.prefix + ":" + syminfo.ticker
float atr_val = ta.atr(atr_len)
float vol_avg = ta.sma(volume, imb_len)
float body = math.abs(close - open)
float rng = high - low
float body_rat = rng > 0.0 ? body / rng : 0.0
float vol_rat = vol_avg > 0.0 ? volume / vol_avg : 1.0
bool bull_body = close > open
bool bear_body = close < open
float mom_fast = ta.sma(close, 5)
float mom_slow = ta.sma(close, imb_len * 2)
bool bull_trend = mom_fast > mom_slow
bool bear_trend = mom_fast < mom_slow
color neutral_col = color.rgb(175,160,120)
bool vol_spike = vol_rat >= vol_mult
bool imb_bull = bull_body and body_rat >= imb_thresh and vol_spike and bull_trend
bool imb_bear = bear_body and body_rat >= imb_thresh and vol_spike and bear_trend
bool prev_bull = imb_bull[1]
bool prev_bear = imb_bear[1]
bool sig_bull_raw = imb_bull[1] and not imb_bull[2]
bool sig_bear_raw = imb_bear[1] and not imb_bear[2]
float swing_lo_ref = ta.lowest(low, imb_len)[4]
float swing_hi_ref = ta.highest(high, imb_len)[4]
bool liq_swept_bull = math.min(low[1], low[2], low[3]) < swing_lo_ref and close[1] > swing_lo_ref
bool liq_swept_bear = math.max(high[1], high[2], high[3]) > swing_hi_ref and close[1] < swing_hi_ref
bool liq_ok_bull = not use_liq_sweep or liq_swept_bull
bool liq_ok_bear = not use_liq_sweep or liq_swept_bear
bool in_london = not na(time(timeframe.period, "0700-1030:1234567", "UTC")[1])
bool in_ny = not na(time(timeframe.period, "1230-1500:1234567", "UTC")[1])
bool sess_ok = not use_session or ((sess_london and in_london) or (sess_ny and in_ny))
float htf_close_raw = request.security(syminfo.tickerid, htf_tf, close[1], lookahead=barmerge.lookahead_on)
float htf_ma_raw = request.security(syminfo.tickerid, htf_tf, ta.sma(close, 20)[1], lookahead=barmerge.lookahead_on)
bool htf_bull = htf_close_raw > htf_ma_raw
bool htf_bear = htf_close_raw < htf_ma_raw
string htf_trend_str = htf_bull ? "▲ Bull" : htf_bear ? "▼ Bear" : "◆ Neut"
color htf_trend_col = htf_bull ? bull_col : htf_bear ? bear_col : neutral_col
float rsi_val = ta.rsi(close, 14)
bool bull_div = low[1] < low[1 + imb_len] and rsi_val[1] > rsi_val[1 + imb_len]
bool bear_div = high[1] > high[1 + imb_len] and rsi_val[1] < rsi_val[1 + imb_len]
bool div_ok_bull = not use_div or bull_div
bool div_ok_bear = not use_div or bear_div
bool htf_ok_bull = not use_mtf_align or htf_bull
bool htf_ok_bear = not use_mtf_align or htf_bear
bool sig_bull = sig_bull_raw and liq_ok_bull and sess_ok and div_ok_bull and htf_ok_bull
bool sig_bear = sig_bear_raw and liq_ok_bear and sess_ok and div_ok_bear and htf_ok_bear
var float entry_bull = na
var float sl_bull = na
var float tp1_bull = na
var float tp2_bull = na
var float tp3_bull = na
var float zone_hi_b = na
var float zone_lo_b = na
var float entry_bear = na
var float sl_bear = na
var float tp1_bear = na
var float tp2_bear = na
var float tp3_bear = na
var float zone_hi_bear = na
var float zone_lo_bear = na
var bool bull_active = false
var bool bear_active = false
var line ln_entry_b = na
var line ln_sl_b = na
var line ln_tp1_b = na
var line ln_tp2_b = na
var line ln_tp3_b = na
var line ln_entry_s = na
var line ln_sl_s = na
var line ln_tp1_s = na
var line ln_tp2_s = na
var line ln_tp3_s = na
var box bx_zone_b = na
var box bx_zone_s = na
var label lb_sig_b = na
var label lb_entry_b = na
var label lb_sl_b = na
var label lb_tp1_b = na
var label lb_tp2_b = na
var label lb_tp3_b = na
var label lb_sig_s = na
var label lb_entry_s = na
var label lb_sl_s = na
var label lb_tp1_s = na
var label lb_tp2_s = na
var label lb_tp3_s = na
int ext = bar_index + imb_len * 5
if use_ext_box
if bull_active and not na(sl_bull) and low <= sl_bull
bull_active := false
if bear_active and not na(sl_bear) and high >= sl_bear
bear_active := false
if bull_active and not na(bx_zone_b)
box.set_right(bx_zone_b, bar_index + imb_len * 5)
if bear_active and not na(bx_zone_s)
box.set_right(bx_zone_s, bar_index + imb_len * 5)
if sig_bull
entry_bull := close[1]
sl_bull := close[1] - sl_atr * atr_val[1]
float rb = entry_bull - sl_bull
tp1_bull := entry_bull + tp1_r * rb
tp2_bull := entry_bull + tp2_r * rb
tp3_bull := entry_bull + tp3_r * rb
zone_hi_b := entry_bull + atr_val[1] * 0.35
zone_lo_b := entry_bull - atr_val[1] * 0.35
bull_active := true
bear_active := false
line.delete(ln_entry_b)
line.delete(ln_sl_b)
line.delete(ln_tp1_b)
line.delete(ln_tp2_b)
line.delete(ln_tp3_b)
box.delete(bx_zone_b)
label.delete(lb_sig_b)
label.delete(lb_entry_b)
label.delete(lb_sl_b)
label.delete(lb_tp1_b)
label.delete(lb_tp2_b)
label.delete(lb_tp3_b)
line.delete(ln_entry_s)
line.delete(ln_sl_s)
line.delete(ln_tp1_s)
line.delete(ln_tp2_s)
line.delete(ln_tp3_s)
box.delete(bx_zone_s)
label.delete(lb_sig_s)
label.delete(lb_entry_s)
label.delete(lb_sl_s)
label.delete(lb_tp1_s)
label.delete(lb_tp2_s)
label.delete(lb_tp3_s)
ln_entry_b := line.new(bar_index - 1, entry_bull, ext, entry_bull, color=bull_col, width=2, style=line.style_solid)
ln_sl_b := line.new(bar_index - 1, sl_bull, ext, sl_bull, color=sl_col, width=2, style=line.style_dashed)
ln_tp1_b := line.new(bar_index - 1, tp1_bull, ext, tp1_bull, color=color.new(tp1_col, 0), width=1, style=line.style_dotted)
ln_tp2_b := line.new(bar_index - 1, tp2_bull, ext, tp2_bull, color=color.new(tp2_col, 0), width=1, style=line.style_dotted)
ln_tp3_b := line.new(bar_index - 1, tp3_bull, ext, tp3_bull, color=color.new(tp3_col, 0), width=1, style=line.style_dotted)
if show_zone
bx_zone_b := box.new(bar_index - 1, zone_hi_b, ext, zone_lo_b, bgcolor=zone_col, border_color=color.new(bull_col, 40), border_width=1)
if show_label
lb_sig_b := label.new(bar_index - 1, low[1] - atr_val[1] * 0.6, "▲ QIT LONG", style=label.style_label_up, color=color.new(bull_col, 5), textcolor=color.black, size=size.small)
lb_entry_b := label.new(ext, entry_bull, "ENTRY " + str.tostring(entry_bull, format.mintick), style=label.style_label_left, color=color.new(bull_col, 0), textcolor=color.black, size=size.small)
lb_sl_b := label.new(ext, sl_bull, "SL " + str.tostring(sl_bull, format.mintick), style=label.style_label_left, color=color.new(sl_col, 0), textcolor=color.black, size=size.small)
lb_tp1_b := label.new(ext, tp1_bull, "TP1 " + str.tostring(tp1_bull, format.mintick) + " (" + str.tostring(tp1_r, "#.#") + "R)", style=label.style_label_left, color=color.new(tp1_col, 0), textcolor=color.black, size=size.small)
lb_tp2_b := label.new(ext, tp2_bull, "TP2 " + str.tostring(tp2_bull, format.mintick) + " (" + str.tostring(tp2_r, "#.#") + "R)", style=label.style_label_left, color=color.new(tp2_col, 0), textcolor=color.black, size=size.small)
lb_tp3_b := label.new(ext, tp3_bull, "TP3 " + str.tostring(tp3_bull, format.mintick) + " (" + str.tostring(tp3_r, "#.#") + "R)", style=label.style_label_left, color=color.new(tp3_col, 0), textcolor=color.black, size=size.small)
if sig_bear
entry_bear := close[1]
sl_bear := close[1] + sl_atr * atr_val[1]
float rs = sl_bear - entry_bear
tp1_bear := entry_bear - tp1_r * rs
tp2_bear := entry_bear - tp2_r * rs
tp3_bear := entry_bear - tp3_r * rs
zone_hi_bear := entry_bear + atr_val[1] * 0.35
zone_lo_bear := entry_bear - atr_val[1] * 0.35
bear_active := true
bull_active := false
line.delete(ln_entry_s)
line.delete(ln_sl_s)
line.delete(ln_tp1_s)
line.delete(ln_tp2_s)
line.delete(ln_tp3_s)
box.delete(bx_zone_s)
label.delete(lb_sig_s)
label.delete(lb_entry_s)
label.delete(lb_sl_s)
label.delete(lb_tp1_s)
label.delete(lb_tp2_s)
label.delete(lb_tp3_s)
line.delete(ln_entry_b)
line.delete(ln_sl_b)
line.delete(ln_tp1_b)
line.delete(ln_tp2_b)
line.delete(ln_tp3_b)
box.delete(bx_zone_b)
label.delete(lb_sig_b)
label.delete(lb_entry_b)
label.delete(lb_sl_b)
label.delete(lb_tp1_b)
label.delete(lb_tp2_b)
label.delete(lb_tp3_b)
ln_entry_s := line.new(bar_index - 1, entry_bear, ext, entry_bear, color=bear_col, wПоказано первые 50% кода (символов: 19787)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.