MT5 y la velocidad en acción - página 6

 
A100:

Se sugiere que regrese repetidamente hasta leer toda la cola actual o para un número determinado de eventos. Cuando los eventos comerciales terminen, habrá un retorno del temporizador y tendrás acceso a todos los eventos a la vez

Bueno, voy a decir algo... Por supuesto, por supuesto, IMHO, pero es pedir que se ejecute el manejador en un hilo separado. Así que, pensando en voz alta...

Y si lo haces por ti mismo, lo pones todo fuera y cada manipulador será algo parecido:

void OnXXX{
 gOnXXXMutex.Lock();
 COnXXXOverlapped overlapped=new COnXXXOverlapped(<param_list>);
 gOnXXXOverlappedList.PushBack(overlapped);
 gOnXXXMutex.Unlock();
 DLLOnXXX(<param_list>,overlapped,&gOnXXXMutex);
}
 
A100:
hay una solución más elegante, sin OnTimer... piensa en ello

Piensa por ti mismo por qué no funcionaría.

 
fxsaber:

Piensa por ti mismo por qué no funcionaría.

Y no hay que pensar - el mercado acaba de abrir, lo he comprobado - todo funciona, hasta el cálculo de la línea

if (наблюдаемая позиция закрылась по тейку)

loseventos comerciales se han añadido a la cola y pueden ser leídos

 
A100:

Y aquí no hace falta pensar - el mercado acaba de abrir, lo he comprobado - todo funciona, hasta la línea

los eventos comerciales se han añadido a la cola y pueden ser leídos

Lo siento, pero ni siquiera voy a explicar nada en su comprensión del funcionamiento correcto. Cansado de tener que deletrear cosas sencillas.

 
fxsaber:

Lo siento, pero ni siquiera voy a explicar nada en su comprensión del funcionamiento correcto. Estoy cansado de tener que explicar cosas simples.

Si no quieres explicarlo, no lo hagas. Acabo de mostrarte que añadir

bool HandleNextEvent (ENUM_EVENT_TYPE);

no cambia fundamentalmente nada

 
A100:

no cambia fundamentalmente

La diferencia es grande. Simplemente parece que se necesita mucho tiempo (con un resultado desconocido) para que la idea sea obvia en muchas cabezas.

 
fxsaber:

La diferencia es grande. Sólo que parece que se necesita mucho tiempo(con resultado desconocido) para que esta idea sea evidente en muchas cabezas.

No mucho, porque según la Teoría de la Simplicidad de Einstein: "Si no puedes explicarlo de forma sencilla, es que no lo entiendes".

 
A100:

No hace falta, porque según la Teoría de la Simplicidad de Einstein: "Si no puedes explicarlo de forma sencilla, es que no lo entiendes del todo".

Sí, no lo conseguiste.

 
fxsaber:

Sí, no te ha funcionado.

Y no he intentado explicar nada: he puesto un ejemplo y he obtenido resultados:

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

MT5 y Speed en acción

A100, 2020.05.31 23:23

...mercado acaba de abrir, he comprobado - todo está funcionando, antes del cálculo de la línea

if (наблюдаемая позиция закрылась по тейку)

Los eventos comerciales se han añadido a la cola y pueden ser leídos

Resulta que se pueden leer los eventos comerciales desde OnMain(). Usted afirmó lo contrario
 
A100:

No he intentado explicar nada, he puesto un ejemplo y he obtenido el resultado:

Resulta que se pueden leer los eventos comerciales desde OnMain(). Usted afirmó lo contrario.

No has entendido nada. Cuando volvemos, estamos entrando en la función On de la cola formada. Puede provocar una pausa que impida enviar la segunda correcta inmediatamente después del primer OrderSend.

Se propone acumular la cola guardando todas las funciones On después de la devolución, esperando la función On, en la que habrá un mensaje sobre el final del primer OrderSend. Y luego sólo enviar el segundo OrderSend.

Al mismo tiempo, no entiendes que la posición tomada puede ser ejecutada durante el primer OrderSend, pero su OnTradeTransaction estará en la cola más tarde (en el mismo microsegundo, pero más tarde) que el OnTradeTransaction final del primer OrderSend.

Razón de la queja: