|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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:
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 |
|
|||
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 erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
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).
|
|
|||
Zitat:
Wie erklärst Du Dir die im EP von mir beschriebenen Phänomene? |
|
|||
Zitat:
Lieber würde ich die merkwürdigen Effekte die ich beobachte aufklären. Irgendeinen Grund müssen Sie ja haben. Hast Du eine Idee? |
|
|||
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 Wie gesagt würde die Systemzeit nicht verstellen, sondern Variablen im EA. |
|
|||
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! |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|