- 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
Propiedades de transacciones
Una transacción refleja el hecho de que se ha realizado una operación de trading sobre la base de una orden. Una orden puede generar varias transacciones debido a la ejecución por partes o al cierre opuesto de posiciones.
Las transacciones se caracterizan por propiedades de tres tipos básicos: entero (y compatibles con ellos), real y cadena. Cada propiedad se describe mediante su propia constante en una de las enumeraciones: ENUM_DEAL_PROPERTY_INTEGER, ENUM_DEAL_PROPERTY_DOUBLE, ENUM_DEAL_PROPERTY_STRING.
Para leer las propiedades de las transacciones, utilice las funciones HistoryDealGet . Todos ellos asumen que la sección necesaria del historial fue solicitada previamente utilizando funciones especiales para la selección de órdenes y transacciones del historial
Las propiedades de enteros se describen en la enumeración ENUM_DEAL_PROPERTY_INTEGER.
Identificador |
Descripción |
Tipo |
|---|---|---|
DEAL_TICKET |
Ticket de transacción; un número único que se asigna a cada transacción. |
ulong |
DEAL_ORDER |
El ticket de la orden en base a la cual se ejecutó la operación. |
ulong |
DEAL_TIME |
Hora de la transacción |
datetime |
DEAL_TIME_MSC |
Tiempo de la transacción en milisegundos |
ulong |
DEAL_TYPE |
Tipo de transacción |
ENUM_DEAL_TYPE (véase más abajo) |
DEAL_ENTRY |
Dirección de la transacción: entrada en el mercado, salida del mercado o inversión |
ENUM_DEAL_ENTRY (véase más abajo) |
DEAL_MAGIC |
Número mágico de la transacción (basado en ORDER_MAGIC) |
ulong |
DEAL_REASON |
Fuente o motivo de la transacción |
ENUM_DEAL_REASON (véase más abajo) |
DEAL_POSITION_ID |
Identificador de la posición abierta, modificada o cerrada por la transacción |
ulong |
Los posibles tipos de transacción se representan mediante la enumeración ENUM_DEAL_TYPE.
Identificador |
Descripción |
|---|---|
DEAL_TYPE_BUY |
Comprar |
DEAL_TYPE_SELL |
Vender |
DEAL_TYPE_BALANCE |
Saldo devengado |
DEAL_TYPE_CREDIT |
Devengo de créditos |
DEAL_TYPE_CHARGE |
Cargos adicionales |
DEAL_TYPE_CORRECTION |
Corrección |
DEAL_TYPE_BONUS |
Bonificaciones |
DEAL_TYPE_COMMISSION |
Comisión adicional |
DEAL_TYPE_COMMISSION_DAILY |
Comisión cobrada al final del día de trading |
DEAL_TYPE_COMMISSION_MONTHLY |
Comisión cobrada a final de mes |
DEAL_TYPE_COMMISSION_AGENT_DAILY |
Comisión de agente cobrada al final del día de trading |
DEAL_TYPE_COMMISSION_AGENT_MONTHLY |
Comisión del agente cobrada a final de mes |
DEAL_TYPE_INTEREST |
Devengo de intereses de los fondos libres |
DEAL_TYPE_BUY_CANCELED |
Transacción de compra cancelada |
DEAL_TYPE_SELL_CANCELED |
Transacción de venta cancelada |
DEAL_DIVIDEND |
Devengo de dividendos |
DEAL_DIVIDEND_FRANKED |
Devengo de un dividendo con franquicia (exento de impuestos) |
DEAL_TAX |
Devengo de impuestos |
Las opciones DEAL_TYPE_BUY_CANCELED y DEAL_TYPE_SELL_CANCELED reflejan la situación cuando se cancela una transacción anterior. En este caso, el tipo de la transacción ejecutada previamente (DEAL_TYPE_BUY o DEAL_TYPE_SELL) se cambia a DEAL_TYPE_BUY_CANCELED o DEAL_TYPE_SELL_CANCELED, y su beneficio/pérdida se pone a cero. Los beneficios/pérdidas percibidos anteriormente se abonan/cargan en la cuenta como una operación de saldo independiente.
Las transacciones difieren en la forma de cambiar de posición. Puede tratarse de la simple apertura de una posición (entrada en el mercado), el aumento del volumen de una posición abierta previamente, el cierre de una posición con una transacción en sentido opuesto o la inversión de la posición cuando la transacción opuesta cubre el volumen de una posición abierta previamente. Esta última operación sólo se admite en las cuentas de compensación.
Todas estas situaciones se describen mediante los elementos de la enumeración ENUM_DEAL_ENTRY.
Identificador |
Descripción |
|---|---|
DEAL_ENTRY_IN |
Entrada en el mercado |
DEAL_ENTRY_OUT |
Salida del mercado |
DEAL_ENTRY_INOUT |
Inversión |
DEAL_ENTRY_OUT_BY |
Cierre por una posición opuesta |
Los motivos de la transacción se resumen en la enumeración ENUM_DEAL_REASON.
Identificador |
Descripción |
|---|---|
DEAL_REASON_CLIENT |
Activación de una orden cursada desde el terminal de sobremesa. |
DEAL_REASON_MOBILE |
Activación de una orden cursada desde una aplicación móvil. |
DEAL_REASON_WEB |
Activación de una orden cursada desde la plataforma web. |
DEAL_REASON_EXPERT |
Activación de una orden cursada por un Asesor Experto o un script. |
DEAL_REASON_SL |
Orden Stop Loss activada |
DEAL_REASON_TP |
Activación de la orden Take Profit |
DEAL_REASON_SO |
Evento Stop Out |
DEAL_REASON_ROLLOVER |
Transferencia de posición a un nuevo día |
DEAL_REASON_VMARGIN |
Añadir/deducir margen de variación |
DEAL_REASON_SPLIT |
Dividir (precio más bajo) el instrumento en el que había una posición |
Las propiedades de tipo real se representan mediante la enumeración ENUM_DEAL_PROPERTY_DOUBLE.
Identificador |
Descripción |
|---|---|
DEAL_VOLUME |
Volumen de la transacción |
DEAL_PRICE |
Precio de la transacción |
DEAL_COMMISSION |
Comisión de la transacción |
DEAL_SWAP |
Permuta acumulada al cierre |
DEAL_PROFIT |
Resultado financiero de la transacción |
DEAL_FEE |
Comisión por la transacción que se cobra inmediatamente después de la misma. |
DEAL_SL |
Nivel de Stop Loss |
DEAL_TP |
Nivel de Take Profit |
Las dos últimas propiedades se rellenan de la siguiente manera: para una transacción de entrada o de inversión, el valor Stop Loss/Take Profit se toma de la orden por la que se abrió o amplió la posición. Para la transacción de salida, el valor Stop Loss/Take Profit se toma de la posición en el momento de su cierre.
Las propiedades de transacción de cadenas están disponibles a través de las constantes de enumeración ENUM_DEAL_PROPERTY_STRING.
Identificador |
Descripción |
|---|---|
DEAL_SYMBOL |
El nombre del símbolo por el que se ha realizado la transacción |
DEAL_COMMENT |
Comentarios de la transacción |
DEAL_EXTERNAL_ID |
Identificador de la transacción en el sistema de trading externo (en la bolsa) |
Probaremos cómo leer las propiedades en la sección sobre las funciones HistoryDealGet a través de las clases DealMonitor y DealFilter.