Commit graph

40 commits

Author SHA1 Message Date
Alexnik90
7c7a9f484a 2026-03-26 18:45:10 +03:00
142b0e2556 fix: use close[1] for FVG zone visibility to prevent flickering
When trend_only filter is on, zones no longer disappear/reappear
as price enters/exits the zone intra-bar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:25:26 +03:00
59c271d012 docs: spec for FVG visibility close[1] fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:21:01 +03:00
Alexnik90
320ea1699a фикс файл проекта 2026-03-06 18:29:25 +03:00
a51639e189 feat: inp_qty_fvg_hist bar-window semantics (was zone count)
- FVG_MAX_STORAGE=50 fixed capacity per zone type (was tied to param)
- m_qty_history → m_hist_bars: parameter now means "bars back"
- ApplyVisibility: bar-window filter (right_edge <= m_hist_bars)
- inp_qty_fvg_hist=0 shows only active zones, default changed to 500

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 14:04:58 +03:00
c13e7e6180 docs: implementation plan for fvg-hist-bars
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 13:54:29 +03:00
21cbc1504f docs: design for inp_qty_fvg_hist bar-window semantics
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 13:52:53 +03:00
748c66bab2 docs: update CLAUDE.md with Equilibrium filter params and CalcDirBig buffer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:28:21 +03:00
11edbf40f9 feat: Equilibrium filter in UpdateBar0() and ApplyVisibility()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:27:16 +03:00
ce8b1ba241 feat: Equilibrium filter in CFVGModule::Calculate()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:18:29 +03:00
4b9446be19 feat: CFVGModule Init + PassesEqFilter + ResolveEqLevel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 11:06:00 +03:00
6f081b755a feat: add CalcDirBig buffer for per-bar trend direction
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:59:11 +03:00
fbe40d2f2f feat: add FVG Equilibrium filter input parameters
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:38:17 +03:00
a095aade15 docs: implementation plan for FVG Equilibrium filter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:30:25 +03:00
42d2be26ea docs: дизайн фильтра FVG/iFVG по Equilibrium
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:25:09 +03:00
Alexnik90
65f3e1c83c изменил настройки по умолчанию 2026-03-05 09:41:26 +03:00
d32645030d feat(CEquilibrium): динамический Equilibrium после пробоя BOS/MSS
Добавлен динамический режим в CEquilibrium: после пробоя BOS/MSS
линия Equilibrium автоматически обновляется по новым экстремумам цены
(running max/min), пока не появится следующий BOS/MSS.

Изменения:
- Новые поля: m_dynamic_mode, m_break_dir, m_track_high/low, m_break_bar
- Calculate() принимает price_high/price_low для трекинга
- Backfill от бара пробоя до текущего при каждом обновлении экстремума
- AdjustShift корректирует m_break_bar при новом баре (AS_SERIES)
- Геттеры также обновляются в dynamic mode
- CSwingDetector передаёт high[bar]/low[bar] в Calculate()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 13:51:14 +03:00
72ea8ea436 Переработка CEquilibrium: стабильные уровни + триггер по ch_in_h/ch_in_l
Корневая причина бага: уровень Equilibrium вычислялся через i_high/i_low
(неподтверждённые экстремумы), которые нестабильны и сбрасываются после
BOS/MSS (Step 9). Триггер обновления bar_eq != m_bar_eq_prev не срабатывал
когда MathMax возвращал тот же старый свинг.

Исправления:
1. Разделение расчёта: геттеры (Entry сигналы) используют динамические
   i_high/i_low, буферы — только подтверждённые in_high/in_low
2. Триггер отрисовки: ch_in_h || ch_in_l вместо bar_eq != m_bar_eq_prev
3. Backfill от ИЗМЕНЁННОГО свинга (bar_in_high/bar_in_low), не от MathMax
4. Добавлен AdjustShift для синхронизации m_bar_eq_prev при новом баре
5. Удалены неиспользуемые поля m_eq_level/m_eq_level2_p/m_eq_level2_d
6. Добавлены m_fixed_eq/m_fixed_prem2/m_fixed_disc2 для фиксации уровней

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 01:37:21 +03:00
d63009d057 Изменения в Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5
1. Input-параметры сгруппированы в 7 групп через input group:

Основные параметры — сила пивота, бары, тренд
ZigZag и Liquidity Swings — цвет/стиль/толщина ZigZag + цвет/размер точек
Structure Swings — цвет/размер точек
BOS / MSS — раздельные цвета Up/Dn, стиль, толщина для BOS и MSS
Уровни ликвидности — показать/скрыть, цвет, размер ближних/дальних
Equilibrium / Premium / Discount — %, фильтр, цвет/стиль/толщина
FVG / iFVG — раздельные цвета для объектов (inp_fvg_obj_col) и буферов (inp_fvg_buf_col)
2. OnInit() — добавлен блок PlotIndexSetInteger для всех 18 плотов, применяющий input-цвета/стили/толщины динамически.

3. FVG — цвет DRAW_FILLING буферов теперь берётся из inp_fvg_buf_col/inp_ifvg_buf_col (не clrNONE), цвет OBJ_RECTANGLE — из inp_fvg_obj_col/inp_ifvg_obj_col.

Было: 15 параметров без группировки. Стало: ~40 параметров в 7 группах.
2026-02-21 21:20:40 +03:00
66094c43b4 Что было исправлено
Баг: 4 буфера INDICATOR_CALCULATIONS (calc_b_sw_high, calc_b_sw_low, calc_bar_sw_high, calc_bar_sw_low) хранили абсолютные AS_SERIES индексы баров. В инкрементальном режиме (тестер) эти индексы устаревали — ячейки буфера сдвигались с каждым новым баром, а значения внутри — нет. Через b_len баров lookback-индекс отставал на b_len позиций, что приводило к:

ZigZag на неправильных барах (хаотичные сегменты)
Каскадной порче состояния через "unexpected pivot" кейсы (строки 838-839, 932-933)
Фикс: Хранение относительных смещений (offset = absolute - bar) вместо абсолютных индексов. При чтении: lb_idx + offset корректно реконструирует текущий абсолютный индекс как в initial, так и в incremental режиме.

Изменено 8 строк в CSwingDetector.mqh (2 локации: запись строки 473-478, чтение строки 542-547).
2026-02-21 10:08:34 +03:00
0339b7b735 удалил скрины ошибок 2026-02-21 09:09:56 +03:00
e6773cf988 Что было сделано:
Добавлено 12 строк в CSwingDetector.mqh:422-436 — корректировка 8 сохранённых AS_SERIES индексов баров при появлении нового бара в инкрементальной ветке Calculate().
2026-02-21 09:08:31 +03:00
Alexnik90
deade15f6a new files added 2026-02-20 23:46:52 +03:00
cb0bdcc00e Что исправлено:
Шаг 6 в Calculate() — после буферной логики, цикл расширяет OBJ_RECTANGLE всех активных зон (не только новейшей)
UpdateBar0() — после буферной логики, цикл расширяет все активные зоны до TimeCurrent(), независимо от тренда
Теперь:

inp_fvg_trend_only = false: все активные зоны тянутся до bar 0
inp_fvg_trend_only = true: все активные зоны тянутся до bar 0, но ApplyVisibility скрывает ненужные (не-тренд, выше/ниже цены, митигированные)
2026-02-19 20:49:35 +03:00
cb0746cf48 Что сделано:
CFVGModule.mqh — новый метод ApplyVisibility(int in_dir_big, double current_price):

Demand FVG/iFVG: видимы при in_dir_big == 1, активные, zone.top < current_price
Supply FVG/iFVG: видимы при in_dir_big == -1, активные, zone.bot > current_price
Переключает OBJPROP_TIMEFRAMES: OBJ_ALL_PERIODS / OBJ_NO_PERIODS
inp_show_fvg / inp_show_ifvg — мастер-выключатели для FVG и iFVG отдельно
Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5 — 3 новых input'а:

inp_show_fvg = true — показывать FVG
inp_show_ifvg = true — показывать iFVG
inp_fvg_trend_only = true — только активные зоны по тренду
2026-02-19 14:15:24 +03:00
71c78a9bfc Что изменено: удалены две строки в CFVGModule.mqh:409,420 — RemovePreInv из блока митигации FVG.
Теперь поток правильный:

FVG создан → dfvg + dfvg_R заполняются одновременно
FVG митигирован → dfvg замораживается, dfvg_R остаётся
Позже close < dfvg_R_bot → dfvg_R инвертируется в Supply iFVG
2026-02-18 15:04:45 +03:00
4274a025dc CFVGModule.mqh — исправления и финальная версия
Были исправлены 3 ключевых бага по сравнению с предыдущей версией:

m_dfvg_cnt-- после заморозки — убрано. Счётчик cnt = ВСЕГО зон (активные + замороженные). FindActiveZone() сканирует весь массив и корректно находит активные зоны даже если предыдущие уже заморожены.

PruneOldZones перемещён до UnshiftZone — теперь вызывается перед вставкой новой зоны, освобождая место и очищая бары старейшей зоны в буфере. Условие изменено с > max_allowed на >= max_cnt.

Упрощён шаг митигации — убраны while + break конструкции с двойным вызовом FindActiveZone(). Заменено на чистое if.

Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5 — добавления
indicator_buffers 28, indicator_plots 18
Plots 17-18: DRAW_FILLING с PLOT_EMPTY_VALUE = 0.0
Новые inputs: inp_qty_fvg_hist, inp_fvg_col, inp_ifvg_col
Буферы 24-27 с AS_SERIES = true
g_fvg.Init() в OnInit()
Отдельный цикл FVG в OnCalculate() (полный и инкрементальный)
g_fvg.UpdateBar0() вызывается каждый тик

Сделано одно изменение в Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5 — переставлены блоки SetIndexBuffer:

Было (нарушение):

16-23: INDICATOR_CALCULATIONS  ← посередине
24-27: INDICATOR_DATA (FVG)    ← ПОСЛЕ calculations
Стало (правильно):

16-19: INDICATOR_DATA (FVG_Top, FVG_Bot, IFVG_Top, IFVG_Bot)
20-27: INDICATOR_CALCULATIONS (CalcSsHigh..CalcBarSwLow)
Теперь все 20 INDICATOR_DATA буферов (0-19) стоят перед 8 INDICATOR_CALCULATIONS (20-27). PlotIndexSetDouble/Integer и ArraySetAsSeries не требовали изменений — они работают с plot-индексами и массивами соответственно, а не с buffer-индексами.

Всё готово. Итог изменений в Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5:

Место	Что изменено
OnInit() строки 243-246	clrNONE вместо inp_fvg_col/inp_ifvg_col — DRAW_FILLING скрыт
OnInit() строка 305	g_fvg.Init(qty, fvg_col, ifvg_col) — цвета переданы в модуль
OnCalculate() строки 389, 397	добавлен time в оба вызова g_fvg.Calculate()
OnDeinit()	g_fvg.Cleanup() — удаляет все OBJ_RECTANGLE при выгрузке
После перезагрузки индикатора на графике будут видны только OBJ_RECTANGLE прямоугольники (цвета из input), DRAW_FILLING полностью скрыт.
2026-02-18 12:06:38 +03:00
bc4d32cafc Что сделано:
Перестановка z-order: Liquidity буферы (plots 4-9) теперь идут ДО BOS/MSS/Equilibrium (plots 10-16). BOS и MSS рисуются поверх точек ликвидности.

DRAW_LINE → DRAW_ARROW: Все 6 буферов ликвидности теперь рисуются точками (ромб 159). Width 2 для ближайших уровней (Up1/Dn1), width 1 для 2-го и 3-го. Больше никаких "ступенек" при смене уровня.

INDICATOR_CALCULATIONS остались на прежних индексах 16-23 — без изменений.
2026-02-18 00:33:53 +03:00
734bd25315 Реализация модуля CLiquidityLevels завершена и успешно скомпилирована. Вот краткое изложение того, что было сделано:
Создано:

CLiquidityLevels.mqh — новый модуль с кольцевым буферным хранилищем для уровней спроса/предложения, обнаружение развертки (каскадный время-loop), условия con_buy/con_sell с фильтрацией трендов

Изменено:

CSwingDetector.mqh — форвардное объявление, расширенный Calculate() с 8 новыми параметрами (время[], 6 буферов ликвидности, указатель CLiquidityLevels), обратный вызов в основном цикле после равновесия

Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5 — 24 буфера / 16 участков, 4 новых буфера DRAW_LINE (Вверх2/Вверх3/Dn2/Dn3), INDICATOR_CALCULATIONS смещены на индексы 16-23, g_liquidity init с параметром inp_show_lid

Сборник: 0 ошибок, 0 предупреждений.
Индикатор готов к визуальному тестированию на графике — вы должны увидеть до 6 зеленых горизонтальных линий (3 ближайших уровня предложения выше цены, 3 ближайших уровня спроса ниже). Когда уровень подметается, линии перескакивают на следующие доступные уровни.
2026-02-18 00:00:02 +03:00
b87eb29cfd Вот что было сделано:
Изменения в CEquilibrium.mqh:
3 случая расчёта вместо одного:
Case 1 (cf_in_low && !cf_in_high): Range = i_high - In_Low → Discount + Discount2
Case 2 (cf_in_high && !cf_in_low): Range = In_High - i_low → Premium + Premium2
Case 3 (оба подтверждены): полный расчёт, выбор по тренду
Исправлен баг: MathMin → MathMax в retroactive fill (AS_SERIES: больший индекс = старший бар)
2 новых буфера: buf_premium2[] и buf_discount2[] с отдельной отрисовкой и retroactive fill
2 новых метода: IsInDiscountZone(ifvg_bottom) и IsInPremiumZone(ifvg_top) для будущих Entry условий
Трекинг уровней: m_eq_level2_p / m_eq_level2_d для корректного retroactive fill второго уровня
Изменения в CSwingDetector.mqh:
Проброс buf_premium2[] и buf_discount2[] через Calculate() в CEquilibrium
Изменения в Ind_Aleks_ICT_Entry_V2_TS_Indie.mq5:
indicator_buffers 20, indicator_plots 12
2 новых плота: Premium2 и Discount2 (clrOrchid, STYLE_DOT, width 1)
CALCULATIONS буферы сдвинуты на индексы 12-19
Полная инициализация новых буферов (FullReset, new bar, AS_SERIES)
Визуальное поведение:
При inp_eq_con=false — только Equilibrium линия (как раньше)
При inp_eq_con=true — появляются Premium2 (сверху) и Discount2 (снизу) линии orchid цвета
2026-02-17 15:27:50 +03:00
52bec358f8 Вот что было сделано:
SStructureSwingState — добавлены поля up_trend и down_trend

CSwingDetector — добавлен m_follow_trend, обновлены Init() и ResetState()

ProcessStructureSwing() — флаги обновляются в 4 местах:

Инициализация тренда (in_dir_big = 1 и in_dir_big = -1)
Смена тренда при MSS (оба направления)
Логика:

follow_trend = true: бычий тренд → up_trend=true, down_trend=false; медвежий → наоборот
follow_trend = false: оба флага всегда true (торговля в обе стороны)
.mq5 — добавлен input bool inp_follow_trend = true и передаётся в Init()

Флаги доступны через GetStructureState().up_trend / .down_trend для будущего модуля Entry Signals.
2026-02-17 14:43:01 +03:00
9b9b573f74 фикс свингов структур 2026-02-17 11:11:57 +03:00
88355f21b4 теперь правильно отрисовывает эквилибриум. но есть проблема с отпределнием свингов структуры, как будто пропускает. 2026-02-17 09:57:07 +03:00
945fdfa6fd пытаюсь наладить правильную отрисовку. промежуточный результат 2026-02-17 09:52:38 +03:00
e7bf3e4213 добавили расчет equilibrium 2026-02-16 21:25:58 +03:00
87668ec818 обновили файл CLAUDE 2026-02-16 20:53:24 +03:00
Alexnik90
8dc660d07a 2026-02-10 23:05:10 +03:00
Alexnik90
0ca21a132b new files added 2026-02-10 21:54:56 +03:00
Alexnik90
40c21f0812 2026-02-10 21:51:53 +03:00
684bcc41c1 Initial commit: .gitignore + .claude settings 2026-02-10 21:50:37 +03:00