Diskussion zum Artikel "Die eigene, multi-threaded, asynchrone Web-Anfrage in MQL5" - Seite 3
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
WebRequest funktioniert nicht in Indikatoren (und diese Bibliothek ermöglicht es Ihnen, diese Einschränkung zu umgehen). Ein separater Thread in MT ist nur für Experten und Skripte vorgesehen, aber Skripte arbeiten nicht mit Ereignissen.
Ich verstehe. Danke. Das wusste ich nicht.
In MT4 1146 sind die Ressourcen voll funktionsfähig. Die Idee kann sicher auf die vierte Version portiert werden.
Ja, das ist die Idee. Aber es wird nur in MT5 funktionieren.
Ich habe diese Idee umgesetzt (mit Chart-Objekten).
iCustom-indicator als Manager verwenden, und es wird WebRequest in seinem Skript für jede WebRequestAsync starten.
Das Design sollte einfacher und zuverlässiger sein, da es keine zusätzlichen Fenster geben wird.
Das Ergebnis ist wie folgt.
Die Skripte funktionieren nicht, weil ich ihnen beim Start keinen Parameter übergeben kann - es scheint, dass Skripte überhaupt nicht mit Diagrammvorlagen kompatibel sind. Die Tatsache, dass sie es schaffen, sie mit Hilfe der Expert.mqh-Bibliothek (wenn auch ohne Parameter) auszuführen, analog zu den Expert Advisors, scheint ein glücklicher Zufall zu sein.
Wenn Sie Web-Requests nicht in Skripten, sondern in Expert Advisors ausführen, funktioniert das Schema halbwegs. Das heißt, die Eingabeparameter funktionieren normal und wir schaffen es, den Namen der Ressource mit Daten an den Expert Advisor zu übergeben. Aber aus irgendeinem Grund wird in den Expert Advisors, die in Chart-Objekten gestartet werden, nur das OnInit-Ereignis ausgelöst, während z. B. OnTick oder OnTimer nicht ausgelöst werden. Es ist nicht sehr schön, eine Web-Anfrage in OnInit auszuführen, aber es ist möglich. Diese ganze Logik verlangsamt sich jedoch enorm, da das Öffnen eines Chart-Objekts für jede Anfrage eine Menge Overhead verursacht.
Diese Idee wurde umgesetzt (mit Diagrammobjekten).
Das Ergebnis ist wie folgt.
Die Skripte funktionieren nicht, weil ich ihnen beim Start keinen Parameter übergeben kann - es scheint, dass Skripte überhaupt nicht mit Chartvorlagen kompatibel sind. Die Tatsache, dass sie mit der Expert.mqh-Bibliothek überhaupt gestartet werden können (wenn auch ohne Parameter), in Analogie zu den Expert Advisors - das scheint ein glücklicher Zufall zu sein.
Ich musste das Thema erst einmal studieren. Die Skripte werden von der Vorlage und auf einem normalen Chart ausgeführt, aber ohne die Möglichkeit, Eingabeparameter zu setzen. Die PlaySound-Methode wird also definitiv funktionieren.
Wenn wir Webabfragen nicht in Skripten, sondern in Expert Advisors ausführen, funktioniert das Schema halbwegs. Das heißt, die Eingabeparameter funktionieren normal und es gelingt uns, den Namen der Ressource mit Daten an den Expert Advisor zu übergeben. Aber aus irgendeinem Grund wird in den Expert Advisors, die in Chart-Objekten gestartet werden, nur das OnInit-Ereignis ausgelöst, während z. B. OnTick oder OnTimer nicht ausgelöst werden. Es ist nicht sehr schön, eine Web-Anfrage in OnInit auszuführen, aber es ist möglich. Diese ganze Logik verlangsamt sich jedoch gewaltig, da das Öffnen eines Chart-Objekts für jede Anfrage eine Menge Overhead bedeutet.
Bei mir funktioniert nichts.
Ich musste das Thema studieren. Die Skripte werden von der Vorlage und auf einem regelmäßigen Diagramm ausgeführt, aber ohne die Möglichkeit, Eingabeparameter zu setzen. So PlaySound Methode wird definitiv funktionieren.
Bei mir funktioniert nichts.
Das Set, das ich in einer privaten Nachricht geschickt habe, funktioniert bei mir über OnInit im Expert Advisor. Das kann man aus den Logs ersehen. Schicken Sie mir Ihre Logs.
Ich poste eine alternative Variante des Starts von Web-Anfragen - mit Hilfe von Chart-Objekten, in denen eine Vorlage mit einem Experten-Helfer angewendet wird. Sie kann sowohl von Experten als auch von Indikatoren verwendet werden. Die Abhängigkeiten sind die gleichen wie in diesem Artikel. Direkt neue Dateien der Ansatzimplementierung:
Für jede Abfrage wird ein Objekt erstellt, in dem ein Expert Advisor erstellt wird; das Objekt wird gelöscht, wenn die Abfrage beendet ist. Abfragedaten und Ergebnisse werden über Ressourcen ausgetauscht, wie im Artikel beschrieben.
Nach den Protokollen zu urteilen, bietet dieser Mechanismus keine vollständige Parallelität der Abfrageausführung, da sich die Objekte wahrscheinlich eine gemeinsame Ereigniswarteschlange teilen. Beispiel für ein Protokoll:
Versuchen Sie die aktualisierte Resource_Data.mqh, die Verzögerungen bei der Übertragung von Webseiten sollten verschwinden.
Alte Version
Neue Version
Versuchen Sie die aktualisierte Resource_Data.mqh, die Verzögerungen bei der Übertragung von Webseiten sollten verschwinden.
Alte Version
Neue Version
Was mussten Sie tun, um 20 Mal schneller zu werden? Die Kompatibilität mit dem alten Code bleibt erhalten, die Client-Aufrufe müssen nicht geändert werden?
Was mussten Sie tun, um 20 Mal schneller zu werden? Die Kompatibilität mit dem alten Code bleibt erhalten, die Client-Aufrufe müssen nicht geändert werden?
Die Kompatibilität bleibt bestehen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.
Bibliotheken: TradeTransactions
fxsaber, 2018.12.09 01:23 pm.
In den Bibliotheksquellen gibt es Convert.mqh, das schnell ein Array eines Typs in ein Array eines anderen Typs umwandelt.
TypeToBytes war bei großen Arrays langsam (wird nur noch verwendet, wenn keiner der beiden Array-Typen ein Vielfaches des anderen ist).
TypeToBytes wird nicht für uchar[] verwendet.