Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 177

 
Andrey Barinov:

Soweit ich weiß, müssen Sie nach der Änderung in den init (oder besser ontik) entladen. D.h. die Kontonummern werden in globalen Variablen gespeichert und bei Änderungen entladen. Sie können auch versuchen, _DeInitReason in der init() und unload zu analysieren.

Diese Lösung wurde gezeigt, funktioniert aber nur, wenn das gleiche Symbol nach dem Kontowechsel vorhanden ist.

 
fxsaber:

Bitte zeigen Sie hier den Quellcode für einen EA, der sich selbst entlädt, wenn sich das Konto ändert.

Brauche ich das? Sie sprechen hier von dem Problem der unterschiedlichen Symbolnamen.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Eigenheiten von mql5, Tipps und Tricks

fxsaber, 2020.05.20 23:09

Ich habe einen sehr guten Expert Advisor, der beim Kontowechsel gelöscht werden soll.

Angenommen, der Expert Advisor läuft auf EURUSD. Er wechselt zu einem Server, auf dem Symbole vorangestellt sind. Zum Beispiel: EURUSD.abc.

In diesem Fall hängt sich der EA immer noch auf und kann sich nicht selbst löschen. Hat jemand eine Lösung für dieses Problem?


Genau das war auch meine Antwort. Wenn die Instrumentennamen in den verschiedenen Konten unterschiedlich sind, verwenden Sie die Funktionen zur Behandlung von Zeichenketten und extrahieren Sie den richtigen Teil der Zeichenkette.
 
Igor Zakharov:

in welchem Fall wird OnInit() nicht gestartet?

Es wird nichts ausgelöst.

Vielleicht auf der Ebene von OnDeinit() versuchen, zu löschen?

ExpertRemove() ist definitiv kein Hilfsmittel. Sie können es über Vorlagen versuchen. OnDeinit ist jedoch nicht in der Lage zu erkennen, dass ein Kontowechsel stattgefunden hat.

 
Alexey Viktorov:

Brauche ich das? Du sprichst hier von dem Problem der unterschiedlichen Charakternamen.

Genau das war auch meine Antwort. Wenn die Instrumentennamen in verschiedenen Konten unterschiedlich sind, verwenden Sie die Funktionen zur Behandlung von Zeichenketten und extrahieren Sie den richtigen Teil der Zeichenkette.

Sie sprechen nicht mit einem Anfänger. Schlagen Sie keine undurchführbaren Hypothesen vor.

 
fxsaber:

Nichts läuft an.

ExpertRemove() ist definitiv keine Hilfe. Wir können es mit Vorlagen versuchen. In OnDeinit ist es jedoch nicht möglich festzustellen, dass ein Kontowechsel stattgefunden hat.

Wo ExpertRemove nicht funktioniert, gibt es auch ChartClose(). Ich verstehe nicht, wo das Problem liegt. Was geschieht, nachdem das Konto geändert wurde? Ein zusätzliches Diagramm mit Expert Advisor erscheint? Oder ändert sich nur das aktuelle Diagrammsymbol? Vielleicht hat sich die ChartID geändert und deshalb funktioniert Ihre vorherige Lösung nicht? Ticks werden sowieso verarbeitet, das bedeutet, dass wir zu OnTick entladen müssen, wenn OnInit nicht funktioniert.

 
fxsaber:

Sie sprechen nicht mit einem Neuankömmling. Schlagen Sie keine undurchführbaren Hypothesen vor.

Ebenso sollten Sie keinen nicht funktionierenden Code veröffentlichen. Und erörtern Sie Probleme, die auf dem dornigen Weg eines Programmierers auftreten, nicht im Zusammenhang mit den Sprachfunktionen.

 
Alexey Viktorov:

Genauso sollten Sie keinen nicht funktionierenden Code veröffentlichen. Und diskutieren Sie beim Thema Spracheigenschaften nicht die Probleme, die auf dem dornigen Weg eines Programmierers auftreten.

Sie sind bei diesem Problem inkompetent.

 

nur die Dienste sind nicht mit dem Diagramm verknüpft. ich habe es nicht getestet, aber höchstwahrscheinlich wird es in der Lage sein, nach dem Ändern des Kontos neu zu starten. und bereits von ihm ändern die Vorlagen von anderen Diagrammen. aber im Allgemeinen ist es seltsam, dass REASON_ACCOUNT nicht gefangen ist.

aber im Allgemeinen ist es eher ein Fehler als eine Funktion.

 
fxsaber:

Sie sind bei diesem Problem inkompetent.

Wenn Sie so kompetent sind, dann sagen Sie mir bitte, warum es nicht funktioniert

REASON_ACCOUNT

6

Ein anderes Konto wurde aktiviert oder aufgrund einer Änderung der Kontoeinstellungen erneut mit dem Handelsserver verbunden

 
Alexey Viktorov:

Wenn Sie so kompetent sind, dann sagen Sie mir bitte, warum das nicht funktioniert

REASON_ACCOUNT

6

Ein anderes Konto wurde aufgrund einer Änderung der Kontoeinstellungenaktiviert oder erneut mit dem Handelsserver verbunden

  1. Die Dokumentation ist falsch. Sie können dies manuell überprüfen, indem Sie sich erneut anmelden.
  2. Es gibt keine einfache Möglichkeit, sich selbst zu entlasten.