791 linhas
33 KiB
Markdown
791 linhas
33 KiB
Markdown
# Архитектура скрипта 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
|
|
|
|
Каждый блок будет отлаживаться отдельно с визуальной проверкой.
|