Ind_Aleks_ICT_Entry_V2_TS_I.../ARCHITECTURE.md
2026-02-10 21:54:56 +03:00

33 KiB

Архитектура скрипта ICT Entry V2 [TS_Indie]

Источник: TradingView Pine Script v6 URL: https://ru.tradingview.com/script/wm9e7Wca-ICT-Entry-V2-TS-Indie/


1. ОБЩАЯ СТРУКТУРА СИСТЕМЫ

1.1 Иерархия компонентов

┌─────────────────────────────────────────────────────────────┐
│                    ICT Entry V2 System                       │
├─────────────────────────────────────────────────────────────┤
│  1. Swing Detection (Определение свингов)                   │
│         ↓                                                    │
│  2. Liquidity Levels (Уровни ликвидности)                   │
│         ↓                                                    │
│  3. Market Structure (BOS/MSS - определение тренда)         │
│         ↓                                                    │
│  4. FVG Detection (Fair Value Gap)                          │
│         ↓                                                    │
│  5. iFVG Detection (Inversion FVG)                          │
│         ↓                                                    │
│  6. Entry Signal (Комбинация всех условий)                  │
└─────────────────────────────────────────────────────────────┘

1.2 Основные переменные состояния

Переменная Тип Описание
In_Dir_Big int Глобальный тренд: 1=бычий, -1=медвежий
In_Dir_small int Локальное направление свинга
con_buy bool Активирован поиск Buy setup после sweep
con_sell bool Активирован поиск Sell setup после sweep
buy_signal bool Все условия для покупки выполнены
sell_signal bool Все условия для продажи выполнены
pending_buy bool Pending ордер на покупку выставлен
pending_sell bool Pending ордер на продажу выставлен
up_trend bool Текущий тренд бычий
down_trend bool Текущий тренд медвежий
break_dem bool Произошел sweep Demand ликвидности
break_sup bool Произошел sweep Supply ликвидности

2. БЛОК FVG (Fair Value Gap)

2.1 Определение FVG

Demand FVG (бычий):

Условие: low > high[2]
   top = low (текущей свечи)
   bot = high[2] (хай свечи 2 бара назад)
   bar = time[2]

Supply FVG (медвежий):

Условие: high < low[2]
   top = low[2] (лоу свечи 2 бара назад)
   bot = high (текущей свечи)
   bar = time[2]

2.2 Структуры данных FVG

// Demand FVG
dfvg_top[]   - массив верхних границ
dfvg_bot[]   - массив нижних границ
dfvg_bar[]   - массив времени создания
dfvg_col[]   - массив цветов (для отслеживания частичной митигации)

// Supply FVG
sfvg_top[], sfvg_bot[], sfvg_bar[], sfvg_col[]

// Размер массивов: qty_fvg = 9000

2.3 Митигация FVG

Полная митигация (удаление):

  • Demand FVG: low <= dfvg_bot[0] (цена дошла до дна)
  • Supply FVG: high >= sfvg_top[0] (цена дошла до вершины)

Частичная митигация (изменение цвета):

  • Demand FVG: low <= dfvg_top[i] → цвет меняется на Col_fvg_mit
  • Supply FVG: high >= sfvg_bot[i] → цвет меняется на Col_fvg_mit2

2.4 Отрисовка FVG

Состояние Левый край Правый край
Активный dfvg_bar[i] time_set (продлевается)
Митигированный dfvg_bar[i] time (момент митигации)

Количество отображаемых:

  • Активных: qty_pi (по умолчанию 1)
  • История: qty_mit_pi (по умолчанию 4)

3. БЛОК iFVG (Inversion FVG)

3.1 Концепция iFVG

iFVG - это FVG, который был ПРОБИТ ЗАКРЫТИЕМ свечи и инвертировал свою роль:

  • Supply FVG → становится iFVG Demand (поддержка)
  • Demand FVG → становится iFVG Supply (сопротивление)

ВАЖНО: Только ЗАКРЫТИЕ свечи создает iFVG, фитиль НЕ считается!

3.2 Структуры данных iFVG

// Pre-Inversion (копии FVG для отслеживания)
dfvg_R_top[], dfvg_R_bot[], dfvg_bar_R[]  // копия Demand FVG
sfvg_R_top[], sfvg_R_bot[], sfvg_bar_R[]  // копия Supply FVG

// Подтвержденные iFVG
dfvg_R2_top[], dfvg_R2_bot[], dfvg_bar_R2[]  // iFVG Demand
sfvg_R2_top[], sfvg_R2_bot[], sfvg_bar_R2[]  // iFVG Supply
d_i_fvg_col[], s_i_fvg_col[]  // цвета

3.3 Создание iFVG

iFVG Demand (из Supply FVG):

Условие: close > sfvg_R_top[0]
   1. Копируем данные из sfvg_R в dfvg_R2
   2. Удаляем из sfvg_R
   3. Устанавливаем цвет Col_ifvg_d

iFVG Supply (из Demand FVG):

Условие: close < dfvg_R_bot[0]
   1. Копируем данные из dfvg_R в sfvg_R2
   2. Удаляем из dfvg_R
   3. Устанавливаем цвет Col_ifvg_s

3.4 Митигация iFVG

  • iFVG Demand: low <= dfvg_R2_bot[0]
  • iFVG Supply: high >= sfvg_R2_top[0]

3.5 Отрисовка iFVG

Аналогично FVG:

  • Активный: продлевается до time_set
  • Митигированный: фиксируется до time

4. БЛОК LIQUIDITY (Ликвидность)

4.1 Определение Swing точек

sw_H = ta.pivothigh(high, Len, Len)
sw_L = ta.pivotlow(low, Len, Len)

Len = Liquidity Pivot Strength (по умолчанию 5)

Переменные:

  • sw_high/sw_low - текущие значения свингов
  • Bar_sw_high/Bar_sw_low - бары свингов
  • sw_Dir_small - направление последнего свинга (1=вверх, -1=вниз)

4.2 Структуры данных ликвидности

// Supply Liquidity (Swing High)
lid_sup[]      - массив уровней
lid_bar_sup[]  - массив времени

// Demand Liquidity (Swing Low)
lid_dem[]      - массив уровней
lid_bar_dem[]  - массив времени

// Размер: ar_q = 9000

4.3 Добавление уровней ликвидности

// Supply (при новом Swing High)
if Ch_swh AND sw_high >= ph:
    unshift_remove(lid_sup, sw_high)
    unshift_remove(lid_bar_sup, time[bar_index-Bar_sw_high])

// Demand (при новом Swing Low)
if Ch_swl AND sw_low <= pl:
    unshift_remove(lid_dem, sw_low)
    unshift_remove(lid_bar_dem, time[bar_index-Bar_sw_low])

4.4 Sweep ликвидности (пробитие)

Demand Liquidity Sweep:

Условие: low <= lid_dem[0]
Результат:
   - break_dem := true
   - value_dem_lid := пробитый уровень
   - pre_bar_Dlid_left := время начала
   - pre_bar_Dlid_right := time (время пробития)
   - Уровень удаляется из массива

Supply Liquidity Sweep:

Условие: high >= lid_sup[0]
Результат:
   - break_sup := true
   - value_sup_lid := пробитый уровень
   - pre_bar_Slid_left := время начала
   - pre_bar_Slid_right := time

4.5 Отрисовка ликвидности

Состояние Левый край Правый край
Активный lid_bar time_set (продлевается)
После sweep lid_bar_left lid_bar_right (фиксирован)

Количество:

  • Активных: Lid_show (по умолчанию 2)
  • История: Lid_ss (по умолчанию 4)

5. БЛОК MARKET STRUCTURE (Структура рынка)

5.1 Переменные структуры

In_Dir_Big    - глобальный тренд (1=бычий, -1=медвежий)
In_Dir_small  - локальное направление
In_High       - подтвержденный структурный High
In_Low        - подтвержденный структурный Low
Bar_In_High   - бар структурного High
Bar_In_Low    - бар структурного Low
CF_In_High    - флаг: структурный High подтвержден
CF_In_low     - флаг: структурный Low подтвержден
i_high/i_low  - текущие непроверенные High/Low

5.2 Valid Pullback условия

// Условие 1: Pivot подтвержден
valid_pivot_high = pivothigh существует (Len_in баров)
valid_pivot_low = pivotlow существует (Len_in баров)

// Условие 2: Откат подтвержден
if valid_con == 'Close':
    valid_cf_high = close < low[bar_index-Bar_i_high]
    valid_cf_low = close > high[bar_index-Bar_i_low]
else:  // 'High/Low'
    valid_cf_high = low < low[bar_index-Bar_i_high]
    valid_cf_low = high > high[bar_index-Bar_i_low]

5.3 Определение BOS и MSS

BOS (Break of Structure) - продолжение тренда:

// В бычьем тренде (In_Dir_Big == 1):
In_Break_Up = close > In_High AND CF_In_High = true
   → Рисуется "BOS" вверх

// В медвежьем тренде (In_Dir_Big == -1):
In_Break_Down = close < In_Low AND CF_In_low = true
   → Рисуется "BOS" вниз

MSS (Market Structure Shift) - смена тренда:

// Бычий → Медвежий:
In_Break_Down = close < In_Low AND CF_In_low = true AND In_Dir_Big == 1
   → In_Dir_Big := -1
   → Рисуется "MSS" вниз

// Медвежий → Бычий:
In_Break_Up = close > In_High AND CF_In_High = true AND In_Dir_Big == -1
   → In_Dir_Big := 1
   → Рисуется "MSS" вверх

5.4 Обновление структурных точек

// При подтверждении High:
if CF_In_High AND valid_cf_high AND valid_pivot_high:
    Ch_In_H := true
    In_High := i_high
    Bar_In_High := Bar_i_high
    In_Dir_small := -1

// При подтверждении Low:
if CF_In_low AND valid_cf_low AND valid_pivot_low:
    Ch_In_L := true
    In_Low := i_low
    Bar_In_Low := Bar_i_low
    In_Dir_small := 1

5.5 Отрисовка BOS/MSS

Состояние Левый край Правый край
Активный (CF=true) время структурной точки time_set
После пробоя время структурной точки time (момент пробоя)
CF=false линия удаляется -

6. БЛОК ENTRY CONDITIONS

6.1 Последовательность для BUY SETUP

┌────────────────────────────────────────────────────────────────┐
│ ШАГ 1: Liquidity Sweep                                         │
│   Условие: break_dem = true                                    │
│            AND close > value_dem_lid                           │
│            AND open > value_dem_lid                            │
│   Результат: con_buy := true                                   │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 2: Проверка тренда                                         │
│   Условие: up_trend = true (In_Dir_Big == 1)                   │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 3: Проверка iFVG Demand                                    │
│   Условие: dfvg_R2_bot[0] существует                           │
│            AND value_dem_lid < dfvg_R2_bot[0]                  │
│   (уровень ликвидности НИЖЕ iFVG)                              │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 4: Проверка Gap между iFVG и FVG                           │
│   Расчет: FVG_gap_buy = |dfvg_R2_top[0] - dfvg_bot[0]|        │
│   Условие: FVG_gap_buy >= atr_check_FVG_min                    │
│            AND FVG_gap_buy <= atr_check_FVG_max                │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 5: Дополнительные фильтры                                  │
│   - EQ_entry_buy (Premium/Discount зона)                       │
│   - size_FVG_con_dem (размер FVG)                              │
│   - size_iFVG_con_dem (размер iFVG)                            │
│   - con_mix_dem (позиция FVG относительно iFVG)                │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 6: Сигнал                                                  │
│   if con_buy AND Check_gap_buy:                                │
│       buy_signal := true                                       │
└────────────────────────────────────────────────────────────────┘

6.2 Последовательность для SELL SETUP

┌────────────────────────────────────────────────────────────────┐
│ ШАГ 1: Liquidity Sweep                                         │
│   Условие: break_sup = true                                    │
│            AND close < value_sup_lid                           │
│            AND open < value_sup_lid                            │
│   Результат: con_sell := true                                  │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 2: Проверка тренда                                         │
│   Условие: down_trend = true (In_Dir_Big == -1)                │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 3: Проверка iFVG Supply                                    │
│   Условие: sfvg_R2_top[0] существует                           │
│            AND value_sup_lid > sfvg_R2_top[0]                  │
│   (уровень ликвидности ВЫШЕ iFVG)                              │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 4: Проверка Gap между iFVG и FVG                           │
│   Расчет: FVG_gap_sell = |sfvg_R2_bot[0] - sfvg_top[0]|       │
│   Условие: FVG_gap_sell >= atr_check_FVG_min                   │
│            AND FVG_gap_sell <= atr_check_FVG_max               │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 5: Дополнительные фильтры                                  │
│   - EQ_entry_sell (Premium/Discount зона)                      │
│   - size_FVG_con_sup (размер FVG)                              │
│   - size_iFVG_con_sup (размер iFVG)                            │
│   - con_mix_sup (позиция FVG относительно iFVG)                │
├────────────────────────────────────────────────────────────────┤
│ ШАГ 6: Сигнал                                                  │
│   if con_sell AND Check_gap_sell:                              │
│       sell_signal := true                                      │
└────────────────────────────────────────────────────────────────┘

6.3 Инвалидация условий

// Buy условие отменяется:
if close < value_dem_lid:        // цена закрылась ниже пробитого уровня
    con_buy := false

if not con_time AND con_time[1]: // вышли из торговой сессии
    con_buy := false

// Sell условие отменяется:
if close > value_sup_lid:        // цена закрылась выше пробитого уровня
    con_sell := false

7. РАСЧЕТ ENTRY / STOP LOSS / TAKE PROFIT

7.1 Для Buy

sl_cal_long = dfvg_R2_bot[0]        // Низ iFVG
entry_b = dfvg_R2_top[0]            // Верх iFVG

// Entry с учетом Entry Zone (fibo_entry: 0-100)
open_long = entry_b - |fibo_entry/100 * (entry_b - sl_cal_long)|

// Stop Loss с учетом ATR буфера
risk_pips = atr_sl * x_ATR
stop_loss_long = sl_cal_long - risk_pips

// Take Profit по Risk:Reward
take_profit_long = open_long + (open_long - stop_loss_long) * rr_ratio

7.2 Для Sell

sl_cal_short = sfvg_R2_top[0]       // Верх iFVG
entry_s = sfvg_R2_bot[0]            // Низ iFVG

// Entry с учетом Entry Zone
open_short = entry_s + |fibo_entry/100 * (sl_cal_short - entry_s)|

// Stop Loss с учетом ATR буфера
stop_loss_short = sl_cal_short + risk_pips

// Take Profit по Risk:Reward
take_profit_short = open_short - (stop_loss_short - open_short) * rr_ratio

7.3 Параметры

Параметр По умолчанию Описание
fibo_entry 0 Позиция входа внутри iFVG (0=край, 50=середина)
x_ATR 0.5 Множитель ATR для буфера SL
rr_ratio 3 Соотношение Risk:Reward
length_atr 50 Период ATR

8. НАСТРОЙКИ ПРИОРИТЕТА FVG vs iFVG

8.1 Параметры

Параметр По умолчанию Описание
iFVG_be_FVG false Может ли FVG перекрывать iFVG
Con_FVG_mix false Принимать оба варианта расположения

8.2 Логика для Buy

con_mix_dem = Con_FVG_mix ? true :
    (not iFVG_be_FVG ?
        dfvg_bot[0] >= dfvg_R2_top[0] :  // FVG ВЫШЕ iFVG (без перекрытия)
        dfvg_bot[0] < dfvg_R2_top[0])    // FVG может перекрывать iFVG

8.3 Логика для Sell

con_mix_sup = Con_FVG_mix ? true :
    (not iFVG_be_FVG ?
        sfvg_top[0] <= sfvg_R2_bot[0] :  // FVG НИЖЕ iFVG (без перекрытия)
        sfvg_top[0] > sfvg_R2_bot[0])    // FVG может перекрывать iFVG

8.4 Визуальное представление

Buy Setup (iFVG_be_FVG = false):

          ┌─────────┐
          │   FVG   │  ← ВЫШЕ
          └─────────┘
     ═══════════════════  ← Gap (проверяется Min/Max)
          ┌─────────┐
          │  iFVG   │  ← Entry здесь
          └─────────┘
    ────────────────────  ← Liquidity Level (пробит)

Sell Setup (iFVG_be_FVG = false):

    ────────────────────  ← Liquidity Level (пробит)
          ┌─────────┐
          │  iFVG   │  ← Entry здесь
          └─────────┘
     ═══════════════════  ← Gap (проверяется Min/Max)
          ┌─────────┐
          │   FVG   │  ← НИЖЕ
          └─────────┘

9. ОТМЕНА PENDING ORDERS

9.1 Условие A - Противоположный Sweep

cancel_pending_A = true (по умолчанию)

// При Buy sweep → отменяется pending Sell
if break_dem AND pending_sell AND cancel_pending_A:
    strategy.cancel("Short")
    pending_sell := false

// При Sell sweep → отменяется pending Buy
if break_sup AND pending_buy AND cancel_pending_A:
    strategy.cancel("Long")
    pending_buy := false

9.2 Условие B - Новый сигнал

cancel_pending_B = true (по умолчанию)

if (buy_signal OR sell_signal) AND cancel_pending_B:
    if pending_buy:
        strategy.cancel("Long")
        pending_buy := false
    if pending_sell:
        strategy.cancel("Short")
        pending_sell := false

9.3 Условие C - Выход из сессии

cancel_pending_C = true (по умолчанию)

if con_time[1] AND not con_time AND cancel_pending_C:
    // Отменяем все pending ордера

10. ПРАВИЛА ОТРИСОВКИ

10.1 Общие переменные

// Правый край для активных объектов (продлевается)
time_set = last_bar_time + ((time-time[1]) * distance_bar_line)

// Позиция меток
time_lbl = last_bar_time + ((time-time[1]) * distance_bar_label)

// Смещение для history boxes
n_bar = (timeframe.in_seconds * 1000) * 5
gap_bar = (timeframe.in_seconds * 1000)

10.2 Таблица состояний отрисовки

Элемент Активный После события
FVG left=dfvg_bar, right=time_set right=time (митигация)
iFVG left=dfvg_bar_R2, right=time_set right=time (митигация)
Liquidity left=lid_bar, right=time_set right=time (sweep)
BOS/MSS left=время точки, right=time_set right=time (пробой)

10.3 Количество отображаемых объектов

Элемент Активные История
FVG qty_pi (1) qty_mit_pi (4)
iFVG qty_pi (1) qty_mit_pi (4)
Liquidity Lid_show (2) Lid_ss (4)

11. ЖИЗНЕННЫЙ ЦИКЛ ЭЛЕМЕНТОВ

11.1 FVG

Создание: low > high[2] (Demand) или high < low[2] (Supply)
    ↓
Активный: отрисовывается с продлением вправо
    ↓
Частичная митигация: цвет меняется
    ↓
Полная митигация: удаляется, создается history box

11.2 iFVG

FVG создан
    ↓
Копируется в Pre-Inversion массив
    ↓
Close пробивает FVG → создается iFVG (инверсия)
    ↓
Активный: отрисовывается с продлением вправо
    ↓
Митигация: удаляется, создается history box

11.3 Liquidity

Swing High/Low определен
    ↓
Добавляется в массив ликвидности
    ↓
Активный: линия продлевается вправо
    ↓
Sweep (low/high достигает уровня) → линия фиксируется, создается history

11.4 BOS/MSS

Структурная точка подтверждена (CF=true)
    ↓
Активный: линия продлевается вправо
    ↓
Close пробивает структуру → линия фиксируется
    ↓
Новый структурный пробой в противоположную сторону → старая линия удаляется

12. ДИАГРАММА ПОТОКА СИГНАЛА

                    ┌──────────────────┐
                    │  Liquidity Sweep │
                    │   (break_dem/sup)│
                    └────────┬─────────┘
                             │
                    ┌────────▼─────────┐
                    │ Close > уровень? │
                    │ (подтверждение)  │
                    └────────┬─────────┘
                             │ да
                    ┌────────▼─────────┐
                    │  con_buy/sell    │
                    │    := true       │
                    └────────┬─────────┘
                             │
          ┌──────────────────┼──────────────────┐
          │                  │                  │
    ┌─────▼─────┐     ┌──────▼──────┐    ┌─────▼─────┐
    │  Тренд?   │     │ iFVG есть?  │    │ FVG есть? │
    │ (up/down) │     │             │    │           │
    └─────┬─────┘     └──────┬──────┘    └─────┬─────┘
          │                  │                  │
          └──────────────────┼──────────────────┘
                             │ все да
                    ┌────────▼─────────┐
                    │  Gap проверка    │
                    │  (Min <= Gap     │
                    │      <= Max)     │
                    └────────┬─────────┘
                             │ да
                    ┌────────▼─────────┐
                    │ Доп. фильтры     │
                    │ (EQ, Size, Mix)  │
                    └────────┬─────────┘
                             │ все да
                    ┌────────▼─────────┐
                    │  buy/sell_signal │
                    │     := true      │
                    └────────┬─────────┘
                             │
                    ┌────────▼─────────┐
                    │  Расчет Entry    │
                    │  SL, TP          │
                    └────────┬─────────┘
                             │
                    ┌────────▼─────────┐
                    │  Pending Order   │
                    │  выставлен       │
                    └──────────────────┘

13. СПИСОК ВХОДНЫХ ПАРАМЕТРОВ

13.1 Entry Condition

Параметр Тип По умолчанию Описание
rr_ratio float 3 Risk:Reward
length_atr int 50 Период ATR для SL
x_ATR float 0.5 Множитель ATR для буфера SL
fibo_entry float 0 Позиция входа в iFVG (0-100)
iFVG_be_FVG bool false Перекрытие FVG и iFVG
Con_FVG_mix bool false Принимать оба варианта
FVG_min_ATR float 0.01 Мин. размер Gap (x ATR)
FVG_max_ATR float 0.2 Макс. размер Gap (x ATR)
Filter_size_FVG bool false Фильтр размера FVG
FVG_min/max float 0.1/0.5 Границы размера FVG
Filter_size_iFVG bool false Фильтр размера iFVG
iFVG_min/max float 0.1/0.5 Границы размера iFVG
Len int 5 Сила Liquidity Pivot
Follow_trend bool true Торговля по тренду
Len_in int 10 Сила структурного pivot
valid_con string 'Close' Валидация пробоя
EQ_con bool false Premium/Discount фильтр
Pre_Dis/Pre_Dis2 float 50/80 Границы P/D зоны
cancel_pending_A bool true Отмена при противоположном sweep
cancel_pending_B bool true Отмена при новом сигнале
cancel_pending_C bool true Отмена при выходе из сессии
B_long bool true Разрешить Long
S_short bool true Разрешить Short

13.2 Display

Параметр Тип По умолчанию Описание
SD_fvg bool true Показывать FVG
SD_i_fvg bool true Показывать iFVG
qty_pi int 1 Количество активных FVG
Mit_Pi bool true Показывать историю
qty_mit_pi int 4 Количество истории
show_swing_lid bool true Показывать свинги
show_lid bool true Показывать ликвидность
Lid_show int 2 Количество активных уровней
mi_lid bool true Показывать историю ликвидности
Lid_ss int 4 Количество истории
Show_Structure bool true Показывать структуру
distance_bar_line int 40 Отступ линий вправо
distance_bar_label int 20 Отступ меток вправо

14. ПОТЕНЦИАЛЬНЫЕ ПРОБЛЕМЫ ОТРИСОВКИ

14.1 Описание проблем

  1. Линии не прекращают рисоваться после пробития

    • Причина: условия обновления выполняются на каждом баре
    • Нужно: добавить флаги завершения отрисовки
  2. FVG накладываются друг на друга

    • Причина: несколько FVG в одной зоне
    • Нужно: проверять перекрытие и объединять или скрывать
  3. iFVG накладываются на FVG

    • Причина: iFVG создается из FVG в той же зоне
    • Нужно: учитывать настройку iFVG_be_FVG

14.2 Рекомендации

  1. Добавить флаги is_mitigated для каждого элемента
  2. При митигации устанавливать right_edge_fixed = true
  3. Проверять перекрытие перед отрисовкой
  4. Использовать z-index или прозрачность для наложений

15. СЛЕДУЮЩИЕ ШАГИ РЕАЛИЗАЦИИ

После утверждения этой архитектуры, работа будет вестись по блокам:

  1. Блок FVG - исправить отрисовку и митигацию
  2. Блок iFVG - исправить создание и отрисовку
  3. Блок Liquidity - исправить определение и sweep
  4. Блок Structure - исправить BOS/MSS
  5. Блок Entry - собрать все условия вместе
  6. Блок Visualization - добавить маркеры Entry/SL/TP

Каждый блок будет отлаживаться отдельно с визуальной проверкой.