Gracias por el artículo. Ha sido interesante.
Aunque ModIcq es perfectamente utilizable sin modificación, es más fácil trabajar con la versión modificada :)
IcqMod.dll no se puede utilizar directamente en MT5, porque trabaja con cadenas Ansi, y en MT5 las cadenas están en formato Unicode. Por lo tanto, el proyecto tuvo que ser rediseñado para trabajar con mensajes en Unicode (para ello, el protocolo no utiliza formato binario sino HTML). Ahora, ¡envía y recibe mensajes en cualquier idioma del mundo! Espero que el proyecto tenga demanda, lo que permitirá mejorarlo según sus deseos.
IcqMod.dll no se puede usar directamente en MT5, porque trabaja con cadenas Ansi, y en MT5 las cadenas están en formato Unicode.
No exactamente. Es posible convertir usando StringToCharArray. Por ejemplo, este código funciona para mí
struct ICQ_CLIENT { uchar status; ushort sequence; ulong sock; }; #import "IcqMod.dll" ulong ICQConnect(ICQ_CLIENT& client, uchar& host[], ushort port, uchar& login[], uchar& pass[], int proxy); void ICQClose(ICQ_CLIENT& client); ulong ICQSendMsg(ICQ_CLIENT& client, uchar& uin[], uchar& message[]); ulong ICQReadMsg(ICQ_CLIENT& client, uchar& uin[], uchar& msg[], int& msglen); #import void OnStart() { // convertir cadenas en un array de caracteres para pasar a la dll uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // conectar ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // comprobar si hay mensajes entrantes ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // UIN del remitente msgStr = CharArrayToString(msgR); // mensaje uchar msgS[]; // añadir antes del mensaje Received: y devolverlo StringToCharArray("Recibido:" + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
Pero es inconveniente convertir todo el tiempo, por lo que su biblioteca es mucho más utilizable en este sentido.
También pensé en los proxies. ¿Quizás haya alguna configuración que funcione adecuadamente para una máquina local? Es decir, si no utilizamos un proxy, a continuación, algunos ajustes por defecto se establecen en el proxy y todo funciona. Como una opción para hacer 2 Conectar funciones en la biblioteca - para la variante con y sin proxy
Los cambios realizados en la librería no sólo afectaron al tipo de valor pasado para cadenas (era char* y pasó a ser wchar_t*). Sería demasiado sencillo. También ha cambiado el formato del mensaje transmitido (véase la función BuildQuery_SendMsg_Unicode en el código fuente de la dll), que ha pasado a ser universal (HTML) en lugar de nativo (binario). El hecho de que los literales rusos transmitidos a través de IcqMod se reciban correctamente es mérito del programa ICQ nativo en el que lo estás probando. Intenta probar la recepción de mensajes rusos en http://wap.ebuddy.com/ o en un gestor de ICQ alternativo, y verás garabatos en lugar de cirílico. He probado una docena de gestores ICQ en los que mi proyecto funciona correctamente no sólo con cirílico, sino también con cualquier otro idioma del mundo. Perdón, por supuesto, por la publicidad.
Sobre los proxies. Hice pruebas, pero no locales sino remotas SOCK4/SOCK5. No logré trabajar con ellos. Por eso decidí no usarlos en absoluto en el proyecto. Si es necesario, voy a tratar de hacerlo.Gracias. Ha quedado muy claro.
Hacía tiempo que no visitaba este hilo. Mi icq_power.mqh no compila, dice *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
¿Qué puede significar?
Hacía tiempo que no visitaba este hilo. Mi icq_power.mqh no compila, dice *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
¿Qué puede significar?
Significa que
el compilador MS Visual Studio no está instalado en el sistema
o
ha fallado la inicialización del compilador
¿Qué significa eso?
Intente probar la recepción de mensajes rusos en http://wap.ebuddy.com/ o en un gestor ICQ alternativo, y verá garabatos en lugar de cirílico. He probado una docena de gestores ICQ, en los que mi proyecto funciona correctamente no sólo con cirílico, sino también con cualquier otro idioma del mundo. Lo siento, por supuesto, para la publicidad.
2 preguntas:
1) ¿Sigue funcionando en sistemas x32? (no tengo oportunidad de comprobarlo).
2) ¿No se ha rediseñado para x64? (bajo x64 no funciona) .
Estaré muy agradecido por la respuesta. Traté de rehacerlo - no funcionó - cuando trabajo, se bloquea
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS: Necesito exactamente ICQ...
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Conexión del Expert Advisor con ICQ en MQL5:
Este artículo describe el método de intercambio de información entre el Expert Advisor y usuarios de ICQ, y presenta varios ejemplos. El material facilitado resultará interesante para aquellos que deseen recibir información de trading remotamente de un terminal de cliente, a través de un ICQ client en su teléfono móvil o PDA.
Autor: Andrey Voytenko