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)
-   -   Hat ein EA eine interne Uhr die zum Start mit der Systemzeit abgeglichen wird? (http://www.expert-advisor.com/forum/showthread.php?t=6691)

LQK 17.06.20 13:38

Hat ein EA eine interne Uhr die zum Start mit der Systemzeit abgeglichen wird?
 
Hallo,

ich habe zu Übungszwecken einen EA geschrieben der täglich mit dem ersten Tick ab 9 Uhr einen Trade eröffnen soll.

Mittlerweile funktioniert der EA im Großen und Ganzen.

Zum Testen des EA habe ich dann jeweils die Systemzeit auf meinem PC manipuliert, d.h. auf 9:00 Uhr eingestellt.

Dabei ist mir folgendes aufgefallen:
  1. Wenn der EA bereits läuft und ich verstelle die Systemzeit erst zur Laufzeit auf 9 Uhr, funktioniert das nicht. Der EA eröffnet dann keinen Trade nach dem Verstellen der Systemzeit.

  2. Funktionieren tut es dagegen (d.h. der EA eröffnet einen Trade), wenn ich zuerst die Systemzeit auf 9 Uhr einstelle, und dann erst den EA starte.

  3. Ebenfalls funktioniert es (d.h. der EA eröffnet einen Trade) wenn ich zuerst die Systemzeit auf 8:59 Uhr einstelle, und dann den EA starte. Sobald eine Minute vertrichen ist und die 9:00 Uhr erreicht ist, eröffnet der EA mit dem nächsten Tick einen Trade.


Offenbar orientiert sich der EA schon an der Systemzeit (verwende ja auch extra die Funktion LocalTime(), das heißt ja gerade, dass die Systemzeit verwendet werden soll, aber nicht während der Laufzeit.


Ich ziehe daraus die folgende (vorläufige) Schlussfolgerung:


Ich stelle es mir so vor, dass der EA eine art "innere Uhr" hat, diese wird einmalig, d.h. zum Start des EA, mit de Systemzeit des PC abgeglichen ("Uhrenvergleich"), dann aber während der Laufzeit nicht mehr?

Wenn das so ist, wäre das immerhin eine Interessante Information über die internen Funktionen des EA.


Es hätte aber auch eine ganz praktische Implikation:


Was ist denn mit der Umstellung von Sommer- zu Winterzeit, und umgekehrt? Wenn es so ist, wie ich mir denke, müsste die innere Uhr des EA nach der Zeitumstellung einen falschen Wert haben, weil während der Laufzeit ja offenbar kein Uhrenvergleich stattfindet?

Dann müsste nach einer Zeitumstellung der EA neu gestartet werden, dass der Uhrenvergleich stattfindet?

Oder findet der Uhrenvergleich irgendwann doch einmal automatisch statt, z.B. alle 24 Stunden? Bis dahin würde der EA dann aber ggf. falsch arbeiten.

Ich freue mich über jede konstruktive Antwort! :)

Grüße,
LQK

traderdoc 17.06.20 16:22

Es existiert kein Uhrenvergleich.
Die Funktion LocalTime() ist die alte Bezeichnung für TimeLocal(), mit der ich anrate zu arbeiten. Die Funktion TimeLocal() gibt die aktuelle PC-Zeit, TimeCurrent() die Zeit des Standortes des Brokers aus.
Beide Zeiten werden voneinander abweichen, wenn der Brokerstandort nicht in der Zeitzone des PCs liegt.

traderdoc

Ca$hDigger 17.06.20 16:51

Zitat:

Zitat von LQK (Beitrag 43877)
Zum Testen des EA habe ich dann jeweils die Systemzeit auf meinem PC manipuliert, d.h. auf 9:00 Uhr eingestellt.

Mach es lieber umgekehrt, manipuliere nicht die PC-Uhr sondern manipuliere besser zum Testen die Zeitvariable vom EA. Wenn aktuell 16:51 ist und willst was testen stelle die EA-Variable statt der 9:00 eben dann auf 17:00 und fertig. (dann sind die merkwürdigen Effekte die du beobachtet hast auch egal).

LQK 17.06.20 18:22

Zitat:

Zitat von traderdoc (Beitrag 43879)
Es existiert kein Uhrenvergleich.
Die Funktion LocalTime() ist die alte Bezeichnung für TimeLocal(), mit der ich anrate zu arbeiten. Die Funktion TimeLocal() gibt die aktuelle PC-Zeit, TimeCurrent() die Zeit des Standortes des Brokers aus.
Beide Zeiten werden voneinander abweichen, wenn der Brokerstandort nicht in der Zeitzone des PCs liegt.

traderdoc

Ich arbeite mit TimeLocal(), habe mich nur vertippt. Was TimeLocal() und TimeCurrent() machen und was die Unterschiede zwischen den beiden Funktionen sind, ist mir soweit klar.

Wie erklärst Du Dir die im EP von mir beschriebenen Phänomene?

LQK 17.06.20 18:25

Zitat:

Zitat von Ca$hDigger (Beitrag 43880)
Mach es lieber umgekehrt, manipuliere nicht die PC-Uhr sondern manipuliere besser zum Testen die Zeitvariable vom EA. Wenn aktuell 16:51 ist und willst was testen stelle die EA-Variable statt der 9:00 eben dann auf 17:00 und fertig. (dann sind die merkwürdigen Effekte die du beobachtet hast auch egal).

Dann müsste ich anstelle TimeLocal() zum Debuggen Time als globale Variable bzw. Konstante verwenden. Das würde ich nur sehr ungern machen, weil ich ja nach dem Debuggen noch Änderungen durchführen müsste (die Variable oder Konstante durch TimeLocal() ersetzen), dadurch würde ich, so wie ich mich kenne, sicher weitere oder neue Fehler einbauen.

Lieber würde ich die merkwürdigen Effekte die ich beobachte aufklären. Irgendeinen Grund müssen Sie ja haben. Hast Du eine Idee? :)

Ca$hDigger 18.06.20 13:41

Naja dafür müsstest du die Programmierer von Metatrader fragen wie sie die Funktion TimeLocal() implementiert haben ;) und wie die Zeit vom OS gezogen wird.
Man kann vielleicht über die Kernel32.dll noch die Zeit holen aber ganz ehrlich das ist doch alles nicht schön :D
Wie gesagt würde die Systemzeit nicht verstellen, sondern Variablen im EA.

LQK 23.06.20 16:09

Mittlerweile konnte ich ein anderes Problem lösen, die im EP dieses Threads stehenden Phänomene, die offenbar damit in Zusammenhang standen, sind damit jetzt ebenfalls verschwunden.

Das Grundproblem war offenbar, dass ich OnTick() mit Int den falschen Rückgabetyp zugewiesen habe, habe diesen auf void geändert, das hat die Probleme gelöst.

Eine detailliertere Beschreibung siehe auch hier:

http://www.expert-advisor.com/forum/...html#post43942

Besten Dank noch mal für Eure Hilfe! :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:23 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