|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Werte von Variablen nach Neustart verfügbar halten
Hallo zusammen,
es kann ja vorkommen, dass man den Server oder MT4 neu starten muss. Manche Werte von Variablen sollen in diesem Fall aber nicht verloren gehen. Ich hab mir jetzt überlegt ich könnte ja die werte der Variablen bei DeInit() in eine Datei schreiben und bei Init() wieder herein laden. Gibt es eine bessere Lösung oder passt diese Vorgehensweise? |
|
|||
Ich halte diese Vorgangsweise für die einzig mögliche.
Graphische Objekte der Standardlibrary vom MT5 besitzen die Methoden Load() und Save(). Auch in anderen Programmumgebungen (zb Delphi) ist das durchaus üblich. |
|
|||
Zitat:
Für jeden programmiertechnisch weniger vorgebildeten wäre die Speicherung in globale Variablen des Terminals eine weitere Mögllichkeit, die auch schneller umzusetzen wäre. In der DeInit()-Funktion steht dann: GlobalVariabelSet(Symbol() + (string)Period() + " Valuename", value); Wobei der Name der Variablen deshalb so lang ist, um nach Währungspaar und Timeframe zu differenzieren. Für Valuename wird dann der Name der zu speichernden Variablen geschrieben und value selbst ist natürlich dann der zu speichernde Wert. In der Init()-Funktion werden dann die Werte ausgelesen über: value = GlobalVariableGet(Symbol() + (string)Period() + " Valuename"); traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Der Nachteil von Globalvariablen ist, dass die nur Double speichern können.
Damit natürlich auch long, int und bool. Mit string ist da halt nix möglich |
|
|||
Zitat:
1. Und wenn alle Stricke reissen, dann würde für diesen ganze seltenen Fall die Funktion StringToCharArray() mit nachträglichem Auslesen des Arrays und Speichern der einzelnen Zeichen als ASCII-Code oder über StringGetChar() herhalten können. 2. Eine weitere Möglichkeit zur Stringspeicherung wäre noch folgende: Die Strings werden in aller Regel festgelegte "Worte" sein. Nun kann man diese "Worte" im Init() in ein Array speichern und und hätte damit die Indices dieses Arrays als abspeicherbare Variable in den GlobalVariableSet(). D.h. im OnDeinit() wird dann der Index des abzuspeichernden Strings im Array gesucht und gespeichert und im Init() der ausgelesene Index dem String über das Array zugeordnet. 3. Man könnte auch die Strings einfach in den Namen der GlobalVariables verpacken: string test = "Buy"; GlobalVariableSet(Sysmbol() + (string)Period() + "_" + "test" + "_" + test, 0); Im Init() wird dann über GlobalVariableName() der Name ausgelesen und die Strings rechts von "_" separiert - der erste String wäre der Variablenname und der zweite String dann der Inhalt. Du siehst, @Kronenchakra, viele Wege führen nach Rom. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Globale Variablen
Hallo!
Danke für eure Antworten, ich werde mir das mit den Globalen Variablen gleich mal anschauen. Wo werden diese Globalen Variablen eigentlich gespeichert und werden diese auch mit einer Handlung irgendwann gelöscht bzw ungültig? Wofür sind diese Globalen Variablen sonst noch gut bzw. wofür werden diese hauptsächlich verwendet? |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, programmierung mql4, variablen, variblen sichern |
|
|