Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43288
Benutzer: 7.222
Aktive Benutzer: 72
Links: 84
Wir begrüßen unseren neuesten Benutzer: Mane
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 170
Gesamt: 170
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 14.01.17
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
Leopold befindet sich auf einem aufstrebenden Ast
Standard 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?
  #2 (permalink)  
Alt 14.01.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

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.
  #3 (permalink)  
Alt 14.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kronenchakra Beitrag anzeigen
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.
Die einzig mögliche ist das nicht, aber es ist auf jeden Fall eine.

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
Dick_Turpin likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #4 (permalink)  
Alt 14.01.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

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
  #5 (permalink)  
Alt 14.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kronenchakra Beitrag anzeigen
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
Der "Nachteil" ist eher statistisch weniger relevant, da in der Regel Variablen im Programm geändert und damit zu speichern wären, die alle in double konvertierbar wären, sofern sie nicht schon so vorliegen.

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.
  #6 (permalink)  
Alt 14.01.17
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
Leopold befindet sich auf einem aufstrebenden Ast
Standard 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?
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, variablen, variblen sichern

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 20:15 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------