Grazie per l'articolo. È stato interessante.
Anche se ModIcq è perfettamente utilizzabile senza modifiche, è più facile lavorare con la versione modificata :)
IcqMod.dll non può essere utilizzato direttamente in MT5, perché lavora con stringhe Ansi, mentre in MT5 le stringhe sono in formato Unicode. Pertanto, è stato necessario ridisegnare il progetto per lavorare con i messaggi in Unicode (a questo scopo, il protocollo non utilizza il formato binario ma quello HTML). Ora è possibile inviare e ricevere messaggi in qualsiasi lingua del mondo! Spero che il progetto sia richiesto, il che permetterà di migliorarlo secondo i vostri desideri.
IcqMod.dll non può essere utilizzato direttamente in MT5, perché funziona con stringhe Ansi e in MT5 le stringhe sono in formato Unicode.
Non esattamente. È possibile convertire utilizzando StringToCharArray. Ad esempio, questo codice funziona per me
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() { // convertire le stringhe in un array di caratteri da passare alla dll uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // connettersi ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // controlla i messaggi in arrivo ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // UIN del mittente msgStr = CharArrayToString(msgR); // messaggio uchar msgS[]; // aggiungere prima del messaggio Received: e inviarlo di nuovo StringToCharArray("Ricevuto:" + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
Ma è scomodo convertire sempre, quindi la vostra libreria è molto più utilizzabile in questo senso.
Ho pensato anche ai proxy. Forse ci sono alcune impostazioni che funzionano adeguatamente per una macchina locale? Cioè, se non si usa un proxy, si impostano alcune impostazioni predefinite nel proxy e tutto funziona. Come opzione si potrebbero creare 2 funzioni Connect nella libreria - per la variante con e senza proxy
Le modifiche apportate alla libreria non riguardano solo il tipo di valore passato per le stringhe (era char* ed è diventato wchar_t*). Sarebbe troppo semplice. È cambiato anche il formato del messaggio trasmesso (si veda la funzione BuildQuery_SendMsg_Unicode nel codice sorgente della dll), che è diventato universale (HTML) anziché nativo (binario). Il fatto che i messaggi letterali russi trasmessi tramite IcqMod vengano ricevuti correttamente è merito del programma ICQ nativo su cui si sta effettuando il test. Provate a testare la ricezione dei messaggi russi su http://wap.ebuddy.com/ o su un gestore ICQ alternativo, e vedrete degli scarabocchi al posto del cirillico. Ho provato una dozzina di gestori ICQ sui quali il mio progetto funziona correttamente non solo con il cirillico, ma anche con qualsiasi altra lingua del mondo. Mi dispiace, ovviamente, per la pubblicità.
A proposito di proxy. Ho provato, ma non in locale, bensì in remoto, SOCK4/SOCK5. Non sono riuscito a lavorare con loro. Per questo ho deciso di non usarli affatto nel progetto. Se necessario, proverò a farlo.Grazie! Era molto chiaro.
Non ho visitato questo thread per molto tempo. Il mio icq_power.mqh non si compila, dice *2 Il compilatore Cpp 02:50:00 Il compilatore MS Visual Studio non è installato nel sistema o non è riuscita l'inizializzazione del compilatore*.
Cosa può significare?
Non ho visitato questo thread per molto tempo. Il mio icq_power.mqh non si compila, dice *2 Il compilatore Cpp 02:50:00 Il compilatore MS Visual Studio non è installato nel sistema o non è riuscita l'inizializzazione del compilatore*.
Cosa può significare?
significa che
il compilatore MS Visual Studio non è installato nel sistema
oppure
l'inizializzazione del compilatore non è riuscita
Cosa significa?
Provate a testare la ricezione di messaggi in russo su http://wap.ebuddy.com/ o su un gestore ICQ alternativo, e vedrete degli scarabocchi al posto del cirillico. Ho provato una dozzina di gestori ICQ, sui quali il mio progetto funziona correttamente non solo con il cirillico, ma anche con qualsiasi altra lingua del mondo. Mi dispiace, ovviamente, per la pubblicità.
2 domande:
1) Funziona ancora su sistemi x32? (Non ho la possibilità di verificarlo).
2) Nessuno ha riprogettato per x64? (sotto x64 non funziona).
Vi sarò molto grato per la risposta. Ho provato a rifarlo - non ha funzionato - quando lavoro, si blocca.
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS: Ho bisogno esattamente di ICQ...

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Collegamento di Expert Advisor con ICQ in MQL5 è stato pubblicato:
Questo articolo descrive il metodo di scambio di informazioni tra l'Expert Advisor e gli utenti ICQ, vengono presentati diversi esempi. Il materiale fornito sarà interessante per coloro che desiderano ricevere informazioni di trading in remoto da un terminale del cliente, tramite un client ICQ nel proprio telefono cellulare o PDA.
La Figura 1. serve come dimostrazione del lavoro dell'Expert Advisor, che consente lo scambio di messaggi di testo con il client ICQ.
Autore: Andrey Voytenko