[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 377

 
Zhunko:

Alle Skripte und Berater arbeiten in ihren eigenen Threads. Die Handelsaufträge von ihnen werden in einer separaten Warteschlange gesammelt. Dann werden sie auf freie Handelsströme verteilt. Die Anzahl der Freihandelsfäden kann bis zu 8 betragen.

Print() gibt aus, was zum Zeitpunkt der Ausgabe zur Verfügung steht. Das Vorhandensein mehrerer Threads kann anhand des Protokolls festgestellt werden. Die Ausgabe wird ganz am Anfang der Funktion start() und ganz am Ende angezeigt. Legen Sie eine Verzögerung dazwischen. Führen Sie mehrere Expert Advisors mit verschiedenen Tools aus. Sehen Sie sich das Protokoll an. Sie können sehen, dass zwischen den Ausgaben eines Expert Advisors die Ausgaben anderer Expert Advisors liegen.

D.h., um die Frage von Arles zu beantworten: Wenn ein Expert Advisor Aufträge registriert hat und eine Weile "schläft", wird in diesem Moment ein anderer EA einen Auftrag erteilen (ein Geschäft auf dem Markt abschließen), der das Limit der zugewiesenen Mittel nicht überschritten hat (nehmen wir an, 80 % der Einlage - beide EAs werden diese Größe haben). Und wenn der 1. die Arbeit wieder aufnimmt (und das Money-Management-Terminal bereits am Vortag berechnet wurde), wird er auch in der Lage sein, ein Geschäft zu eröffnen, das die vom Expert Advisor festgelegten Grenzen überschreitet?

Wenn dieses System (hypothetisch) durch mehrere EAs multipliziert wird, kann es dann eines geben, bei dem das Risikomanagement in einem kritischen System stattfindet?

Verstehe ich dieses Multithreading richtig? - Wenn ja, dann ist es finanziell gesehen sicherlich ein Chaos. Da die Wahrscheinlichkeit, dass dies geschieht, bei kleinen Konten jedoch gering ist, ist dies nur hypothetisch. Und bei größeren Konten werden sie wahrscheinlich selbst etwas schreiben. Aber ist das wirklich der Fall?

Und ich habe eine Frage: Ist dies die offizielle Position oder sind es nur Spekulationen und Experimente wie meine?
 
Chiripaha:

D.h., um Arles Frage zu beantworten: Wenn ein EA Aufträge verbucht hat und eine Weile "schläft", hat ein anderer EA in diesem Moment das Limit der zugewiesenen Mittel nicht überschritten (nehmen wir an, 80% der Einlage - beide EAs haben diese Größe) und wird einen Auftrag platzieren (ein Geschäft auf dem Markt abschließen). Und wenn der 1. die Arbeit wieder aufnimmt (und das Money-Management-Terminal bereits am Vortag berechnet wurde), wird er/sie auch ein Geschäft eröffnen, das die vom Expert Advisor festgelegten Grenzen überschreitet?

Wenn dieses System (hypothetisch) mit mehreren Expert Advisors multipliziert wird, kann es dann einen geben, bei dem das Risiko-Management in einem kritischen System ist?

Verstehe ich dieses Multithreading richtig? - Wenn ja, dann ist es aus finanzieller Sicht sicherlich eine Katastrophe. Aber da die Wahrscheinlichkeit bei kleinen Konten gering ist, ist dies nur hypothetisch. Und bei größeren Konten werden sie wahrscheinlich selbst etwas schreiben. Aber ist das wirklich der Fall?

Und ich habe eine Frage: Ist dies die offizielle Position oder sind es nur Spekulationen und Erfahrungen wie meine?

Kennen Sie sich mit Synchronisation aus?

MQL4 verfügt über eine Funktion zur Synchronisierung auf atomarer Ebene.

 
Zhunko:

Kennen Sie sich mit Synchronisation aus?

MQL4 verfügt über eine Funktion zur Synchronisierung auf atomarer Ebene.


Vadim, hast du es probiert? Es wird nichts synchronisiert. Ich habe kürzlich damit gespielt. Sie müssen die Warteschlange selbst erstellen. Leider wird dadurch der Code nur um drei Zeilen gekürzt. Oder vielleicht verstehe ich es nicht.
 
D.h. die einfache Anwendung dieser Funktion stellt sicher, dass immer nur ein EA läuft, aber die Warteschlange nicht aufgereiht ist, ein EA kann im Leerlauf sein und der andere kann zweimal aufgerufen werden.
 
Zhunko:

Kennen Sie sich mit Synchronisation aus?

MQL4 verfügt über eine Funktion zur Synchronisierung auf atomarer Ebene.

Danke für den Link - jetzt habe ich eine Idee, wie ich dieses Multithreading effizienter organisieren kann. Auch wenn es nur eine Vermutung ist - eine Lösung sehe ich bisher nicht (im Sinne der aktuellen Problemlösung). Und fügt den Standpunkt von Igor zum Thema "Semaphor" hinzu.

Dennoch - Sie haben ein weiteres Modell fertiggestellt. Wo diese Prozesse angeblich (ich habe Zweifel) kohärent aneinandergereiht sind.

Und ich versuche, die Frage von Arles und jetzt auch meine zu beantworten - mit dem Modell, das ich oben beschrieben habe. Immerhin sind Sie einer Antwort auf meine Frage ausgewichen. Bei diesem Modell kommt es zu einem Missverhältnis zwischen Risiko und Management.

Ich weiß nicht, wie es mit der Synchronisierung aussieht. Ich bin neu in der Programmierung. Andererseits kann ich gut mit Geld umgehen, d. h. ich kenne mich mit Finanzen aus. : ))

Und mein finanzielles Geschick sagt mir, dass "die Musik aufhören kann zu spielen...". (aus Margin Call) mit diesem Ansatz. : ))
 
Integer:

Vadim, haben Sie versucht, es anzuwenden? Es wird nichts synchronisiert. Ich habe kürzlich damit gespielt. Sie müssen die Warteschlange selbst erstellen. Leider wird dadurch der Code nur um drei Zeilen gekürzt. Oder vielleicht verstehe ich es nicht.
Ganz im Sinne meiner Zweifel...
 

Das sage ich Ihnen (genau in dieser Form) so! (Ich bitte Sie, das als Scherz zu verstehen).

Meine Experimente, trotz aller Vorschläge, Multithreading zu prüfen, zeigen, dass es überhaupt nicht funktioniert, solange ich die Blöcke in den Diagrammen nicht vertausche. Sobald ich sie alle auf einmal umgestellt habe, sind alle Fragen verschwunden.

Ich werde daher bei meinen Schöpfungen vorerst von diesem Postulat ausgehen.

Und die Tatsache, dass das Risikomanagement nicht nach meinem Willen "pleite" gehen kann - danke, Vadim, dass du das aufgezeigt und darauf aufmerksam gemacht hast. Dies wird dazu beitragen, eine solche Situation zu vermeiden. Nun, für diejenigen, die davon wissen.

 

Guten Tag! Die Zeile e ist in Ordnung, können Sie mir sagen, wie man das macht?

//Comment("OrdersProfit  ",OrdersProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
 
Dimka-novitsek:

Guten Tag! Die Zeile e ist in Ordnung, können Sie mir sagen, wie man das macht?


Comment("OrdersProfit ",OrdersProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());

Solche Fehler sind im Editor beim Kompilieren leicht zu erkennen.

 
Danke!!!!!! Sie bezog sich auf eine Funktion im Allgemeinen... Ich weiß nicht, warum ich das so geschrieben habe!