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
¿Tal vez, necesitamos PositionTotal()?
¿Y qué tiene que ver con la posición si pregunto a OrdersTotal() cuántos pedidos hay actualmente?
Y esta información la solicito en OnTrade(), no puede faltar el momento en que existe la orden.
Pero, de hecho, resulta que este momento se pierde de todos modos y las solicitudes se procesan cuando el pedido aún no está presente o cuando ya lo está.
Pero el momento en que existe no se detecta en OnTrade(), o bien, el OrdersTotal() miente.
Para no quejarse de la imperfección del código, aquí está el código de MetaQuotes con mi mejora del script en el Asesor Experto.
Se ha añadido la función OnTrade() y se ha puesto el código del script en OnInit().
Ni una sola impresión muestra un mensaje de que hay un pedido.
Sólo puedo responder a esto con un artículo Eventos comerciales en MetaTrader 5:
Заключение
Todas las operaciones en la plataforma comercial y analítica MetaTrader 5 son asíncronas, y todos los cambios en la cuenta comercial se notifican independientemente unos de otros. Por lo tanto, no debe tratar de seguir un solo evento según la regla "Una solicitud - Un evento comercial". Si queremos determinar exactamente qué ha cambiado después del evento Trade, tenemos que analizar todas las operaciones, posiciones y órdenes en cada llamada del manejador OnTrade y compararlas con el estado que teníamos antes de que apareciera el evento.Sólo puedo responder a esto con el artículo Trading Events in MetaTrader 5:
Esto significa que el pedido que está tratando de atrapar probablemente ya debería ser buscado usando HistoryOrdersTotalMe guío por este artículo. Me gustaría saber la respuesta a la pregunta: ¿cómo es posible que un evento de comercio se pierda en el momento en que se coloca una orden pero aún no se ha ejecutado?
Los eventos comerciales son generados por el servidor en los siguientes casos
Sospecho que OrderTotal() falla. Pero no puedo probarlo con esta funcionalidad.
Aunque como opción no rechazo que OrderTotal() esté tomando los datos no donde creo que están (es decir, no en el servidor).
Estoy siguiendo este artículo. Me gustaría encontrar la respuesta a la pregunta: ¿cómo es que un evento de comercio se pierde el momento en que una orden ha sido colocada pero aún no ha sido ejecutada?
Cuando llegan los eventos comerciales, la orden ya ha sido colocada y ejecutada. Por lo tanto, no se encuentra entre las órdenes activas y ya se ha añadido al historial.
Sí, sí, mis pensamientos flotan alrededor de esta respuesta.
Yo respondería así, en el momento en que se realiza la orden, el servidor genera un evento "trades" y lo envía al terminal, cuando el terminal lo recibe, se hace una petición en el código del número de órdenes, pero cuando esta petición llega al servidor, éste ya ha ejecutado la orden.
No tengo ninguna otra explicación.
Los eventos comerciales son generados por el servidor en los siguientes casos:
Sospecho que OrderTotal() falla. Pero no puedo probarlo con esta funcionalidad.
¿He entendido bien que la lista de órdenes activas incluye tanto las órdenes pendientes activas como las órdenes para abrir una posición?
¿Qué significa esto?
... en la pestaña "Expertos" aparece este mensaje. No es un error, es una advertencia. ¿Una advertencia sobre qué?
Bueno, no he dicho "error". Que sea una "advertencia". Ya he dicho mi versión con un ejemplo. Vuelva a mirar la discusión desde aquí (sobre la fuga de línea - lea hasta el final de la página): https://www.mql5.com/ru/forum/1111/page345#comment_54616
Es posible que tengas que acudir al BOD, con los detalles de tu situación.
Encontré una "confusión".
¿Por qué al compilador no le gusta la segunda definición de la variable b?
Y en general, ¿cómo puedo manejar esta situación?