- 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
Solicitar resultado del envío: estructura MqlTradeResult
En respuesta a una solicitud de operación ejecutada por las funciones OrderSend u OrderSendAsync que veremos en la siguiente sección, el servidor devuelve los resultados del procesamiento de la solicitud. Para ello se utiliza una estructura especial MqlTradeResult predefinida.
struct MqlTradeResult
|
En la siguiente tabla se describen sus campos:
Campo |
Descripción |
---|---|
retcode |
Código de retorno del servidor de trading |
deal |
Ticket de transacción si se realiza (durante la operación de trading TRADE_ACTION_DEAL) |
order |
Ticket de orden si se realiza (durante la operación de trading TRADE_ACTION_PENDING) |
volume |
Volumen de trading confirmado por el bróker (depende de los modos de ejecución de la orden) |
price |
El precio de la transacción confirmado por el bróker (depende del campo deviation de la solicitud de operación, modo de ejecución y la operación de trading) |
bid |
Precio de oferta actual del mercado |
ask |
Precio de demanda actual del mercado |
comment |
Comentario del bróker sobre la operación (por defecto, se rellena con la desencriptación del código de retorno del servidor de trading) |
request_id |
ID de la solicitud que establece el terminal al enviarla al servidor de trading. |
retcode_external |
Código de error devuelto por el sistema de trading externo |
Como veremos más adelante al realizar las operaciones de trading se pasa una variable de tipo MqlTradeResult como segundo parámetro por referencia en la función OrderSend u OrderSendAsync. Devuelve el resultado.
Al enviar una solicitud de operación al servidor, el terminal establece el identificador request_id en un valor único. Esto es necesario para el análisis de los eventos de trading posteriores, lo cual es necesario si se utiliza una función asíncrona OrderSendAsync. Este identificador permite asociar la solicitud enviada con el resultado de su procesamiento pasado al manejador de eventos OnTradeTransaction.
La presencia y los tipos de errores en el campo retcode_external dependen del bróker y del sistema de trading externo al que se envían las operaciones de trading.
Los resultados de las solicitudes se analizan de distintas maneras, en función de las operaciones de trading y de la forma en que se envían. Nos ocuparemos de ello en secciones posteriores sobre acciones específicas: compra y venta en el mercado, colocación y eliminación de órdenes pendientes, y modificación y cierre de posiciones.