Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 24.06.20
janbuk63 janbuk63 ist offline
Mitglied
 
Registriert seit: Mar 2013
Beiträge: 30
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard GlobalVariable

Hallo!
ich habe mir ein EA gebastelt und es läuft ziemlich gut auf meinem PC aber wenn es auf Demo auf einem gemieteten Server läuft ständig unterlaufen ihm dumme Fehler!
Am Anfang habe ich gedacht dass es vielleicht ein Zufall ist oder Fehler im Code.
Jetzt aber habe ich den Verdacht dass es leider an dem Server selber liegt und zwar an der Eigenschaft solcher Server die naturgemäß sehr oft neugestartet werden um Anpassungen oder Updates vorzunehmen.
Bei Neustart wird natürlich alles wie vorher gestartet aber dem EA tut es nicht gut. Der ExpertA wird aus dem Konzept geworfen weil manche Variablen ihre Werte auf Null gesetzt werden wo vorher möglicherweise eine Zahl stand.
Das ist zwar nur Verdacht und das werde ich noch herausfinden!

Was ähnliches habe ich auch im Netz darüber gefunden und die Lösung soll in den im Titel erwähnten GlobalenVariablen liegen.
Alle wichtige Daten werden auf diese Weiße ausgelagert und beim Broker Server gespeichert mindestens 4 Wochen lang.
Bein Neustart sind sie immer aktuell.
Also habe ich versucht damit das Problem zu lösen aber scheitere an der Logik wie man es benutzt.
Diese GlobalVariable speichert nur double Werte und ich muss ein Zeitwert speichern also habe ich die Variable in double konvertiert.

datetime startzeit = TimeCurrent(); - das ist die Zeitangabe
double startzeit_double = (double) startzeit ; - und so konvertiert

Mit Print("startzeit") und Print("startzeit_double") es überprüft ob es tatsächlich konvertiert wurde und der Compiler hat auch nicht gemeckert.
Beide Werte wurden mit Print richtig dargestellt als sehr lange Sekunden Zahl. Also alles richtig dachte ich mir!
Dann habe ich diese konvertierte Zeitangabe in GlobalVariable umgewandelt oder besser gesagt ausgelagert.
GlobalVariableSet("Meine Startzeit", startzeit_double);

Also müsste der Wert jetzt beim Broker Server ausgelagert sein- dachte ich wenigstens!.
Zur Überprüfung habe ich jetzt die Variable wider mi Print kontroliert:
GlobalVariableGet("Meine Startzeit");
Print("Meine Startzeit: "+DoubleToString(Meine Startzeit,4));

Das Ergebniss ist immer 0,0000
Was mache ich falsch?
Gruß