Asynchrone und mehrfädige Programmierung in MQL - Seite 27

 
Roman:

Ich habe begonnen, das Thema erneut zu lesen, und Igor hat bereits darüber geschrieben.

Genau das wollte ich sagen, Yuri, dass wir Speicher zuweisen und den Thread registrieren müssen.
Igor sagt, dass Sie zuweisen und registrieren müssen, während Sie sagen, dass Sie nichts zu tun brauchen.
Deshalb ist mir auch schwindelig. Das Ergebnis ist eine Blockade.

Igor hat als Spezialist an der Universität studiert, und er sollte mehr davon verstehen als wir Autodidakten.
Von Anfang an war ich der gleichen Meinung, dass Speicher zugewiesen und initialisiert werden muss.
Die Initialisierung und Speicherzuweisung ist der Schlüssel zur korrekten Kodierung, denn sie darf nicht fließen und darf nicht unsinnig sein.

Also meine Frage an Igor, bitte erklären, wie man es in C++ tun?
Nicht in Worten, mit einem Beispiel, ich verstehe nichts ))

Mann, bei den Profis kann man kein Multithreading betreiben, nichts für ungut. Aber wenn Sie in eiserner Stimmung sind, lesen Sie weiter und finden Sie es heraus:

https://en.cppreference.com/w/cpp/thread

https://en.cppreference.com/w/cpp/atomic

Falls Sie ein Beispiel benötigen, siehe unten:

https://en.cppreference.com/w/cpp/thread/thread/join

https://en.cppreference.com/w/cpp/thread/async


Auch hier handelt es sich um ein heikles Thema, das sich leicht verkomplizieren lässt (z. B. Abkopplung von einem gespawnten Thread, der später zerstört wird als die gemeinsam genutzten Daten, Compiler-Optimierung bei fehlender Synchronisierung und vieles mehr).

 
Реter Konow:
Ich schlage vor, den Indikator als Träger der GUI zu verwenden, und Ressourcen - für die Kommunikation mit dem Expert Advisor. Darüber hinaus können Sie in MT4 den Expert Advisor-Tester von einem Standard-Chart aus über das Panel steuern. Alle Bedienelemente funktionieren, nicht nur die Tasten. Sie werden in der Lage sein, Text und alles andere an den zu testenden EA zu senden. Ich habe es bereits getestet. Alles funktioniert.

Peter, du verstehst das nicht.

Es gibt EINEN Berater. Es läuft auch zusätzlich auf einem unsichtbaren Diagramm, nur im Agentenmodus. Es laufen KEINE Ereignisse auf dem Agenten. D.h. die Ressource kann sie nicht aufrufen, der Timer wird nicht gestartet, die Ticks kommen nicht.

Wenn der Indikator einen EA auslöst, handelt es sich um zwei Einheiten.

Der Expert Advisor kann beliebig viele dieser Agenten erstellen. Jeder einzelne wird zu einem eigenen Thema.

 
Andrey Barinov:

Peter, du verstehst das nicht.

Es gibt EINEN Berater. Es läuft auch zusätzlich auf einem unsichtbaren Diagramm, nur im Agentenmodus. Es laufen KEINE Ereignisse auf dem Agenten. D.h., die Ressource kann sie nicht aufrufen, der Timer startet nicht, die Ticks kommen nicht.

Wenn ein Indikator einen EA auslöst, handelt es sich um zwei Einheiten.

Der Expert Advisor kann beliebig viele dieser Agenten erstellen. Jeder einzelne wird zu einem eigenen Thema.

Sie meinen, er startet sich selbst im Agentenmodus auf einer unsichtbaren Karte? Das ist etwas Neues. Ich wusste nichts davon.
 
Реter Konow:
Sie meinen, dass er sich selbst im Agentenmodus auf einer unsichtbaren Karte ausführt? Das ist etwas Neues. Ich wusste nichts davon.

ChartApplyTemplate

 
Andrey Barinov:

Peter, du verstehst das nicht.

...

Ein Berater kann so viele dieser Agenten haben, wie er möchte. Jeder Strom wird als separater Strom ausgegeben.

Multithreading gibt es also schon? Und niemand hier weiß davon?

 
Andrey Barinov:

Es gibt EINEN Berater. Es läuft auch selbst.

Der KB-Tester arbeitet nach dem gleichen Prinzip. Konnten Sie das Problem der Fehlersuche in einem solchen EA lösen? Als der Tester nach diesem Prinzip entwickelt wurde, bestand die Unannehmlichkeit des Schreibens in der Schwierigkeit der Fehlersuche.

 
Реter Konow:

Dann stellt sich heraus, dass Multithreading bereits existiert? Und niemand hier weiß davon?

Das nennt man "seinem Gesprächspartner nicht zuhören".

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Asynchrone und Multithreading-Programmierung in MQL

fxsaber, 2019.07.25 12:16

Im Rahmen von MQL werden beide Aufgaben allein durch die automatische Ausführung einer EA-Zählung gelöst.

 
Реter Konow:

Bedeutet dies, dass Multithreading bereits existiert? Und niemand hier weiß davon?

Das ist ein bekannter Trick. Er wurde nicht von mir erfunden. Er wurde von mir vor einigen Jahren in einem Forum erfunden.

 
fxsaber:

Der CB-Tester arbeitet nach dem gleichen Prinzip. Konnten Sie das Problem der Fehlersuche in einem solchen EA lösen? Als ich den Tester nach diesem Prinzip erstellte, bestand die Unannehmlichkeit, ihn zu schreiben, in der Schwierigkeit der Fehlersuche.

Drucken, ASSERT, DEBUG. In diesem Fall verwende ich nicht den Standard-Debugger...

 
Andrey Barinov:

Das ist ein bekannter Trick. Er wurde nicht von mir erfunden. Ich habe es vor ein paar Jahren aus einem Forum.

Wie gut entspricht dieses "Multithreading" seinem Begriff? Ist es möglich, mit dieser Funktion die Aufgaben eines Programms in Threads aufzuteilen?