Propiedades de órdenes

Ordenaciones de ejecutar las operaciones comerciales se formalizan mediante las órdenes. Cada orden posee una multitud de propiedades para la lectura. La información acerca de ellas se obtiene a través de la función OrderGet...() y HistoryOrderGet...().

Para las funciones OrderGetInteger() y HistoryOrderGetInteger()

ENUM_ORDER_PROPERTY_INTEGER

Identificador

Descripción

Tipo

ORDER_TICKET

Ticket de la orden. Un número único que se asigna a cada orden

long

ORDER_TIME_SETUP

Hora de establecimiento de la orden

datetime

ORDER_TYPE

Tipo de la orden

ENUM_ORDER_TYPE

ORDER_STATE

Estatus de la orden

ENUM_ORDER_STATE

ORDER_TIME_EXPIRATION

Plazo de expiración de la orden

datetime

ORDER_TIME_DONE

Hora de ejecución o cancelación de la orden

datetime

ORDER_TIME_SETUP_MSC

Tiempo de colocación de la orden para la ejecución en milisegundos desde 01.01.1970

long

ORDER_TIME_DONE_MSC

Tiempo de ejecución / retirada de la orden en milisegundos desde 01.01.1970

long

ORDER_TYPE_FILLING

Tipo de ejecución según el resto

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

Tiempo de vida de la orden

ENUM_ORDER_TYPE_TIME

ORDER_MAGIC

Identificador del Asesor Experto que ha colocado la orden (sirve para que cada Asesor Experto ponga su único número personal)

long

ORDER_REASON

Motivo u origen de la colocación de una orden

ENUM_ORDER_REASON

ORDER_POSITION_ID

Identificador de posición que se coloca en la orden a la hora de su ejecución. Cada orden ejecutada provoca una transacción que abre una nueva posición, o cambia una que ya existe. El identificador de esta misma posición se establece para la orden ejecutada en este momento.

long

ORDER_POSITION_BY_ID

Identificador de la posición opuesta para las órdenes del tipo ORDER_TYPE_CLOSE_BY.

long

Para las funciones OrderGetDouble() y HistoryOrderGetDouble()

ENUM_ORDER_PROPERTY_DOUBLE

Identificador

Descripción

Tipo

ORDER_VOLUME_INITIAL

Volumen inicial de la orden

double

ORDER_VOLUME_CURRENT

Volumen actual de la orden

double

ORDER_PRICE_OPEN

Precio especificado en la orden

double

ORDER_SL

Nivel Stop Loss

double

ORDER_TP

Nivel Take Profit

double

ORDER_PRICE_CURRENT

Precio actual del símbolo de la orden

double

ORDER_PRICE_STOPLIMIT

Precio Limit de la orden al activarse StopLimit

double

Para las funciones OrderGetString() y HistoryOrderGetString()

ENUM_ORDER_PROPERTY_STRING

Identificador

Descripción

Tipo

ORDER_SYMBOL

Símbolo de la orden

string

ORDER_COMMENT

Comentario

string

 

Cuando se envía una solicitud comercial mediante la función OrderSend(), algunas operaciones requieren la indicación del tipo de la orden. El tipo de la orden se introduce en el campo type de una estructura especial MqlTradeRequest y puede adquirir los valores de la enumeración ENUM_ORDER_TYPE.

ENUM_ORDER_TYPE

Identificador

Descripción

ORDER_TYPE_BUY

Orden de mercado para la compra

ORDER_TYPE_SELL

Orden de mercado para la venta

ORDER_TYPE_BUY_LIMIT

Orden pendiente Buy Limit

ORDER_TYPE_SELL_LIMIT

Orden pendiente Sell Limit

ORDER_TYPE_BUY_STOP

Orden pendiente Buy Stop

ORDER_TYPE_SELL_STOP

Orden pendiente Sell Stop

ORDER_TYPE_BUY_STOP_LIMIT

Al alcanzar el precio de la orden se coloca la orden pendiente Buy Limit por el precio StopLimit

ORDER_TYPE_SELL_STOP_LIMIT

Al alcanzar el precio de la orden se coloca la orden pendiente Sell Limit por el precio StopLimit

ORDER_TYPE_CLOSE_BY

Orden de cierre de una posición con la opuesta

 

Cada orden tiene su estatus que describe su estado. Para obtener más detalles utilice la función OrderGetInteger() o HistoryOrderGetInteger() con el modificador ORDER_STATE. Los valores admisibles se almacenan en la enumeración ENUM_ORDER_STATE.

ENUM_ORDER_STATE

Identificador

Descripción

ORDER_STATE_STARTED

Orden verificada pero aún sin aceptar por el corredor

ORDER_STATE_PLACED

Orden aceptada

ORDER_STATE_CANCELED

Orden retirada por el cliente

ORDER_STATE_PARTIAL

Orden ejecutada parcialmente

ORDER_STATE_FILLED

Orden ejecutada totalmente

ORDER_STATE_REJECTED

Orden rechazada

ORDER_STATE_EXPIRED

Orden retirada por expirarse el plazo

ORDER_STATE_REQUEST_ADD

Orden en el estado de registro (colocación en el sistema de trading)

ORDER_STATE_REQUEST_MODIFY

Orden en el estado de modificación (cambio de parámetros)

ORDER_STATE_REQUEST_CANCEL

Orden en el estado de eliminación (eliminación del sistema de trading)

 

Al enviar una solicitud comercial de ejecución en el momento actual (time in force) se deberá indicar el precio y el volumen necesario de compra/venta. Hay que considerar que no existe garantía en los mercados financieros de que en un momento dado esté disponible para este instrumento financiero todo el volumen solicitado al precio deseado. Por consiguiente, el comercio en tiempo real está regulado por los modos de ejecución de precio y volumen. Los modos o políticas de ejecución determinan las reglas para los casos en los que ha cambiado el precio, o el volumen solicitado no se puede ejecutar al completo en el momento actual.

Modo de ejecución por precio: es posible obtenerlo de la propiedad del símbolo SYMBOL_TRADE_EXEMODE, que contiene una combinación de banderas de la enumeración ENUM_SYMBOL_TRADE_EXECUTION.

Modo de ejecución

Descripción

Valor en ENUM_SYMBOL_TRADE_EXECUTION

Modo de ejecución

 

(Request Execution)

Ejecución de una orden de mercado al precio recibido previamente del bróker.

 

Antes de enviar una orden de mercado, se le solicitarán al bróker sus precios de ejecución. Después de recibirlos, la ejecución de la orden a un precio determinado podrá confirmarse o rechazarse.

SYMBOL_TRADE_EXECUTION_REQUEST

Ejecución instantánea

 

(Instant Execution)

Ejecución instantánea de una orden de mercado al precio indicado.

 

Al enviar una solicitud comercial para su ejecución, la plataforma sustituirá automáticamente los precios actuales en la orden.

  • Si el bróker acepta el precio, la orden se ejecutará.
  • Si el bróker no acepta el precio solicitado, se producirá la llamada "recotización" (Requote): el bróker retornará los precios a los que se puede ejecutar esta orden.

SYMBOL_TRADE_EXECUTION_INSTANT

Ejecución por mercado

 

(Market Execution)

El bróker tomará la decisión sobre el precio de ejecución sin un acuerdo adicional con el tráder.

 

Enviar una orden de mercado en este modo implica la aceptación anticipada del precio al que se ejecutará.

SYMBOL_TRADE_EXECUTION_MARKET

Ejecución por bolsa

 

(Exchange Execution)

Las operaciones comerciales se realizan según los precios de las ofertas de mercado actuales.

SYMBOL_TRADE_EXECUTION_EXCHANGE

Política de rellenado del volumen :  se indica en la propiedad de la orden ORDER_TYPE_FILLING, y puede contener solo valores de la enumeración ENUM_ORDER_TYPE_FILLING

Política de ejecución

Descripción

Valor en ENUM_ORDER_TYPE_FILLING

Todo/Nada (Fill or Kill)

La orden solo puede ser ejecutada en el volumen indicado.

 

Si en el mercado en estos momentos no existe volumen suficiente de un instrumento financiero, la orden no será ejecutada.

 

El volumen necesario puede componerse de varias ofertas disponibles en el mercado en el momento actual.

 

La posibilidad de usar órdenes FOK se determina en el servidor comercial.

ORDER_FILLING_FOK

Todo/Parte (Immediate or Cancel)

El tráder acepta realizar una transacción al volumen máximo disponible en el mercado dentro del indicado en la orden.

 

En caso de que no sea posible la ejecución completa, la orden se ejecutará con el volumen disponible, mientras que el volumen de la orden no ejecutado será cancelado.

 

La posibilidad de usar órdenes IOC se determina en el servidor comercial.

 

ORDER_FILLING_IOC

Devolver (Return)

En caso de ejecución parcial, la orden con el volumen restante no se cancela, sino que continúa activa.

 

Las órdenes Return no están permitidas en el modo de ejecución Market Execution (ejecución de órdenes por mercado – SYMBOL_TRADE_EXECUTION_MARKET).

ORDER_FILLING_RETURN

Al enviar una solicitud comercial usando la funciónOrderSend(), la política de ejecución necesaria por volumen se puede configurar en el campo type_filling, en la estructura especial MqlTradeRequest se permiten valores de la enumeración ENUM_ORDER_TYPE_FILLING. Para obtener el valor de esta propiedad en una orden activa/activada específica, se usará la función OrderGetInteger() o HistoryOrderGetInteger() con el modificador ORDER_TYPE_FILLING.

Antes de enviar una orden con ejecución en el momento actual, para establecer correctamente el valor ORDER_TYPE_FILLING (tipo de ejecución por volumen), podemos obtener para cada instrumento financiero con la ayuda de la función SymbolInfoInteger() el valor de la propiedad SYMBOL_FILLING_MODE, que muestra en forma de combinación de banderas los tipos de ejecución por volumen permitidos para este símbolo. Cabe señalar que el tipo de rellenado ORDER_FILLING_RETURN siempre está permitido, salvo para el modo "Ejecución por mercado" (SYMBOL_TRADE_EXECUTION_MARKET).

El uso de los tipos de rellenado según el modo de ejecución se puede representar en forma de recuadro:

Modo de ejecución\Política de rellenado

Todo/Nada (FOK ORDER_FILLING_FOK)

Todo/Parte (IOC ORDER_FILLING_IOC)

Devolver (Return ORDER_FILLING_RETURN)

Ejecución instantánea

 

(SYMBOL_TRADE_EXECUTION_INSTANT)

+ (independientemente de los ajustes del símbolo)

+ (independientemente de los ajustes del símbolo)

+ (siempre)

Ejecución por solicitud

 

SYMBOL_TRADE_EXECUTION_REQUEST

+ (independientemente de los ajustes del símbolo)

 

+ (independientemente de los ajustes del símbolo)

+ (siempre)

Ejecución por mercado

 

SYMBOL_TRADE_EXECUTION_MARKET

+ (se establece en los ajustes del símbolo)

+ (se establece en los ajustes del símbolo)

- (prohibido independientemente de los ajustes del símbolo)

Ejecución por bolsa

 

SYMBOL_TRADE_EXECUTION_EXCHANGE

+ (se establece en los ajustes del símbolo)

+ (se establece en los ajustes del símbolo)

+ (siempre)

Para las órdenes pendientes, independientemente del modo de ejecución (SYMBOL_TRADE_EXEMODE), se debe usar el tipo de rellenado ORDER_FILLING_RETURN, ya que dichas órdenes no están pensadas para ejecutarse en el momento del envío. Al usar órdenes pendientes, el tráder aceptará de antemano que cuando se den las condiciones para una transacción en esta orden, el bróker usará el tipo de rellenado que sea compatible con la plataforma comercial dada.

 

Se puede determinar el plazo de vigencia de la orden en el campo type_time de la estructura especial MqlTradeRequest a la hora de enviar la solicitud comercial mediante OrderSend(). Se admiten los valores de la enumeración ENUM_ORDER_TYPE_TIME. Para obtener el valor de esta propiedad utilice la función OrderGetInteger() o HistoryOrderGetInteger() con el modificador ORDER_TYPE_TIME.

ENUM_ORDER_TYPE_TIME

Identificador

Descripción

ORDER_TIME_GTC

Orden estará en la cola hasta que se retire

ORDER_TIME_DAY

Orden estará vigente sólo en el transcurso del día comercial corriente

ORDER_TIME_SPECIFIED

Orden estará vigente hasta que se expire el plazo de vigencia

ORDER_TIME_SPECIFIED_DAY

Orden se mantiene activa hasta las 23:59:59 del día especificado. Si está hora no cae en ninguna sesión de trading, la expiración llega a la hora de trading más cercana.

 

En la propiedad ORDER_REASON se contiene el motivo de la colocación de una orden. Una orden puede colocarse con la ayuda de un programa MQL5 o desde una aplicación móvil, o bien como resultado del evento StopOut, etcétera.  Los posibles valores de ORDER_REASON se describen en la enumeración ENUM_ORDER_REASON.

ENUM_ORDER_REASON

Identificador

Descripción

ORDER_REASON_CLIENT

La orden se ha colocado desde el terminal de escritorio

ORDER_REASON_MOBILE

La orden se ha colocado desde la aplicación móvil

ORDER_REASON_WEB

La orden se ha colocado desde la plataforma web

ORDER_REASON_EXPERT

La orden se ha colocado desde un programa MQL5 - un asesor o script

ORDER_REASON_SL

La orden se ha colocado como resultado de la activación de un Stop Loss

ORDER_REASON_TP

La orden se ha colocado como resultado de la activación de un Take Profit

ORDER_REASON_SO

La orden se ha colocado como resultado del evento Stop Out