![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ja, alles wegen einer IMO rätselhaften Designentscheidung:) Es kann also sein, dass die Serverzeit im Laufe eines Jahres nicht einmal mit einer bekannten Weltzeit übereinstimmt.
Ich habe eine Methode, um die GMT-Zeit genau zu bestimmen, vor allem beim Backtesting. Diese Methode scheint bei Brokern zu funktionieren, die
aber der Ansatz kommt mir immer noch ein wenig hackelig vor.
Er beinhaltete das Herunterladen von GMT-basierten Kursen aus anderen Quellen (dukascopy) und den Vergleich der Stunde jedes Tageshochs. Für das Backtesting funktioniert das gut, aber derzeit lade ich die Stundendaten manuell herunter und filtere die Höchststände (mit einem Perl-Skript).
Sobald ich automatisch GMT H1-Kurse aus mindestens zwei Quellen erhalten kann, werde ich mit diesem Ansatz für meine Zwecke zufrieden sein.
Wie könnte MT4 für diese Aufgabe besser geeignet gemacht werden? Ich weiß nicht, wie es Ihnen geht, aber ich hätte sicher keine Freude an der Aufgabe, einen regionalen historischen GMT-Offset-Rechner zu erstellen. Können Sie sich das nur vorstellen? omg. Wenn ich das jemals schaffe, werde ich es auf den Markt bringen, und Sie sollten besser ein dickes Scheckbuch haben ;)
Ein historischer GMT-Rechner ist an sich nicht besonders schwer (das Windows-Betriebssystem enthält bereits alle Daten, die man braucht), aber das ist nicht das Hauptproblem. Das Problem besteht darin, dass Sie die aktuelle Abweichung zwischen der Maklerzeit und der GMT bestimmen können, aber Sie wissen nicht, ob und wann sie sich geändert hat. Anhand des obigen Beispiels können Sie sehen, dass der Broker derzeit GMT+3 hat (vorausgesetzt, die lokale Computeruhr geht genau...), aber Sie wissen nicht, dass der Broker letzte Woche GMT+2 hatte.
Es ist gut möglich, dass das MT4-Client-Terminal diese Information einfach nicht hat.
Wenn es sie hätte, könnte MT4 entweder die reinen Daten bereitstellen, die Sie selbst verarbeiten könnten, oder eine Funktion, mit der Sie sagen könnten: "Konvertiere jedes Brokerdatum in der Vergangenheit in GMT". Danach könnte man eine Nachschlagetabelle (oder die Windows-API) verwenden, um die historische GMT-Zeit in eine andere Zeitzone wie London zu konvertieren. Es wäre jedoch besser, wenn MT4 dies auch für Sie erledigen würde, z. B. mit einem Funktionspaar wie dem folgenden:
datetime ConvertToBrokerTime(datetime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);
datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);
Ja, alles wegen einer IMO rätselhaften Designentscheidung:)
(Ich gehe davon aus, dass der Grund für die Nichtfixierung auf UTC darin liegt, dass die Broker mit EET arbeiten können, was fünf D1-Kerzen pro Woche ergibt, wodurch eine sechste kleine Kerze vermieden wird, die bei Brokern, die GMTZ verwenden, zu systematischen Unterschätzungen von Dingen wie D1-ATR führt).
Ich hätte all diese Dinge in den Client eingebaut, aber das macht den Client an verschiedenen Stellen komplizierter :) Aber wenigstens sind alle Variablen bekannt.
Ein anderer Ansatz, nach dieser Seite gibt es nur 62 MT4-Broker? Es wäre also nicht allzu schwer, eine Nachschlagetabelle für jeden Broker und seine Zeitdefinition zu haben (egal, ob sie auf einer realen Zeitzone oder einer Kombination ala FXCM basiert), und auch historische Änderungen (ala Alpari) zu berücksichtigen.
Dies ist wahrscheinlich der robusteste Ansatz und muss nur jedes Mal angepasst werden, wenn ein Broker beschließt, seine Kunden ein wenig mehr zu verwirren :)
gchrmt4:
[1] Ihre Serverzeit von GMT+3 entspricht zwar EEST in dem Sinne, dass EEST GMT+3 ist, aber laut Wikipedia und worldclock.com sollte noch nirgendwo EEST gelten. Die Umstellung sollte nicht vor dem 30. März erfolgen. Die aktuelle Zeit in Zypern, Griechenland, Israel usw. ist GMT+2.
[2] Es handelt sich also wahrscheinlich um einen Broker, der seine Server auf GMT+2 laufen lässt, die Umstellung auf Sommerzeit aber an den US-Terminen und nicht an den europäischen Terminen vornimmt.
[3] Das ist nicht dasselbe wie EET/EEST. (Und es ist sogar noch weniger vorhersehbar, wenn es darum geht, einen Code zu schreiben, der Zeiten und Daten automatisch anpasst, ohne den Benutzer nach irgendeiner Art von Eingabe darüber zu fragen, welche Zeiteinstellungen der Broker verwendet.)
Ein Broker ändert die Zeitzone seines Servers im Allgemeinen nicht oft, außer zur Anpassung an die Sommerzeit. Für die Sommerzeitanpassung kann ich ein beliebiges Datum/eine beliebige Uhrzeit (von 1987 (USA) und 1996 (EU) bis 2020 und darüber hinaus) verwenden und für die USA und die EU berechnen, wann die Sommerzeit beginnt und wann sie endet. Sobald Sie diesen Code haben, müssen Sie nur noch den aktuellen Offset zur GMT anpassen, um die Sommerzeit für die von Ihnen betrachtete Zeit zu berücksichtigen.
Mit TimeGMT(), das in Build 600+ neu ist, berechnen Sie den aktuellen Offset Ihres Brokers zur GMT. Aber man kann (soweit ich weiß) die Zeitzone eines Brokers nicht aus der Vergangenheit ermitteln. Ich hatte zum Beispiel einen Broker, der die Zeitzone seines Servers von GMT für Standardzeit auf GMT+2 für Standardzeit geändert hat. Ich habe das so gehandhabt, dass ich einen Offset für die Zeit vor der Umstellung hart kodiert habe, weil alle Verlaufsdaten GMT und nicht GMT+2 waren (und ich wollte den Verlauf nicht ändern, um GMT+2 wiederzugeben). In dieser Hinsicht sind wir uns einig. Solange ein Makler nicht einfach die Zeitzonen wechselt (außer zur Anpassung an die Sommerzeit), sollte man in der Lage sein, den Offset zur GMT zu berechnen und diesen Offset an die Sommerzeit anzupassen.
Ich will damit nur sagen, dass die Informationen, die man nur von MT4 selbst erhalten kann - der aktuelle Offset zwischen Brokerzeit und GMT - in der Praxis unzureichend sind, um z. B. den Eröffnungskurs in London vom letzten Mittwoch zu ermitteln.
Ich glaube, ich bin anderer Meinung als Sie. Solange der Broker die Zeitzonen nicht ändert, abgesehen von der Anpassung an die Sommerzeit, können Sie den Offset zur GMT bestimmen, sowohl für die aktuelle Zeit als auch für die historische Zeit. Wenn letzte Woche während der Standardzeit der Broker GMT+2 und London GMT ist, dann wäre 8 Uhr Londoner Zeit 10 Uhr Serverzeit. Nächsten Monat, während der Sommerzeit, wenn der Broker GMT+3 und London GMT+1 ist, würde 8 Uhr Londoner Zeit 10 Uhr Serverzeit entsprechen. Heute, wenn der Makler Sommerzeit hat und London Standardzeit, ist der Makler GMT+3 und London ist GMT, also wäre 8 Uhr Londoner Zeit 11 Uhr Serverzeit.
Wenn der Makler GMT-5 (EST) und London GMT hat, ist 8 Uhr Londoner Zeit 3 Uhr Serverzeit.
Ein historischer GMT-Rechner ist an sich nicht besonders schwierig (das Windows-Betriebssystem enthält bereits alle Daten, die Sie benötigen), aber das ist auch nicht das Hauptproblem. Das Problem besteht darin, dass Sie den aktuellen Offset zwischen der Brokerzeit und der GMT bestimmen können, aber nicht wissen, ob und wann er sich geändert hat. Anhand des obigen Beispiels können Sie sehen, dass der Broker derzeit GMT+3 hat (vorausgesetzt, die lokale Computeruhr geht genau...), aber Sie wissen nicht, dass der Broker letzte Woche GMT+2 hatte.
Es ist gut möglich, dass das MT4-Client-Terminal diese Information einfach nicht hat.
Wenn es sie hätte, könnte MT4 entweder die nackten Daten bereitstellen, die Sie selbst verarbeiten könnten, oder eine Funktion, mit der Sie sagen könnten: "Konvertiere ein beliebiges Brokerdatum in der Vergangenheit in GMT". Danach könnte man eine Nachschlagetabelle (oder die Windows-API) verwenden, um die historische GMT-Zeit in eine andere Zeitzone wie London zu konvertieren. Es wäre jedoch besser, wenn MT4 dies auch für Sie erledigen würde, z. B. mit einem Funktionspaar wie dem folgenden:
datetime ConvertToBrokerTime(datetime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);
datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);
Ja, es wäre nicht schwierig, wenn es keine Sommerzeit gäbe, aber es gibt lol... es wäre ein Alptraum zu codieren. Historische Anomalien gäbe es überall. Regionen, die die Zeitzone, die sie verwenden, geändert haben, Regionen, die damit experimentiert haben, überhaupt keine Sommerzeit zu verwenden und dann wieder zur Sommerzeit zurückgekehrt sind, Regionen, die die Sommerzeit an einigen Orten respektieren, an anderen aber nicht, es gäbe so viele Anomalien zu berücksichtigen, überall auf der Welt ...
Ein anderer Ansatz, nach dieser Seite gibt es nur 62 MT4-Broker? So wäre es nicht allzu schwer, nur eine Nachschlagetabelle für jeden Broker und ihre Definition der Zeit (ob es auf eine echte Zeitzone oder eine Kombination ala FXCM basiert), und auch historische Änderungen (ala Alpari) zu integrieren.
Thirteen:
Wenn der Broker letzte Woche während der Standardzeit auf GMT+2 und London auf GMT steht,
Es wäre vernünftig, wenn der MT4-Server immer GMT verwenden würde, aber Sie wissen, dass sie das nicht tun werden.