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.