
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
Por desgracia, sólo a través de una muleta - una variable global de la terminal.
Y a través de muletas adicionales para asegurar que la variable principal se borre en caso de un choque, por ejemplo.
Así que mi variante con la espera de una transacción en el historial es más fiable y más simple. Pero sigue siendo una muleta.
No lo he comprobado, pero quizás después de OrderSend TODOS los EAs reciben el evento correspondiente paraOnTradeTransaction.
Entonces todo se resuelve sin muletas y para múltiples EAs sobre el mismo símbolo.
¿Quieres que te ayude a evitar estos contratiempos (desde la experiencia personal de operar con robots MT5 en una cuenta real)?
Añadido
Totalmente gratis :)
La gente no quiere pensar por sí misma, quiere que otros lo hagan por ella... Por desgracia, esto es cierto.
La gente no sólo piensa, sino que también comparte sus soluciones. Por desgracia, los desarrolladores no dicen nada al respecto.
Ni un solo ejemplo en la Documentación sobre este tema. Y eso es con la función principal.
Yo apoyo. Si estuviera escrito en alguna parte que OrderSend() espera una respuesta del servidor y lo que sucede a continuación, no habría necesidad de idear soluciones para comprobarlo.
Hay un excelente artículo sobre los pedidos, las ofertas y las posiciones y el trabajo con ellos y su caché que lo detalla todo. Sin embargo, elude por completo los procesos que tienen lugar cuando se envían los pedidos en sí.
Mi sugerencia
Úsalo.
Y qué sucede si el evento OnTrade() se activa antes de que el procesamiento de OnTick() haya terminado. A veces el tiempo es esencial. Esperar a que se produzca el evento OnTrade() puede ser problemático. Además, la propia función OrderSend( ) está diseñada para que pueda obtener información sobre sus resultados en el momento. ¿O no?
OrderSend() es una función absolutamente sincrónica - si se recibe un ticket, todo se ejecuta.
A continuación, un ejemplo
Añadido, y aquí están los registros
https://www.mql5.com/ru/forum/38456/page85#comment_2888263
No se ejecuta, pero se envía al servidor de MT5.
No. Para la Bolsa - fue a la Bolsa (puede no haber cumplido :) ), para FOREX no sé
Añadido
Es decir (para la bolsa), si se obtiene un ticket en la función OrderSend((), significa que la orden es aceptada por la bolsa
Añadido
Ver imagen (hubo cambios en 1375)
Se trata de un caso especial de envío de una orden limitada a una bolsa. ¿Qué pasa con una orden de mercado en el mercado de divisas?
Ni una sola vez en este hilo. Sólo sobre la sincronización de MT5 y OrderSend.
Así que la respuesta no encaja.
No. Para Exchange - fue a Exchange (quizás no se cumplió :) ), para FOREX no sé
Añadido
Es decir (para la bolsa), si se obtiene un ticket enla función OrderSend((), significa que la orden es aceptada por la bolsa
Añadido
Ver imagen (hubo cambios en 1375)