Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 179

 
Konstantin Nikitin:

Als Option.

Funktioniert nicht.

 
fxsaber:

Funktioniert nicht.

Es scheint, dass der Terminalexperte geblieben ist. Als ich das Konto gewechselt habe, habe ich es aus der Tabelle gelöscht... Das einzige, was ich mit dem globalen Namen für jede Variante des Expert Advisors spielen muss. Es ist möglich, sie dem Namen eines Zeichens hinzuzufügen. Ich habe mich nicht darum gekümmert.

 
Konstantin Nikitin:

Ich glaube, ich habe das Terminal überlastet und der Experte ist geblieben. Als ich das Konto gewechselt habe, habe ich es aus der Tabelle gelöscht... Das einzige, was ich mit dem globalen Namen für jede Variante des Expert Advisors spielen muss. Ich kann es zum Namen von char hinzufügen. Ich habe mich nicht darum gekümmert.

Der Expert Advisor muss mit einem nicht funktionierenden Chart arbeiten. Und wir bieten Optionen mit Arbeitszeiten.

 
Konstantin Nikitin:

Ich glaube, ich habe das Terminal überlastet und der Experte ist geblieben. Als ich das Konto gewechselt habe, habe ich es aus der Tabelle gelöscht... Das einzige, was ich mit dem globalen Namen für jede Variante des Expert Advisors spielen muss. Ich kann es zum Namen von char hinzufügen. Ich habe mich nicht darum gekümmert.

  1. Öffnen Sie die Demo auf ForexTimeFXTM-Demo01.
  2. Führen Sie den Expert Advisor für das Symbol Brent aus.
  3. Wechseln Sie zu MQ-Demo.
  4. Verwenden Sie PKM im Expertenmenü, um zu sehen, ob der Expert Advisor läuft oder nicht.
 
fxsaber:

  1. Öffnen Sie die Demo auf ForexTimeFXTM-Demo01.
  2. Führen Sie den Expert Advisor für das Symbol Brent aus.
  3. Wechseln Sie zu MQ-Demo.
  4. Verwenden Sie das PCM im Expertenmenü, um festzustellen, ob der Expert Advisor hängt oder nicht.


fxsaber:

Im Allgemeinen ist der Aufruf von ExpertRemove auf REASON_ACCOUNT absolut sinnlos.


Ich habe es überprüft, ich denke, es ist noch trauriger, selbst kritische Fehler entladen meinen EA nicht

const long login = AccountInfoInteger(ACCOUNT_LOGIN);
//+------------------------------------------------------------------+
int OnInit()
{
   Print(__FUNCTION__);
   Print("_StopFlag = ",_StopFlag);
   Print("_UninitReason = ",_UninitReason);
   Print("login = ",login);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Print(__FUNCTION__);
   Print("_StopFlag = ",_StopFlag);
   Print("_UninitReason = ",_UninitReason);
   Print("login = ",login);
   if(_StopFlag && _UninitReason == 6) {int i=1; int j = 10/--i;}
}
//+------------------------------------------------------------------+

aber der globale Bereich wird vollständig gelöscht, wenn das Konto geändert wird

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) OnDeinit

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) _StopFlag = 1

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) _UninitReason = 6

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) login = 21796970

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) zero divide in 'tst1.mq5' (25,60)

2020.05.21 14:30:17.373 Experten Der automatische Handel ist deaktiviert, da das Konto geändert wurde

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) OnInit

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) _StopFlag = 0

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) _UninitReason = 0

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) login = 500030706

2020.05.21 14:30:24.492 Experten Automatisierter Handel ist aktiviert

 
Igor Makanu:

Ich habe es überprüft, ich denke, es ist noch trauriger, sogar die kritischen Fehler entladen meinen EA nicht

aber der globale Bereich wird komplett gelöscht, wenn ich das Konto ändere

Dort funktioniert alles logisch (wenn auch an einigen Stellen umständlich). Man muss nur den Mechanismus verstehen.

 
fxsaber:

Dort funktioniert alles logisch (wenn auch an manchen Stellen etwas umständlich). Man muss nur den Mechanismus verstehen.

Nun, der Mechanismus ist in der Hilfe, aber die Hilfe berücksichtigt nicht alle Fälle in Arbeit - diese Information wurde vom Administrator gegeben, aber dann wurde der Moderator einbezogen und die beiden kamen zu dem Urteil - Sie sind wahnhafthttps://www.mql5.com/ru/forum/334269/page53#comment_16412120


geben den Mechanismus, die Hilfe war machtlos ;)

 
Igor Makanu:

Mechanismus geben, Hilfe war machtlos ;)

WennREASON_ACCOUNT(auch wenn das Konto nicht geändert wird, sondern nur neu eingeloggt wird), wird der EA komplett entladen und eine neue Kopie wird geladen.

Aus diesem Grund hat ExpertRemove in OnDeinit keine Auswirkungen auf die neue Kopie, da es sich um die entladene Kopie handelt.


Fehlt das Symbol, wird die neue Kopie ohne jede Ausführung geladen.

Und das Problem war, eine neue Kopie zu entladen, die zwar hängt, aber nicht läuft.


Eine hängende Kopie bedeutet, dass bei einem Wechsel zu einem anderen Konto, auf dem ein Symbol vorhanden ist, der EA gestartet wird.

 
fxsaber:

Warum sollte man es entladen, wenn es gar nicht funktioniert?

 
Andrey Khatimlianskii:

Und warum sollte man es entladen, wenn es gar nicht funktioniert?

Es sollte eine vollständige Kontrolle geben.