- Evento principal de Asesores Expertos: OnTick
- Principios y conceptos básicos: orden, transacción y posición
- Tipos de operaciones de trading
- Tipos de órdenes
- Modos de ejecución de órdenes por precio y volumen
- Fechas de vencimiento de órdenes pendientes
- Cálculo del margen para una orden futura: OrderCalcMargin
- Estimación del beneficio de una operación de trading: OrderCalcProfit
- Estructura MqlTradeRequest
- Estructura MqlTradeCheckResult
- Solicitar validación: OrderCheck
- Solicitar resultado del envío: estructura MqlTradeResult
- Enviar una solicitud de trading: OrderSend y OrderSendAsync
- Operaciones de compraventa
- Modificar los niveles de Stop Loss y/o Take Profit de una posición
- Trailing stop
- Cierre de una posición: total y parcial
- Cierre de posiciones opuestas: total y parcial
- Colocar una orden pendiente
- Modificar una orden pendiente
- Borrar una orden pendiente
- Obtener una lista de órdenes activas
- Propiedades de una orden (activas e históricas)
- Funciones para leer las propiedades de órdenes activas
- Seleccionar órdenes por propiedades
- Obtener la lista de posiciones
- Propiedades de posiciones
- Funciones de lectura de propiedades de posición
- Propiedades de transacción
- Seleccionar órdenes y transacciones del historial
- Funciones para leer propiedades de órdenes del historial
- Funciones para leer propiedades de transacciones del historial
- Tipos de transacciones de trading
- Evento OnTradeTransaction
- Peticiones síncronas y asíncronas
- Evento OnTrade
- Seguimiento de los cambios en el entorno de trading
- Crear Asesores Expertos multisímbolo
- Limitaciones y ventajas de los Asesores Expertos
- Crear Asesores Expertos en el Asistente MQL
Modos de ejecución de órdenes por precio y volumen
Al enviar solicitudes de negociación tendremos que especificar el precio de compra/venta y el volumen en el algoritmo de forma especial. Al mismo tiempo, hay que tener en cuenta que en los mercados financieros no hay garantía de que en ese momento todo el volumen solicitado esté disponible para el instrumento financiero al precio deseado. Por lo tanto, las operaciones de trading están reguladas por modos (o políticas) de ejecución de precios y volúmenes. Definen las reglas para los casos en que el precio ha cambiado durante el proceso de envío de la solicitud o cuando no puede satisfacerse en su totalidad.
En el capítulo sobre símbolos, en la sección Condiciones de trading de símbolos y modos de ejecución de órdenes ya hemos hablado de los ajustes para la ejecución de órdenes por precio (SYMBOL_TRADE_EXEMODE) y la ejecución de órdenes por volumen (SYMBOL_FILLING_MODE), que establece el bróker. De acuerdo con los modos SYMBOL_FILLING_MODE disponibles, el programa MQL debe seleccionar el modo de ejecución para la orden recién formada en una estructura especial MqlTradeRequest (pronto lo veremos en la práctica).
Las versiones se proporcionan en la enumeración ENUM_ORDER_TYPE_FILLING: sus identificadores se hacen eco de los de SYMBOL_FILLING_MODE.
Política de ejecución (valores) |
Descripción |
---|---|
ORDER_FILLING_FOK (0) |
Fill or Kill (Todo/Nada) |
ORDER_FILLING_IOC (1) |
Immediate or Cancel (Todo/Parte) |
ORDER_FILLING_RETURN (2) |
Return (Devolver) |
Con la política ORDER_FILLING_FOK, una orden sólo puede ejecutarse en el volumen especificado. Si no hay suficiente volumen del instrumento financiero en el mercado en ese momento, la orden no se ejecutará. El volumen requerido puede estar formado por varias ofertas disponibles actualmente en el mercado. La capacidad de utilizar órdenes FOK viene determinada por la presencia del permiso SYMBOL_FILLING_FOK.
Con la política ORDER_FILLING_IOC, el operador se compromete a realizar una transacción sobre el volumen máximo disponible en el mercado dentro de los límites especificados en la orden. Si no es posible la cobertura total, la orden se ejecutará sobre el volumen disponible, y el volumen que falte se cancelará. La capacidad de utilizar órdenes IOC viene determinada por la presencia del permiso SYMBOL_FILLING_IOC.
Con la política ORDER_FILLING_RETURN, en caso de ejecución parcial, la orden con el volumen restante no se cancela, sino que continúa operando. Este es el modo por defecto y siempre está disponible. Sin embargo, hay una excepción: Las órdenes Return no están permitidas en el modo de ejecución de mercado (SYMBOL_TRADE_EXECUTION_MARKET en la propiedad de símbolo SYMBOL_TRADE_EXEMODE).
Así, antes de enviar una orden de mercado (no pendiente), el programa MQL debe establecer correctamente una de las políticas ORDER_TYPE_FILLING en función de la propiedad SYMBOL_FILLING_MODE del instrumento financiero correspondiente: esta propiedad contiene una combinación de indicadores de bits de los modos permitidos.
Para las órdenes pendientes, con independencia del modo de ejecución SYMBOL_TRADE_EXEMODE, se debe utilizar la política ORDER_FILLING_RETURN, ya que dichas órdenes se ejecutarán con volumen posteriormente y según las reglas que el bróker establezca en ese momento.
A diferencia de la política de ejecución por volumen, el modo de ejecución de la orden a un precio no se puede seleccionar, ya que está predeterminado por el bróker para cada símbolo. Esto afecta a los campos de la estructura MqlTradeRequest que deben ejecutarse antes de enviar una solicitud de trading.
La aplicación de las políticas de ejecución en función de los modos de ejecución puede representarse como una tabla ('+' - permitido, '-' - desactivado, '±' - depende de la configuración del símbolo):
Política de ejecución Modo de ejecución |
ORDER_FILLING _FOK |
ORDER_FILLING _IOC |
ORDER_FILLING RETURN |
---|---|---|---|
SYMBOL_TRADE_EXECUTION_INSTANT |
+ |
+ |
+ |
SYMBOL_TRADE_EXECUTION_REQUEST |
+ |
+ |
+ |
SYMBOL_TRADE_EXECUTION_MARKET |
± |
± |
- |
SYMBOL_TRADE_EXECUTION_EXCHANGE |
± |
± |
+ |
Pendiente |
- |
- |
+ |
En los modos de ejecución SYMBOL_TRADE_EXECUTION_INSTANT y SYMBOL_TRADE_EXECUTION_REQUEST se permiten todas las políticas de ejecución de volumen.