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
Así que los 3 años prometidos están esperando... queda muy poco - un año de espera )))
Probablemente :)))
Nuevo artículo Websockets para MetaTrader 5 ha sido publicado:
Autor: Francis Dube
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.
h ttps:// www.mql5.com/en/book
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.
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 ;)
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.
Gracias de antemano
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:
Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading
Expertos: Programación MQL5 para Traders - Códigos fuente del libro. Parte 7
Stanislav Korotky, 2025.03.10 13:32
Adjunto algunas correcciones de errores y mejoras en las clases websockets.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: