[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 563

 
Versuchen Sie, eine ungültige Operation durchzuführen, z. B. Dividieren durch 0.
 
sergeev:
Versuchen Sie, eine ungültige Operation durchzuführen, z. B. Dividieren durch 0.
Unsinn.
 
ditrader:
Unsinn.

Unsinn.
 
sss2019:

Sagen Sie mir, warum es einen Fehler geben könnte 130

ticket1 = OrderSend(Symbol(),OP_BUYLIMIT,Lot,Level,Slippage,0,0,0,MagicNumber,0,Green);

Definitiv Level. Überprüfen Sie die Korrektheit des Preises und seine Normalisierung.

Das Buy-Limit-Level sollte unter dem Ask-Kurs liegen, und zwar in einem Abstand, der nicht kleiner ist als das StopLevel Ihres Maklerunternehmens.

D.h. wenn (Ask - StopLevel*Point < Level) Level = NormalizeDouble(Ask - StopLevel*Point, Digits);

Level muss auf Digits normalisiert werden, bevor es als Parameter an OrderSend() übergeben wird;

 
takeda:

Wie kann ein Expert Advisor programmatisch beendet werden - etwa mit terminate(0)?

Verfügt MQL4 über eine solche Möglichkeit, oder ist es nur möglich, einen Expert Advisor manuell zu beenden?

Vielen Dank im Voraus.


Schließen Sie Ihr Fenster, geben Sie sich selbst einen Befehl zum Löschen...

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
 
FAQ:


Schließen Sie Ihr Fenster, geben Sie sich selbst den Befehl, es zu löschen...


Auch das ist schief.

Zunächst wird das Chart-Fenster geschlossen (und es können zu diesem Zeitpunkt nützliche Indikatoren angezeigt werden).

Zweitens: Was passiert, wenn für ein Symbol mehrere Fenster mit demselben Zeitraum geöffnet werden? Wird das Fenster, in dem der Expert Advisor gestartet wurde, geschlossen?

 
Ich habe ein Beispiel für einen Befehl gegeben, um mich als EA zu löschen. Sie können Ihr Fenster schließen, und nur das Fenster, auf dem das Exp steht, wird geschlossen. Aber das ist ein anderer Code.
 
takeda:

Wie kann ein Expert Advisor programmatisch beendet werden - etwa mit terminate(0)?

Verfügt MQL4 über eine solche Möglichkeit, oder ist es nur möglich, einen Expert Advisor manuell zu beenden?

Ich danke Ihnen vielmals.


Zeichnen Siealso Ihre Variante: "programmatisch":

"Der Abbruch der aktuellen Sitzung der speziellen start()-Funktion für Programme aller Art kann auf folgende Ursachen zurückzuführen sein Es ist möglich, das Programm aus einem Chart heraus zu beenden, ein Symbol und/oder eine Periode eines Charts zu ändern, ein Konto zu wechseln, einen Chart zu schließen oder als Folge der Beendigung des Client-Terminals. Wenn die Spezialfunktion start() lief, als der Exit-Befehl gegeben wurde, beträgt die Zeit, die das Terminal zum Beenden der Funktion zulässt, 2,5 Sekunden. Wenn die Spezialfunktion start() nach Erhalt des Exit-Befehls länger als die angegebene Zeit weiterläuft, wird sie vom Client-Terminal zum Anhalten gezwungen.

Spezielle Funktion deinit().


Eine spezielle Funktion deinit() hat eine eigene Eigenschaft - sie wird ausgeführt, wenn das Programm geschlossen (deinitialisiert) wird. Wenn die Spezialfunktion deinit() in einem Programm beschrieben ist, wird sie aufgerufen (und ausgeführt), wenn das Programm beendet wird. Wenn es keine spezielle deinit()-Funktion im Programm gibt, wird beim Beenden des Programms keine Aktion ausgeführt.

Die spezielle Funktion deinit() wird vom Kundenterminal auch beim Schließen des Kundenterminals, beim Schließen des Fensters des Finanzinstruments, unmittelbar vor dem Wechsel des Finanzinstruments und/oder der Periode des Charts, bei erfolgreicher Neukompilierung des Programms im MetaEditor, beim Wechsel der Eingabeparameter und auch beim Wechsel des Kontos zur Ausführung aufgerufen.

In Expert Advisors und Skripten erfolgt das Schließen des Programms mit der Notwendigkeit, die spezielle Funktion deinit() aufzurufen, auch durch das Hinzufügen eines neuen Programms desselben Typs zum Fenster des Finanzinstruments, das das vorherige Programm ersetzt.

 
Roman.:



Die spezielle Funktion deinit().


Der Aufruf von deinit() führt nicht zur Beendigung des Programms. Der EA/Indikator bleibt auf dem Chart und verarbeitet weiterhin Ticks.
 
PapaYozh:

Ein Aufruf der Funktion deinit() führt nicht zum Programmabbruch. Der Expert Advisor/Indikator bleibt auf dem Chart und verarbeitet weiterhin Ticks.


Und wenn Sie eine andere Eule aufrufen, um programmatisch zu arbeiten:

"In EAs und Skripten wird das Programm auch deshalb geschlossen, weil ein neues Programm desselben Typs an das Fenster des Finanztools angehängt wurde und das vorherige Programm ersetzt."

Grund der Beschwerde: