Mi enfoque. El núcleo es el motor. - página 158

 
Artyom Trishkin:

Espera. Usted escribió:

¿Quién tiene qué ejército?

Bueno, atribuiré tu grosería sobre "listillo" al hecho de que no hablas bien el ruso y no entiendes que significa una actitud despectiva y despectiva hacia tu interlocutor.

¿Por qué, has perdido el sentido del humor o algo así?

 
Vasiliy Sokolov:

Por desgracia, sí. No es posible una interfaz de devolución de llamada entre dos sistemas fundamentalmente diferentes.

En realidad, la pregunta era casi retórica)

En mi opinión, con la compatibilidad de NET añadida, es necesario añadir callbacks a la terminal. Al menos uno) Al menos, para empujar el evento en la cola de la terminal.

 
Artyom Trishkin:

Si es a través de un temporizador, ¿cómo vas a trabajar en el probador? Pensé que habías dicho que estabas haciendo código multiplataforma.

Artyom, ¿qué preguntas? Si el temporizador no funciona, se emula de otras fuentes...

incluso en el "robot de batalla" siempre es así, porque el EventSetTimer:-)

ps/ hay algo que me atrae contagiosamente de los temas militaristas... puestos de mando, robots de combate... "Peligro Galacteco"

 
Dmitriy Skub:

En realidad, la pregunta era casi retórica)

En mi opinión, con la adición de la compatibilidad con NET, hay una fuerte necesidad de añadir llamadas al terminal. Al menos uno) Al menos, empujando el evento en la cola de la terminal.

No soy capaz de capturar eventos en MT5, Spy++ no puede ver los eventos de los gráficos por alguna razón. Parece que se utilizan clases auto escritas y modelos de eventos en lugar de los eventos estándar de Windows.

Yo también uso OnTimer, por eso intento recibir un paquete de datos mínimo en la petición, aunque a la velocidad actual del PC puede que me esté volviendo codicioso)))

Artyom Trishkin:

Si el temporizador, ¿cómo se trabaja en el probador? Pensé que habías dicho que hacías código multiplataforma.

Cuando traté de usar МТ5 fue un verdadero placer escribir bajo C# - llamo a .dll, inmediatamente inicio un formulario y pongo todos los gráficos en un hilo separado ( Thread ) y eso es todo, después de eso sólo trabajo con el intercambio de datos entre C# y МТ5 y el formulario gráfico con botones funciona como una aplicación de viuda habitual - la solicitud de МТ5 sólo recibe el estado de los elementos pulsados anteriormente y nada está frenando o lo hará;)

 
Maxim Kuznetsov:

Artyom, ¿qué tipo de preguntas haces? si el temporizador no funciona, es emulado de otras fuentes...

esto es incluso siempre el caso en "robot de combate", porque EventSetTimer :-)

ps/ hay algo que me atrae contagiosamente de los temas militaristas... puestos de mando, robots de combate... "Peligro Galacteco"

Bueno... Quería preguntarle a Vassili cómo lo haría. Para compararlo con lo que hice yo mismo hace mucho tiempo (no sin el consejo de Vasil, por supuesto)

 
Igor Makanu:

No he podido capturar eventos en MT5, por alguna razón Spy++ no ve los eventos de los gráficos, parece que se utilizan clases y modelos de eventos propios en lugar de los estándar de widows, en MT4 puedo enviar un evento de widows sin problemas

Yo también uso OnTimer, por eso intento recibir un paquete de datos mínimo en la petición, aunque a la velocidad actual del PC puede que me esté volviendo codicioso)))

Cuando intenté usar OnTimer en MT5, el temporizador en el probador se genera sin problemas y es un verdadero placer escribir bajo C# - llamo a la .dll, inmediatamente inicio el formulario y pongo todos los gráficos en un hilo separado ( Thread ), después de eso sólo trabajas con el intercambio de datos entre C# y MT5 y el formulario gráfico con botones funciona por sí mismo como una aplicación habitual de Windows - la solicitud de MT5 sólo recibe el estado de los elementos pulsados anteriormente y nada se ralentiza ;)

Lo hice en cinco a través del temporizador en el probador. Incluso su simple uso (es un multitemporizador de milisegundos) conduce a una grave ralentización del probador. Por lo tanto, simplemente rechazó el temporizador en el visualizador - es la misma cosa para trabajar en ticks. Realizado dos modelos - por temporizador y por eventos de banderas a través de OnTick(). Por temporizador en tiempo real, por ticks - en el visualizador.

Mentiras - tres modelos - también a través de OnChartEvent() - sólo en tiempo real allí también.

 
Igor Makanu:

No he podido capturar eventos en MT5, por alguna razón Spy++ no ve los eventos de los gráficos, parece que se utilizan clases y modelos de eventos propios en lugar de los estándar de widows, en MT4 puedo enviar un evento de widows sin problemas

Yo también uso OnTimer, por eso intento recibir un paquete de datos mínimo en la petición, aunque a la velocidad actual del PC puede que me esté volviendo codicioso)))

Cuando intenté usar OnTimer en MT5, el temporizador en el probador se genera sin problemas, y es un placer escribir código bajo C# - llamo a la .dll, inmediatamente se inicia el formulario y en un hilo separado ( Thread ) todos los gráficos y eso es todo, ahora sólo trabajo con el intercambio de datos entre C# y MT5, y el formulario gráfico con los botones funciona por sí mismo como una aplicación habitual de la viuda - en la solicitud de MT5 sólo se envía el estado de los elementos pulsados anteriormente, nada se retrasa y no se retrasará ;)

Si además haces Modelo a nivel MQL y otras cosas en Sharpey, será genial. Entonces la lógica está separada, la vista está separada. El frontend se ocupa del diseño y la usabilidad y no se ocupa del backend comercial. Cambiar la configuración de los botones de un formulario o dividir un formulario en dos o tres no debería afectar a los algoritmos del Asesor Experto de ninguna manera.

 
Vasiliy Sokolov:

Peter, si no te importa, prepararé un artículo sobre cómo se puede crear una aplicación gráfica con bastante facilidad en MQL, utilizando la nueva característica de integración con las bibliotecas .Net. El título del artículo será "Creación de formularios personalizados en VisualStudio para expertos en comercio basados en .Net Framework y C#".

Su planteamiento y sus ideas me entusiasmaron. Me preguntaba si era posible crear un formulario gráfico para mi Asesor Experto de forma rápida y sencilla, utilizando sólo conocimientos básicos de programación. Hice un experimento y resultó que es posible. Tengo un formulario como este:

La idea era que el usuario dibujara el formulario requerido en el editor de VisualStudio y que todo el trabajo necesario para integrar esta ventana con el código MQL se hiciera entre bastidores, en modo automático. Para ello, he tenido que escribir un controlador en C#, una especie de análogo de su núcleo, pero que sólo requiere unas 200 líneas de código.

Puedes leer cómo funciona todo en el artículo que he empezado.

Eso es, Vasiliy, has cubierto tu núcleo con un caldero.

 
Dmitry Fedoseev:

Eso es, Vassily, has cubierto tu cabeza con un caldero.

En general se espera que acabe así, pero aún no hay ningún artículo específico...

aunque hay un 99% de posibilidades de que ese artículo salga antes que el motor del núcleo. Peter tiene que mantener el porcentaje restante.

 
Artyom Trishkin:

Lo hice en el cinco a través del temporizador en el probador. Incluso el mero hecho de utilizarlo (y es un multitemporizador de milisegundos) provocaba una grave ralentización del probador. Por lo tanto, simplemente rechazó el temporizador en el visualizador - es la misma cosa para trabajar en ticks. Realizado dos modelos - por temporizador y por eventos de banderas a través de OnTick(). Por temporizador en tiempo real, por ticks - en el renderizador.

ZS. miento - tres modelos - también a través de OnChartEvent() - allí, también, sólo en tiempo real.

Todavía no he decidido el diseño, he comprobado que funciona en el tester sin problemas, gracias a@fxsaber por su ayuda con el código #define - añado automáticamente los manejadores OnTick(), OnTimer() al conectar el inyector... para poder hacer las llamadas necesarias en cualquier sección del Asesor Experto

Ni siquiera sé dónde puede estar el retardo... Utilizo el temporizador con bastante frecuencia - 400 ms, pero la llamada sólo llega desde el .dll 2 matrices int 10-ele-v y 2 int (cuántos botones y cuántas casillas de verificación, tal dimensión de las matrices), simplemente físicamente no puede reducir la velocidad, porque incluso escribir en la matriz si el botón se hace clic, y en el número de int envío un botón, la matriz no es necesario, en principio, como una copia de seguridad si el usuario tiene un ataque de nervios y más rápido que 0,5 segundos golpeará el botón )))

Supongo que tenemos tareas diferentes - cuando se trata de la construcción de TS, no se necesitan gráficos, y cuando se trata de la depuración y visualización de TS, no se necesita la velocidad del probador ;)


Maxim Kuznetsov:

Si también hacen un Modelo a nivel MQL, y el resto en Sharpay, sería genial. Entonces la lógica está separada, la vista está separada. El frontend se ocupa del diseño y la usabilidad y no se involucra en el backend comercial. Cambiar la configuración de los botones de un formulario o dividir un formulario en dos o tres no debería afectar a los algoritmos del Asesor Experto de ninguna manera.

Lo guardaré como recordatorio, ¡buen post! Y escribirlo en la descripción, si estoy maduro para el comentario público