Ind_Aleks_ICT_Entry_V2_TS_I.../ARCHITECTURE.md

791 lines
33 KiB
Markdown

2026-02-10 21:54:56 +03:00
# Архитектура скрипта 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
Каждый блок будет отлаживаться отдельно с визуальной проверкой.