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
¿Así que inicializar enDLL_PROCESS_ATTACH: será suficiente para llamar desde el programa mql?
Desde el programa mql para llamar a sus funciones ubicadas en la dll.
Desde el programa mql para llamar a sus funciones ubicadas en la dll.
¿Y cuál es el problema de describir sus firmas? ¿No se tira de winapi de alguna manera a través de las firmas de los métodos?
Lo siento, ¿por qué describirlos? Y lo siento, no he sacado nada))
Lo siento, ¿por qué describirlos? Y lo siento, no he sacado nada))
Estimados usuarios del foro.
Andrey, creo que todo el mundo entiende que la asincronía y el multihilo son cosas diferentes.
Dado que la función CreateThread() está descrita en el inluder de la WinAPI, se suponía que se podían utilizar hilos.
No hay funciones similares a CreateTask() descritas en el IDE, por lo que la suposición de una posible escritura de código asíncrono desaparece por sí misma.
Por lo tanto, se hizo hincapié en los hilos. Sin embargo, resultó que las funciones descritas son sólo prototipos de WinAPI.
Repito, la tarea era utilizar la WinAPI pura y el prototipo descrito CreateThread() era engañoso. No se dice en ningún sitio que sean prototipos.
Todas las tareas son diferentes, así que llegué al método asíncrono y creo que es mejor escribir siempre de forma asíncrona o en hilos,
Y desarrollar el hábito de escribir siempre de forma asíncrona, le permitirá escribir programas rápidos, y elevar su nivel como especialista.
¡Es el principio básico de los propios desarrolladores, la velocidad de ejecución de los programas mql, es nuestro todo!
Es una pena que mql no disponga de esta función,
Hago una sugerencia a la administración de mql para que desarrolle funciones estándar de mql para la programación asíncrona,
ya que hay problemas de hilos y, sobre todo, de seguridad.
Para el modo asíncrono creo que no hay problemas de seguridad.
Ejemplo de lógica
Resuelve la implementación de EventLoop en mql.
crear la clase MqlTask
Declarar las tareas como objeto MqlTask obj;
crear tarea tarea = obj.CreateTask(MyFunc());
ejecutar con éxito = task -> Run();
pausa ejecución éxito = tarea -> SleepMs(ms);
esperar el éxito = tarea -> Esperar(ms);
esperar indefinidamente éxito = tarea -> Wait(0);
eliminar la tarea después de que se ejecute la tarea de eliminación;
y todo tipo de getStatuses para controlarlo.
Andrey, creo que todo el mundo entiende que el modo asíncrono y el multihilo son cosas diferentes.
El inluder de la WinAPI contiene la función CreateThread() y habíamos asumido que se podían utilizar hilos.
Dado que no hay funciones similares a CreateTask() descritas en el IDE, no debemos considerar la posible escritura de código asíncrono.
Por lo tanto, se hizo hincapié en los hilos. Sin embargo, resultó que las funciones descritas son sólo prototipos de WinAPI.
Repito, la tarea era utilizar la WinAPI pura y el prototipo descrito CreateThread() era engañoso. No se dice en ningún sitio que sean prototipos.
Todas las tareas son diferentes, por lo que llegué a la asincronía. Creo que es mejor escribir siempre de forma asincrónica o en hilos,
Y un hábito desarrollado de escribir siempre de forma asíncrona, le permitirá escribir programas rápidos y elevar su nivel como especialista.
¡Es el principio básico de los propios desarrolladores, la velocidad de ejecución de los programas mql, es nuestro todo!
Lástima que no exista una función de este tipo en mql, así que haré una sugerencia al equipo de mql para que desarrollen una función estándar de mql
para la programación asíncrona, ya que hay problemas con los hilos y, sobre todo, de seguridad.
Creo que no hay obstáculos de seguridad para el modo asíncrono.
Elaborar la implementación de bucles y ejecutar tareas en estos bucles.
Decida si quiere ejecutar los métodos de forma asíncrona o multihilo. Yo, por ejemplo, trabajo con sockets de forma asíncrona desde mql.
Para determinar lo que es posible utilizar en mql y lo que está prohibido.
CreateThread() se encuentra en los inludes, así que pensé que era posible trabajar con hilos.
Pero resultó que los hilos están prohibidos, así que la elección recae en async, pero tampoco está claro cómo usar async en mql.
Sí, ese es exactamente el problema de los enchufes. La ayuda dice que no se pueden crear más de 128 enchufes, lo que limita la obtención de información sobre acciones americanas, por ejemplo.
E incluso esos 128 sockets no está claro cómo convertirlos en modo asíncrono y evitar retrasos en el procesamiento de los datos entrantes.
Por eso tuve que buscar la solución al problema de otra manera,pero quería resolverlo en puro WinAPI, sin ninguna dll autoescrita.
Y como trabajar asincrónicamente en mql es interesante, si tienes algún ejemplo de trabajo, sería bueno comentarlo, si puedes comparte la información.
Pero los métodos asíncronos estándar en la ayuda de mql no los he visto.
Para determinar lo que es posible utilizar en mql y lo que está prohibido.
Encontré CreateThread() en los inyectores del código, así que pensé que podría manejar hilos.
Pero resultó que los hilos están prohibidos, así que la elección recae en async, pero tampoco está claro cómo usar async en mql.
Sí, ese es exactamente el problema de los enchufes. La ayuda dice que no se pueden crear más de 128 enchufes, lo que limita la obtención de información sobre acciones americanas, por ejemplo.
E incluso esos 128 sockets no está claro cómo convertirlos en modo asíncrono y evitar retrasos en el procesamiento de los datos entrantes.
Por eso tuve que buscar la solución al problema de otra manera,pero quería resolverlo en puro WinAPI, sin ninguna dll autoescrita.
Y como trabajar asincrónicamente en mql es interesante, si tienes algún ejemplo de trabajo, sería bueno comentarlo, si puedes comparte la información.
Pero los métodos asíncronos estándar en la ayuda de mql no los he visto.
Leo a los participantes inteligentes y me pregunto...
¿Qué sentido tienen todos estos trucos?
¿Cuándo en MQL sería tan terriblemente necesario el multihilo? Para mí, el único uso sería la prueba de estrategias, que se implementa de forma estándar.
Idealmente, podría tener sentido ejecutar varias WebRequests, pero no creo que el multi-threading sea necesario en absoluto.
¿Qué tareas requieren el multithreading en primer lugar?