Tipos de transacciones (transactions) comerciales

Como resultado de ejecución de ciertas acciones con la cuenta de trading su estado se cambia. A estas acciones les pertenecen:

  • El envío de una solicitud comercial por parte de cualquier aplicación MQL5 en el terminal de cliente utilizando la función OrderSend y OrderSendAsync, con su posterior ejecución;
  • El envío de una solicitud comercial a través de la interfaz gráfica del terminal y su posterior ejecución;
  • El accionamiento de órdenes pendientes y órdenes Stop en el servidor;
  • La ejecución de operaciones en el servidor de trading.

Como resultado de estas acciones, para la cuenta se ejecutan las transacciones comerciales:

  • tramitación de la solicitud comercial;
  • cambio de órdenes abiertas;
  • cambio del historial de órdenes;
  • cambio del historial de operaciones;
  • cambio de posiciones.

Por ejemplo, al enviar una orden de compra, ésta se tramita, para la cuenta se crea una orden de compra correspondiente, se realiza la ejecución de la orden, su eliminación de la lista de las abiertas, se agrega al historial de órdenes, luego la operación correspondiente se agrega al historial, y se crea una posición nueva. Pues todas estas acciones son transacciones comerciales.

Para que el programador pueda monitorear las acciones realizadas respecto a la cuenta de trading, está prevista la función OnTradeTransaction. Este manejador permite recibir en la aplicación MQL5 las transacciones comerciales que han sido aplicadas a la cuenta. La descripción de una transacción comercial se envía en el primer parámetro de OnTradeTransaction a través de la estructura MqlTradeTransaction.

El tipo de la transacción comercial se envía en el parámetro type de la estructura MqlTradeTransaction. Los posibles tipos de transacciones comerciales se describen en la enumeración:

ENUM_TRADE_TRANSACTION_TYPE

Identificador

Descripción

TRADE_TRANSACTION_ORDER_ADD

Agregación de una nueva orden abierta.

TRADE_TRANSACTION_ORDER_UPDATE

Modificación de orden abierta. A estas modificaciones les corresponden no sólo los cambios explícitos por parte del terminal de cliente o servidor de trading, sino también alteraciones de su estado durante la colocación (por ejemplo, paso del estado ORDER_STATE_STARTED a ORDER_STATE_PLACED o de ORDER_STATE_PLACED a ORDER_STATE_PARTIAL etc.).

TRADE_TRANSACTION_ORDER_DELETE

Eliminación de la orden de la lista de órdenes abiertas. Una orden puede ser eliminada de las abiertas como resultado de colocación de la solicitud correspondiente, o bien una vez ejecutada (llena) y pasada al historial.

TRADE_TRANSACTION_DEAL_ADD

Agregación de una transacción (deal) al historial. Se hace como resultado de ejecución de la orden o realización de la operación con el balance de la cuenta.

TRADE_TRANSACTION_DEAL_UPDATE

Modificación de una transacción (deal) en el historial. Puede pasar que una transacción (deal) ejecutada antes se cambie en el servidor. Por ejemplo, la transacción (deal) fue modificada en el sistema externo de trading (bolsa) a donde había sido pasada por el broker.

TRADE_TRANSACTION_DEAL_DELETE

Eliminación de una transacción (deal) del historial. Puede pasar que una transacción (deal) ejecutada antes se elimine en el servidor. Por ejemplo, la transacción (deal) fue eliminada en el sistema externo de trading (bolsa) a donde había sido pasada por el broker.

TRADE_TRANSACTION_HISTORY_ADD

Agregación de una orden al historial como resultado de su ejecución o cancelación.

TRADE_TRANSACTION_HISTORY_UPDATE

Modificación de una orden que se encuentra en el historial de órdenes. Este tipo está previsto para ampliar la funcionalidad en la parte del servidor.

TRADE_TRANSACTION_HISTORY_DELETE

Eliminación de una orden del historial de órdenes. Este tipo está previsto para ampliar la funcionalidad en la parte del servidor.

TRADE_TRANSACTION_POSITION

Modificación de la posición que no está relacionada con la ejecución de la transacción (deal). Este tipo de transacción (transaction) quiere decir que la posición ha sido modificada en la parte del servidor de trading. La posición puede sufrir el cambio del volumen, precio de apertura, así como de los niveles Stop Loss y Take Profit. La información sobre los cambios se envía en la estructura MqlTradeTransaction usando el manejador OnTradeTransaction. La modificación de una posición (agregación, cambio o eliminación) como resultado de ejecución de la transacción (deal) no supone la aparición tras sí la transacción (transaction) TRADE_TRANSACTION_POSITION.

TRADE_TRANSACTION_REQUEST

Aviso de que la solicitud comercial ha sido procesada por el servidor, y el resultado de su procesamiento ha sido recibido. Para las transacciones de este tipo en la estructura MqlTradeTransaction hay que analizar sólo un campo - type (tipo de transacción). Para obtener la información adicional hay que analizar el segundo y el tercer parámetro de la función OnTradeTransaction (request y result).

En función del tipo de la transacción comercial, en la estructura MqlTradeTransaction que la describe, se rellenan diferentes parámetros. La descripción detallada de los datos traspasados se puede encontrar en el apartado "Estructura de transacción comercial".

Véase también

Estructura de transacción comercial, OnTradeTransaction