Noch einmal zum Thema Multithreading - Seite 4

 
meat:

Nun, sagen wir mal, nicht alles, was Sie aufgelistet haben, bezieht sich auf mql5-Tools :) Und die Frage war nicht, wie diese Frage gelöst (umgangen) werden kann. Man kann immer einen Weg finden, sie zu umgehen, daran besteht kein Zweifel. Es stellt sich die Frage, warum wir mql5 nicht mit der notwendigen Funktionalität ausstatten wollten, ohne auf Details einzugehen.

MQL5 hat alles, was wir brauchen, wir müssen nur lernen, es zu benutzen.

Übertragen Sie einen Teil der Berechnungen in den Indikator und führen Sie ihn über einen Expert Advisor aus.

Und niemand wird die grundlegende Parallelisierung für 2 Dutzend (optimistischerweise) Benutzer durchführen.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
TheXpert:
Es gibt Skripte für Multithreading. Und Sie brauchen es nicht im Tester

Wie führt man ein Skript von einem Expert Advisor aus?

 
komposter:

Übertragen Sie einige der Berechnungen in den Indikator und führen Sie ihn über den Expert Advisor aus.

Da ist er wieder, der Tamburintanz. Ich habe von einer normalen Umsetzung gesprochen.

Und niemand wird die übliche Parallelisierung für 2 Dutzend (optimistischerweise) Benutzer vornehmen.

Ich hatte von Anfang an den Eindruck, dass MQL5 im Gegensatz zu mql4 als eine Sprache für mehr oder weniger erfahrene Programmierer positioniert ist. Das bedeutet, dass die Optimierung des Algorithmus und seine Parallelisierung über mehrere Threads hinweg eine tägliche Notwendigkeit sein muss. Deshalb habe ich Sie zu Beginn des Themas auf diesen Punkt aufmerksam gemacht. Und Renat hat aus irgendeinem Grund sehr schmerzhaft darauf reagiert.

Das Problem der ständigen Optimierung an einer Stelle zu lösen, wie es viele hier vorschlagen, ist nichts, was man überhaupt tun möchte.

Außerdem habe ich bereits zu Beginn gesagt, dass ich von ihnen nicht verlange, normale Parallelen zu ziehen. Ich bin durchaus in der Lage, alles selbst zu parallelisieren, indem ich WinApi verwende. Alles, was ich brauche, ist eine Funktionsadresse. Deshalb habe ich darum gebeten, nur Zeiger auf Funktionen hinzuzufügen. Natürlich ist es wünschenswert, die __stdcall-Direktive zu unterstützen, aber es ist nicht notwendig, Sie können die notwendigen Manipulationen selbst vornehmen.

Zeiger auf Funktionen sind eigentlich eine sehr nützliche Sache. Ihre Verwendung zur Erstellung von Fäden ist nur eine von vielen Möglichkeiten. Sie werden z. B. auch verwendet, um Callback-Funktionen in verschiedenen asynchronen Operationen anzugeben. Sie werden auch in die DLL übertragen, was die Kommunikation zwischen der DLL und dem Expert Advisor, der sie importiert hat, vereinfacht, d.h. eine vollständige Integration. Zur Laufzeit kann die DLL die MQL-Funktion direkt aufrufen und einige benötigte Informationen von ihr erhalten. Dazu müssen wir ein Ereignis (z.B. einen Tick) erzeugen, das einen Expert Advisor aufruft und dann die erforderlichen Informationen an die DLL weitergibt... Alles in allem: zusätzlicher Ärger und Zeitaufwand

 
Über Multithreading.
  1. Das Hinzufügen von Multithreading zur Sprache bedeutet, dass eine spezielle API geschaffen werden muss, die Multithreading unterstützt,
    was wiederum langsamer ist als API ohne solche Unterstützung, ich hoffe, das ist klar (loki, etc.).
  2. Sie müssen den MQL5-Compiler-Optimierer neu schreiben - und die Optimierungen sogar noch verschlechtern.
  3. Dies ist ein Ort für schwer zu findende Benutzerfehler.
Und schließlich brauchen es nur wenige Nutzer, und der Mangel an Unterstützung kann umgangen werden.


Über Zeiger auf Funktionen.
Die Frage nach ihrer Verwendung innerhalb des MQL5-Codes ist offen.
Leider werden wir nicht in der Lage sein, den Zeiger auf die DLL zu übergeben - wir mussten die Aufrufvereinbarung für Crossplatform x86/x64 opfern.
 
mql5:
Zum Thema Multithreading.

Der Mann trollt nur (ich dachte, die Sprache wäre...) für theoretische Argumente und versteht weder die angewandte Natur der Sprache noch die Konsequenzen von Multithreading.

In der Tat hat er nicht einmal eine wirkliche Aufgabe für die Gleichzeitigkeit.

 

mql5:
 ...Ну и последнее, нужно это не очень малому числу пользователей и отсутствие поддержки можно обойти.

Mir gefällt die Idee, Skripte zu verwenden, aber wie ruft man sie aus dem EA auf?

 
DC2008:

Mir gefällt die Idee, Skripte zu verwenden, aber wie ruft man sie aus dem EA auf?

Leider gibt es keine Möglichkeit, Skripte von MQL5 aus zu starten.

Aber es gibt einen Weg, durch eine Vorlage eines Diagramms, wenn Sie ein Skript in ihm anstelle des Expert Advisors schreiben.
Wenn eine solche Vorlage auf ein neues Diagramm angewendet wird, wird das Skript gestartet (dies ist jedoch eine "undokumentierte Funktion", die vielleicht nicht eines Tages verfügbar sein wird)...

Was ist Ihre Aufgabe?
Warum haben Sie nicht einen einsatzbereiten Expert Advisor auf dem nebenstehenden Chart, der nach dem Empfang eines Ereignisses seine Arbeit erledigt?
Das Starten eines neuen MQL5-Programms ist wegen des Schutzes von EX5-Dateien teuer.
 
mql5:
Leider können Skripte nicht von MQL5 aus gestartet werden.

Aber es gibt einen Weg, durch eine Chart-Vorlage, wenn wir ein Skript in sie anstelle des Expert Advisor.
Wenn eine solche Vorlage auf ein neues Diagramm angewendet wird, wird das Skript gestartet (dies ist jedoch eine "undokumentierte Funktion", die vielleicht nicht eines Tages verfügbar sein wird)...

Was ist Ihre Aufgabe?
Warum haben Sie nicht einen einsatzbereiten Expert Advisor auf dem nebenstehenden Chart, der nach dem Empfang eines Ereignisses seine Arbeit erledigt?
Das Starten eines neuen MQL5-Programms ist wegen des Schutzes von EX5-Dateien teuer.

Ich habe Tausende von grafischen Objekten zu analysieren: überflüssige Objekte löschen, Eigenschaften ändern, statistische Merkmale berechnen usw. Selbst auf einem Diagramm gibt es Verzögerungen, und was, wenn es mehrere davon gibt?

 
Für grafische Objekte ist Multithreading nicht einmal theoretisch hilfreich.

Das Problem der Arbeit mit grafischen Objekten sollte algorithmisch gelöst werden. Seien Sie sparsam und vermischen Sie nicht die Befehle zum Ändern und Lesen von Objekten. So sind beispielsweise 1000 Lesevorgänge und nur 1000 Schreibvorgänge viel schneller als 1000 Lese- und Schreibvorgänge.
 
mql5:
Über Multithreading.
  1. Das Hinzufügen von Multithreading zur Sprache bedeutet, dass eine spezielle API geschaffen werden muss, die Multithreading unterstützt,
    was wiederum langsamer ist als API ohne diese Unterstützung, ich hoffe, das ist klar (loki, etc.).
  2. Sie müssen den MQL5-Compiler-Optimierer neu schreiben - und die Optimierungen sogar noch verschlechtern.
  3. Dies ist ein Ort für schwer zu findende Benutzerfehler.
Und schließlich brauchen es nur wenige Nutzer, und der Mangel an Unterstützung kann umgangen werden.


Über Zeiger auf Funktionen.
Die Frage nach ihrer Verwendung innerhalb des MQL5-Codes ist offen.
Leider funktioniert die Übergabe eines Zeigers in eine DLL nicht - wir mussten die Aufrufkonvention für x86/x64 Crossplatform opfern.
Ich danke Ihnen für Ihre ausführliche Antwort. Jetzt ist alles klarer. Die einzige Sache in Bezug auf die Unmöglichkeit der Übergabe eines Zeigers in DLL, ich nehme an, Sie meinen System-DLLs (d.h. __stdcall Vereinbarung)? Und in meiner eigenen DLL kann ich jede andere Vereinbarung schreiben. Oder handelt es sich um ein exklusives Angebot, das keine Standards erfüllt?
Grund der Beschwerde: