Creación de una interfaz gráfica para los MQL en modo gráfico. - página 15

 
Vladimir:
Estoy interesado en "cada tick" para el EA multidivisa. ¿Un gráfico contiene eventos de ticks procedentes de muchos símbolos? ¿O "cada tick" tiene un significado diferente del evento común, que es manejado por la función OnTick y se describe en la referencia como "generado sólo para los Asesores Expertos cuando se recibe un nuevo tick para el símbolo, al gráfico del cual el EA está unido"?

Sí, eso no es del todo correcto. En aquellos tiempos se hacía un bucle infinito, no había OnTick, había una función de inicio

int start()
{ 
    while(true)
    {
    // обработка
        Sleep(200);
    }
}
 
Alexey Volchanskiy:

Eres realmente incapaz de aceptar preguntas. Cómo se comunican los concejales no me interesa. Ya está, cierro el hilo, porque no tiene sentido.

Consulte a un psiquiatra). Necesita un mecanismo de intercambio que no preguntó, no le interesa cómo se comunican.
Prefiero que hables de chicas... las conociste, lloraste, ..... le dio de comer sopa de remolacha.

 
Yuriy Asaulenko:
Mierda. Al principio pregunté por la interfaz gráfica de usuario: ¿cómo funciona? Respondió que no lo necesita. Ahora resulta que lo necesita como los Asesores Expertos. Ha escrito sobre ello 100 veces.
Echa un vistazo a mi blog. Ya hemos hablado de todo esto en privado, y parece que lo tenemos todo resuelto.
Si quieres respuestas normales, haz preguntas normales). Aprende a redactarlas).

Interesado en el intercambio descrito por usted en https://www.mql5.com/ru/blogs/post/671000. A mí también me funciona, pero no creo que el intercambio de archivos de comandos de texto, que es "bastante adecuado para organizar sistemas intradía bastante rápidos", no sea adecuado para fines de scalper. Otra cita de su blog "En este caso, la DLL, en la fase de diseño, puede ser sustituida por un archivo de intercambio, para acelerar un disco RAM virtual".

No he tenido ningún problema con el rendimiento del intercambio de archivos. En muy raras ocasiones, entre 2 y 8 veces al año, se producen situaciones de corrupción de la información, cuando una nueva longitud de archivo ya ha sido puesta en el buffer del sistema operativo, pero su contenido (cadena de hasta varias decenas de bytes) en este buffer aún no ha sido actualizado. Por lo demás, no veo ninguna diferencia entre la transferencia de archivos y cualquier otra solución, sigue necesitando RAM para el intercambio. El tamaño de los archivos de intercambio es tal que el controlador del disco no tiene necesidad de dirigirse a las placas magnéticas. Para reducir aún más esta frecuencia, no borro los archivos de señales, sino que los vacío para que tengan un lugar permanente en la placa magnética (cluster). Por favor, dígame en qué se basa su opinión de que el intercambio de archivos sólo es bueno para la fase de desarrollo.

Y una pregunta más. En cada uno de los terminales se abren al menos dos gráficos, ¿estoy en lo cierto?

Creo que solo se puede adjuntar un EA a un gráfico y tienes "Necesitaremos dos МТ Expert Advisors: el primero escribirá la información por ticks en un archivo CSV para que lo lea el sistema y el segundo recibirá la información del sistema y se encargará de las funciones de trading".

Взаимодействие МТ со сторонним ПО
Взаимодействие МТ со сторонним ПО
  • 2016.05.08
  • Yuriy Asaulenko
  • www.mql5.com
Еще до начала работы на рынке мною была создана торговая система на Excel с небольшими кусками кода на VBA (Visual Basic for Application). Почему на Excel-VBA? - потому, что система несложная, и проще было на VBA. А возможности Excel позволяют свести программирование к минимуму. По мере развития доля VBA увеличивалась, и постепенно за Excel...
 
Alexey Volchanskiy:

Sí, eso no es del todo correcto. En aquellos tiempos se hacía un bucle infinito, no había OnTick, había una función de inicio

Creo que lo entiendo. Del código anterior se deduce que la recogida de las últimas citas se hace no más de cinco veces por segundo(Sleep(200)). ¿Es este el periodo mínimo de tick multidivisa considerado en su código? Si vienen más a menudo, ¿se las salta? ¿O este valor (200) es diferente ahora, después de 10 años?
 
Vladimir:
Creo que lo tengo. El código anterior sugiere que la recogida de las últimas cotizaciones se haga con una frecuencia no superior a cinco veces por segundo(Sleep(200)). ¿Es este el periodo mínimo de tick multidivisa considerado en su código? Si vienen más a menudo, ¿se las salta? ¿O este valor (200) es diferente ahora, después de 10 años?

El temporizador está ahora muestreando a intervalos de 1 segundo, saltándose el resto. 200 ms está en la memoria, fue hace mucho tiempo. Resulta que a menudo es excesivo, y durante las pruebas y la optimización carga mucho la CPU.

 
Renat Fatkhullin:

Lo haremos, sobre todo cuando congelemos las versiones de 32 bits en septiembre y sólo demos soporte a las versiones de 64 bits de la plataforma.

Ahora estamos preparando una actualización seria del compilador, trasladando algunas funciones del sistema a los programas MQL5, lo que mejorará drásticamente el optimizador y acelerará el código resultante de los programas MQL5.

Publicaremos las pruebas de rendimiento completas para compararlas con C++, junto con el código fuente, para que cualquiera pueda comprobarlas por sí mismo.

Renat, puedes añadir una pequeña adición a los cambios: establecer la propiedad de estilo WS_CLIPCHILDREN para los marcos de los gráficos o las ventanas de los gráficos. Esto permitirá colocar cualquier ventana hija en los marcos del gráfico o en las ventanas del gráfico sin manipulaciones adicionales. En la actualidad, sin esta propiedad, una ventana padre (una ventana de gráfico o un marco de gráfico) dibuja una ventana hija que debe establecerse. Y al establecer este estilo en la ventana padre, todo se renderiza muy bien.

Supongo que esta adición no será difícil de realizar. Y en conjunto con los callbacks obtendremos posibilidades muy amplias para el desarrollo de complementos para MT, sin entrar en sus "tripas". )))