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

 
Dmitry Fedoseev:

Puedes hacer algo así: en una dll, un array o dos arrays, uno para el nombre del objeto y otro para el tipo de evento.

¡Aquí!

Todavía no lo he comprobado, pero si los desarrolladores tienen soporte avanzado para C#.Net, entonces quizás funcione el intercambio de tipos de datos complejos entre MT5 y .dll, es decir, estructuras.

Si el intercambio de estructuras funciona, la tarea se vuelve aún más sencilla y primitiva.

llenamos la estructura con OrderProfit,OrderTicket,OrderStoploss.... en el tick ...y enviar esta estructura a una .dll y recibir una estructura de respuesta del usuario... A continuación, el formulario gira la información visual por sí mismo, el propio terminal.


Etiqueta Konow:

Y luego crear una memoria TOTAL dentro del .dll.

Con el aumento del número de elementos del formulario y el aumento de la complejidad del programa MT5, esta interacción se vuelve MUY ocupada y compleja.

Hmmm, ¿qué hay de complicado en eso? Se separa la visualización = .dll, por separado el trabajo de MT

difícil de explicar, ¿tiene usted idea de cuál es la velocidad de intercambio de datos a través de la memoria? - no estamos hablando de cientos de miles de bytes por segundo, ni siquiera de millones, sino de varios miles de millones de bytes por segundo, y estás hablando de la complejidad del intercambio )))))

 
Реter Konow:

DE ACUERDO.

Así que es necesario:

  1. Crear una DLL.
  2. Conecte la DLL a la aplicación de Windows con un formulario.
  3. Escribir métodos que traduzcan los eventos de pulsar botones y casillas de verificación en dll.
  4. Escribir métodos para cambiar el estado de los botones y casillas de verificación en la aplicación de la viuda.
  5. Crear memoria compartida en la dll. Para que al acceder desde MT5 se ponga la bandera de cambio de estado de los botones y casillas de verificación. A continuación, la aplicación de Windows accede a la memoria compartida, lee las banderas y las utiliza para conocer el estado de uno u otro elemento del formulario que debe cambiar.
  6. Escribir una referencia cíclica a la DLL desde el temporizador en MT5 para leer las banderas de las llamadas a funciones o introducir texto en los campos.

    ¿Y si hay cientos de elementos?

    ¿Cómo organizar la memoria compartida?

    ¿Y si es necesario cambiar no sólo el estado de pulsación/desconexión de los elementos de un formulario, sino también su color (por ejemplo, para los botones)?

    Qué pasa si es necesario cambiar el texto de los campos de entrada de un formulario mediante programación de МТ5?


    1. ¿Cuál es el problema? Es seleccionar el tipo de proyecto al crearlo.

    2. Como se ve en el ejemplo mostrado por Igor, la conexión se hace en una línea, ni siquiera es necesario describir la importación.

    3. Un método se escribe una vez, se guarda en un archivo y luego se utiliza en todos los proyectos sin ningún cambio.

    4. Probablemente, es necesario, pero son simples. No es probable que se necesiten todos, la interacción entre los elementos de control en c# será diferente, y puede ser necesario colocar un evento, y habrá 100 botones en el formulario.

    5. Esto está relacionado con el punto 3.

    6. También una línea con el enfoque correcto en el punto 3.

    7 - Tienes toda la potencia de C# en tus manos, cuya escala parece que no tienes ni idea de que es enorme.

     
    Реter Konow:

    Sin ánimo de ofender, siento salirme del tema.

    Estás tomando el ejemplo más SIMPLE y extrapolando a partir de él, pensando que la complejidad no aumentará. Esto es un error.

    Incluso el ejemplo más sencillo que has puesto es erróneo. Porque además de la forma creada, también hay que crear una DLL. Y luego crear una memoria TOTAL dentro de la DLL.

    A medida que el número de elementos del formulario crece y la funcionalidad del programa en MT5 se vuelve más compleja, esta interacción se vuelve MUY ocupada y complicada.

    He comprobado todo esto en la práctica.

    La conclusión es completamente errónea.

     

    El problema es que realmente he hecho lo que estoy diciendo. Y conozco la complejidad de organizar la interacción entre un complejo programa de MT y un complejo programa de terceros.

    Y el enfoque de los profanos suele ser decir "Eso es fácil... ¿Cuál es el problema? Es así, es así...".

    Deme un ejemplo de conexión de un programa complejo de MT con un formulario complejo de Windows, en el que el programa pueda:

    1. Cambiar los estados de los elementos y el texto de salida a los campos de entrada.
    2. Donde el programa puede aceptar el texto de los campos del formulario y cambiar los colores de los elementos.
    3. Donde el programa puede controlar los fenómenos de las ventanas de los formularios (abrir unas y cerrar otras).
    Puedo proporcionar un ejemplo de esto que funciona completamente en MT.

     
    Реter Konow:

    El problema es que realmente he hecho lo que estoy diciendo. Y conozco la complejidad de organizar la interacción entre un complejo programa de MT y un complejo programa de terceros.

    Y el enfoque de los profanos suele ser decir "Eso es fácil... ¿Cuál es el problema? Es así, es así...".

    Deme un ejemplo de conexión de un programa complejo de MT con un formulario complejo de Windows, en el que el programa pueda:

    1. Cambiar los estados de los elementos y el texto de salida a los campos de entrada.
    2. Donde el programa puede aceptar el texto de los campos del formulario y cambiar los colores de los elementos.
    3. Donde el programa puede controlar los fenómenos de las ventanas de los formularios (abrir unas y cerrar otras).
    Puedo proporcionar un ejemplo de esto que funciona completamente en MT.

    Si lo hicieras, no estarías haciendo preguntas como las de hoy. Aprende c# y hazlo tú mismo. Cómo conectar la dll y llamar a los métodos que Igor mostró ayer.

     
    Dmitry Fedoseev:

    1. ¿Cuál es el problema? Es la elección del tipo de proyecto cuando se crea.

    2. Como se ve en el ejemplo mostrado por Igor, la conexión se hace en una línea, incluso la importación no se describe.

    3. Un método se escribe una vez, se guarda en un archivo y luego se utiliza en todos los proyectos sin ningún cambio.

    4. Probablemente, es necesario, pero son simples. No es probable que se necesiten todos, la interacción entre los elementos de control en c# será diferente, y puede ser necesario colocar un evento, y habrá 100 botones en el formulario.

    5. Esto está relacionado con el punto 3.

    6. También una línea con el enfoque correcto en el punto 3.

    7 - En tus manos todo el poder de C#, del que parece que no tienes ni idea, es enorme.

    Dmitry, utiliza la ENORME potencia de C# y haz una aplicación no muy compleja con un formulario, que interactúe con la aplicación MT y ejecute estos elementos:

    1. Cambia los estados de los elementos y envía el texto a loscampos de entrada.
    2. Toma el texto de los campos de entrada del formulario y cambia los colores de los elementos.
    3. Controla el fenómeno de las ventanas de los formularios (abre unas y cierra otras).
    Igor y tú decís que es muy fácil. Así que lo gestionará rápidamente. Proporcionaré un análogo completamente en MT. Y compararemos la calidad de la ejecución y la complejidad.
     
    Реter Konow:

    Dimitri, utiliza la GRAN potencia de C# y haz una aplicación no muy compleja con un formulario que interactúe con la aplicación MT y ejecute estos elementos:

    1. Cambia los estados de los elementos y envía el texto a loscampos de entrada.
    2. Toma el texto de los campos de entrada del formulario y cambia los colores de los elementos.
    3. Controla el fenómeno de las ventanas de los formularios (abre unas y cierra otras).
    Igor y tú decís que es muy fácil. Así que lo gestionará rápidamente. Proporcionaré un análogo completamente en MT. Y compararemos la calidad de la ejecución y la complejidad.

    Tengo mucho que hacer. Pero puedes seguir con tus delirios.

     

    Y, oh sí, un milagro inédito en la programación: para hacer algo, hay que escribir una función que lo haga.

     
    Dmitry Fedoseev:

    Tengo cosas que hacer. ...

    OK, tal vez Igor lo haga entonces...

     
    Реter Konow:

    OK, tal vez Igor lo haga entonces...

    Igor ya ha demostrado demasiado. Y he contado demasiado.

    Razón de la queja: