Beliebte Beiträge

Tipp Der Redaktion - 2019

MQL4: Lernen der WebRequest-Methode

Hallo allerseits!

Vor nicht allzu langer Zeit haben wir in einer Lektion über die offenen Positionen von Händlern Daten von einer Website im Netzwerk abgerufen. Was wir dann in der Lektion gemacht haben, kann auf eine andere Art und Weise gemacht werden, ohne dll zu verwenden, also ohne vom Betriebssystem abhängig zu sein.

Sie benötigen lediglich ein Metatrader 4-Terminal und einen mql-Code-Editor. Sowie Kenntnisse der Standard-mql4-WebRequest-Methode, die wir heute kennenlernen werden.

WebRequest-Methode

Die WebRequest-Methode kann auf zwei Arten aufgerufen werden. Die erste eignet sich zum Senden einfacher Anforderungen an einen Server mit Standard-HTTP-Headern. Es sieht so aus:

int WebRequest (
const stringMethode, // HTTP-Methode
const stringurl, // url
const stringKeks, // Cookie
const stringReferer, // referer
intAuszeit,    // timeout
const char& data, // Array des Hauptteils der HTTP-Nachricht
intdata_size,       // Größe des Datenarrays in Bytes
char& Ergebnis,        // Array mit Serverantwortdaten
Zeichenfolge& result_headers// Serverantwort-Header
);

Mit der zweiten Option können Sie das Header-Array selbst ausfüllen. Dies ist in verschiedenen schwierigen Situationen nützlich, wenn Sie beispielsweise Dateien an den Server senden müssen.

int WebRequest (
const stringMethode, // HTTP-Methode
const stringurl, // url
const stringÜberschriften, // Header
intAuszeit,    // timeout
const char& data, // Array des Hauptteils der HTTP-Nachricht
char& Ergebnis,        // Array mit Serverantwortdaten
Zeichenfolge& result_headers// Serverantwort-Header
);

Methode kann eine beliebige HTTP-Methode sein. Im Video-Tutorial sehen wir uns die Verwendung der GET-Methode an.

URL -Die Adresse des Servers, auf den Sie zugreifen

cookie -dementsprechend Cookies, zum Beispiel zur Autorisierung auf dem Server;

Referer - Wert des Referer-Headers der HTTP-Anfrage;

Auszeit -Zeitüberschreitung in Millisekunden, d. h. Wartezeit auf eine Antwort vom Server.

Überschriften -Ihre benutzerdefinierten Header. Bei Verwendung der ersten Methodenaufrufoption wird die Anforderung standardmäßig mit dem folgenden Header gesendet: Inhaltstyp: application / x-www-form-urlencoded.

Im Falle eines Browsers könnte der Titel beispielsweise so aussehen:

GET / Tutorials / HTTP / 1.1
Host: tlap.com
User-Agent: Mozilla / 5.0 (Windows; U; Windows NT 6.1; en-US; rv: 1.9.1.5) Gecko / 20091102 Firefox / 3.5.5 (.NET CLR 3.5.30729)
Akzeptieren Sie: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
Accept-Language: en-us, en; q = 0,5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,7
Keep-Alive: 300
Verbindung: Keep-Alive
Cookie: PHPSESSID = r2t5uvjq435r4q7ib3vtdjq120
Pragma: kein Cache
Cache-Kontrolle: kein Cache

In unserem Fall benötigen Sie zum Senden einer Datei den folgenden Header:

Inhaltstyp: mehrteilig / Formulardaten; border = - WebKitFormBoundaryePkpFF7tjBAqx29L
Inhaltsdisposition: Formulardaten; name = "uploadedfile"; filename = "hello.tlap" Inhaltstyp: application / x-object

Das Senden von Dateien ist jedoch eine eher seltene Aufgabe. Viel häufiger müssen wir nur einige Daten aus dem Programm mql4 abrufen.

Die WebRequest-Methode selbst gibt int zurück, also eine Zahl. Diese Nummer ist nichts weiter als ein Antwortcode vom Server oder -1 im Fall eines Methodenausführungsfehlers. Der Antwortcode ist eine dreistellige Zahl. Derzeit gibt es fünf Codeklassen:

1xx: Information - Die Anforderung wird empfangen und verstanden, und die Verarbeitung wird fortgesetzt.
2xx: Erfolg - Die Anfrage wurde erfolgreich empfangen, verstanden und verarbeitet.
3xx: Umleitung - Es müssen weitere Schritte ausgeführt werden, um die Anforderung abzuschließen.
4xx: Client-Fehler - Die Anforderung weist eine schlechte Syntax auf oder kann nicht ausgeführt werden.
5xx: Serverfehler - Der Server kann eine gültige Anforderung nicht ausführen.

Hier sind einige der häufigsten Beispiele:

200 OK - Erfolgreiche Anfrage. Wenn der Client Daten angefordert hat, befindet er sich im Header oder Body der Nachricht. Solcher Code kommt im Erfolgsfall;

301 Permanent umgezogen. Das angeforderte Dokument wurde schließlich an die neue URL übertragen, die im Feld Speicherort des Headers angegeben ist. Dieser Code bedeutet, dass die Seite übertragen wurde und nun unter einer anderen Adresse verfügbar ist.

400 Fehlerhafte Anfrage. Die Anfrage wird vom Server aufgrund eines Syntaxfehlers nicht verstanden. Dieser Code bedeutet, dass während der Anforderung ein Tippfehler aufgetreten ist.

401 Nicht autorisiert. Die Anfrage erfordert eine Benutzeridentifikation. Dieser Code bedeutet, dass Sie sich zuerst anmelden müssen. Geben Sie den Benutzernamen und das Kennwort von der Site ein.

403 Verboten. Der Server hat die Anforderung verstanden, kann sie jedoch aufgrund einiger Zugriffsbeschränkungen nicht ausführen.

404 nicht gefunden. Der Server hat die Anforderung verstanden, konnte jedoch die entsprechende Ressource unter der angegebenen URL nicht finden. In den meisten Fällen weist dieser Code darauf hin, dass die Seite einfach gelöscht wurde.

500 Interner Serverfehler. Jeder interne Serverfehler, der nicht Teil der restlichen 5xx-Klassenfehler ist.

Tatsächlich gibt es natürlich viel mehr Codes. In jeder Klasse gibt es normalerweise ein Dutzend bis mehrere Dutzend, aber es macht keinen Sinn, hier alles anzugeben, zumal diese Informationen unabhängig voneinander im Netzwerk zu finden sind. Ich habe nur die gebräuchlichsten Antwortcodes angegeben.

Vergessen Sie nicht, die verwendete Site-Adresse in die Liste der zulässigen URLs im Terminal aufzunehmen, da sonst nichts funktioniert. Drücken Sie dazu Strg + O oder gehen Sie zu Service-> Einstellungen-> Berater.

Die Einstellungen sollten in etwa der Abbildung oben entsprechen.

Bei Ihrer Arbeit ist zu berücksichtigen, dass die WebRequest-Methode auf eine Antwort vom Server wartet und bis die Antwort eintrifft, keine weitere Skriptausführung möglich ist. Daher kann dieser Indikator nicht im Indikator verwendet werden. Beachten Sie außerdem, dass die Ausführung der Methode einige Zeit in Anspruch nimmt. In dieser Zeit führt das Skript oder der Advisor keine weiteren Aktionen aus. Diese Besonderheit ist besonders dann zu berücksichtigen, wenn Sie umfangreiche Anfragen senden oder umfangreiche Antworten erhalten, z. B. umfangreiche Dateien mit beliebigen Daten.

Fazit

Heute haben wir die WebRequest-Methode analysiert, mit der Ihre Berater und Skripte auf relativ einfache Weise mit der Außenwelt interagieren können. Mit dieser Methode können Sie Webseiten empfangen, Dateien herunterladen und senden, automatische Manipulationen an der Site durchführen und vieles mehr.

Die Möglichkeiten dieser Methode sind wirklich endlos, besonders wenn Sie keine anderen Programmiersprachen kennen. Mit ihm können Sie Aufgaben lösen, die nichts mit Handel zu tun haben, z. B. einen Autoklicker erstellen oder andere nützliche Arbeiten im Netzwerk emulieren, die Geld bringen. Es ist eine lustige Idee, aber wenn Sie hart arbeiten, können Sie Ihrem Auto-Surfer schreiben, der für Sie auf Klicks verdient, während Ihre Haupt-Bots die Einzahlung ablaufen lassen - eine Kleinigkeit, aber nett.

Sehen Sie sich das Video an: Parts of an HTTP Request (Dezember 2019).

Lassen Sie Ihren Kommentar