Cómo trabajar correctamente en MT5 con OrderSend - página 4

 
fxsaber:
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.

 
prostotrader:

¿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 :)

¡Quiérelo! :)
 
prostotrader:
La gente no quiere pensar por sí misma, quiere que otros lo hagan por ella... Por desgracia, esto es cierto.
Para pensar, hay que tener información para pensar. ¿Cómo se puede pensar si no hay suficiente información de fondo?
 
fxsaber:

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í.

 
fxsaber:
Mi sugerencia

prostotrader:

Úsalo.

Qué ocurre si el evento OnTrade() se activa antes de que el proceso OnTick() haya terminado. A veces el tiempo es esencial. Esperar hasta que llegue a 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?
 
Oleg Shenker:
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

ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,.
Archivos adjuntos:
TestOrders.mq5  23 kb
 
Andrey Khatimlianskii:
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)

 
Andrey Khatimlianskii:

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?

He dicho que no sé sobre FOREX
 
Andrey Khatimlianskii:

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)

Razón de la queja: