Thursday, 30 March 2017

Grabweb Mt4 Forex


Ich benutze WebRequest in meinem News-Alerter, aber WebRequest leidet ein Manko, das nicht für alle passt: es kann nur in einem EA verwendet werden. Die Funktion WebRequest () ist asynchron, dh sie bricht die Programmausführung und wartet auf die Antwort des angeforderten Servers. Da die Verzögerungen beim Empfangen einer Antwort groß sein können, ist die Funktion für Anrufe von den Indikatoren nicht verfügbar, da Indikatoren in einem gemeinsamen Thread laufen, der von allen Indikatoren und Diagrammen auf einem Symbol geteilt wird. Die Verzögerung der Anzeigeperformance auf einem der Symbole eines Symbols kann die Aktualisierung aller Diagramme desselben Symbols beenden. Ich benutze WebRequest in meinem News-Alerter, aber WebRequest leidet ein Manko, das nicht für alle passt: es kann nur in einem EA verwendet werden. Die Funktion WebRequest () ist asynchron. Was bedeutet, dass es die Programmausführung unterbricht und auf die Antwort des angeforderten Servers wartet. Da die Verzögerungen beim Empfangen einer Antwort groß sein können, ist die Funktion für Anrufe von den Indikatoren nicht verfügbar, da Indikatoren in einem gemeinsamen Thread laufen, der von allen Indikatoren und Diagrammen auf einem Symbol geteilt wird. Die Verzögerung der Anzeigeperformance auf einem der Symbole eines Symbols kann die Aktualisierung aller Diagramme desselben Symbols beenden. Soll synchron sein. Angevoyageur: Soll synchron sein. Meine aktuelle Anforderung ist in einer EA, so wird WebRequest wahrscheinlich die kurzfristige Antwort sein. Ich habe jedoch eine Reihe von Indikatoren, die die Nachrichten zugreifen, was bedeutet, Ill haben zu versuchen und zu erarbeiten, was in Grabweb ändern, wenn ich will, dass sie weiterhin pflegbar bleiben. Ich frage mich, wenn die Informationen in diesem Artikel wird die Antwort: mql5enarticles73 Meine aktuelle Anforderung ist in einem EA, so wird WebRequest wahrscheinlich die kurzfristige Antwort sein. Ich habe jedoch eine Reihe von Indikatoren, die die Nachrichten zugreifen, was bedeutet, Ill haben zu versuchen und zu erarbeiten, was in Grabweb ändern, wenn ich will, dass sie weiterhin pflegbar bleiben. Ich frage mich, ob die Informationen in diesem Artikel die Antwort geben wird: mql5enarticles73 Ich glaube, ich habe die Antwort gefunden - und es war in dem oben genannten Artikel. Der GrabWeb-Code sieht nun folgendermaßen aus: 1) hat die Definition von InternetRead geändert, um einen indirekten Verweis auf ein uchar-Array für die Daten zu verwenden und auch eine direkte einfache int-Variable für die Zählung zu verwenden. 2) machte die Funktion InternetRead ein uchar-Array und konvertierte dann das bevölkerte Array in einen String. Im nicht zu sicher, welchen Effekt die Größe des uchar Arrays hat. Es scheint, die ganze Webseite (FFCal XML zum Beispiel) zu lesen, und das ist größer als 500 Byte. Ist es nur Blödeln über die nächsten n Byte Speicher oder ist das System clever genug, um dynamisch zuzuordnen Speicher hoffentlich, die Letzteres Dieser Code hat einwandfrei für mich bis zum Testen in MT4 Build 600 funktioniert, wo es nicht mehr überprüft Konten von meinem Server . Strings werden nun im Unicode-Format dargestellt, obwohl sie zuvor im ANSI-Format (Einzelbyte) waren. Das sollte berücksichtigt werden, wenn das Programm DLLs verwendet und übergibt String-Variablen zu ihnen. Beim Aufruf von Windows-API-Funktionen sollten Unicode-Versionen dieser Funktionen verwendet werden. Sie müssen Ihren Code anpassen. Verwenden Sie InternetOpenW stattdessen von InternetOpenA, das gleiche für andere DLL-Funktionen, die von einem (für ANSI) beendet werden. Vielen Dank für Ihren Vorschlag angevoyageur, aber ich habe versucht, alle Ansi A bis W, aber immer noch keine Würfel. Thili55: Vielen Dank für Ihren Vorschlag angevoyageur, aber ich habe versucht, alle Ansi A bis W, aber immer noch keine Würfel. Ihr Problem wird mit InternetReadFile () sein. Siehe EasyXml. mqh bei mql5encode1998 für ein Beispiel für die Verwendung von WinInet-Funktionen im neuen MQL4 - der Code funktioniert sowohl in MQL4 als auch in MQL5. Im Wesentlichen übergeben Sie ein uchar-Array an InternetReadFile (), und konvertieren Sie das Array in eine Zeichenfolge mit CharArrayToString (). Was Sie jetzt tun können, in MQL4 ist es, verwaltete Speicherpuffer beliebiger Länge zuzuweisen, übergeben sie an eine DLL und konvertieren dann die Daten aus Ansi oder Unicode wie zutreffend. Im Wesentlichen übergeben Sie ein uchar-Array an InternetReadFile (), und konvertieren Sie das Array in eine Zeichenfolge mit CharArrayToString (). Was Sie jetzt tun können, in MQL4 ist es, verwaltete Speicherpuffer beliebiger Länge zuzuweisen, übergeben sie an eine DLL und konvertieren dann die Daten aus Ansi oder Unicode wie zutreffend. Erweiterung des Themas und Antwort leicht. Im neuen MQL4 ist es möglich, die A - oder W-Versionen vieler Funktionen aufzurufen. Das folgende Skript ruft beispielsweise das temporäre Windows-Verzeichnis unter Verwendung der GetTempPathA - und GetTempPathW-Aufrufe ab: Daher ist es möglich, weiterhin viele Ansi-only DLL-Aufrufe aus dem neuen MQL4 zu verwenden: nicht unbedingt eine Aktualisierung des MQL4-Codes und der DLL erforderlich . Daher ist es möglich, weiterhin viele Ansi-only DLL-Anrufe aus dem neuen MQL4: nicht unbedingt eine Notwendigkeit, sowohl den MQL4-Code und die DLL zu aktualisieren. . Ein anderes Beispiel: Übergeben von Zeichenfolgenwerten in einen Ansi-DLL-Aufruf aus dem neuen MQL4. (Im wirklichen Leben würden Sie natürlich nur MessageBoxW anrufen, anstatt diese Abhilfe zu verwenden, um MessageBoxA aufzurufen, aber der allgemeine Punkt ist nützlich) Danke gchrmt4 für die ausführliche Erklärung, leider Im nicht viel von einem Programmierer, so dass es nicht scheint, dass ich in der Lage sein werde Dieses selbst anpacken. Im Blick auf meinen Code, und die Beispiele, die Sie gepostet und nicht sicher, was zu tun, so sieht es aus wie kann ich jemanden finden, um dies für mich zu tun.

No comments:

Post a Comment