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
... das Offensichtliche auszusprechen, wenn Sie das Obige in einem EA statt in einem Skript machen wollten [...]
Überarbeitete Version, die verwendet werden kann, um einen EA anstelle eines Skripts zu erstellen, indem einfach der Kommentar #define COMPILE_AS_EA entfernt wird. Der Code hat dann OnTimer (und OnTick) anstelle von OnStart.
Die einzige weitere Änderung besteht darin, dass der Code die Sockets nun in einen nicht-blockierenden Modus versetzt. Er fragt immer noch die Verfügbarkeit neuer Socket-Ereignisse mit select() ab, aber er vermeidet jetzt die Gefahr, in einen blockierenden Zustand zu geraten, wenn select() irgendwie fehlerhaft ist.
Überarbeitete Version, die [...]
Ich bin mir sicher, dass jeder auf ein Update zu diesem Thema gespannt ist...
Im Zusammenhang mit einem EA - was jetzt der Standard im Code ist - stellt sich heraus, dass es möglich ist, WSAAsyncSelect() zu verwenden, um die Socket-Aktivität ereignisgesteuert zu behandeln. Dadurch kann die Latenzzeit zwischen dem Senden und Empfangen von Nachrichten oft unter die Millisekundengrenze gedrückt werden. Die genaue Geschwindigkeit hängt davon ab, was MT4 sonst noch macht, aber im Durchschnitt ist es viel schneller und nie schlechter als die Verwendung des Timers.
Es ist nicht möglich, WSAAsyncSelect() dazu zu bringen, OnTimer() oder OnTick() im EA auszulösen. WSAAsyncSelect() kann zum Beispiel angewiesen werden, WM_TIMER-Nachrichten auszulösen, aber MT4 ignoriert diese, weil die wparam-Timer-ID von WSAAsyncSelect() nicht mit der Timer-ID übereinstimmt, die von EventSetMillisecondTimer() erwartet wird.
Wenn Sie jedoch WSAAsyncSelect() anweisen, WM_KEYDOWN zu senden, wird OnChartEvent() im EA erfolgreich ausgelöst. In den Kommentaren im Code finden Sie ausführliche Informationen darüber, wie dieser Zusatz funktioniert.
Nur so zum Spaß...
Lol. Erstaunlich. Gratuliere. Ich hätte nicht gedacht, dass es möglich ist, diese Funktionalitäten auf MQL zu programmieren.
Lol. Erstaunlich. Gratuliere. Ich hätte nicht gedacht, dass es möglich sein könnte, diese Funktionalitäten in MQL zu programmieren.
Mein Instinkt ist immer, Server-Sockets mit Multi-Threading zu machen, aber ich kann mir eigentlich keinen Grund vorstellen, warum dieser Code nicht praktikabel und sicher für den realen Gebrauch sein sollte.
Es gibt eine Sache in der neuesten Version, oben, die nicht ideal ist. Anstatt noch einen weiteren großen Codeblock zu posten, werde ich ihn stattdessen beschreiben:
Es ist eine kleine Änderung des Codes, aber ich möchte nicht noch einen großen Block in dieses Forum posten, wenn nur Sie daran interessiert sind.
Anstatt einen weiteren großen Codeblock zu posten, [...]
Bei zweiten Gedanken ...
Noch eine andere Version, mit den folgenden Änderungen:
Anstatt so lange SRC-Beiträge zu posten, sollten Sie stattdessen einfach die Datei selbst anhängen. Ich würde vorschlagen, dass Sie Ihre längeren Beiträge EDITIEREN, die SRC-Abschnitte löschen und nur die Quelldatei anhängen.
Anstatt so lange SRC-Beiträge zu posten, sollten Sie stattdessen einfach die Datei selbst anhängen. Ich würde vorschlagen, dass Sie Ihre längeren Beiträge EDITIEREN, die SRC-Abschnitte löschen und stattdessen nur die Quelldatei anhängen.
Vielen Dank für Ihren Beitrag.
Einer der vielen Gründe, warum ich das nicht tun werde, ist die Tatsache, dass der obige Code sowohl auf MT4 als auch auf MT5 funktioniert. Wenn ich ihn als Anhang hochladen würde, müsste er irreführenderweise entweder als .mq4 oder .mq5 gekennzeichnet werden, während er in Wirklichkeit als beides funktioniert.
Aber, unter den vielen Gründen [...]
Ein weiterer wichtiger Grund ist das folgende Szenario, das auf den OP hätte zutreffen können:
Soweit mir bekannt ist, können weder Suchmaschinen noch die Suche auf dieser Website in Anhänge hineinschauen. Wenn Sie also den Code als Anhang posten, wäre er für eine Suche wie "mql4 bind listen htons" unsichtbar.
Sie sagen den Leuten regelmäßig, dass sie eine Suche durchführen oder die Dokumentation konsultieren sollten; ich versuche, genau dabei zu helfen.
(Zufälligerweise findet "mql4 bind listen htons" dieses Thema nicht, weil Google die Seite seit dem 14. September nicht mehr gecrawlt hat. Sie sollte aber bald bei Google auftauchen.)
Herzlichen Dank für Ihren Beitrag.
Aber einer der vielen Gründe, warum ich das nicht tun werde, ist die Tatsache, dass der obige Code sowohl auf MT4 als auch auf MT5 funktioniert. Wenn ich ihn als Anhang hochladen würde, müsste er irreführenderweise entweder als .mq4 oder .mq5 gekennzeichnet werden, während er in Wirklichkeit als beides funktioniert.
Wenn ich es mir recht überlege...
Eine weitere Version, mit den folgenden Änderungen:
Nochmals DANKE jjc,
Im Moment bin ich in Eile und habe keine Zeit, es zu testen, aber ich werde es nächste Woche tun und dir davon berichten. Ich denke, dass ich keine Probleme damit haben werde, aber vielleicht werde ich dich fragen, wenn du Zweifel hast. BTW: Bitte bearbeiten Sie keine Beiträge; sie sind alle perfekt, wie sie sind (ich fühle mich wie in StackOverflow =)).