Tollgate Spread Atlas
- Утилиты
-
Syarief Azman Bin Rosli
Здравствуйте и добро пожаловать в мой официальный профиль MQL5!
Меня зовут Шариф Азман Бин Росли (Syarief Azman Bin Rosli). Я разработчик алгоритмических торговых систем и количественный инженер с более чем десятилетним опытом создания надежных решений для MetaTrader 5 и MetaTrader 4. - Версия: 1.0
- Активации: 10
Tollgate Spread Atlas показывает, сколько на самом деле стоит торговля у вашего брокера. Утилита читает реальную историю тиков символа графика и до 8 символов списка, строит карту спреда по часам недели (понедельник-пятница, 24 часа сервера), сравнивает текущий спред с типичным спредом текущего часа и переводит спред, комиссию и своп в стоимость полного цикла сделки и в долю от ATR на шести таймфреймах. Работает только на чтение: никогда не открывает, не изменяет и не закрывает сделки.
Быстрый старт
- Прикрепите утилиту к любому графику (например XAUUSD или EURUSD). Разрешение Algo Trading не нужно, так как она не торгует.
- Пока читается история (Lookback Window, по умолчанию 28 дней), панель показывает SCANNING TICK HISTORY и процент SCAN. Первое сканирование может занять минуту, пока терминал загружает тики.
- После этого карточка показывает LIVE SPREAD, TYPICAL, RATIO и статус: CHEAP, NORMAL, WIDE или SPIKE.
- Задайте Cost Calculator Lot Size равным вашему обычному лоту и выберите Commission Source.
- Для проверки наведите курсор на ячейку карты (подсказка) или нажмите CSV, чтобы сохранить атлас.
Как строится атлас
- Спред каждой котировки (ask минус bid, в целых пунктах) учитывается в течение секунд до следующей котировки, не дольше Max Seconds Credited Per Quote, поэтому пропуски и закрытый рынок ничего не добавляют. Вес определяется временем, а не числом тиков.
- Каждая ячейка (день x час сервера) хранит распределение спредов. Из него берутся MEDIAN, P90 (90-й перцентиль) и MEAN (среднее, взвешенное по времени). Значения точны до 31 пункта, дальше идут 16 шагов на каждое удвоение (показывается нижняя граница).
- Типичный спред = медиана текущей ячейки. Если в ячейке меньше Minimum Coverage For A Cell, берётся тот же час по всем дням, затем вся неделя. Источник показан как [CELL], [HOUR] или [WEEK].
- При включённом Add Live Quotes To The Atlas текущий спред каждого символа добавляется раз в секунду, пока его котировка свежая.
- Атлас перестраивается из истории раз в серверные сутки в Daily Rebuild Hour (окно сдвигается) и по кнопке RESCAN.
Правила статуса
RATIO = текущий спред / max(типичный, 1 пункт). Превышение = текущий минус типичный.
- SPIKE: RATIO не меньше SPIKE From и превышение не меньше Minimum Excess For WIDE / SPIKE.
- WIDE: RATIO не меньше WIDE From при том же правиле превышения.
- CHEAP: RATIO меньше CHEAP Below.
- NORMAL: всё остальное.
- NO DATA: ещё нет котировки или нет типичного спреда.
Правило превышения не даёт raw и ECN счетам (типичный 0-2 пункта) реагировать на мелкие изменения.
Панель
Заголовок
- LED: зелёный или бирюзовый (NORMAL, CHEAP), янтарный (WIDE или сканирование), красный (SPIKE), серый (NO DATA).
- TOLLGATE SPREAD ATLAS, символ в фокусе и SERVER TIME (все часы указаны по времени сервера брокера).
- [-] сворачивает панель в плашку с TSA, символом, отношением и статусом; [+] разворачивает.
Карточка текущего спреда
- LIVE SPREAD в пунктах (и в пипсах для 3/5-значных символов).
- TYPICAL с источником [CELL], [HOUR] или [WEEK]; RATIO; значок статуса.
- Шкала от 0 до 3 типичных спредов (METER 0-3x) с белыми метками на CHEAP Below, WIDE From и SPIKE From.
- TODAY MAX: самый широкий спред с полуночи сервера; число прочитанных котировок; глубина истории в днях.
Карточка стоимости (ROUND-TRIP COST, валюта счёта)
- SPREAD: стоимость спреда на лот при текущем и типичном спреде (пункты x стоимость тика x пункт / размер тика x лоты).
- COMMISSION за лот за сторону с источником: [HISTORY] (из ваших сделок), [FIXED] или [NONE].
- TOTAL: полный цикл при текущем и типичном спреде (спред + 2 x комиссия x лоты) и текущий итог в пунктах.
- SWAP / NIGHT для покупки (L) и продажи (S) на лот и день тройного свопа (3x WED). Свопы в пунктах или в валюте депозита пересчитываются; другие режимы показывают исходное значение с единицей (валюта/LOT, %/YEAR или RAW). SWAP OFF, если свопы отключены.
- COST / ATR: текущая стоимость цикла в цене, делённая на ATR последнего закрытого бара, x 100, для M1, M5, M15, H1, H4 и D1. Зелёный ниже 5%, янтарный 5-15%, коралловый от 15%; полоса заполнена при 30%. Большое значение означает, что издержки съедают значительную часть типичного бара на этом таймфрейме.
Кнопки
- METRIC: MEDIAN / METRIC: P90 / METRIC: MEAN переключает показатель карты.
- RESCAN перечитывает комиссию и заново строит все атласы из истории.
- CSV сохраняет атлас в фокусе (после сканирования) в MQL5\Files\Tollgate_<SYMBOL>.csv.
- ALERTS ON / ALERTS OFF включает или выключает оповещения SPIKE в этой сессии.
- click cell = pin: напоминание, что ячейки можно закрепить.
Изменения кнопками возвращаются к входным параметрам при повторной инициализации (смена таймфрейма, повторное прикрепление, перезапуск).
Карта (HOUR-OF-WEEK ... SPREAD)
- Строки MON-FRI, столбцы 00-23 часа сервера. Цвет = значение ячейки / тот же показатель за всю неделю (WEEK MEDIAN, WEEK P90 или WEEK MEAN): бирюзовый 0.6x и ниже, зелёный 1.0x, золотой 1.6x, коралловый 2.6x и выше. Тёмные ячейки = нет данных (покрытие ниже минимума).
- Золотая рамка = текущий час (now). Белая рамка = закреплённая ячейка.
- Подсказка: медиана, P90, среднее и покрытие ячейки. Щелчок закрепляет ячейку, повторный щелчок снимает закрепление.
- Строка деталей: NOW (текущая ячейка) или PINNED с MEDIAN, P90, MEAN и COVERAGE.
- CHEAPEST HOURS и DEAREST HOURS: три часа сервера с самым низким и самым высоким взвешенным средним спредом по всем дням.
- Котировки выходных учитываются в значениях HOUR и WEEK, но не рисуются. Карта обновляется каждые 30 секунд.
Список символов
Столбцы WATCHLIST, LIVE, TYPICAL, RATIO, STATUS и COST/ATR H1 (текущий цикл к ATR H1). Щелчок по строке делает этот символ фокусом всей панели (строка подсвечена). NOT FOUND = у брокера нет такого символа; SCANNING = история ещё загружается; no watchlist symbols при пустом списке.
Оповещения
Если символ (графика или списка) остаётся в SPIKE в течение SPIKE Must Last секунд, отправляется одно оповещение на символ за период Alert Cooldown, например: [Tollgate Atlas] XAUUSD spread SPIKE 51 pts = 5.1x typical 10 pts (THU 23:00 server) Оно пишется в журнал «Эксперты» и отправляется через Terminal Pop-Up Alerts, Audible Alerts (alert.wav, только при выключенных окнах, так как у окна есть свой звук) и Push Notifications To Mobile (MetaQuotes ID в Сервис, Настройки, Уведомления).
Флаги для других советников (глобальные переменные терминала)
При включённом Publish Terminal Global Variables каждую секунду после сканирования для каждого символа:
- TSA_<SYMBOL>_RATIO: текущий / типичный.
- TSA_<SYMBOL>_TYPICAL: типичный спред в пунктах (-1 = нет данных).
- TSA_<SYMBOL>_OK: 1 = CHEAP или NORMAL, 0 = WIDE или SPIKE, -1 = NO DATA.
Они удаляются при снятии утилиты.
if(GlobalVariableCheck("TSA_EURUSD_OK") && GlobalVariableGet("TSA_EURUSD_OK") == 0)
return; // spread is WIDE or SPIKE: skip new entries Побочные эффекты
- Добавляет символы списка в «Обзор рынка». Создаёт объекты графика с Object Name Prefix (удаляются вместе с утилитой). Использует таймер 250 мс.
- Пишет файл только по кнопке CSV: 168 строк с day, hour, median_pts, p90_pts, mean_pts, coverage_min (-1 = нет данных).
Параметры
- Lookback Window (28, 3-90 календарных дней): глубина истории на символ.
- Max Seconds Credited Per Quote (60, 5-600): предел на котировку.
- Minimum Coverage For A Cell (15 минут): ниже ячейка считается пустой, и типичный спред берётся из запасного источника.
- Heatmap Metric (Median Spread): Median Spread, 90th Percentile Spread или Time-Weighted Mean Spread при запуске.
- Add Live Quotes To The Atlas (true): обучение на живых котировках.
- Daily Rebuild Hour (3, время сервера, -1 = никогда): ежедневная перестройка после ролловера.
- CHEAP Below (0.85), WIDE From (1.5), SPIKE From (2.5): пороги отношения.
- Minimum Excess For WIDE / SPIKE (5 пунктов).
- Cost Calculator Lot Size (1.0).
- Commission Source (From Account History): From Account History, Fixed Per Lot Per Side или No Commission.
- Fixed Commission (3.5 за лот за сторону): также запасное значение, если в истории нет сделок.
- Commission History Window (90 дней).
- ATR Period For Cost Burden (14).
- Watchlist Symbols ("EURUSD,GBPUSD,USDJPY,XAUUSD", не более 8, точные имена брокера с суффиксами).
- Alert On SPIKE (true), SPIKE Must Last (5 с), Alert Cooldown (15 минут).
- Terminal Pop-Up Alerts (true), Push Notifications To Mobile (false), Audible Alerts (true).
- Publish Terminal Global Variables (true).
- Object Name Prefix ("TSA_"): измените, чтобы запустить две копии на одном графике.
- HUD Chart Corner (Top Left; Top Right, Bottom Left, Bottom Right), HUD X Offset (16), HUD Y Offset (24) в пикселях.
- Panel Scale (1.0, 0.5-2.5): множитель размера поверх масштабирования Windows.
- Start Minimized (false).
Типичные настройки
- Скальпинг на M1: Heatmap Metric 90th Percentile Spread, WIDE From 1.3, SPIKE From 2.0, Minimum Excess For WIDE / SPIKE 2; торгуйте в CHEAPEST HOURS и смотрите COST / ATR на M1.
- Золото: Lookback Window 42, SPIKE From 3.0, Minimum Excess For WIDE / SPIKE 15, Alert Cooldown 30, Push Notifications To Mobile true.
- Счёт raw или ECN: Heatmap Metric Time-Weighted Mean Spread, Commission Source From Account History, Minimum Excess For WIDE / SPIKE 5.
- Фильтр для советника: Alert On SPIKE false, Publish Terminal Global Variables true и фрагмент выше в вашем советнике.
Примечания и ограничения
- Глубина истории зависит от брокера; некоторые хранят тики лишь за несколько недель.
- В тестере стратегий атлас строится по тикам тестера: используйте "Every tick based on real ticks", чтобы видеть реальные спреды.
- Спреды различаются у разных брокеров и типов счетов, а прошлые спреды не гарантируют будущих. Утилита измеряет издержки; она не прогнозирует цены и результаты. Торговля связана с риском убытков.
