Turnstile Order Gateway

Библиотека MQL5 между вашим советником и OrderSend. Каждый запрос до отправки проходит 9 проверок (соединение, Algo Trading, режим символа, сессия, флаги типов ордеров, объём, стопы, маржа, OrderCheck). Закрытия и изменения, заблокированные уровнем заморозки, закрытой сессией или потерей связи, ставятся в очередь и отправляются позже. Сама библиотека никогда не торгует. Вы получаете скомпилированный Turnstile_Order_Gateway.ex5; эта страница - полный справочник API.

Быстрый старт

  1. Скопируйте Turnstile_Order_Gateway.ex5 в MQL5/Libraries (Файл > Открыть каталог данных).
  2. Вставьте блок #import ниже в ваш советник или скрипт.
  3. Необязательно: TOG_Configure в OnInit (по умолчанию 20, 3, 300, true, false).
  4. Вызывайте TOG_ProcessQueue в OnTick или OnTimer.
  5. Торгуйте через TOG_Open, TOG_Modify, TOG_Close. При 0 или false выведите TOG_ReasonText(TOG_LastReason()).
  6. Проверка: запустите пример ниже в тестере стратегий; журнал покажет тикет и причину. На реальном графике включите Algo Trading, иначе проверки вернут -3.

Объявление импорта (готово к копированию)

#import "Turnstile_Order_Gateway.ex5"
   void   TOG_Configure(int deviation, int retries, int delay_ms, bool adjust_stops, bool verbose);
   double TOG_NormalizeVolume(string symbol, double volume);
   double TOG_NormalizePrice(string symbol, double price);
   double TOG_RiskVolume(string symbol, ENUM_ORDER_TYPE type, double entry, double sl, double risk_money);
   double TOG_MaxVolume(string symbol, ENUM_ORDER_TYPE type, double share);
   ENUM_ORDER_TYPE_FILLING TOG_FillingMode(string symbol);
   int    TOG_CheckMarket(string symbol, ENUM_ORDER_TYPE type);
   int    TOG_CheckStops(string symbol, ENUM_ORDER_TYPE type, double price, double sl, double tp);
   int    TOG_CheckFreeze(ulong ticket);
   int    TOG_Preflight(string symbol, ENUM_ORDER_TYPE type, double volume, double price, double sl, double tp);
   ulong  TOG_Open(string symbol, ENUM_ORDER_TYPE type, double volume, double price, double sl, double tp, ulong magic, string comment);
   bool   TOG_Modify(ulong ticket, double price, double sl, double tp);
   bool   TOG_Close(ulong ticket, double volume);
   int    TOG_CloseAll(string symbol, long magic, bool pending);
   int    TOG_ProcessQueue();
   int    TOG_QueueCount();
   void   TOG_ClearQueue();
   int    TOG_LastReason();
   uint   TOG_LastRetcode();
   string TOG_ReasonText(int reason);
   int    TOG_RetcodeClass(uint retcode);
   int    TOG_GetStats(long &stats[]);
#import 

Коды причин

TOG_LastReason возвращает код, TOG_ReasonText - текст заглавными буквами.

  • 0 OK; 1 NO CHANGE (те же значения, ничего не отправлено); 2 DEFERRED (в очереди).
  • -1 BAD PARAMETERS: неизвестный символ или тип, цена отложенного 0, объём 0.
  • -2 NO CONNECTION: нет связи или котировок.
  • -3 TRADING DISABLED: выключен Algo Trading или торговля на счёте.
  • -4 SYMBOL MODE: символ отключён, только закрытие, только покупки или только продажи.
  • -5 MARKET CLOSED: вне торговых сессий.
  • -6 INVALID VOLUME: вне min/max, не кратен шагу или сверх лимита объёма.
  • -7 INVALID STOPS: SL, TP или цена отложенного с неверной стороны или внутри уровня стопов.
  • -8 FREEZE ZONE: цена внутри уровня заморозки.
  • -9 NO MARGIN: маржа рыночного ордера больше свободной.
  • -10 ORDER TYPE BLOCKED: тип или SL/TP запрещены, либо достигнут лимит отложенных.
  • -11 ORDERCHECK FAILED и -12 SERVER REJECTED: см. TOG_LastRetcode.
  • -13 TICKET NOT FOUND; -14 QUEUE FULL (256 в ожидании).

Справочник API

type: ORDER_TYPE_BUY, ORDER_TYPE_SELL, ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP или ORDER_TYPE_SELL_STOP (stop-limit возвращает -1). Цены абсолютные; sl или tp = 0 означает отсутствие.

TOG_Configure

deviation: проскальзывание в пунктах, от 0 (неверное: 20). retries: 0-10 (неверное: 3). delay_ms: 0-5000 мс между повторами (неверное: 300). adjust_stops: true переносит SL/TP с правильной стороны, но внутри уровня стопов, на ближайшую допустимую цену плюс тик (плюс спред, если сервер снова отказал); false возвращает -7. verbose: пишет блокировки, повторы и отложенные действия с префиксом [TOG].

TOG_NormalizeVolume

Округляет вниз до шага объёма, ограничивает максимумом. 0.0 ниже минимума, при объёме 0 или неизвестном символе.

TOG_NormalizePrice

Округляет до размера тика и числа знаков. 0.0 для цены 0, так что пустой SL остаётся 0.

TOG_RiskVolume

Объём, теряющий risk_money (валюта счёта) на sl, через OrderCalcProfit (верно для кроссов, металлов, индексов, акций), округлён вниз. entry 0 = Ask для покупок, Bid для продаж. 0.0 с -6, если даже минимум рискует больше, -7 если sl с неверной стороны, -1 при неверных данных.

double lots = TOG_RiskVolume(_Symbol, ORDER_TYPE_BUY, 0, sl, AccountInfoDouble(ACCOUNT_BALANCE) * 0.01); 

TOG_MaxVolume

Наибольший допустимый объём, маржа которого помещается в свободную маржу x share (0-1, иначе 1), в пределах максимума и остатка лимита объёма. 0.0 с -9, если не помещается даже минимум.

TOG_FillingMode

Заполнение рыночных сделок: FOK, если разрешено, иначе IOC, иначе RETURN. TOG_Open переключает режим, если сервер его отверг.

TOG_CheckMarket

Проверки 1-4 для открытия: соединение и котировки, Algo Trading, режим символа для направления, сессия (время сервера по таблице сессий; без таблицы считается открытой). Возвращает 0 или от -1 до -5.

TOG_CheckStops

Рыночные: sl и tp с правильной стороны от Bid (покупка) или Ask (продажа), не ближе SYMBOL_TRADE_STOPS_LEVEL. Отложенные: так же цена от рынка, sl и tp от цены. Возвращает 0, -7, -1 или -2.

TOG_CheckFreeze

-8, когда Bid (покупка) или Ask (продажа) в пределах SYMBOL_TRADE_FREEZE_LEVEL от SL или TP позиции, либо рынок так же близко к цене отложенного ордера. 0 при уровне 0, -13 для неизвестного тикета.

TOG_Preflight

Все 9 проверок по порядку без отправки: рыночные проверки, флаги типов и лимит отложенных, объём, стопы, маржа (рыночные), OrderCheck. Возвращает первую ошибку или 0.

if(TOG_Preflight(_Symbol, ORDER_TYPE_SELL, 0.10, 0, sl, tp) != 0) Print(TOG_ReasonText(TOG_LastReason())); 

TOG_Open

Нормализует объём и цены, корректирует стопы (если включено), выполняет TOG_Preflight, отправляет. Рыночные ордера (price 0) повторяются при реквотах, смене цены, тайм-аутах и ошибках связи со свежими ценами. Отложенные используют GTC или DAY, если GTC запрещён. Возвращает тикет позиции (рыночный), тикет ордера (отложенный) или 0. В очередь не ставится.

TOG_Modify

SL/TP позиции или цена/SL/TP отложенного ордера (price 0 сохраняет цену). Те же значения: true, причина 1. Блокировка зоной заморозки, закрытой сессией или отсутствием связи: false, причина 2, в очереди; новый вызов для тикета заменяет прежний.

TOG_Close

Закрывает позицию или удаляет отложенный ордер. volume 0 или полный объём закрывает всё; меньше - частично (вниз); остаток ниже минимума закрывает всё. Блокировка как выше: false, причина 2, в очереди (заменяет ожидающее изменение).

TOG_CloseAll

TOG_Close для каждой позиции (и отложенного, если pending) с данным symbol ("" = все) и magic (-1 = любой). Возвращает число закрытых сейчас.

TOG_ProcessQueue

Отправляет действия из очереди после снятия блокировки; вызывайте в OnTick или OnTimer. Действие покидает очередь при успехе, исчезновении тикета или другой ошибке; после отказа сервера ждёт секунду. Возвращает число выполненных.

TOG_QueueCount и TOG_ClearQueue

Число ожидающих действий (максимум 256); удаление всех без отправки.

TOG_LastReason, TOG_LastRetcode и TOG_ReasonText

Причина последнего вызова; последний код сервера (0, если ничего не отправлено); текст кода причины (иначе "UNKNOWN").

TOG_RetcodeClass

0 DONE (размещён, исполнен, частично, без изменений, позиция закрыта), 1 RETRY (реквота, отказ, ошибка, тайм-аут, цена изменилась или неверна, нет котировок, много запросов, блокировка, связь), 2 FIX (неверный запрос, объём, стопы, срок, заполнение, ордер), 3 WAIT (рынок закрыт, заморозка), 4 FATAL (прочие, например нет денег).

TOG_GetStats

Заполняет stats[] 10 счётчиками, возвращает 10: 0 запросы, 1 отправлено, 2 исполнено, 3 заблокировано, 4 повторы, 5 отложено, 6 исполнено из очереди, 7 отказы, 8 стопы скорректированы, 9 удалено.

Рабочий пример интеграции

#import "Turnstile_Order_Gateway.ex5"
   double TOG_RiskVolume(string symbol, ENUM_ORDER_TYPE type, double entry, double sl, double risk_money);
   ulong  TOG_Open(string symbol, ENUM_ORDER_TYPE type, double volume, double price, double sl, double tp, ulong magic, string comment);
   bool   TOG_Close(ulong ticket, double volume);
   int    TOG_ProcessQueue();
   int    TOG_LastReason();
   string TOG_ReasonText(int reason);
#import

ulong ticket = 0;
bool  tried  = false;

void OnTick()
{
   TOG_ProcessQueue();
   if(!tried)
   {
      tried = true;
      double sl   = SymbolInfoDouble(_Symbol, SYMBOL_BID) - 300 * _Point;
      double lots = TOG_RiskVolume(_Symbol, ORDER_TYPE_BUY, 0, sl, 10.0);
      ticket = TOG_Open(_Symbol, ORDER_TYPE_BUY, lots, 0, sl, 0, 7001, "turnstile");
      Print("open ", ticket, ": ", TOG_ReasonText(TOG_LastReason()));
   }
   if(ticket > 0 && PositionSelectByTicket(ticket) && PositionGetDouble(POSITION_PROFIT) > 5.0)
      Print("close: ", TOG_Close(ticket, 0), " ", TOG_ReasonText(TOG_LastReason()));
} 

Архитектура и примечания

  • Каждая импортирующая программа имеет свои настройки, статистику и очередь в памяти (теряется при удалении советника или перезапуске терминала).
  • Проверки только читают данные терминала; отправляют только TOG_Open, TOG_Modify, TOG_Close, TOG_CloseAll и TOG_ProcessQueue, синхронно.
  • Варианты: защита при валидации = настройки по умолчанию и TOG_ProcessQueue в OnTick; строгие стопы = adjust_stops false; разработка = verbose true и TOG_GetStats на вашей панели.
  • MetaTrader 5, неттинг и хеджинг, любой символ; только советники и скрипты. Безопасна в тестере, оптимизации и MQL5 Cloud Network (без DLL, файлов, веб-запросов; без паузы повторов в тестере).
  • Без графических объектов, таймеров, файлов и глобальных переменных; может добавить символ в Обзор рынка ради котировок.
  • Праздник, которого нет в таблице сессий, распознаётся по ответу сервера как -5.
  • Не поддерживаются: stop-limit ордера, close-by, OrderSendAsync.

Предупреждение о рисках

Библиотека проверяет и отправляет запросы вашего кода. Она не выбирает входы и не гарантирует исполнение, цены или прибыль. Сначала тестируйте на демо-счёте.

Другие продукты этого автора
EA Budak Ubat
Syarief Azman Bin Rosli
4 (3)
Скачать пробную версию Канал EA Budak Ubat Цена ограничена! Цена увеличится на 10 долларов после каждых 10 покупок! Как это работает Когда EA активен, он будет анализировать график на основе параметра Режим выполнения. Если на графике нет существующих позиций, EA откроет сделку на основе параметра. Если тренд восходящий, он откроет покупку, а если нисходящий - продажу. Также будет установлен ордер на стоп-лосс на определенном расстоянии от цены открытой сделки, если переменная стоп-лосса больш
EA Budak Ubat MT5
Syarief Azman Bin Rosli
EA Budak Ubat MT5 — это автоматический сеточный торговый советник (Grid Martingale) для MetaTrader 5. Эксперт сочетает технический трендовый анализ, динамическую адаптацию к волатильности и многоуровневую защиту капитала для торговли как во флэте, так и по тренду. Оптимизирован для таймфрейма M5 на основных валютных парах и золоте (XAUUSD). ### Основные возможности • 4 метода анализа рынка:   1. Classic Candle: анализ ценового импульса по свечным паттернам.   2. SMA20: пересечение 20-периодно
Indi RBO
Syarief Azman Bin Rosli
Input: Range Start Time : The starting time of the range creation Range End Time : The ending time of range creation Trade End Time : The time where the line of range zone high/low will be extended to Minimum Size : The minimum size of the range in point Maximum Size : The maximum size of the range in point If the range size is between the minimum and maximum, indicator will print the 1st color (blue).
Apex Flow Reversion
Syarief Azman Bin Rosli
# Apex Flow Reversion MT4 Apex Flow Reversion — это автоматизированная торговая система для MetaTrader 4, реализующая внутридневную статистическую стратегию возврата к среднему значению. Система отслеживает отклонение цены от динамической средневзвешенной цены по объему (VWAP) и определяет точки истощения с помощью полос стандартного отклонения, фильтра импульса RSI и волатильности ATR. ## Обзор стратегии Алгоритм вычисляет скользящую кривую VWAP, взвешенную по тиковому объему за заданный по
Vortex Confluence Radar MT4 Vortex Confluence Radar — это мультиосцилляторная система оценки конфлюэнтности, разработанная для платформы MetaTrader 4. Индикатор объединяет три классических технических осциллятора — Relative Vigor Index (RVI), Commodity Channel Index (CCI) и Williams Percent Range (WPR) — в единую гистограмму импульса со сглаженной сигнальной линией и автоматическими оповещениями при пересечении уровней. Архитектура и визуальные сигналы Индикатор функционирует в отдельном подокне
Kinetix Speed Commander MT4 Kinetix Speed Commander   — это профессиональная утилита для MetaTrader 4, объединяющая панель мгновенного исполнения ордеров в один клик, динамический калькулятор объема позиций и терминал управления соотношением риска к прибыли. Разработанная для трейдеров проп-компаний, активных скальперов и внутридневных системных трейдеров, Kinetix Speed Commander исключает задержки ручных расчетов, ошибки ввода объема и неконтролируемые риски. Утилита работает через высокоскорос
Prism Candle Forge — Движок распознавания свечных паттернов для MT4 Prism Candle Forge — нативная библиотека MQL4 для распознавания и валидации 20+ японских свечных паттернов на основе геометрического анализа с взвешиванием по ATR. Предоставляет идентификацию паттернов, расчет достоверности, классификацию морфологии свечей и валидацию тренда через 8 экспортируемых функций для советников, индикаторов и скриптов. Без DLL, без зависимостей, чистый MQL4. Поставляется в виде скомпилированного файла (
Sigma Squeeze Reactor Советник на основе пробоя волатильности Bollinger-Keltner Squeeze Sigma Squeeze Reactor — это алгоритмический советник для MetaTrader 4, разработанный для обнаружения и торговли импульсными пробоями волатильности. Он определяет фазу сжатия полос Боллинджера внутри каналов Кельтнера (классический паттерн волатильного сжатия) и открывает точные сделки в момент выхода волатильности из сжатия при подтверждении направленным импульсным осциллятором. Советник оснащен   двухконтурн
Fulcrum Value Profile - индикатор для MetaTrader 4, который строит профиль тикового объема для каждой сессии, отмечает Point of Control (POC) и зону стоимости (value area), рисует развивающиеся POC/VAH/VAL линиями, отслеживает "голые" POC (naked POC) и отмечает на закрытых барах два сетапа: возврат в предыдущую зону стоимости (правило 80%) и принятие цены за ее пределами (пробой). Индикатор никогда не открывает, не изменяет и не закрывает сделки. Быстрый старт Установите индикатор на график M5,
Filament Tripline Console превращает ваши горизонтальные линии и трендовые линии во взведенные «растяжки» (triplines). Когда цена касается линии или бар закрывается за ней, растяжка выполняет свое действие: оповещение, рыночную покупку BUY или продажу SELL с автоматическим лотом, стоп-лоссом и тейк-профитом, либо EXIT, закрывающий позиции. Утилита никогда не торгует по собственному анализу и действует только по линиям, которые взвели вы. Быстрый старт Прикрепите утилиту к любому графику. Для дей
# Spectra Trend Ribbon MT5 Spectra Trend Ribbon — это индикатор направления тренда и расширения волатильности для MetaTrader 5. Индикатор объединяет адаптивную сглаженную базовую линию тренда, динамические полосы волатильности и автоматические стрелочные сигналы пробоя импульса. ## Описание визуальных сигналов Индикатор отображает на графике пять ключевых визуальных элементов: 1. Центральная адаптивная линия (цветная линия) - Зеленый цвет: цена торгуется выше базовой линии, наклон линии нап
Aegis Risk Sentinel
Syarief Azman Bin Rosli
Aegis Risk Sentinel MT5 Aegis Risk Sentinel   — это профессиональная утилита управления рисками и защиты эквити в реальном времени, разработанная для платформы MetaTrader 5. Утилита создана для трейдеров проп-компаний, управляющих капиталом и внутридневных трейдеров, обеспечивая строгую дисциплину исполнения и защиту счета от критических просадок, маржин-коллов и эмоциональной торговли. Утилита оснащена интерактивной графической панелью (HUD) на графике, созданной без использования внешних библи
Stratos Momentum Engine MT5 Stratos Momentum Engine представляет собой полностью автоматизированную мультитаймфреймовую торговую систему пробоя импульса для MetaTrader 5. Эксперт объединяет структурное определение тренда на старшем таймфрейме (H1) с точным расчетом импульса и подтверждением пробоя на младшем таймфрейме (M15). В основе системы лежит математический расчет наклона линейной регрессии методом наименьших квадратов для определения приоритетного направления рынка, осциллятор Stochastic
Nexus Quant Matrix MT5 Nexus Quant Matrix   — это библиотека количественных вычислений институционального уровня и потокового статистического анализа, разработанная нативно для платформы MetaTrader 5. Созданная для квант-разработчиков, алгоритмических хедж-фондов и архитекторов торговых систем, библиотека обеспечивает высокопроизводительную математическую обработку непосредственно в среде MQL5 без использования внешних библиотек DLL, Python или мостов C++. Работая с вычислительной сложностью O(1
Quasar Regime Cloud is a market regime indicator for MetaTrader 5. It measures whether price is currently trending or chopping, then shows the result directly on the chart through a fractal-adaptive cloud. Signals are only produced while the market is classified as trending, which filters out many of the false crossovers that occur in sideways conditions. How It Works 1. Fractal Dimension Estimate For every bar the indicator estimates the fractal dimension (D) of price over a configurable window
Isobar Event Shield
Syarief Azman Bin Rosli
Isobar Event Shield защищает ваши сделки от экономических новостей в MetaTrader 5. Утилита читает встроенный в терминал экономический календарь, ведет обратный отсчет до каждой публикации, влияющей на ваши символы, и незадолго до выхода применяет выбранную защиту к позициям и отложенным ордерам, которые уже открыты вами или другими советниками. Собственных сделок она не открывает. Быстрый старт Прикрепите утилиту к одному графику (одна копия на терминал) и включите Algo Trading на панели инструм
Riptide Sweep Reclaimer - советник для MetaTrader 5, торгующий снятие ликвидности за границами диапазона спокойной сессии: он измеряет максимум и минимум выбранного окна (по умолчанию 00:00-08:00 по времени сервера), ждет, пока следующая сессия проколет одну из сторон, и входит против движения, как только свеча снова закрывается внутри диапазона, с целями в середине и на противоположной стороне. Одна позиция за раз по символу графика; без сетки, мартингейла и усреднения. Быстрый старт Прикрепит
Фильтр:
Нет отзывов
Ответ на отзыв