Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   GlobalVariable (http://www.expert-advisor.com/forum/showthread.php?t=6703)

janbuk63 24.06.20 10:08

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?:mad:
Gruß

traderdoc 24.06.20 14:13

Das geht ganz einfach zu lösen über:

GlobalVariableSet("Meine Startzeit", TimeCurrent());

Rückgabe:

Print ("Meine Startzeit": ", TimeToString((datetime)GlobalVariableGet("Meine Startzeit"), TIME_DATE|TIME_MINUTES));

Abgespeichert wird oben die Zeit als datetime-Variable.
Beim Auslesen wird die gespeicherte Zeit intern nochmals in datetime deklariert und dann als String umgewandelt,

traderdoc

janbuk63 26.06.20 18:46

@traderdoc
vielen Dank!
Nach vielen Versuchen ist mir gelungen es umzusetzen.
Da waren noch andere Variablen die ich auf diese Weise verlagert habe und jetzt läuft es richtig sogar wenn ich den EA neu kompiliere was gleich mit Neustart ist. Vorher ist der EA sofort ins Stocken geraten jetzt macht:D er munter weiter! Supi!

janbuk63 09.07.20 20:03

VPS und EA
 
Hallo!
ich habe kurz überlegt ob ich jetzt ein neues Thema eröffnen soll aber eigentlich ist es das gleiche Thema wie mit dem GlobaleVariables weil die Wirkung ist gleich und zwar der ExpertA läuft nicht rund.
ich habe mit vor fast 2 Monaten ein VPS gemietet (nur 6,80€/Monat bei YourVPS) und leider es läuft nicht richtig.
Wenn ich den EA bei mir teste macht es alles wie programmiert aber auf den VPS zickt es irgendwie. Mal läuft und dann plötzlich läuft nicht!
Erkennen kann ich es dadurch dass es einfach gar Nichts mehr macht. Der MT4 ist scheinbar am laufen, der Chart-Fenster ist sichtbar und das Zeichen für aktiven EA der smiley lächelt brav aber es funktioniert nicht!
Bei meinem EA am Anfang werden 2 Pending-Order gesetzt und das macht er auch.
Dann wartet der EA auf den Kurs Verlauf. Wenn eins von beiden Pendings aktiviert wird wird der andere gelöscht. Dann je nach Ergebniss wird ein andere Order gesetzt und so weiter. Also er wartet, dann schließt je nach Situation dann wird nächste gesetzt und modifiziert bis es aktiviert wird und so weiter...
Am Anfang d.h. kurz nach dem Einschalten funktioniert alles richtig aber nach ein Paar Stunden scheint es sich auszuschalten.
Mein Verdacht ist dass der Betreiber der VPS Platform irgendeine Einstellung hat alles runterzufahren was nicht benötig wird. Es ist wahrscheinlich ein Standby Modus um Energie zu sparen. Wie es genau gemacht wird weiss ich nicht aber jetzt bin ich sicher dass es so ist. Ich weiß leider nicht: nach wie viel Stunden der Server sich ausschaltet. Sonst würde ich mich immer kurz einlogen und wieder auslogen.
Ich frage mich ob dass jetzt bei allen VPS Server gleich ist?
Hat jemand so was schon mal bemerkt? Vielleicht ist es normales Verhalten und nur ein extra für Experts Advisor dedizierte Server(bei eigenem Broker oder mql5.com) laufen richtig?
Gruß

MA-EA 10.07.20 02:14

Probier einfach mal nen besseren VPS. Mach Dich mal schlau und Vergleiche. Qualität hat halt ihren Preis. :rolleyes:

Edit:Oder nen eigenen Trading-Rechner zulegen. Da weiß man ungefähr, was man hat und was er macht. Muss ja kein Vermögen kosten...


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:10 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum