- Información sobre datos históricos del instrumento
- Propiedades de órdenes
- Propiedades de posiciones
- Propiedades de transacciones
- Tipos de operaciones comerciales
- Types of Trade Transactions
- Tipos de órdenes en profundidad de mercado
- Propiedades de señales
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()
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 |
|
ORDER_STATE |
Estatus de la orden |
|
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 |
|
ORDER_TYPE_TIME |
Tiempo de vida de la orden |
|
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 |
|
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()
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()
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.
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.
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.
|
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 |
Pasiva (Book or Cancel) |
Una orden BoC implica que la orden solo puede colocarse en la Profundidad de Mercado y no puede ejecutarse inmediatamente. Si la orden puede ejecutarse inmediatamente al colocarse, entonces se eliminará.
De hecho, la política de BoC garantiza que el precio de la orden colocada será peor que el del mercado actual. Las órdenes BoC se utilizan para implementar la negociación pasiva, de forma que se garantice que la orden no se ejecutará inmediatamente tras su colocación y no afecte a la liquidez actual.
Solo se admite para órdenes límite y stop (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT, ORDER_TYPE_SELL_STOP_LIMIT). |
ORDER_FILLING_BOC |
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.
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.
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 |