Wie man sicherstellt, dass der EA nur auf dem Chart funktioniert, auf dem er zuerst abgelegt wurde

 

Ich muss den EA mit nur "einer Instanz" arbeiten lassen. D.h. ich hänge es zum ersten Mal an ein Diagramm an und es funktioniert. Wenn ich es dann versehentlich oder absichtlich wieder an ein anderes Diagramm anhänge, sollte der zweite Anhang erkennen, dass er bereits läuft und nichts tun.

Die Bezeichnung in einer globalen Variablen zu belassen, wird wahrscheinlich nicht funktionieren. Wenn ich zwei EAs angehängt habe und ihren Text neu kompiliere, ist nicht klar, welcher zuerst mit seinem Init arbeiten wird, wo diese globale Variable erstellt werden könnte.

Wer kann was vorschlagen? Haben Sie eine Idee, wie man das machen kann?

 

Nun, neu kompilieren ist umständlich, aber lösbar, aber was tun im Falle eines Terminal-Neustarts?

Und globale Variablen sind schlecht, denn wenn das Terminal abstürzt, weil es zuvor globale Variablen in eine Datei geschrieben hat, dann stürzt alles ab.

Alternativ können Sie auch etwas in der Hand behalten.

 

TheXpert:

.... alles

das ist die Frage :((
 
aber nur nicht, um den EA zweimal an das Diagramm zu ketten, ist das nicht machbar?
 
Techno:
aber nur nicht den EA zweimal mit dem Diagramm verknüpfen, ist das unmöglich?

Ich brauche eine GARANTIE, dass weder ich noch irgendjemand anders es versehentlich oder absichtlich tun wird ;)

Stellen Sie sich vor, der EA erhält "externe" Befehle zum Eröffnen von Aufträgen. Selbst eine zusätzliche Kopie ist (theoretisch) ein zusätzlicher Auftrag.

 
ForexTools:
das ist die Frage :((

Nein, das sind die Details der Implementierung, das Hauptproblem ist der Neustart und die Neukompilierung.

Oh, es gibt ein Thema, muss nur überprüfen -- wird der EA wiederhergestellt, wenn er neu gestartet und neu kompiliert wird, wenn er vorher abgestürzt ist, zum Beispiel durch Division durch 0?

Wenn nicht, ist das der richtige Weg.

 
TheXpert:

Nein, das ist ein Implementierungsdetail, das Hauptproblem ist das Nachladen und Neukompilieren.


Die Neukompilierung sollte nicht das Problem sein.
 
PapaYozh:

Das Problem sollte bei der Neukompilierung nicht auftreten.

Wie kommt das? Nehmen wir an, wir haben drei Kopien des EAs (ohne irgendwelche Tricks - nur saubere). Sie haben ihn neu kompiliert. der "Befehl" ging an das Terminal. die EAs begannen zu initialisieren.... in welcher Reihenfolge sollen sie neu initialisiert werden?
 
ForexTools:

Nehmen wir an, wir haben drei Kopien des EAs (ohne irgendwelche Tricks - nur saubere). Sie haben ihn neu kompiliert. der "Befehl" ging an das Terminal. die EAs begannen zu initialisieren.... in welcher Reihenfolge sollen sie neu initialisiert werden?
dann stellt sich heraus, dass einer von ihnen gehandelt hat, aber nach dem Neustart wird das Recht, der Anführer zu sein, an den anderen vergeben und der erste verliert dieses Recht, was macht es also für einen Unterschied, wenn sie gleich sind? die Hauptsache ist, dass einer gehandelt hat. Verwenden Sie eine globale Variable und das war's. In der inite-Funktion schreiben Sie eine zufällige Erwartung für jeden EA an sleep(), derjenige, der zuerst aufwacht, zählt die globale Variable und löscht sie, bei deinit wird sie wiederhergestellt. Der erste, der gezählt und gelöscht wird, funktioniert. Kurz gesagt, Sie erzeugen eine Zufallszahl für sleep()
 
ForexTools:

Nehmen wir an, wir haben drei Kopien des EAs (ohne irgendwelche Tricks - nur saubere). Sie haben ihn neu kompiliert. der "Befehl" ging an das Terminal. die EAs begannen zu initialisieren.... in welcher Reihenfolge sollen sie neu initialisiert werden?

Und Sie schließen nicht aus, dass Sie dieselben Graphen haben? D.h. soll der EA auf 2 Charts mit dem gleichen Symbol und der gleichen Periode starten und verarbeitet werden?
 
Techno:
Dann stellt sich heraus, dass einer von ihnen gehandelt hat, aber nach dem Wiederaufladen bekommt der andere das Recht zu führen und der erste verliert dieses Recht, und was macht es für einen Unterschied, wenn sie gleich sind? Verwenden Sie eine globale Variable und das war's. In der inite-Funktion schreiben Sie eine zufällige Erwartung für jeden EA an sleep(), derjenige, der zuerst aufwacht, zählt die globale Variable und löscht sie, bei deinit wird sie wiederhergestellt. Der erste, der gezählt und gelöscht wird, funktioniert. Kurz gesagt, Sie erzeugen eine Zufallszahl für sleep()

Übrigens, ja. Wenn 2 Instanzen von EA inakzeptabel sind, spielt es keine Rolle, welche EA zuerst beginnt.