Thursday 31 August 2017

Grabweb Mt4 Forex


Io uso WebRequest nel mio Avvisi notizie, ma WebRequest soffre una lacuna che sogliono tutti i gusti: può essere utilizzato solo in un EA. La funzione WebRequest () è asincrona, il che significa che le sue pause l'esecuzione del programma e attende la risposta dal server richiesto. Dal momento che i ritardi nella ricezione di una risposta può essere grande, la funzione non è disponibile per le chiamate da indicatori, perché gli indicatori eseguiti in un filo comune condiviso da tutti gli indicatori e grafici su un simbolo. Indicatore ritardo prestazioni su uno dei grafici di un simbolo può arrestare l'aggiornamento di tutti i grafici dello stesso simbolo. Io uso WebRequest nel mio Avvisi notizie, ma WebRequest soffre una lacuna che sogliono tutti i gusti: può essere utilizzato solo in un EA. La funzione WebRequest () è asincrona. il che significa che le sue pause l'esecuzione del programma e attende la risposta dal server richiesto. Dal momento che i ritardi nella ricezione di una risposta può essere grande, la funzione non è disponibile per le chiamate da indicatori, perché gli indicatori eseguiti in un filo comune condiviso da tutti gli indicatori e grafici su un simbolo. Indicatore ritardo prestazioni su uno dei grafici di un simbolo può arrestare l'aggiornamento di tutti i grafici dello stesso simbolo. Dovrebbe essere sincrona. angevoyageur: Dovrebbe essere sincrona. La mia esigenza attuale è in un EA, così WebRequest sarà probabilmente la risposta a breve termine. Io, però, ho una serie di indicatori che accedono alla notizia, il che significa Ill deve cercare di capire cosa cambiare in Grabweb, se voglio loro di continuare a essere gestibile. Mi chiedo se le informazioni in questo articolo fornisce la risposta: mql5enarticles73 mia esigenza attuale è in un EA, così WebRequest probabilmente essere la risposta a breve termine. Io, però, ho una serie di indicatori che accedono alla notizia, il che significa Ill deve cercare di capire cosa cambiare in Grabweb, se voglio loro di continuare a essere gestibile. Mi chiedo se le informazioni in questo articolo fornisce la risposta: mql5enarticles73 Penso che Ive ha trovato la risposta - ed è stato nell'articolo di cui sopra. Il codice GrabWeb ora appare come segue: 1) ha cambiato la definizione di InternetRead di utilizzare un riferimento indiretto a un array uchar per i dati, e anche per utilizzare una variabile int semplice e diretto per il conteggio. 2) fa la funzione di InternetRead utilizzare un array uchar, e poi convertito la matrice popolata in una stringa. Im non troppo sicuro che effetto la dimensione della matrice uchar ha. Sembra di leggere l'intera pagina web (FFCal XML per esempio) a prescindere, e questo è più grande di 500 byte. È solo blatting nei prossimi n byte di memoria, o è il sistema abbastanza intelligente per allocare dinamicamente stoccaggio si spera, il codice latterThis ha funzionato senza problemi per me fino a quando il test è in MT4 costruire 600, dove non è più verifica account dal mio server . Le stringhe sono ora presentati in formato Unicode, anche se erano in formato ANSI (quelli singolo byte) prima. Che dovrebbe essere considerato se il programma utilizza DLL e passa le variabili stringa a loro. Quando si chiama funzioni API di Windows, dovrebbero essere usate versioni Unicode di queste funzioni. È necessario adattare il codice. Usa InternetOpenW invece od InternetOpenA, lo stesso per le funzioni di altri DLL che termina con un (per ANSI). Grazie per la vostra angevoyageur suggerimento, ma ho cercato di commutazione tutto il ANSI A a W, ma ancora niente da fare. thili55: Grazie per il tuo angevoyageur suggerimento, ma ho provato a passare tutto il ANSI A a W, ma ancora niente da fare. Il tuo problema sta per essere con InternetReadFile (). Vedere EasyXml. mqh a mql5encode1998 per un esempio di come utilizzare le funzioni WinInet nella nuova MQL4 - il codice funziona sia in MQL4 e MQL5. In sostanza, si passa una matrice uchar a InternetReadFile (), e poi convertire la matrice di una stringa utilizzando CharArrayToString (). Che cosa si può in effetti ora fare in MQL4 è quello di allocare buffer di memoria gestite di lunghezza arbitraria, passarli a una DLL, e poi convertire i dati da ANSI o Unicode a seconda dei casi. In sostanza, si passa una matrice uchar a InternetReadFile (), e poi convertire la matrice di una stringa utilizzando CharArrayToString (). Che cosa si può in effetti ora fare in MQL4 è quello di allocare buffer di memoria gestite di lunghezza arbitraria, passarli a una DLL, e poi convertire i dati da ANSI o Unicode a seconda dei casi. Ampliare l'argomento e rispondere a un po '. nel nuovo MQL4 sua possibile chiamare sia A o versioni W di molte funzioni. Ad esempio, il seguente script ottiene la directory temporanea di Windows utilizzando sia il GetTempPathA e GetTempPathW chiama: Pertanto, la sua possibilità di continuare ad utilizzare molti Ansi sola DLL chiama dalla nuova MQL4: non necessariamente la necessità di aggiornare sia il codice MQL4 e la DLL . Pertanto, la sua possibilità di continuare a utilizzare molti Ansi solo DLL chiama dal nuovo MQL4: non necessariamente la necessità di aggiornare sia il codice MQL4 e la DLL. . Un altro esempio: il passaggio valori di stringa in una chiamata DLL Ansi dalla nuova MQL4. (Nella vita reale si sarebbe, ovviamente, basta chiamare MessageBoxW piuttosto che utilizzare questa soluzione per chiamare MessageBoxA, ma il punto generale è utile) Grazie gchrmt4 per la spiegazione dettagliata, purtroppo Im non molto di un programmatore in modo che doesnt sembra che sarò in grado di affrontare questo me stesso. Sto guardando il mio codice, e gli esempi che hai postato e non sicuro di cosa fare così sembra che io possa avere di trovare qualcuno per fare questo per me.

No comments:

Post a Comment