Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1611

 
Alexey Viktorov #:
Warum bis morgen warten? Wenn Sie zu faul sind, die Spezifikationen durchzusehen, lassen Sie das Skript durch alle Symbole laufen, die für Sie von Interesse sind, und suchen Sie eine Übereinstimmung für die Einschusswährung und die Gewinnwährung.
Ich habe nicht alles überprüft, bevor ich geschrieben habe, aber ich habe keine Zufälle gefunden...

Viel zu tun heute.


Taras Slobodyanik #:

Nun, der Punkt ist schnell - nahm die Währung Code, tat eine Suche auf einem fertigen Array, das aktualisiert wird, wenn ein Handel eröffnet wird.

Es ist schwer, alles in einer Reihe einmal zu erfassen

 
Yevhenii Levchenko statischen Variable var der Methode X::doJob(). Es gibt eine Klasse U, die ein Objekt des Typs X erzeugt, einige Arbeiten ausführt und es dann zerstört. Und das geschieht regelmäßig. Frage: Wann wird die Variable var gelöscht?


Sie wird ewig leben.

 
Koldun Zloy #:

Sie wird ewig leben.

Solange Objekt U am Leben ist? Oder bis das Terminal neu gebootet wird? Grob gesagt, woraufhin sie gelöscht wird?

 
Yevhenii Levchenko #:

Solange das U-Objekt lebendig ist?

Nein, die Klasseninstanz wird möglicherweise nicht einmal erstellt, aber dem statischen Feld der Klasse wird Speicher zugewiesen und initialisiert.... Übrigens, Ihr Beispiel, meiner Meinung nach, sollte nicht kompilieren, statische Feldinitialisierung sollte außerhalb der Beschreibung sein

Yevhenii Levchenko #:

Ob bis das Terminal überlastet ist? Grob gesagt, wonach wird sie entfernt?

Das Terminal hat nichts damit zu tun, die Lebensdauer ist die gleiche wie für die global deklarierten Variablen oder für die regulären statischen Variablen - der Speicher wird beim Laden des MQL-Programms zugewiesen und beim Entladen des MQL-Programms freigegeben

 
Igor Makanu #:

Nein, die Klasseninstanz wird möglicherweise nicht einmal erstellt, aber dem statischen Feld der Klasse wird Speicher zugewiesen und initialisiert.... Übrigens, Ihr Beispiel sollte meiner Meinung nach nicht kompiliert werden, statische Feldinitialisierung sollte außerhalb der Beschreibung sein.

Ok! Scheint zu kompilieren...

Igor Makanu #:

Das Terminal hat damit nichts zu tun, die Lebensdauer ist die gleiche wie bei global beschriebenen Variablen oder regulären statischen Variablen - der Speicher wird im Moment des Ladens des MQL-Programms zugewiesen und beim Entladen des MQL-Programms wieder freigegeben

Das heißt, wenn es alle innerhalb der EA ist, wird die Variable im Speicher sitzen, bis OnDeinit() der EA?

 
Yevhenii Levchenko #:

Norm! scheint zu kompilieren...

Also, wenn es alle innerhalb EA ist, sitzt die Variable im Speicher bis OnDeinit() von EA?

Statische Variablen werden nach OnDeinit() zerstört.

 
Koldun Zloy #:

Statische Variablen werden nach OnDeinit() zerstört.

Gut! Danke :)

 
Hilfe bei der Auswahl eines Brokers, wo am besten zu handeln und Rückzug sollte kein Problem sein.
 
dryun777 #:
Hilfe bei der Auswahl eines Brokers, wo es am besten zu handeln und Rückzug wäre kein Problem sein... Danke

Bei dieser Ressource ist die Nennung eines Maklers gleichbedeutend mit einer Diskussion über ihn. Und das Wiegenlied schläft nicht und droht mit Repressalien. Also sehen Sie selbst...

 
Alexey Viktorov #:

Valeri hat die richtige Richtung eingeschlagen. Aber ich verstehe nicht, warum wir die Währung, nach der wir suchen, in den Auftragswährungen bei jeder Iteration des Zyklus definieren müssen? Und ich denke, es ist einfacher, die Margenwährung und die Gewinnwährung zu nehmen, als in die Zeile zu schauen. Sehen Sie sich die Spezifikation für Währungen an ... Ich hätte das getan.

bool Search(string _sy)
 {
  int OT = OrdersTotal();
  string curencyProfit = SymbolInfoString(_sy, SYMBOL_CURRENCY_PROFIT),
         currencyMargin = SymbolInfoString(_sy, SYMBOL_CURRENCY_MARGIN);
  for(int i = 0; i < OT; i++)
   {
    if(OrderSelect(i, SELECT_BY_POS))
     {
      bool res = StringFind(OrderSymbol(), curencyProfit) >= 0 ||
                 StringFind(OrderSymbol(), currencyMargin) >= 0;
      if(res)
        return(true);
     }
   }
  return(false);
 }

Ich habe es überprüft, es funktioniert einwandfrei.

Danke!

Grund der Beschwerde: