Diskussion zum Artikel "Verbindung eines Expert-Systems mit ICQ in MQL5"

 

Neuer Artikel Verbindung eines Expert-Systems mit ICQ in MQL5 :

In diesem Beitrag wird das Verfahren zum Austausch von Informationen zwischen dem Expert-System und ICQ-Nutzern vorgestellt und anhand einiger Beispiele veranschaulicht. Die bereitgestellten Materialien können für alle von Interesse sein, die Handelsinformationen unabhängig von Ihrem stationären Ausgabegerät mithilfe einer ICQ-Instanz auf Ihrem Mobiltelefon oder PDA empfangen möchten.

Figura 4. Design de cor do componente visual do ICQ

Autor: Andrey Voytenko

 

Vielen Dank für den Artikel. Es war interessant.

Obwohl ModIcq ist perfekt nutzbar ohne Änderung, ist es einfacher, mit der modifizierten Version zu arbeiten :)

 
GarF1eld писал(а) :

ModIcq ist ohne Modifikation perfekt nutzbar

IcqMod.dll kann nicht direkt in MT5 verwendet werden, da es mit Ansi-Strings arbeitet, und in MT5 sind die Strings im Unicode-Format. Daher musste das Projekt umgestaltet werden, um mit Nachrichten im Unicode-Format arbeiten zu können (zu diesem Zweck verwendet das Protokoll nicht das binäre, sondern das HTML-Format). Jetzt können Sie Nachrichten in jeder Sprache der Welt senden und empfangen! Ich hoffe, dass das Projekt auf Nachfrage stößt, so dass ich es nach Ihren Wünschen verbessern kann.

 
avoitenko:

IcqMod.dll kann nicht direkt in MT5 verwendet werden, da es mit Ansi-Strings arbeitet, und in MT5 sind Strings im Unicode-Format.

Nicht ganz. Es ist möglich, mit StringToCharArray zu konvertieren. Zum Beispiel, dieser Code funktioniert für mich

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()
{
   // Zeichenketten in ein Array von Zeichen umwandeln, das an die DLL übergeben wird
   uchar login[], password[], server[];
   StringToCharArray("123456789", login);
   StringToCharArray("password", password);
   StringToCharArray("login.icq.com", server);
   
   // verbinden
   ICQ_CLIENT client;
   ICQConnect(client, server, 5190, login, password, 0);
   
   for (;;)
   {
      uchar uinR[10], msgR[512];
      int len = 0;
      
      // Prüfung auf eingehende Nachrichten
      ICQReadMsg(client, uinR, msgR, len);
      
      if (len > 0)
      {
         string uinStr = CharArrayToString(uinR), // UIN des Absenders
            msgStr = CharArrayToString(msgR);     // Nachricht
            
         uchar msgS[];
         // vor der Nachricht Received: hinzufügen und zurücksenden
         StringToCharArray("Empfangen:" + msgStr, msgS);
         ICQSendMsg(client, uinR, msgS); 
      }

      Sleep(100);
   }
  }

Aber es ist lästig, die ganze Zeit zu konvertieren, so dass Ihre Bibliothek ist viel mehr brauchbar in diesem Sinne.

Ich habe auch über Proxies nachgedacht. Vielleicht gibt es einige Einstellungen, die für einen lokalen Rechner ausreichen? Das heißt, wenn wir keinen Proxy verwenden, dann werden einige Standardeinstellungen im Proxy gesetzt und alles funktioniert. Als Option, 2 Connect-Funktionen in der Bibliothek zu machen - für die Variante mit und ohne Proxy

 
GarF1eld писал(а) :

Es ist möglich, mit StringToCharArray zu konvertieren.

Die in der Bibliothek vorgenommenen Änderungen betrafen nicht nur den Typ des übergebenen Wertes für Strings (aus char* wurde wchar_t*). Das wäre zu einfach. Das Format der übermittelten Nachricht hat sich geändert (siehe BuildQuery_SendMsg_Unicode-Funktion im Quellcode der Dll), die nun universell (HTML) im Gegensatz zu nativ (binär) ist. Die Tatsache, dass die über IcqMod übertragenen russischen Zeichen korrekt empfangen werden, ist das Verdienst des nativen ICQ-Programms, mit dem Sie es testen. Versuchen Sie, den Empfang russischer Nachrichten mit http://wap.ebuddy.com/ oder einem anderen ICQ-Manager zu testen, und Sie werden Kritzeleien anstelle von Kyrillisch sehen. Ich habe ein Dutzend ICQ-Manager ausprobiert, auf denen mein Projekt nicht nur mit Kyrillisch, sondern auch mit jeder anderen Sprache der Welt korrekt funktioniert. Entschuldigung, natürlich für die Werbung.

GarF1eld schrieb(a) :

Denke auch über Proxys nach...

Über Proxies. Ich habe getestet, aber nicht lokal, sondern remote SOCK4/SOCK5. Es ist mir nicht gelungen, mit ihnen zu arbeiten. Deshalb habe ich beschlossen, sie in dem Projekt überhaupt nicht zu verwenden. Wenn nötig, werde ich versuchen, es zu tun.

 

Ich danke Ihnen! Das war sehr deutlich.

 

Also, ich habe diesen Thread schon lange nicht mehr besucht. Meine icq_power.mqh lässt sich nicht kompilieren, es heißt *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.

Was könnte das bedeuten?

 
sv_design:

Also, ich habe diesen Thread schon lange nicht mehr besucht. Meine icq_power.mqh lässt sich nicht kompilieren, es heißt *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.

Was könnte das bedeuten?

Es bedeutet, dass

MS Visual Studio Compiler ist nicht im System installiert

oder

die Initialisierung des Compilers fehlgeschlagen ist

 
sv_design:

Was würde das bedeuten?

Entweder aktualisieren, oder ME unter Admin laufen lassen, oder servicedesk.
 
avoitenko:

Versuchen Sie, den Empfang russischer Nachrichten auf http://wap.ebuddy.com/ oder einem alternativen ICQ-Manager zu testen, und Sie werden Kritzeleien anstelle von Kyrillisch sehen. Ich habe ein Dutzend ICQ-Manager ausprobiert, bei denen mein Projekt nicht nur mit Kyrillisch, sondern auch mit jeder anderen Sprache der Welt korrekt funktioniert. Entschuldigung, natürlich, für die Werbung.

Kyrillisch ist nicht so notwendig, aber html-Tags in Nachrichten sind anstrengend (sowohl in Quip als auch im nativen ICQ der neuesten Version). Es wäre besser, wenn es ausschließlich auf Englisch wäre, aber ohne Tags....
 

2 Fragen:

1) Funktioniert es noch auf x32-Systemen? (Ich habe keine Chance, es zu überprüfen).

2) Niemand hat nicht für x64 umgestaltet? (unter x64 funktioniert nicht) .

Ich werde sehr dankbar für die Antwort sein. Ich habe versucht, es neu zu machen - es hat nicht funktioniert - wenn ich arbeite, stürzt es ab

2013.11.07 02:14:24     icq_demo (EURUSD.m,M1)  Status_RECV_ERROR
PS: Brauche genau ICQ...