![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Algo que no se me da bien explicar, por lo visto. He aquí un ejemplo de la vida real. Aquí está el código:
y así sucesivamente.
Podemos ver que el tiempo de respuesta de OnTradeTransaction en dos Asesores Expertos coincide en milisegundos. Entonces, tengo una pregunta: ¿el evento "deal" llega primero a un OnTradeTransaction en un EA y luego al siguiente en otro EA o de alguna manera llega a todos los manejadores de todos los EAs a la vez? Bueno, es como una operación paralela multihilo o como se llame en programación. Estoy seguro de que todo sucede secuencialmente, sólo se procesa en un milisegundo, pero lo he preguntado por si acaso.
Algo que no se me da bien explicar, por lo visto. He aquí un ejemplo de la vida real. Aquí está el código:
void OnTradeTransaction(const MqlTradeTransaction& trans,
const MqlTradeRequest& request,
const MqlTradeResult& result)
{
Cuenta++;
Print("Prueba_de_ontrade = ",Cuenta);
}
El manejador se implementa en dos Asesores Expertos por lo que se ejecuta múltiples veces en dos Asesores Expertos cuando se realiza una operación. El código sale:
18:31:06.495 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 1
18:31:06.495 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 1
18:31:06.497 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 2
18:31:06.497 ontrade_trans_functions2 (MXI-12.17,M5) Ontrade_test = 2
18:31:06.498 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 3
18:31:06.498 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 3
18:31:06.500 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 4
18:31:06.500 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 4 ...
y así sucesivamente.
Puede ver que el tiempo de respuesta de OnTradeTransaction en los dos Asesores Expertos es el mismo en milisegundos. Entonces, tengo una pregunta: ¿el evento de comercio llega primero a un OnTradeTransaction en un EA y luego al siguiente en otro EA o de alguna manera llega a todos los manejadores de todos los EAs a la vez? Bueno, es como una operación paralela multihilo o como se llame en programación. Estoy seguro de que todo sucede secuencialmente, sólo funciona rápido en un milisegundo, pero lo pregunté por si acaso.
Manejador OnTradeTransaction para UN símbolo (m_symbol.Name()) y una magia (m_magic).
Atrapar la transacción primero
TRADE_TRANSACTION_DEAL_ADD
Añade la transacción al historial. Esto se hace como resultado de la ejecución de una orden o de las operaciones de saldo de la cuenta.
entonces miramos si es un comercio
DEAL_ENTRY_OUT
Salida del mercado
El eventoOnTradeTransaction es un evento de difusión, todas las acciones que realiza su terminal se "vuelcan" allí.
Lo que ocurre es que cada EA tiene que filtrar sus propias acciones.
Luego, en cada tipo, filtramos por ticket, si el pedido se envía de forma asíncrona, entonces
primero, obtenemos el ticket por su ID de solicitud y luego filtramos por el ticket.
El eventoTRADE_TRANSACTION_REQUEST siempre va primero, los demás "como quieran".
Añadido
Esto se ha discutido muchas veces.
Búsquelo en Exchange Trading
Gracias, parece que se están "anotando" los tratos correctos.