Fehler, Irrtümer, Fragen - Seite 895

 
Konstantin83: Ein Auftrag mit einer Magie wird eröffnet. Dann wird diese Magie auf den Handel und die Position übertragen. Wenn die Position dann mit Gewinn oder Stopp geschlossen wird, wird die magische Zahl nicht auf den Schließungsauftrag übertragen.

Wie erkenne ich den Gewinn einer Position, indem ich einen magischen Handel durchführe? Der Abschlusshandel geht nicht dorthin, weil er keine Magie hat.

POSITIONSNUMMER

Die Positions-ID ist eine eindeutige Nummer, die jeder neu eröffneten Position zugewiesen wird und sich während ihrer Lebensdauer nicht ändert. Ein Rollover der Position ändert den position_identifier nicht.

lang

DEAL_POSITION_ID

Kennung der Position, an deren Eröffnung, Änderung oder Schließung dieses Geschäft beteiligt war. Jede Position hat eine eindeutige Kennung, die allen Geschäften zugewiesen wird, die während der Laufzeit der Position mit dem Instrument getätigt werden.

lang

 
Abnormale Beendigung bedeutet, dass der Expert Advisor in einer Schleife läuft, IsStopped nicht überprüft und vom Terminal zwangsweise gestoppt wird.
 
Renat:
Abnormale Beendigung bedeutet, dass der Expert Advisor in einer Schleife läuft, IsStopped nicht überprüft und vom Terminal zum Anhalten gezwungen wird.

Ich kann feststellen, dass abnorme Beendigung ist nicht nur aufgrund von MQL-Code, sondern auch aufgrund von internen Schluckauf der Laufzeit selbst. Sagen wir also, Abnormal terminatio unkontrollierbar von MQL.

Zum Beispiel, wenn der MQL-Code einen Befehl zum Löschen von ObjectDelete ein Objekt aus einem Diagramm sendet, das bereits existiert (weder Objekt noch Diagramm). Aber sie war in dem Moment da, als der Befehl gesendet wurde.
Und der MQL-Code wird nicht auf die Antwort des Befehls warten, da der Hänger nicht im MQL-Code, sondern in den Tiefen der Ausführung aufgetreten ist. Das heißt, in ObjectDelete selbst. Als Ergebnis erhalten wir eine Abnormal termination
Der zweite gängige Fall ist der Einsatz der Funktion ObjectsDeleteAll. Da es sich um ein synchrones Programm handelt, bleibt es auch beim Löschen von bereits gelöschten Objekten hängen, aber erst nachdem es aufgerufen wurde.
Der dritte Fall ist der schädlichste, wenn die Runtime den Expert Advisor-Befehl von Deinit nicht abschließen kann, weil der EA aus dem Chart entfernt wurde und der Chart geschlossen ist. Es kommt auch zum Einfrieren der Umgebung und zur unkontrollierten abnormalen Beendigung.

Alles, was ich oben beschrieben habe, bezieht sich speziell auf die Beendigung der Arbeit des Expanders in der Funktion OnDeinit. Irgendwo in den Tiefen des Codes gibt es eine Inkonsistenz zwischen den beendenden Aktionen, erstens mit dem Vorhandensein der Tabelle und zweitens - mit dem Verhalten der Umgebung bei Deinit des Experten.
Jemand macht etwas früher und verursacht einen abnormalen Abbruch.

In einigen Fällen konnte ich dieses Problem natürlich lösen, indem ich zusätzlich die Verfügbarkeit prüfte. Doch selten tritt nur eines der beschriebenen Synchronisationsprobleme auf. Die Entfernung/Installation eines Indikators auf einem Diagramm, das zu schließen versucht, die Entfernung von Objekten.

 

Ich hätte gerne eine Antwort auf die Frage, wie es einen absoluten Drawdown MEHR als das Anfangssaldo geben kann.

Obwohl per Definition.

 Absolute Drawdown
Просадка от начального баланса показывает, насколько уменьшался баланс относительно первоначального значения. Максимально может быть равно начальному балансу, если потеряны все деньги.

Ausführlich im Themahttps://www.mql5.com/ru/forum/8996

 
Renat:
Abnormaler Abbruch bedeutet, dass der EA in einer Schleife läuft und IsStopped nicht überprüft und vom Terminal zwangsweise gestoppt wird.

Falsch.

sergeev:

Ich möchte darauf hinweisen, dass die abnormale Beendigung nicht nur auf den MQL-Code zurückzuführen ist, sondern auch auf interne Probleme in der Laufzeitumgebung selbst.

Ja, und es gibt viele solcher Überraschungen.

Ich habe festgestellt, dass sich das Terminal aufhängt und der Expert Advisor aufgrund von Speichermangel nicht gelöscht werden kann. In diesem Fall wird auch die Protokollierung nicht immer aufgezeichnet.

 
komposter:

Falsch.

Ja, und solche Überraschungen gibt es immer wieder.

Ich habe festgestellt, dass sich das Terminal aufhängt und der EA nicht gelöscht werden kann, wenn nicht genügend Speicher vorhanden ist. In diesem Fall funktioniert sogar die Protokollierung nicht immer.

So wie ich diesen Thread verstanden habe, befasst sichhttps://www.mql5.com/ru/forum/8278 mit genau diesem Thema.
Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс.
 
Yedelkin:

POSITIONSNUMMER

Die Positionskennung ist eine eindeutige Nummer, die jeder neu eröffneten Position zugewiesen wird und sich während ihrer gesamten Lebensdauer nicht ändert. Eine Umkehrung einer Position ändert die Positionskennung nicht.

lang

DEAL_POSITION_ID

Kennung der Position, an deren Eröffnung, Änderung oder Schließung dieses Geschäft beteiligt war. Jede Position hat eine eindeutige Kennung, die allen Geschäften zugewiesen wird, die während der Laufzeit der Position mit dem Instrument getätigt werden.

lang

Danke, das hat geholfen)
 
iTC:
So wie ich das verstanden habe, geht es bei diesemhttps://www.mql5.com/ru/forum/8278 Thema um genau diese Frage.

Nein, es ging um die Indikatoren.

Ein Expert Advisor, der eine bestimmte Speichergrenze überschreitet, hängt sich einfach stillschweigend im Terminal auf. Das passiert zum Beispiel, wenn viele Charts von verschiedenen Symbolen/Perioden mit Indikatoren geladen werden.

 
sergeev:

Ich kann feststellen, dass abnorme Beendigung ist nicht nur aufgrund von MQL-Code, sondern auch aufgrund von internen Schluckauf der Laufzeit selbst. Sagen wir also, dass die abnormale Terminierung von MQL nicht kontrollierbar ist.

Zum Beispiel, wenn der MQL-Code einen Befehl zum Entfernen eines ObjectDelete-Objekts aus einem Diagramm sendet, das bereits existiert (weder ein Objekt noch ein Diagramm). Aber sie war da, als der Befehl gesendet wurde.
Und der MQL-Code wird nicht auf die Antwort des Befehls warten, da der Hänger nicht im MQL-Code, sondern in den Tiefen der Ausführung aufgetreten ist. Das heißt, in ObjectDelete selbst. Als Ergebnis erhalten wir eine Abnormal termination
Der zweite gängige Fall ist der Einsatz der Funktion ObjectsDeleteAll. Da es sich um ein synchrones Programm handelt, bleibt es auch beim Löschen von bereits gelöschten Objekten hängen, aber erst nachdem es aufgerufen wurde.
Der dritte Fall ist der schädlichste, wenn die Runtime den Expert Advisor-Befehl von Deinit nicht abschließen kann, weil der EA aus dem Chart entfernt wurde und der Chart geschlossen ist. Es kommt auch zum Einfrieren der Umgebung und zur unkontrollierten abnormalen Beendigung.

Alles, was ich oben beschrieben habe, bezieht sich speziell auf die Beendigung der Arbeit des Expanders in der Funktion OnDeinit. Irgendwo in den Tiefen des Codes gibt es eine Inkonsistenz zwischen den beendenden Aktionen, erstens mit dem Vorhandensein der Tabelle und zweitens - mit dem Verhalten der Umgebung bei Deinit des Experten.
Jemand macht etwas früher und verursacht einen abnormalen Abbruch.

In einigen Fällen konnte ich dieses Problem natürlich lösen, indem ich zusätzlich die Verfügbarkeit prüfte. Doch selten tritt nur eines der beschriebenen Synchronisationsprobleme auf. Die Entfernung/Installation eines Indikators auf einem Diagramm, das zu schließen versucht, die Entfernung von Objekten.

Vielen Dank, das wird überprüft werden.
 
komposter:

Nein, es ging um die Indikatoren.

Ein Expert Advisor, der eine bestimmte Speichergrenze überschreitet, hängt sich einfach stillschweigend im Terminal auf. Dies geschieht z.B., wenn viele Charts mit verschiedenen Symbolen/Perioden und Indikatoren geladen werden.

Danke, wir werden das auf jeden Fall prüfen.