Dieser Indikator ist ein Pseudo-Indikator ohne Buffer. Sein einziges Ziel ist es, die Technik der mehrstufigen Berechnungen zu demonstrieren. Er kann Befehle für langwierige Berechnungen ausgeben, die in separaten Threads durchgeführt werden, die für Chartobjekte mit einem arbeitsfähigen Expert Advisor erstellt werden. Die im beigefügten Header-File MultiThreadedObjectWorker.mqh enthaltenen Klassen erstellen automatisch die Chartobjekte und wenden das Template mit dem angegebenen arbeitsfähigen Expert Advisor in jedem Objekt an. Nach Abschluss der Berechnung wird das Objekt automatisch vom Chart entfernt.
Dieses Beispiel richtet sich an Benutzer mit Programmierkenntnissen.
Die Idee stammt aus dem Artikel über mehrstufige asynchrone Webanfragen. In diesem Artikel finden Sie alle technischen Details, wie die Nachrichten (Ereignisse) verteilt werden und wie Ressourcen verwendet werden, um Daten zwischen Charts auszutauschen.
Der Indikator nutzt eine "kompaktere" Implementierung der Technik als im Artikel, indem er Chartobjekte anstelle vollständiger Chartfenster verwendet. Weitere Details finden Sie im Forum.
Stellen Sie sicher, dass der arbeitsfähige Expert Advisor MultiThreadedObjectWorker kompiliert ist, bevor Sie den Indikator selbst - MultiThreadedIndicator - kompilieren und ausführen.
Eingabeparameter
- sinput int _Cores = 1; - Anzahl der zu nutzenden Threads (verwenden Sie nicht mehr als die verfügbaren physischen Kerne)
- sinput int _Tasks = 1; - Anzahl der Pseudo-Aufgaben, die parallel ausgeführt werden sollen (verwenden Sie eine Zahl, die größer ist als die Anzahl der Kerne, um die parallele Leistung zu sehen)
- input string MultiThreadedScriptPath = "Experts\MultiThreadedObjectWorker.ex5"; - muss den Pfad des arbeitsfähigen Expert Advisors angeben
Jede Pseudo-Aufgabe berechnet eine Reihe von Quadratwurzelfunktionen (nur zu Demonstrationszwecken). Dies kann in Ihren MQL-Projekten durch andere zeitintensive Algorithmen ersetzt werden.
Um die parallelen Berechnungen zu starten, nachdem der Indikator einem Chart hinzugefügt wurde, klicken Sie bitte auf den Chart. Alle wichtigen Phasen des Prozesses (sowohl im Client- als auch im Arbeits-MQL5-Programm) werden protokolliert.
Das Client-MQL-Programm, das parallele Berechnungsanfragen stellt, kann nicht nur Indikatoren, sondern auch Expert Advisors sein. Skripte und Dienste werden von der Plattform nicht unterstützt.
Mit der Header-Datei MultiThreadedObjectWorker.mqh sollten Sie Ihre eigene Datenübertragung zwischen dem MQL5-Client und dem arbeitsfähigen Expert Advisor implementieren.
Hier sind zwei Beispiele der Protokolle.

Ausführung von 4 Aufgaben auf 2 Kernen (2 Threads parallel)
Bei der Ausführung von 4 Aufgaben auf 2 Kernen gibt es 2 parallele Threads, was eine doppelt so schnelle Ausführung wie auf 1 Kern ermöglicht (vergleichen Sie 3354ms oben und 6240ms unten).

Ausführung von 4 Aufgaben auf 1 Kern (einzelner Thread - Standard-MQL-Programm)
Mehr Kerne - mehr Geschwindigkeit.
Verwandte Beiträge
- Tägliche prozentuale Veränderung in MT5 – Indikator für MetaTrader 5
- Uniformitätsfaktor-Indikator für MetaTrader 5: Analysiere deine Preisbewegungen
- Boom Index Spike Pattern – Ein Leitfaden für MetaTrader 5 Trader
- Chaikin Volatilitätsindex: Auswahl des Glättungsalgorithmus für MetaTrader 5
- Trend Intensitäts Index: Ein unverzichtbarer Indikator für MetaTrader 5