Diskussion zum Artikel "Grundlagen der Programmierung in MQL5: Globale Variablen des Terminals" - Seite 2

 
Andrey F. Zelinsky:

Von dem Artikel wurde eine Klärung erwartet:

1. -- wie und wo globale Variablen gespeichert werden (im Speicher, auf der Festplatte)

2. -- wie oft diese globalen Variablen gelesen werden können

-- usw.

Leider habe ich in dem Artikel keine Antworten auf diese Fragen gefunden.


1. Im Abschnitt "GlobalVariablesFlush-Funktion" steht etwas darüber.

2. Alles, was nicht verboten ist, ist erlaubt.

 
Dmitry Fedoseev:

1. Im Abschnitt "GlobalVariablesFlush-Funktion" wird ein wenig darüber berichtet.

2. Alles, was nicht verboten ist, ist erlaubt.

Mich interessiert, wie Variablen während des Betriebs gespeichert werden -- Speicher/Diskette -- und wie kritisch die Häufigkeit des Schreibens/Lesens von Variablen für die Diskette ist.

was mit einer Variable passiert, wenn das Terminal abrupt heruntergefahren wird.

kurz gesagt, solche Fragen -- es wäre sehr nützlich, sie zu klären -- entweder im Artikel oder hier, in der Diskussion.

Ich erinnere mich an etwas darüber im Forum, aber ich kann nicht finden, wo, wann und was.

 
Glob.variables sind gut, aber Sie wollen etwas Besseres :-) Ich möchte ein Analogon, aber im Namensraum des Diagramms.
 
Andrey F. Zelinsky:

Ich interessiere mich dafür, wie Variablen während des Betriebs gespeichert werden - Speicher/Diskette - und wie kritisch die Häufigkeit des Schreibens/Lesens von Variablen für die Diskette ist.

was mit einer Variable passiert, wenn das Terminal abrupt abgeschaltet wird.

kurz gesagt, solche Fragen -- es wäre sehr nützlich, sie zu klären -- entweder im Artikel oder hier, in der Diskussion.

Ich erinnere mich, dass im Forum etwas darüber gesagt wurde -- aber wo, wann und was -- ich kann es nicht finden.

Es gibt etwas hier. Der Autor testet dort sogar etwas...

Основы программирования на MQL5 - Глобальные переменные терминала
Основы программирования на MQL5 - Глобальные переменные терминала
  • 2014.11.03
  • //www.mql5.com/ru/users/denkir">
  • www.mql5.com
В данной статье демонстрируются объектно-ориентированные возможности языка MQL5 по созданию объектов, отвечающих за работу с глобальными переменными терминала. В качестве практического примера рассматривается ситуация, когда глобальные переменные могут использоваться как контрольные точки выполнения этапов программы.
 
Dennis Kirichenko:

Hier gibt es etwas. Der Autor testet dort sogar etwas...

Ich versteh's nicht -- zwei identische Artikel auf der Seite?

sowohl der von Fedoseev als auch deiner -- und sogar derselbe Titel?

и


 
Andrey F. Zelinsky:

Ich interessiere mich dafür, wie Variablen während des Betriebs gespeichert werden - Speicher/Diskette - und wie kritisch die Häufigkeit des Schreibens/Lesens von Variablen für die Diskette ist.

was mit einer Variable passiert, wenn das Terminal abrupt abgeschaltet wird.

kurz gesagt, solche Fragen -- es wäre sehr nützlich, sie zu klären -- entweder im Artikel oder hier, in der Diskussion.

Ich erinnere mich an etwas darüber im Forum, aber ich kann nicht finden, wo, wann und was.

Es steht darüber im Abschnitt "GlobalVariablesFlush-Funktion".

Sie werden in einer Datei gespeichert. Sie wird zurückgesetzt, wenn das Terminal heruntergefahren wird oder wenn GlobalVariablesFlush() aufgerufen wird.

Es gibt verschiedene Meinungen über die Lebensdauer von Festplatten, es gibt sogar eine Meinung, dass die Lebensdauer mehr als 170 Jahre beträgt. Ich frage mich, ob Sie über die gleiche Frage nachdenken, wenn Sie Musik hören oder Videos auf Ihrem Computer ansehen? Mit globalen Variablen können Sie nicht einmal einen kleinen Teil der Belastung der Festplatte erreichen, die beim Abspielen von Musik oder Videos auftritt. Und wenn Sie das Internet nutzen und auf einen Link klicken, wissen Sie dann, wie viele Dateien sofort auf der Festplatte gespeichert werden? Aber bei der Nutzung des Internets denkt niemand an die Belastung des Datenträgers.

Eine regelmäßige Defragmentierung verringert die Belastung des Datenträgers erheblich. Auch eine stabile Stromversorgung (aber für Laptops gibt es dieses Problem nicht) und Temperaturregime (aber da kann man nichts machen).

***

Im Forum gab es eine Diskussion über GlobalVariablesFlush, die Terminalentwickler schrieben, dass sie dort etwas deaktiviert haben, aber das wurde missverstanden. Sie haben das direkte Zurücksetzen auf die Festplatte deaktiviert. Zuvor wurde das Zurücksetzen direkt auf die Festplatte durch das Betriebssystem durchgeführt. Jetzt wird das Zurücksetzen durch das Betriebssystem durchgeführt. Dadurch kann das Zurücksetzen dann erfolgen, wenn das Betriebssystem es für nötig hält, und nicht mehr sofort nach einem Funktionsaufruf. Ein plötzlicher Stromausfall eines Computers ist heutzutage ein unrealistisches Phänomen.

 
Maxim Kuznetsov:
Glob.variables sind gut, aber Sie wollen etwas Besseres :-) Ich möchte ein Analogon, aber im Namensraum der Tabelle.
Es kann durch Präfixe von globalen Variablen gelöst werden.
 
Andrey F. Zelinsky:

Ich verstehe das nicht - zwei identische Artikel auf der Website?

Wow! Was für ein Wunder!
 
Andrey F. Zelinsky:

Ich verstehe das nicht - zwei identische Artikel auf der Website?

Der von Fedoseyev und Ihrer - und sogar derselbe Titel?

Ja, das ist lustig, ich sehe das zum ersten Mal....

Dmitry, wie immer systematisch und detailliert. Hochachtung

 
Maxim Kuznetsov:
Glob.variables sind gut, aber Sie wollen etwas Besseres :-) Sie wollen ein Analogon, aber im Namespace des Diagramms.

Dann verwende es auf der Ebene des Namespaces)

Ich habe eine etwas andere Implementierung, aber sie ist recht brauchbar:

//===============================================================================================
//----------------------- Erzeugt den Namen der globalen Variablen -----------------------+ und gibt ihn zurück.
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
 if(symb=="0") { symb=_Symbol;}
  if(!IsTesting()) {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_"+name);
  } else {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_tester"+"_"+name);
 }}

Sie ist genauso einfach anzuwenden:

// hier schreiben wir, was wir mit dem Namen brauchen
if(если больше то) {
 GlobalVariableSet(GetGlobalVariableName("LastAmountPos"),с);
}
// hier erhalten wir das gleiche mit Namen
int pos_count = GlobalVariableGet(GetGlobalVariableName("LastAmountPos"));

Sie können den Wert "pos_count" an beliebiger Stelle auf der Namensebene verwenden.

Im Allgemeinen gibt es keine Einschränkungen bei der Anwendung, sehr einfach, schnell und bequem, wofür der MC sehr dankbar ist!