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

 
Alexey Viktorov:

El primer EA se da cuenta de que después de su OrderSend el historial aún no está sincronizado. Sólo está esperando el evento de la sincronización.

Pero, ¿cómo entiende el segundo Asesor Experto que el historial está sincronizado o no todavía?

 
fxsaber:

El primer EA se da cuenta de que después de su OrderSend el historial aún no está sincronizado. Sólo está esperando el evento de la sincronización.

Pero, ¿cómo entiende el segundo Asesor Experto que el historial está sincronizado o no todavía?

Olvídate de la historia. Intente estudiar el comportamiento de la función OnTradeTransaction().

El primer Asesor Experto ha puesto una posición y este evento se maneja en OnTradeTransaction donde se activa la orden errónea... Este evento se maneja también en OnTradeTransaction.

El segundo Asesor Experto también filtra las órdenes, posiciones y operaciones que no son suyas.

Tengo 2 EAs trabajando en cuentas reales. En uno de ellos, el mago de la posición asigna un billete a la posición a la que debe estar unido. Y tú mismo entiendes que no son dos magos diferentes...

¿Creo que te llamas Víctor? Comienza a establecer dos posiciones con diferentes magos en la depuración y rastrea sus estructuras en OnTradeTransaction.

 
Alexey Viktorov:

Olvídate de la historia. Intente estudiar el comportamiento de la función OnTradeTransaction().

El primer Asesor Experto colocó una posición, OnTradeTransaction maneja este evento, los "no suyos" son tamizados allí, la orden se activa... OnTradeTransaction también maneja este evento.

El segundo Asesor Experto también filtra las órdenes, posiciones y operaciones que no son suyas.

Tengo 2 EAs trabajando en cuentas reales. En uno de ellos, el mago de la posición asigna un billete a la posición a la que debe estar unido. Y tú mismo entiendes que no son dos magos diferentes...

¿Creo que te llamas Víctor? Comienza a establecer dos posiciones con diferentes magos en la depuración y rastrea sus estructuras en OnTradeTransaction.

Si miras cuidadosamente mis registros, puedes ver

que el billete se reciba más rápido de lo que se dispara OnTradeTransaction, por lo que

la hoja de pedido será suficiente.

Aunque, por supuesto (en este caso) es mejor usar a Magician.

Y (mejor aún) utilizar OrderSendAsync - no hay errores, ni en FOREX, ni en FORTS.

 
prostotrader:

Si miras de cerca mis registros, puedes ver,

que el billete se recibe más rápido que el OnTradeTransaction, por lo que

la hoja de pedido será suficiente.

Aunque, por supuesto (en este caso) sería mejor usar Mago.

Y (por ahora) es mejor usar OrderSendAsync - no hay errores, ni en FOREX, ni en FORTS.

Tal vez, esto puede ser así. ¿Pero qué pasa si la orden pendiente se activa? ¿Debemos analizar la historia? ¿Otro problema con la velocidad de sincronización del entorno?

En definitiva, es un juego de aficionados. Lo principal es hacer que funcione, no frenar demasiado y evitar...

 
Alexey Viktorov:

Olvida la historia. Intente estudiar el comportamiento de OnTradeTransaction()

¿Cómo funciona la segunda durante una historia no sincronizada?

Este problema no sólo afecta a la MT5, sino también a la cuádruple.

 
fxsaber:

¿Cómo funciona la segunda durante una historia no sincronizada?

Este problema no sólo afecta a MT5, sino también a Quadruple.

Cada vez estoy más seguro de que su nombre es Víctor. No le diré a nadie tu antiguo apodo.

Has dominado la programación a un nivel superior a la media en poco tiempo, en mi opinión, incluso por encima de la media. Pero es muy difícil moverte de tu posición errónea. Y ahora que tu nivel de conocimientos de programación es superior al mío, ni siquiera voy a intentarlo.

Olvídese del historial, vea las estructuras de la función OnTradeTransaction.

Intenta explicar con palabras, ¿cómo se determina en mql5 que una orden pendiente está activada?

 
Alexey Viktorov:

Cada vez estoy más seguro de que su nombre es Víctor. No le diré a nadie tu antiguo apodo.

Has dominado la programación en poco tiempo...

En realidad, es otra reencarnación de hrenfx. Decidió venir de una nueva manera.
 
prostotrader:

Si miras de cerca mis registros, puedes ver,

que el billete se recibe más rápido que el OnTradeTransaction, por lo que

la hoja de pedido será suficiente.

Aunque, por supuesto, (en este caso) sería mejor usar Mago.

Y (por ahora) es mejor usar OrderSendAsync - no hay errores, ni en FOREX, ni en FORTS.

¿Y cuál es la ventaja de OrderSendAsync()? No espera la respuesta en Resultados. Significa que hay que cogerlo más tarde. No está claro cuál es la ventaja.
 
prostotrader:

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

Gracias.
 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

¿Cómo puedo conocer mi comisión sin abrir una posición en un símbolo?

fxsaber, 2016.11.08 20:30

#include <MT4Orders.mqh>

void OnStart()
{
  const int Ticket = OrderSend(_Symbol, OP_BUY, 1, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0, 0);
  
  OrderClose(Ticket, 0.3, SymbolInfoDouble(_Symbol, SYMBOL_BID), 0, clrNONE);

  Sleep(1000); // ждем обновления истории
  
  if (OrderSelect(Ticket, SELECT_BY_TICKET))
    Alert(OrderCommission());
}

Supongo que este ejemplo es ilustrativo.

Si no se hace Sleep, a menudo se produce una situación en la que el historial no ha tenido tiempo de actualizarse después de OrderClose y OrderCommission devuelve un valor como si OrderClose no se hubiera hecho.

Tenga en cuenta que se trata de un guión y que no puede haber ningún tipo de evento. La única salida es un Sueño tonto.

Si reescribes este script con SB, nada cambiará.