- Estructura de fecha
- Estructura de parámetros de entrada de indicador
- Estructura de datos históricos
- Estructura de profundidad de mercado
- Estructura de solicitud comercial
- Estructura de resultados de verificación de una solicitud comercial
- Estructura de resultado de solicitud comercial
- Structure of a Trade Transaction
- Estructura para obtención de precios actuales
- Estructuras del calendario económico
Estructura de resultado de solicitud comercial (MqlTradeResult)
Respondiendo a una solicitud comercial acerca de colocación de una orden en el sistema comercial, el servidor comercial devuelve los datos que contienen la información sobre el resultado de procesamiento de la solicitud comercial en forma de la estructura especial predefinida MqlTradeResult.
struct MqlTradeResult
{
uint retcode; // Código del resultado de operación
ulong deal; // Ticket de transacción, si está concluida
ulong order; // Ticket de la orden, si está colocada
double volume; // Volumen de la transacción confirmado por el corredor
double price; // Precio en la transacción confirmada por el corredor
double bid; // Precio actual de la oferta en el mercado (precios recuota)
double ask; // Precio actual de la demanda en el mercado (precios recuota)
string comment; // Comentarios del corredor acerca de la operación (por defecto se rellena con la descripción código de retorno del servidor comercial)
uint request_id; // El terminal pone el identificador de la solicitud a la hora de enviarla
int retcode_external; // Código de respuesta del sistema de comercio exterior
};
Descripción de campos
Campo |
Descripción |
---|---|
retcode |
Código de retorno del servidor comercial |
deal |
Ticket de la transacción, si está concluida. Se comunica al ejecutar la operación comercial TRADE_ACTION_DEAL |
order |
Ticket de la orden, si está colocada. Se comunica al ejecutar la operación comercial TRADE_ACTION_PENDING |
volume |
Volumen de la transacción confirmado por el corredor. Depende del tipo de ejecución de la orden |
price |
Precio en la transacción confirmada por el corredor. Depende del campo deviation en la solicitud comercial y/o del tipo de la operación comercial |
bid |
Precio actual de la oferta en el mercado (precios recuota) |
ask |
Precio actual de la demanda en el mercado (precios recuota) |
comment |
Comentarios del corredor acerca de la operación (por defecto se rellena con la descripción código de retorno del servidor comercial) |
request_id |
Identificador de solicitud puesto por el terminal al inviarla al servidor de trading |
retcode_external |
Código de error que es retornado por el sistema de comercio exterior. El uso y tipos de estos errores van a depender del bróker y del sistema de comercio exterior a partir del cual son enviadas las operaciones de negociación |
El resultado de la operación comercial se devuelve en una variable del tipo MqlTradeResult la que se pasa como segundo parámetro a la función OrderSend() para realizar las operaciones comerciales.
El terminal registra el identificador de la solicitud en el campo request_id a la hora de enviarla al servidor de trading por medio de las funciones OrdersSend() y OrderSendAsync(). El terminal recibe los mensajes de parte del servidor de trading sobre las transacciones comerciales realizadas y las pasa para el procesamiento a la función OnTradeTransaction() que contiene como parámetro:
- descripción de la misma transacción comercial en la estructura MqlTradeTransaction;
- descripción de la solicitud comercial que ha sido enviada desde la función OrderSend() o OrdersSendAsync(). El terminal envía el identificador de la solicitud al servidor de trading, mientras que la misma solicitud y su request_id se guardan en la memoria del terminal;
- resultado de la ejecución de la solicitud comercial en forma de la estructura MqlTradeResult donde el campo request_id contiene el identificador de esta solicitud.
La función OnTradeTransaction() obtiene tres parámetros de entrada, pero los dos últimos parámetros tiene sentido analizarlos sólo para las transacciones comerciales que tienen el tipo TRADE_TRANSACTION_REQUEST. En todos los demás casos, los datos sobre la solicitud comercial y el resultado de su ejecución no se rellenan. El ejemplo del análisis de los parámetros se muestra en el apartado Estructura de transacción comercial.
La puesta del identificador request_id para la solicitud comercial por parte del terminal a la hora de enviarla al servidor está destinada en primer lugar para el trabajo con la función asincrónica OrderSendAsync(). Este identificador permite vincular la acción ejecutada (llamada a la función OrderSend o OrderSendAsync) con el resultado de esta acción que se traspasa en OnTradeTransaction().
Ejemplo:
//+------------------------------------------------------------------+ |