Turnstile Order Gateway

Biblioteca MQL5 situada entre su Asesor Experto y OrderSend. Cada solicitud pasa 9 controles (conexión, Algo Trading, modo del símbolo, sesión, tipos de orden, volumen, stops, margen, OrderCheck) antes de enviarse. Los cierres y modificaciones bloqueados por el nivel de congelación, una sesión cerrada o una conexión perdida se ponen en cola y se envían después. Nunca opera por sí sola. Recibe el archivo compilado Turnstile_Order_Gateway.ex5; esta página es la referencia completa de la API.

Inicio rápido

  1. Copie Turnstile_Order_Gateway.ex5 en MQL5/Libraries (Archivo > Abrir carpeta de datos).
  2. Pegue el bloque #import de abajo en su EA o script.
  3. Opcional: TOG_Configure en OnInit (por defecto 20, 3, 300, true, false).
  4. Llame a TOG_ProcessQueue en OnTick u OnTimer.
  5. Opere con TOG_Open, TOG_Modify, TOG_Close. Si devuelven 0 o false, imprima TOG_ReasonText(TOG_LastReason()).
  6. Verificación: ejecute el ejemplo de abajo en el Probador de Estrategias; el registro muestra el ticket y el motivo. En real, active Algo Trading o los controles devuelven -3.

Declaración de importación (lista para copiar)

#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 

Códigos de motivo

TOG_LastReason da el código y TOG_ReasonText el texto en mayúsculas.

  • 0 OK; 1 NO CHANGE (mismos valores, nada enviado); 2 DEFERRED (en cola).
  • -1 BAD PARAMETERS: símbolo o tipo desconocido, precio pendiente 0, volumen 0.
  • -2 NO CONNECTION: sin conexión o sin cotizaciones.
  • -3 TRADING DISABLED: Algo Trading o el trading de la cuenta desactivado.
  • -4 SYMBOL MODE: desactivado, solo cierre, solo compras o solo ventas.
  • -5 MARKET CLOSED: fuera de las sesiones de trading.
  • -6 INVALID VOLUME: fuera de min/max, fuera del paso o sobre el límite de volumen.
  • -7 INVALID STOPS: SL, TP o precio pendiente en el lado incorrecto o dentro del nivel de stops.
  • -8 FREEZE ZONE: precio dentro del nivel de congelación.
  • -9 NO MARGIN: margen de la orden de mercado mayor que el margen libre.
  • -10 ORDER TYPE BLOCKED: tipo o SL/TP no permitidos, o límite de órdenes pendientes alcanzado.
  • -11 ORDERCHECK FAILED y -12 SERVER REJECTED: vea TOG_LastRetcode.
  • -13 TICKET NOT FOUND; -14 QUEUE FULL (256 en espera).

Referencia de la API

type: ORDER_TYPE_BUY, ORDER_TYPE_SELL, ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP u ORDER_TYPE_SELL_STOP (stop-limit devuelve -1). Precios absolutos; sl o tp 0 significa ninguno.

TOG_Configure

deviation: deslizamiento en puntos, 0 o más (inválido: 20). retries: 0-10 (inválido: 3). delay_ms: 0-5000 entre reintentos (inválido: 300). adjust_stops: true mueve un SL/TP del lado correcto pero dentro del nivel de stops al precio legal más cercano más un tick (más el spread si el servidor vuelve a rechazar); false devuelve -7. verbose: registra bloqueos, reintentos y aplazamientos con el prefijo [TOG].

TOG_NormalizeVolume

Redondea hacia abajo al paso de volumen y limita al máximo. 0.0 bajo el mínimo, con volumen 0 o símbolo desconocido.

TOG_NormalizePrice

Redondea al tamaño del tick y a los dígitos. 0.0 para precio 0, así un SL vacío sigue en 0.

TOG_RiskVolume

Volumen que pierde risk_money (divisa de la cuenta) en sl, con OrderCalcProfit (válido para cruces, metales, índices, acciones), redondeado hacia abajo. entry 0 = Ask para compras, Bid para ventas. 0.0 con -6 si el volumen mínimo ya arriesga más, -7 si sl está del lado incorrecto, -1 con datos inválidos.

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

TOG_MaxVolume

Mayor volumen válido cuyo margen cabe en margen libre x share (0-1, si no 1), dentro del máximo y del límite de volumen restante. 0.0 con -9 si no cabe ni el mínimo.

TOG_FillingMode

Ejecución de mercado: FOK si se permite, si no IOC, si no RETURN. TOG_Open cambia de modo si el servidor lo rechaza.

TOG_CheckMarket

Controles 1-4 para abrir: conexión y cotizaciones, Algo Trading, modo del símbolo para esa dirección, sesión (hora del servidor frente a la tabla de sesiones; sin tabla cuenta como abierto). Devuelve 0 o de -1 a -5.

TOG_CheckStops

Mercado: sl y tp del lado correcto de Bid (compra) o Ask (venta), al menos SYMBOL_TRADE_STOPS_LEVEL de distancia. Pendientes: igual el precio respecto al mercado, sl y tp desde el precio. Devuelve 0, -7, -1 o -2.

TOG_CheckFreeze

-8 cuando Bid (compra) o Ask (venta) está dentro de SYMBOL_TRADE_FREEZE_LEVEL del SL o TP de la posición, o el mercado está así de cerca del precio de una orden pendiente. 0 si el nivel es 0, -13 con un ticket desconocido.

TOG_Preflight

Los 9 controles en orden, sin enviar nada: controles de mercado, tipos de orden y límite de pendientes, volumen, stops, margen (mercado), OrderCheck. Devuelve el primer fallo o 0.

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

TOG_Open

Normaliza volumen y precios, ajusta stops si está activado, ejecuta TOG_Preflight y envía. Las órdenes de mercado (price 0) reintentan recotizaciones, cambios de precio, tiempos agotados y errores de conexión con precios nuevos. Las pendientes usan GTC, o DAY si GTC no se permite. Devuelve el ticket de la posición (mercado), de la orden (pendiente) o 0. Nunca se pone en cola.

TOG_Modify

SL/TP de una posición, o precio/SL/TP de una orden pendiente (price 0 lo conserva). Mismos valores: true, motivo 1. Bloqueado por la zona de congelación, sesión cerrada o sin conexión: false, motivo 2, en cola; una llamada más nueva para el ticket la sustituye.

TOG_Close

Cierra una posición o elimina una orden pendiente. volume 0 o el volumen completo cierra todo; menos cierra una parte (hacia abajo); un resto bajo el mínimo cierra todo. Bloqueo como arriba: false, motivo 2, en cola (sustituye una modificación en cola).

TOG_CloseAll

TOG_Close para cada posición (y orden pendiente si pending) que coincida con symbol ("" = todos) y magic (-1 = cualquiera). Devuelve cuántas se cerraron ahora.

TOG_ProcessQueue

Envía las acciones en cola cuando se desbloquean; llámela en OnTick u OnTimer. Una acción sale de la cola al tener éxito, si su ticket ya no existe o ante otro fallo; tras un rechazo del servidor espera un segundo. Devuelve el número completado.

TOG_QueueCount y TOG_ClearQueue

Acciones en espera (máximo 256); descartarlas todas sin enviar.

TOG_LastReason, TOG_LastRetcode y TOG_ReasonText

Motivo de la última llamada; último retcode del servidor (0 si no se envió nada); texto de un código de motivo ("UNKNOWN" en otro caso).

TOG_RetcodeClass

0 DONE (colocada, ejecutada, parcial, sin cambios, posición cerrada), 1 RETRY (recotización, rechazo, error, tiempo agotado, precio cambiado o inválido, sin cotizaciones, demasiadas solicitudes, bloqueo, conexión), 2 FIX (solicitud, volumen, stops, expiración, ejecución u orden inválidos), 3 WAIT (mercado cerrado, congelado), 4 FATAL (resto, p. ej. sin dinero).

TOG_GetStats

Llena stats[] con 10 contadores y devuelve 10: 0 solicitudes, 1 enviadas, 2 hechas, 3 bloqueadas, 4 reintentos, 5 aplazadas, 6 hechas desde la cola, 7 rechazadas, 8 stops ajustados, 9 descartadas.

Ejemplo de integración funcional

#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()));
} 

Arquitectura y notas

  • Cada programa que importa la biblioteca tiene sus propios ajustes, estadísticas y cola en memoria (se pierde al quitar el EA o reiniciar el terminal).
  • Los controles solo leen datos del terminal; solo TOG_Open, TOG_Modify, TOG_Close, TOG_CloseAll y TOG_ProcessQueue envían, de forma síncrona.
  • Configuraciones: seguridad ante el validador = valores por defecto y TOG_ProcessQueue en OnTick; stops estrictos = adjust_stops false; desarrollo = verbose true y TOG_GetStats en su panel.
  • MetaTrader 5, netting y hedging, cualquier símbolo; solo EAs y scripts. Segura en el Probador de Estrategias, la optimización y MQL5 Cloud Network (sin DLL, archivos ni peticiones web; sin pausa entre reintentos en el probador).
  • Sin objetos gráficos, temporizadores, archivos ni variables globales; puede añadir un símbolo a Observación del Mercado para leer cotizaciones.
  • Un festivo ausente de la tabla de sesiones se detecta por la respuesta del servidor como -5.
  • No compatible: órdenes stop-limit, close-by, OrderSendAsync.

Aviso de riesgo

La biblioteca comprueba y envía las solicitudes de su código. No elige entradas ni garantiza ejecuciones, precios o beneficios. Pruébela primero en una cuenta demo.

Otros productos de este autor
EA Budak Ubat
Syarief Azman Bin Rosli
4 (3)
¿Cómo Funciona? Cuando el EA está activo, analizará el gráfico según el parámetro de Modo de Ejecución. Si no existen posiciones en el gráfico, el EA ingresará a una operación basada en el parámetro. Si la tendencia es alcista, ingresará a una operación de compra, y si es bajista, ingresará a una operación de venta. También establecerá una orden de Stop Loss a una cierta distancia del precio de apertura de la operación si la variable de Stop Loss es mayor que 0. 0 significa que no hay Stop Los
EA Budak Ubat MT5
Syarief Azman Bin Rosli
EA Budak Ubat MT5 es un Asesor Experto automatizado de trading en rejilla (Grid Martingale) desarrollado para MetaTrader 5. Combina análisis técnico de tendencias, adaptación dinámica a la volatilidad del mercado y rigurosos controles de riesgo para operar tanto en rangos como en tendencias. Optimizado para temporalidad M5 en pares principales y metales (XAUUSD / Oro). ### Características Principales • 4 Métodos de Análisis Seleccionables:   1. Classic Candle: Impulso direccional basado en ve
Indi RBO
Syarief Azman Bin Rosli
Entrada: Hora de inicio del rango : Hora de inicio de la creación del rango Hora de finalización del rango : Hora de finalización de la creación del rango Hora de finalización de la operación : Hora a la que se extenderá la línea de zona de rango alto/bajo Tamaño Mínimo : El tamaño mínimo del rango en puntos Tamaño Máximo : El tamaño máximo del rango en puntos Si el tamaño del rango está entre el mínimo y el máximo, el indicador imprimirá el 1er color (azul).
# Apex Flow Reversion MT4 Apex Flow Reversion es un sistema de trading automatizado diseñado para MetaTrader 4 que ejecuta una estrategia intradiaria de reversión estadística a la media. El sistema monitorea la desviación del precio respecto a un nivel dinámico de Precio Promedio Ponderado por Volumen (VWAP) e identifica zonas de agotamiento mediante bandas de desviación estándar, filtrado de momento con el Índice de Fuerza Relativa (RSI) y restricciones de volatilidad con el Rango Verdadero M
Vortex Confluence Radar
Syarief Azman Bin Rosli
Vortex Confluence Radar MT4 Vortex Confluence Radar es un motor de puntuación de confluencia multioscilador desarrollado nativamente para MetaTrader 4. Combina tres osciladores técnicos de referencia —Relative Vigor Index (RVI), Commodity Channel Index (CCI) y Williams Percent Range (WPR)— en un histograma de momento unificado con línea de señal suavizada y alertas automáticas de cruce. Arquitectura y señales visuales del indicador El indicador opera en una subventana independiente y muestra los
Kinetix Speed Commander
Syarief Azman Bin Rosli
Kinetix Speed Commander MT4 Kinetix Speed Commander   es un panel institucional de ejecución de operaciones en un clic, calculadora dinámica de tamaño de posición y terminal de gestión de órdenes y relación riesgo-beneficio desarrollado de forma nativa para MetaTrader 4. Diseñado específicamente para aspirantes y operadores de firmas de fondeo (Prop Firms), scalpers de alta velocidad y traders intradiarios cuantitativos, Kinetix Speed Commander elimina los retrasos en los cálculos manuales, los
Prism Candle Forge
Syarief Azman Bin Rosli
Prism Candle Forge — Motor de Reconocimiento de Patrones de Velas para MT4 Prism Candle Forge es una biblioteca nativa de MQL4 para detectar y validar mas de 20 patrones de velas japonesas mediante analisis geometrico ponderado por ATR. Proporciona deteccion de patrones, confianza direccional, clasificacion morfologica y validacion de tendencia mediante 8 funciones exportadas para Expert Advisors, Indicadores o Scripts. Sin DLLs, sin dependencias externas, calculo puro en MQL4. Distribuido como
Sigma Squeeze Reactor Asesor Experto de Ruptura por Compresion de Volatilidad Bollinger-Keltner Sigma Squeeze Reactor es un Asesor Experto (EA) de ruptura para MetaTrader 4 disenado para identificar y operar movimientos expansivos de alta volatilidad. Detecta el momento en que las Bandas de Bollinger se comprimen dentro de los Canales de Keltner (el clasico squeeze de volatilidad) y ejecuta entradas precisas cuando la compresion se libera, confirmada por un oscilador de momentum direccional. El
Fulcrum Value Profile
Syarief Azman Bin Rosli
Fulcrum Value Profile es un indicador para MetaTrader 4 que construye un perfil de volumen de ticks para cada sesión, marca su Point of Control (POC) y su área de valor, dibuja el POC/VAH/VAL en desarrollo como líneas, sigue los POC vírgenes (naked POC) y señala dos patrones en barras cerradas: reentrada en el área de valor previa (regla del 80%) y aceptación fuera de ella (ruptura). Nunca abre, modifica ni cierra operaciones. Inicio rápido Coloque el indicador en un gráfico M5, M15 o M30. Deje
Filament Tripline Console
Syarief Azman Bin Rosli
Filament Tripline Console convierte sus propias líneas horizontales y líneas de tendencia en "cables trampa" (triplines) armados. Cuando el precio toca una línea, o una barra cierra más allá de ella, el tripline ejecuta su acción: una alerta, una compra BUY o venta SELL a mercado con lote, stop loss y take profit automáticos, o un EXIT que cierra posiciones. Nunca opera según un análisis propio; solo actúa sobre las líneas que usted arma. Inicio rápido Adjunte la utilidad a cualquier gráfico. Pa
Spectra Trend Ribbon
Syarief Azman Bin Rosli
# Spectra Trend Ribbon MT5 Spectra Trend Ribbon es un indicador nativo para MetaTrader 5 diseñado para evaluar la dirección de la tendencia y la expansión de la volatilidad. Combina una línea base adaptativa y suavizada con bandas dinámicas de volatilidad y señales automatizadas de ruptura de momento. ## Interpretación de las Señales Visuales El indicador proyecta cinco elementos visuales claramente diferenciados en el gráfico: 1. Línea Base Adaptativa Central (Línea de Color) - Color Verde
Aegis Risk Sentinel
Syarief Azman Bin Rosli
Aegis Risk Sentinel MT5 Aegis Risk Sentinel   es una utilidad profesional de protección de equidad y gestión de riesgos en tiempo real desarrollada de forma nativa para MetaTrader 5. Diseñada para operadores de empresas de fondeo (Prop Firms), gestores de fondos e inversores intradiarios, Aegis impone una estricta disciplina matemática para evitar caídas catastróficas (drawdowns), operaciones emocionales de venganza y llamadas de margen involuntarias. La herramienta incorpora un panel visual int
Stratos Momentum Engine MT5 Stratos Momentum Engine es un Asesor Experto (EA) totalmente automatizado para MetaTrader 5, basado en una estrategia multitemporal de ruptura por impulso. El sistema combina la identificación estructural de la tendencia en el marco temporal superior (H1) con la sincronización precisa del impulso y la confirmación de rupturas en el marco temporal inferior (M15). El asesor utiliza la pendiente de regresión lineal por mínimos cuadrados para determinar el sesgo direccion
Nexus Quant Matrix
Syarief Azman Bin Rosli
Nexus Quant Matrix MT5 Nexus Quant Matrix   es una librería de computación cuantitativa y análisis estadístico en tiempo real de grado institucional, desarrollada nativamente para MetaTrader 5. Concebida para desarrolladores cuantitativos, fondos de cobertura sistemáticos y arquitectos de trading algorítmico, Nexus Quant Matrix proporciona un procesamiento numérico de altísimo rendimiento dentro del entorno nativo de MQL5 sin requerir DLLs externas, Python ni enlaces C++. Operando con una comple
Quasar Regime Cloud
Syarief Azman Bin Rosli
Quasar Regime Cloud es un indicador de régimen de mercado para MetaTrader 5. Determina si el precio está en tendencia o en lateralidad y muestra el resultado directamente en el gráfico mediante una nube fractal adaptativa. Las señales solo se generan cuando el mercado se clasifica como tendencial, lo que filtra muchos cruces falsos en condiciones laterales. Cómo funciona 1. Estimación de la dimensión fractal Para cada barra, el indicador estima la dimensión fractal (D) del precio en una ventana
Isobar Event Shield
Syarief Azman Bin Rosli
Isobar Event Shield protege sus operaciones frente a las noticias económicas en MetaTrader 5. Lee el calendario económico integrado en el terminal, cuenta el tiempo hasta cada publicación que afecta a sus símbolos y, poco antes de cada una, aplica la protección elegida a las posiciones y órdenes pendientes que usted u otros Asesores Expertos ya tienen. Nunca abre operaciones propias. Inicio rápido Adjunte la utilidad a un gráfico (una copia por terminal) y active Algo Trading en la barra de her
Riptide Sweep Reclaimer es un Expert Advisor para MetaTrader 5 que opera barridos de liquidez de un rango de sesión tranquila: mide el máximo y el mínimo de una ventana elegida (por defecto 00:00-08:00 hora del servidor), espera a que la siguiente sesión perfore un lado y opera el regreso en cuanto una vela cierra de nuevo dentro del rango, con objetivos en el punto medio y en el lado opuesto. Una posición a la vez en el símbolo del gráfico; sin grid, martingala ni promedios. Inicio rápido Adju
Filtro:
No hay comentarios
Respuesta al comentario