Discusión sobre el artículo "Comunicándonos con Meta Trader 5 usando conexiones designadas sin utilizar DLL" - página 3
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
Creo que el tema de la comunicación entre terminales tiene una pequeña proporción de aplicación.
Pero la comunicación con sistemas externos es más importante y aplicable. Para eso se abrió el canal seguro.
Nadie lo discute, es decir, la declaración de para qué servía. Pero el problema es cómo se implementó. Al fin y al cabo, los sistemas externos no están necesariamente escritos en C, sino que pueden crearse en distintos lenguajes de programación. Y es posible conectarse a la terminal a través de un canal con nombre en muchos lenguajes de programación sólo como cliente a través de operaciones de archivo. Pero la tecnología elegida fue cliente-servidor, es decir, de tal forma que dos clientes no se encontrarán si hay un hueco entre ellos sin un puente - pasarela. Es decir, se debería haber optado por la tecnología cliente-cliente o por una pasarela. Y así resultó como en la fábula del abuelo Krylov "La zorra y las uvas":
Aunque el ojo ve,Pero el ojo no ve.
© I. Krylov
Era necesario observar cómo otros tienen una conexión similar con los sistemas externos realizados. Por ejemplo: VMWare, MS SQL Server, MySQL, módems externos y así sucesivamente. Su parte del servidor se implementa internamente. Y es muy conveniente para unirse sin muletas, incluso a través de un canal con nombre, oa través de TCP / IP y otros canales de comunicación. E incluso se puede elegir, por ejemplo, a través de un canal con nombre, pero de forma remota a través de TCP/IP con la ayuda de la utilidad "Named Pipe TCP Proxy". Es decir, los usuarios no necesitan crear ninguna muletilla adicional, sino sólo elegir la aplicación cliente más adecuada e inmediatamente conectarse y trabajar.
Ten en cuenta que MQL5 es un entorno de aplicación seguro, y claramente cliente, en el que no es razonable hacer funciones de servidor.
No estoy seguro de que la funcionalidad de servidor fuera declarada. La funcionalidad de cliente fue planeada e implementada.
Creo que hice el código para la pasarela. Todavía no lo he probado. Voy a descargar e instalar MinGW y ver lo que está mal.
MinGW instalado, configurado y atornillado a NetBeans.
La idea de crear una pasarela full-duplex a partir de dos canales de servidor y redirigir la información a los clientes de un canal a otro no funcionó. Si un subproceso del servidor lee un canal y el segundo le envía algo, el dúplex completo no funciona (al menos en Windows XP), porque a veces el subproceso que lee del canal intercepta los mensajes del subproceso que escribe en el mismo canal y devuelve la información.
Si quitas uno de los subprocesos, la transmisión va por simplex de cliente a cliente sin problemas.
Sin embargo, no todo está perdido, porque también existe un modo solapado, es decir, cuando no se crean dos, sino un solo canal, y varios clientes se conectan a él simultáneamente. En este caso, el servidor no necesita leer información del canal todo el tiempo, porque todo se basa en eventos. Es decir, si algún cliente envía información al canal, el servidor lee su evento y extrae de ahí el mensaje transmitido. Y redirigir la información recibida al segundo cliente - ya es una cuestión de técnica. Estoy en el proceso de crear tal implementación.
Ya está. Me he rendido. Estoy cansado de juguetear con código C++ e incluso a través de Win API. No tanto codificando como rebuscando entre retazos dispersos de información en MSDN para intentar entender cómo debería funcionar todo. Me falta experiencia, así que envié todo esto a Service Work. Ver Rehacer el código C++ en una pasarela bidireccional full duplex.
¿Quizás alguien con más experiencia pueda encargarse fácilmente de esta tarea? No descarto que la razón de los fallos es que no pude averiguar la configuración de los canales con nombre. Es decir, es posible que en estos mismos ajustes tenga que escribir algo correctamente y todo funcione. Hasta ahora no he conseguido hacer nada mas que en modo simplex y ejecutarlo.
Decidí tratar de hacer amistad entre MQL y AutoIt a través de tuberías.
En resumen, sólo un rastrillo, y en todas partes :)
Bueno, me las arreglé para transferir a AutoIt con un poco de suerte, sólo los primeros 4 bytes tuvo que ser descartado, hay un poco de "basura". ¿Qué es esta "basura"?
Luego traté de transferir a MQL, es aún más divertido aquí - nada viene en absoluto. O tal vez no organizo la transferencia correctamente.... ¿Tal vez todo el problema está en esos 4 bytes?
¿Qué me puede decir?
Decidí tratar de hacer amistad entre MQL y AutoIt a través de tuberías.
En resumen, sólo un rastrillo, y en todas partes :)
Bueno, me las arreglé para transferir a AutoIt con un poco de suerte, sólo los primeros 4 bytes tuvo que ser descartado, hay un poco de "basura". ¿Qué es esta "basura"?
Luego traté de transferir a MQL, es aún más divertido aquí - nada viene en absoluto. O tal vez no organizo la transferencia correctamente.... ¿Tal vez todo el problema está en esos 4 bytes?
¿Qué me puede decir?
Entonces, ¿tú también estás ahí?
No, estoy aquí.) Entonces, fue así:
MQL5
AutoIt
Esta parte de la transferencia de MQL a AutoIt. Funciona por.
Con una cadena de Func ReadMsg($hPipe)
Me como los primeros 4 bytes y todo funciona.
Pregunta: ¿qué contienen estos primeros 4 bytes?
Me como los 4 primeros bytes y todo funciona.
Pregunta: ¿qué contienen estos 4 primeros bytes?
Renat, ¿cuándo está previsto hacer pips en MT4?