Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 175

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Merkmale der Sprache mql5, Feinheiten und Tricks

fxsaber, 2017.11.30 09:48

Memo

Aktion/Art des Programms Änderung von TF oder Symbol Kontoänderung
Indikator OnDeinit und OnInit ausführen, globale Klassenobjektänderungen (vollständige Rücksetzung). Es passiert nichts, außer dass prev_calculated zurückgesetzt wird.
EA OnDeinit und OnInit ausführen, das globale Klassenobjekt ändert sich nicht. OnDeinit und OnInit ausführen, globales Klassenobjekt ändert sich (vollständiges Neuladen).

Können Sie mir sagen, wie ich einen vollständigen Neustart von EA vermeiden kann, wenn ich mich neu einlogge (z. B. manuell)?

Ich verstehe nicht, warum beim erneuten Einloggen alles zurückgesetzt wird. Ist dies ein Fehler?

 
fxsaber:

Es funktioniert, aber Sie können das richtige Makro vorschlagen.

Wenn Ihnen die Qualität Ihres Handwerks egal ist, dann ist sie mir noch weniger wichtig.

 
Vict:

Wenn Ihnen die Qualität Ihres Handwerks egal ist, dann ist sie mir noch weniger wichtig.

Hier können Sie über die Funktionen von MQL5 schreiben.

 
fxsaber:

Sie schreiben hier über die Funktionen von MQL5.

Wer sagt, dass es sich um eine Funktion und nicht um eine UB handelt? Gibt es irgendwelche Informationen in den Unterlagen? In den meisten Fällen ist UB notwendig, um dem Compiler die Freiheit zu geben, alle möglichen Optimierungen vorzunehmen. Was das Ergebnis in verschiedenen Fällen in echtem Code sein wird - ich weiß es nicht, es hängt von der Stimmung des Optimierers ab. Wenn ich diesen Code auch in Kreuzen ausführe und einige Ergebnisse erhalte, sollte man mir dann sagen: "Sieh mal, was für eine Besonderheit"?

Ich kann diesen Code in Kreuzen ausführen und erhalte einige Ergebnisse, und dann wird mir gesagt: "Schau, was ist die Besonderheit"?

 
Vict:

Wer sagt, dass es sich um eine Funktion und nicht um eine UB handelt? Gibt es irgendwelche Informationen in den Docks?

Hier schreiben Sie über Dinge, die nicht in den Docks stehen. Andernfalls ist das Thema sinnlos.

 
fxsaber:

Hier schreiben Sie über Dinge, die nicht in den Docks stehen. Andernfalls ist das Thema sinnlos.

Es wäre sinnvoll, wenn es Kommentare von Entwicklern gäbe, aber ansonsten...

Also, ja, es steht in den Docks: Vollstreckungstitel, - also scheint alles legal zu sein. Dennoch möchte ich angesichts der Tatsache, dass die Pluszeichen wirklich heftig sind, sicherstellen, dass die Referenz wirklich genau die Ausführungsreihenfolge und nicht die Assoziativität der Operatorenmeint .

 
fxsaber:

Können Sie mir sagen, wie ich einen kompletten Neustart des EA vermeiden kann, wenn ich mich neu einlogge (z.B. manuell)?

Ich verstehe nicht, warum beim erneuten Einloggen alles zurückgesetzt wird. Ist dies ein Fehler?

Ich hatte die Aufgabe, einige Berechnungen zu überspringen, wenn ich mich neu anmeldete, und den Expert Advisor zu löschen, wenn ich das Konto wechselte. Das Problem wurde an einer Stelle gelöst.

So sieht es aus, wenn wir den Expert Advisor beim Kontowechsel einfach löschen wollen.

string GetGlobalNameAccount( void )
{
  return(::MQLInfoString(MQL_PROGRAM_NAME) + (string)::ChartID() + "_Account");
}

void SaveAccount( void )
{  
  if (!::GlobalVariableSet(GetGlobalNameAccount(), CurrentAccount))
    ::Alert("GlobalVariableSet - ERROR!");
  
  return;
}

int LoadAccount( void )
{
  int Res = 0;
  
  const string Name = GetGlobalNameAccount();
    
  if (::GlobalVariableCheck(Name))
  {
    Res = (int)::GlobalVariableGet(Name);
    
    ::GlobalVariableDel(Name);      
  }
  
  return(Res);
}

const int CurrentAccount = (int)AccountInfoInteger(ACCOUNT_LOGIN);
int PrevAccount = 0;

int OnInit( void )
{
  PrevAccount = LoadAccount();
  
  bool Res = !PrevAccount || (PrevAccount == CurrentAccount);
  
  if (Res)
  {
    // .....
  }
  else
    Alert("Account is changed! " + (string)PrevAccount + " -> " + (string)CurrentAccount);
    
  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_ACCOUNT)
    SaveAccount();
}


Die einfachste Aufgabe in MQL5 lässt mich die Subversion tanzen.

 
Vladimir Simakov:

Es würde Sinn machen, wenn es Kommentare von den Entwicklern gäbe, aber ansonsten...

Also, ja, in den Unterlagen steht: Vollstreckungstitel, - also scheint alles legal zu sein. Aber trotzdem, da es in Plus wirklich heftig ist, würde ich gerne sicherstellen, dass die Hilfe wirklich genau die Ausführungsreihenfolge und nicht die Assoziativität der Operatorenmeint .

Bitte verschmutzen Sie diesen Zweig nicht. In diesem Thread geht es um Funktionen von MQL5, nicht um C++

 
Artyom Trishkin:

Bitte verschmutzen Sie diesen Zweig nicht. In diesem Thread geht es um die Eigenheiten von MQL5, nicht um C++

Es ist schon seltsam, der eine schreibt über UB und der andere eifert ihm blindlings nach. Ist es in Ordnung, dass in der MCL-Hilfe.

Anmerkung: Der Vorrang von Operationen in MQL5 entspricht dem Vorrang С++ und unterscheidet sich von der in MQL4 angegebenen Priorität.

Und was in der Tabelle als "Reihenfolge der Ausführung" bezeichnet wird, heißt in Wirklichkeit "Assoziativität" und hat keinen Einfluss auf die Reihenfolge der Auswertung, die im allgemeinen Fall nicht definiert ist.

Na ja, egal, das ist eine undankbare Aufgabe, jeder hier ist so ein verdammter Experte, also störe ich nicht.

 
Vict:
Achtung: Die Priorität der Operationen in MQL5 entspricht der С++und unterscheidet sich von der in MQL4 angegebenen Priorität.

Dies gilt höchstwahrscheinlich nur für den nicht-strikten Modus.

Hunderte von Leuten schreiben hier seit Jahren plattformübergreifende Programme.