Discusión sobre el artículo "WebSocket para MetaTrader 5" - página 4

 
Denis Kirichenko # :

Así que los 3 años prometidos están esperando... queda muy poco - un año de espera )))

Probablemente :)))

 
MetaQuotes:

Nuevo artículo Websockets para MetaTrader 5 ha sido publicado:

Autor: Francis Dube

¡Genial! ¿Cómo se analiza el marco de continuación? Hasta ahora sólo analiza marcos que está en la primera respuesta. Estoy usando nodejs websocket.
 

Hola gran trabajo allí @Francis Dube,

He implementado su biblioteca para trabajar con mi servidor web socket en nodejs/nestjs. El problema que estoy enfrentando es que cuando estoy usando los sockets localmente con mi servidor, todo funciona bien. mql5 socket enviar el apretón de manos me sale la respuesta correcta es decir, "101 Cambio de protocolos".

Pero las cosas cambian tan pronto como despliego mi aplicación nestjs a digitalocean app-platform, Inicialmente no era capaz de conectar sockets mql5 a mi servidor, pero entonces yo era capaz de conectarse a él, pero no estoy recibiendo la respuesta correcta para el apretón de manos debido a que el método de conexión de "CWebsocketClient" devuelve false como método de actualización no llegó a analizar cualquier respuesta, sólo obtengo "H" como la respuesta de mi aplicación desplegada.

aunque no estoy seguro sobre el resto de la funcionalidad como el estado del socket consistentemente establecido en "CONNECTING" no soy capaz de hacer nada después de la conexión exitosa. Sin embargo, cuando después de llamar al método de conexión si envío los datos a mi servidor utilizando el método "sendString " los datos se entregan.

Y ahí es donde estoy confundido sobre cómo implementar las cosas en mi aplicación, ya que no soy capaz de probar cosa handshake cosa de ninguna otra manera, he intentado extensiones para comprobar si mi socket web está trabajando en mi aplicación resulta que funciona bien, pero tan pronto como se trata de mql5 cosas están en mal estado y no del todo lo suficientemente elaborativa para obtener la causa de este comportamiento.

Cualquier pista u orientación sobre este tema será muy apreciada.

PS: No estoy haciendo ninguna cosa de lujo por ahora en mi EA mql5, sólo estoy siguiendo la guía de conexión en el artículo y sólo conectar con el servidor. Nada más. :(

 

Ten en cuenta que hay un error en WebsocketClient.fillRxBuffer, en el escenario donde hay múltiples llamadas a m_socket.Read(..) dentro del bucle while.

m_socket.Read(..) no está añadiendo datos al final del array, sino que escribe al principio del array.

En mi caso, en el que me estaba conectando a un socket web local para hacer pruebas, me encontré con que la primera llamada a m_socket.Read(..) estaba obteniendo un único byte, y luego un segundo bucle a m_socket.Read(..) estaba obteniendo el resto. Como resultado, al buffer le faltaba el primer byte, lo que causaba un error al analizar la trama.
También necesitas asegurarte de que m_rxbuf está vacío antes de llenar el buffer, o puede pensar que se han obtenido más datos de los que realmente se han obtenido. El buffer se limpia después de analizar las tramas, pero sólo para estar seguro, decidí limpiarlo cada vez que llame a fillRxBuffer.

También he hecho que m_socket.Read(..) pare el bucle una vez que no hay más datos que leer, para que no siga esperando durante el tiempo de espera. Idealmente creo que debería seguir leyendo hasta que haya suficientes datos para analizar una trama, pero eso requiere reestructurar un poco el código.

Gracias por este artículo. Hasta ahora es la solución más cercana que he encontrado a lo que estaba buscando. Eventualmente puedo crear mi propia libreria web socket.

 
https://www.mql5.com/en/book

puedes encontrar websocket nativo de trabajo en el libro

disfruta
 
Soewono Effendi #:
h ttps:// www.mql5.com/en/book

puedes encontrar websocket nativo de trabajo en el libro

disfruta

Creo que estás confundiendo los websockets con los sockets de red normales o con las peticiones HTTP WebRequests. Los websockets requieren codificación personalizada además de las peticiones HTTP normales. Me las arreglé para conseguir una solución de trabajo basado en este artículo con algunas modificaciones específicas del proyecto.

 
Shane Leigh Kingston #:

Creo que estás confundiendo los websockets con los sockets de red normales o con las peticiones web HTTP normales. Los websockets requieren codificación personalizada además de las peticiones HTTP normales. Me las arreglé para conseguir una solución de trabajo basado en este artículo con algunas modificaciones específicas del proyecto.

Te doy una pista,
si no quieres mirar en el libro, tu te lo pierdes no yo ;)

 
Shane Leigh Kingston analizar la trama.
También necesitas asegurarte de que m_rxbuf está vacío antes de llenar el buffer, o puede pensar que se han obtenido más datos de los que realmente se han obtenido. El buffer es vaciado después de parsear las tramas, pero solo para estar seguro, decidí vaciarlo cada vez que llame a fillRxBuffer.

También he hecho que m_socket.Read(..) pare el bucle una vez que no hay más datos que leer, para que no siga esperando durante el tiempo de espera. Idealmente creo que debería seguir leyendo hasta que haya suficientes datos para analizar una trama, pero eso requiere reestructurar un poco el código.

Gracias por este artículo. Hasta ahora es la solución más cercana que he encontrado a lo que estaba buscando. Eventualmente puedo crear mi propia libreria web socket.

Por favor @ Shane Leigh Kingston, yo sabía que esto es un viejo post, pero necesito una manera de implementar websocket con mql5 y esta biblioteca parece ser el único relativamente cerca de ella. Pero de nuevo estoy frente a la cuestión que acaba de describir, pero no soy un experto en esta área. Por favor, ¿puede guiarme sobre cómo hacer este trabajo. Estaré muy agradecido si usted podría ayudar.

Gracias de antemano
 
pauldic #:
Por favor @ Shane Leigh Kingston, yo sabía que esto es un viejo post, pero necesito una manera de implementar websocket con mql5 y esta biblioteca parece ser el único relativamente cerca de ella. Pero de nuevo estoy frente a la cuestión que acaba de describir, pero no soy un experto en esta área. Por favor, ¿puede guiarme sobre cómo hacer este trabajo. Le estaré muy agradecido si me puede ayudar.

Hay otra implementación de websockets en el libro de algotrading.

Usted puede encontrar la versión actual de los códigos fuente en la discusión en el foro:

MQL5 Book: Advanced language tools / Projects / WebSocket protocol in MQL5
MQL5 Book: Advanced language tools / Projects / WebSocket protocol in MQL5
  • www.mql5.com
We have previously looked at Theoretical foundations of the WebSockets protocol . The complete specification is quite extensive, and a detailed...
 
Stanislav Korotky #:

Hay otra implementación de websockets en el libro algotrading.

Usted puede encontrar la versión actual de los códigos fuente en la discusión en el foro:


Sí @Stanislav más tarde lo encontré ayer y ha sido útil hasta ahora, gracias