In der russischen Diskussion des Artikels findet man eine weitere Untersuchung des Ansatzes und eine alternative Implementierung auf der Grundlage von Diagrammobjekten.
Ich poste einen alternativen Weg, um Web-Requests zu starten - mit Hilfe von Graph-Objekten, die eine Vorlage mit einem Experten-Assistenten verwenden. Es kann sowohl von Experten als auch von Indikatoren verwendet werden. Die Abhängigkeiten sind die gleichen wie im Artikel. Die Dateien der neuen Implementierung:
multiwebobjectworker.mqh - Header-Datei mit allgemeinen Klassen;
multiwebobjectworker.mq5 ist ein funktionierender Experte, der Webanfragen innerhalb von Graphobjekten durchführt;
multiwebindicator.mq5 - ungepufferter Indikator, der den Start von Webanfragen anzeigt;
Für jede Anfrage wird ein Objekt erstellt, in dem ein Expertenassistent erstellt wird, und am Ende der Anfrage wird das Objekt gelöscht. Der Austausch von Abfragedaten und -ergebnissen erfolgt, wie im Artikel beschrieben, über Ressourcen.
Nach den Protokollen zu urteilen, bietet dieser Mechanismus keine vollständige Parallelisierung der Abfrageausführung, da sich die Objekte wahrscheinlich eine gemeinsame Ereigniswarteschlange teilen. Beispielprotokoll:
2018.11.1415:11:58.492 multiwebindicator (EURUSD,H1) 129912254742671348: Starting chart object WRS1 1299122547426713492018.11.1415:11:58.694 multiwebindicator (EURUSD,H1) 129912254742671348: Starting chart object WRS2 1299122547426713502018.11.1415:11:58.819 multiwebindicator (EURUSD,H1) 129912254742671348: Starting chart object WRS3 1299122547426713512018.11.1415:11:58.960 multiwebobjectworker (EURUSD,H1) 129912254742671349: OnInit
2018.11.1415:11:58.960 multiwebobjectworker (EURUSD,H1) 129912254742671349: Reading request \Indicators\multiwebindicator.ex5::WRS_0_129912254742671348
2018.11.1415:11:58.960 multiwebobjectworker (EURUSD,H1) 129912254742671349: Got 64 bytes in request
2018.11.1415:11:58.960 multiwebobjectworker (EURUSD,H1) 129912254742671349: GET https://google.com/ User-Agent: n/a 5000 2018.11.1415:11:58.975 multiwebobjectworker (EURUSD,H1) 129912254742671350: OnInit
2018.11.1415:11:58.975 multiwebobjectworker (EURUSD,H1) 129912254742671350: Reading request \Indicators\multiwebindicator.ex5::WRS_1_129912254742671348
2018.11.1415:11:58.975 multiwebobjectworker (EURUSD,H1) 129912254742671350: Got 60 bytes in request
2018.11.1415:11:58.975 multiwebobjectworker (EURUSD,H1) 129912254742671350: GET https://ya.ru Benutzer-Agent: n/a 5000 2018.11.1415:11:59.084 multiwebobjectworker (EURUSD,H1) 129912254742671351: OnInit
2018.11.1415:11:59.084 multiwebobjectworker (EURUSD,H1) 129912254742671351: Reading request \Indicators\multiwebindicator.ex5::WRS_2_129912254742671348
2018.11.1415:11:59.084 multiwebobjectworker (EURUSD,H1) 129912254742671351: Got 72 bytes in request
2018.11.1415:11:59.084 multiwebobjectworker (EURUSD,H1) 129912254742671351: GET https://www.startpage.com/ Benutzer-Agent: n/a 5000 2018.11.1415:11:59.162 multiwebobjectworker (EURUSD,H1) 129912254742671350: Done in187 ms
2018.11.1415:11:59.178 multiwebindicator (EURUSD,H1) 129912254742671348: Result code 2002018.11.1415:11:59.178 multiwebindicator (EURUSD,H1) 129912254742671348: Reading result \Experts\multiwebobjectworker.ex5::WRS_0_129912254742671350
2018.11.1415:11:59.178 multiwebindicator (EURUSD,H1) 129912254742671348: Got 16592 bytes in response
2018.11.1415:11:59.178 multiwebindicator (EURUSD,H1) GET https://ya.ru2018.11.1415:11:59.178 multiwebindicator (EURUSD,H1) Received 3734 bytes in header, 12775 bytes in document
2018.11.1415:11:59.256 multiwebobjectworker (EURUSD,H1) 129912254742671350: OnDeinit
2018.11.1415:11:59.272 multiwebobjectworker (EURUSD,H1) 129912254742671349: Done in297 ms
2018.11.1415:11:59.334 multiwebindicator (EURUSD,H1) 129912254742671348: Result code 2002018.11.1415:11:59.334 multiwebindicator (EURUSD,H1) 129912254742671348: Reading result \Experts\multiwebobjectworker.ex5::WRS_0_129912254742671349
2018.11.1415:11:59.334 multiwebindicator (EURUSD,H1) 129912254742671348: Got 12688 bytes in response
2018.11.1415:11:59.334 multiwebindicator (EURUSD,H1) GET https://google.com/2018.11.1415:11:59.334 multiwebindicator (EURUSD,H1) Received 790 bytes in header, 11813 bytes in document
2018.11.1415:11:59.350 multiwebobjectworker (EURUSD,H1) 129912254742671349: OnDeinit
2018.11.1415:11:59.833 multiwebobjectworker (EURUSD,H1) 129912254742671351: Done in749 ms
2018.11.1415:11:59.833 multiwebindicator (EURUSD,H1) 129912254742671348: Result code 2002018.11.1415:11:59.833 multiwebindicator (EURUSD,H1) 129912254742671348: Reading result \Experts\multiwebobjectworker.ex5::WRS_0_129912254742671351
2018.11.1415:11:59.833 multiwebindicator (EURUSD,H1) 129912254742671348: Got 45212 bytes in response
2018.11.1415:11:59.833 multiwebindicator (EURUSD,H1) GET https://www.startpage.com/2018.11.1415:11:59.833 multiwebindicator (EURUSD,H1) Received 822 bytes in header, 44307 bytes in document
2018.11.1415:11:59.849 multiwebindicator (EURUSD,H1) > > > Async WebRequest workers finished 3 tasks in1357 ms
2018.11.1415:11:59.880 multiwebobjectworker (EURUSD,H1) 129912254742671351: OnDeinit
Ich hänge die Quellen auch hier an.
Bitte achten Sie auch auf aktualisierte Versionen der Include-Dateien von fxsaber, die in den Abhängigkeiten verwendet werden - sie können Fehlerbehebungen und Beschleunigungen enthalten.
Nach einer kleinen Analyse habe ich festgestellt, dass der Wyker die URL nicht empfängt. Stattdessen empfängt er einen Nullwert
Welche Programme/Bibliotheken wurden genau verwendet (Sie können sie einfach anhängen)? Spezifische Logs werden ebenfalls benötigt. MT5-Version. Versuchen Sie es mit anderen früheren Versionen von MT5.
Alles ist einfach. Ich habe das Archiv von der Website heruntergeladen und lief im Diagnosemodus im Text beschrieben, nur die Websites zu ändern, statt drei, nur google.com in der Webquest des Terminals vorgeschrieben.
Version 5 Build 2085 ist nicht die neueste im Moment. vor dieser Version kann ich mich nicht erinnern, es war auch die neueste in diesem Moment.
aus den Protokollen
2019.07.04 14:11:31.882 multiwebclient (AUDUSD,M5)> > > > Standard WebRequest 1 Aufrufe beendet in 141ms
Alles ist einfach. Ich habe das Archiv von der Website heruntergeladen und lief im Diagnosemodus im Text beschrieben, nur die Websites zu ändern, statt drei, nur google.com in der Webquest des Terminals vorgeschrieben.
Version 5 build 2085 ist nicht die neueste im Moment. Ich erinnere mich nicht an die Version vor, es war auch die neueste in diesem Moment.
aus Protokollen
2019.07.04 14:11:31.882 multiwebclient (AUDUSD,M5)> > > > Standard WebRequest 1 Aufrufe beendet in 141ms
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
Bitte schreiben Sie mehr Details - OS Version, Antivirus, etc. Ich bin auf Win 7, MT5 build 2093 funktioniert wie oben gezeigt gut.
Im Grunde ist die Frage für MQ, weil der Fehler mit einem "internen Aufruf" zusammenhängt, aber ich glaube nicht an Hilfe - der Support ist geschlossen.
Der Quellcode des Artikels ist Open Source, so versuchen, das Problem auf dem Rechner zu lösen, wo der Fehler reproduziert wird.
Schöner Artikel, danke. Wie sieht es mit WinINet Asynchronous Mode aus?
Ich habe keine Pläne, so etwas zu implementieren, tut mir leid.
In der russischen Diskussion des Artikels findet man eine weitere Untersuchung des Ansatzes und eine alternative Implementierung auf der Grundlage von Diagrammobjekten.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий.
Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками"
Stanislav Korotky, 2018.11.14 14:20
Ich poste einen alternativen Weg, um Web-Requests zu starten - mit Hilfe von Graph-Objekten, die eine Vorlage mit einem Experten-Assistenten verwenden. Es kann sowohl von Experten als auch von Indikatoren verwendet werden. Die Abhängigkeiten sind die gleichen wie im Artikel. Die Dateien der neuen Implementierung:
Für jede Anfrage wird ein Objekt erstellt, in dem ein Expertenassistent erstellt wird, und am Ende der Anfrage wird das Objekt gelöscht. Der Austausch von Abfragedaten und -ergebnissen erfolgt, wie im Artikel beschrieben, über Ressourcen.
Nach den Protokollen zu urteilen, bietet dieser Mechanismus keine vollständige Parallelisierung der Abfrageausführung, da sich die Objekte wahrscheinlich eine gemeinsame Ereigniswarteschlange teilen. Beispielprotokoll:
Ich hänge die Quellen auch hier an.
Bitte achten Sie auch auf aktualisierte Versionen der Include-Dateien von fxsaber, die in den Abhängigkeiten verwendet werden - sie können Fehlerbehebungen und Beschleunigungen enthalten.
Absolut erstaunlich unglaublicher Artikel !!!
Herzlichen Glückwunsch und vielen Dank, @marketeer !
Ich kann es nicht zum Laufen bringen.
Fehler 4002.
Nach einer kleinen Analyse habe ich festgestellt, dass der Wyker die URL nicht empfängt. Stattdessen empfängt er einen Nullwert
Ich kann es nicht zum Laufen bringen.
Fehler 4002.
Nach einer kleinen Analyse habe ich festgestellt, dass der Wyker die URL nicht empfängt. Stattdessen empfängt er einen Nullwert
Welche Programme/Bibliotheken wurden genau verwendet (Sie können sie einfach anhängen)? Spezifische Logs werden ebenfalls benötigt. MT5-Version. Versuchen Sie es mit anderen früheren Versionen von MT5.
Alles ist einfach. Ich habe das Archiv von der Website heruntergeladen und lief im Diagnosemodus im Text beschrieben, nur die Websites zu ändern, statt drei, nur google.com in der Webquest des Terminals vorgeschrieben.
Version 5 Build 2085 ist nicht die neueste im Moment. vor dieser Version kann ich mich nicht erinnern, es war auch die neueste in diesem Moment.
aus den Protokollen
Ersetzte Ressource Datum, wie es in den Kommentaren oben war die Situation hat sich nicht geändert.
Im Prinzip können Sie es selbst wiederholen und überprüfen, wie es funktioniert.....
Alles ist einfach. Ich habe das Archiv von der Website heruntergeladen und lief im Diagnosemodus im Text beschrieben, nur die Websites zu ändern, statt drei, nur google.com in der Webquest des Terminals vorgeschrieben.
Version 5 build 2085 ist nicht die neueste im Moment. Ich erinnere mich nicht an die Version vor, es war auch die neueste in diesem Moment.
aus Protokollen
Ersetzte das Ressourcendatum, wie es in den Kommentaren oben stand, die Situation hat sich nicht geändert.
Im Prinzip können Sie es selbst wiederholen und überprüfen, wie es funktioniert.....
Konnte nicht reproduziert werden. Hier ist das Protokoll von der Ausführung auf Build 2093:
Suchen Sie nach einem Problem in Ihren Einstellungen oder Ihrem System.
Ich bestätige, dass das Skript mit den Standardeinstellungen nicht funktioniert - ich erhalte denselben"WebRequest error code 4002...".
MetaTrader 5
Version: 5.00 build 2093
02 Jul 2019
===Hier schneiden===
2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Accepted: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 after 0 retries
===Hier abschneiden===
Ich bestätige, dass das Skript mit den Standardeinstellungen nicht funktioniert - ich erhalte denselben"WebRequest error code 4002"....
MetaTrader 5
Version: 5.00 build 2093
02 Jul 2019
===Hier schneiden===
2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Accepted: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 after 0 retries
===Hier abschneiden===
Bitte schreiben Sie mehr Details - OS Version, Antivirus, etc. Ich bin auf Win 7, MT5 build 2093 funktioniert wie oben gezeigt gut.
Im Grunde ist die Frage für MQ, weil der Fehler mit einem "internen Aufruf" zusammenhängt, aber ich glaube nicht an Hilfe - der Support ist geschlossen.
Der Quellcode des Artikels ist Open Source, so versuchen, das Problem auf dem Rechner zu lösen, wo der Fehler reproduziert wird.