Ist die Aufgabe prinzipiell in MQL4 lösbar?

 

Die Aufgabe ist: In einem Terminal gibt es 9 verschiedene Paare und 8 EAs, die auf jedem von ihnen arbeiten, und jeder darf auf dem 9. Paar handeln, meinem "verwaltenden" EA, der überwacht, wie viele Paare bzw. Kopien von Handels-EAs gleichzeitig Aufträge öffnen dürfen. Alle Expert Advisors gehorchen einer GLOBAL-Variablen. Ich habe eine einfache Schleife geschrieben, die die "magischen Zahlen" der bereits geöffneten Aufträge liest und das Öffnen neuer Aufträge anderer EAs nicht zulässt, indem sie den Wert der globalen Kontrollvariable setzt, die den Handel verbietet.

So sollte es "im Rahmen des Szenarios" sein. So funktioniert das aber nicht wirklich. Das Problem ist, dass bis mein "verwaltender" EA Zeit hat, den Wert der globalen Variable , die den Handel verbietet, zu setzen, die arbeitenden EAs Zeit haben, Aufträge für 6 Paare statt der erlaubten 2 zu öffnen. Der Algorithmus funktioniert korrekt, wenn ich zuerst den EA-Manager starte und dann EAs handeln lasse, dann werden nicht mehr als 2 EAs (2 Paare) geöffnet (verboten durch die globale Variable, die vom EA-Manager gesetzt wurde).

Ist es möglich, in MQL4 ein System von Prioritäten zu setzen, so dass zuerst der Code des EA ausgeführt wird, und dann alle anderen EAs?

Ich habe versucht, die Schleife start() zu starten, vielleicht habe ich etwas falsch gemacht, aber das Terminal hängt sich auf.

Hilfe für einen unerfahrenen Profi.

 
Zakyza:

Ist es möglich, ein System von Prioritäten in MQL4 zu setzen, so dass der EA-Code zuerst ausgeführt wird, und dann alle anderen EAs?

Ich habe versucht, start() in einer Schleife zu starten, vielleicht habe ich etwas falsch gemacht, aber ich habe nichts erhalten, außer dass das Terminal angehalten wurde.

Als Berufsanfänger brauche ich Hilfe.

Das ist möglich. Zum Beispiel, indem man eine weitere Variable für das Terminal hinzufügt, die nur er verwalten kann, und für andere wird es eine Erlaubnis zu arbeiten.

Ich verstehe, dass ich vorgeschlagen habe, was Sie bereits umgesetzt haben. Offensichtlich wird es falsch gemacht.

Wenn der Anlageberater noch keine Zeit hatte, die Terminalvariable zu ändern, sollten die Sklaven nicht zum Handel zugelassen werden.

 
Sehen Sie sich diese Funktion an. Dies ist die einzige Funktion in MQL4, die die Kernel-Ebene behandelt (bietet atomaren Zugriff). Das sollte helfen.
 
tara:
Möglich. Zum Beispiel durch Hinzufügen einer weiteren Terminalvariable, die nur er kontrollieren kann, und für andere wird sie zur Arbeitserlaubnis.


Keine Zeit für den EA-Manager, den gewünschten Wert der globalen Variablen zu setzen
 
Zakyza:

Der EA-Manager hat keine Zeit, den richtigen Wert für die globale Variable zu setzen

Nun, man muss dem Sklaven nicht das Recht geben, zu atmen, bis er aufwacht.
 
Zhunko:
Sehen Sie sich diese Funktion an. Dies ist die einzige Funktion in MQL4, die die Kernel-Ebene behandelt (bietet atomaren Zugriff). Das sollte helfen.

Danke, ich hoffe, es hilft, ich habe es irgendwie übersehen. "kann für die Semaphor-Organisation verwendet werden, wenn mehrere gleichzeitig arbeitende Expert Advisors innerhalb eines einzigen Client-Terminals interagieren" - das lässt hoffen. Obwohl, wenn GlobalVariableSetOnCondition von start() von meinem EA in der letzten Runde aufgerufen wird, nachdem EAs bereits Geschäfte eingegeben haben, weiß ich nicht, welchen Unterschied es machen wird .
 
tara:

Nun, man muss dem Sklaven nicht das Recht geben, zu atmen, bis er aufwacht.

Wie organisieren Sie das? Den Sklaven zu erlauben, manuell zu handeln, ist keine Option.
 
Wenn es sich bei den Sklavenberatern um gestohlene Berater handelt, sind Sie an der falschen Adresse.
 
Warum gestohlen? Der Autor des EA selbst hat es kostenlos zur Verfügung gestellt, ich habe nur ein paar Kopien und möchte sie über globale Variablen organisieren. Warum sagen Sie das?
 
Ich sagte: wenn.
 
tara:
Ich sagte: wenn.

Ja. Nein, nicht gestohlen.