Japan Bank Holiday and Gotobi Library MT4
- Bibliotheken
-
Mikoto Hamazono
AI Trader Kyo | MQL-Entwickler & Forex-Innovator
Als MQL-Entwickler und leidenschaftlicher Innovator im Bereich Forex entwickle ich fortschrittliche Trading-Lösungen, die das volle Potenzial von KI nutzen. - Version: 1.0
Japan Bank Holiday and Gotobi Library MT4 beantwortet die Kalenderfragen des Yen-Markts direkt in Ihrem eigenen Expert Advisor, Indikator oder Skript: Ist heute in Japan ein Bankfeiertag, ist es ein Gotobi-Tag, wann ist das nächste Tokioter Fixing und wie spät ist es in Japan nach der Serverzeit Ihres Brokers.
Alle Regeln werden berechnet, daher gibt es keine Feiertagstabelle zu aktualisieren. Für 1980-2027 stimmen die Ergebnisse Tag für Tag mit der Liste der Nationalfeiertage des japanischen Kabinettsbüros überein. Keine DLL, keine Webanfragen, keine Dateien, keine Handelsfunktionen.
Was sie beantwortet
- Japanische Nationalfeiertage, einschließlich Ersatzfeiertagen und „Bürgerfeiertagen“, mit dem englischen Namen jedes Feiertags.
- Japanische Bankfeiertage: Samstage, Sonntage, Nationalfeiertage und 31. Dezember bis 3. Januar. Alle anderen Tage sind Geschäftstage.
- Gotobi-Tage: der 5., 10., 15., 20., 25. und der letzte Tag des Monats. Fällt dieser Tag auf einen Bankfeiertag, verschiebt sich der Gotobi auf den vorherigen Geschäftstag.
- Die Uhrzeit des Tokioter Fixings: 09:55 japanischer Zeit.
- Serverzeit des Brokers in japanische Zeit und zurück. Japan hat keine Sommerzeit (JST = UTC+9).
Funktionen
- JpIsBankHoliday(date) - true an Samstagen, Sonntagen, Nationalfeiertagen und vom 31. Dezember bis 3. Januar.
- JpIsBusinessDay(date) - true an Geschäftstagen der Banken in Tokio.
- JpIsNationalHoliday(date) - true an Nationalfeiertagen, einschließlich Ersatz- und Bürgerfeiertagen.
- JpHolidayName(date) - der englische Name, zum Beispiel "Marine Day", "Substitute Holiday" oder "Bank Holiday"; an anderen Tagen eine leere Zeichenkette.
- JpIsGotobi(date) - true an Gotobi-Tagen.
- JpGotobiDaysOfMonth(year, month, days[]) - alle Gotobi-Tage eines Monats; gibt die Anzahl zurück.
- JpNextGotobi(date) / JpPrevGotobi(date) - der erste Gotobi am oder nach dem Datum / der letzte Gotobi am oder vor dem Datum.
- JpTokyoFixing(date) - 09:55 japanischer Zeit an diesem Tag.
- JpNowJst() - die aktuelle japanische Zeit.
- JpServerToJst(time) / JpJstToServer(time) - rechnet zwischen Serverzeit und japanischer Zeit um.
- JpServerGmtOffsetSeconds() - der GMT-Versatz des Servers in Sekunden (automatisch: TimeCurrent() - TimeGMT(), auf 15 Minuten gerundet).
- JpSetServerGmtOffset(seconds) - ein fester Versatz, zum Beispiel 7200 für GMT+2.
- JpSetServerTimeZone(seconds, rule) - der Versatz außerhalb der Sommerzeit und eine Sommerzeitregel: 0 keine, 1 USA, 2 EU.
- JpSetServerGmtOffsetAuto() - zurück zum automatischen Versatz (Standard).
- JpLibraryVersion() - die Version, "1.00".
Datumsargumente sind japanische Zeit; jede Uhrzeit des Tages kann übergeben werden. Feiertags- und Gotobi-Daten werden als 00:00 japanischer Zeit zurückgegeben.
Verwendung
Der Market installiert die Bibliothek als MQL4\Libraries\Market\Japan Bank Holiday and Gotobi Library MT4.ex4. Fügen Sie diesen Importblock am Anfang Ihres Programms ein (oder speichern Sie ihn als MQL4\Include\JpMarketCalendar.mqh und binden Sie diese Datei ein):
#import "Market\\Japan Bank Holiday and Gotobi Library MT4.ex4" string JpLibraryVersion(); bool JpIsNationalHoliday(datetime date_jst); bool JpIsBankHoliday(datetime date_jst); bool JpIsBusinessDay(datetime date_jst); string JpHolidayName(datetime date_jst); bool JpIsGotobi(datetime date_jst); int JpGotobiDaysOfMonth(int year, int month, datetime &out[]); datetime JpNextGotobi(datetime from_jst); datetime JpPrevGotobi(datetime from_jst); datetime JpTokyoFixing(datetime date_jst); int JpServerGmtOffsetSeconds(); bool JpSetServerGmtOffset(int seconds); bool JpSetServerTimeZone(int standard_offset_seconds, int dst_rule); void JpSetServerGmtOffsetAuto(); datetime JpServerToJst(datetime server_time); datetime JpJstToServer(datetime jst); datetime JpNowJst(); #import
Beispiel für einen Expert Advisor:
int OnInit()
{
// In the Strategy Tester TimeGMT() returns server time: set the offset yourself
if(MQLInfoInteger(MQL_TESTER))
JpSetServerTimeZone(2 * 3600, 1); // GMT+2, +1 hour in US summer time
return(INIT_SUCCEEDED);
}
void OnTick()
{
datetime jst = JpNowJst(); // Japan time now
if(JpIsGotobi(jst))
Comment("Gotobi - Tokyo fixing at ",
TimeToString(JpJstToServer(JpTokyoFixing(jst))), " server time");
else if(JpIsBankHoliday(jst))
Comment("Japanese bank holiday ", JpHolidayName(jst));
else
Comment("Next gotobi: ", TimeToString(JpNextGotobi(jst), TIME_DATE));
} Verwendete Regeln
- Japanisches Gesetz über die Nationalfeiertage mit seinen Änderungen: feste Daten, Montagsfeiertage (Tag der Volljährigkeit und Tag des Sports ab 2000, Tag des Meeres und Tag der Ehrung der Alten ab 2003), Tag der Berge ab 2016, der Geburtstag des Kaisers je nach Ära und die verlegten Tage von 2020 und 2021.
- Ersatzfeiertag: Fällt ein Nationalfeiertag auf einen Sonntag, ist der nächste Tag, der kein Nationalfeiertag ist, frei (ab 2007; davor nur der Folgetag).
- Bürgerfeiertag: ein Tag zwischen zwei Nationalfeiertagen (ab 1986), zum Beispiel der 22. September 2026.
- Einmalige Feiertage: 1989-02-24, 1990-11-12, 1993-06-09, 2019-05-01 und 2019-10-22.
- Tagundnachtgleichen: die übliche Näherungsformel, gültig für 1980-2099. Sie liefert in jedem Jahr bis 2027 das amtliche Datum und stimmt in jedem Jahr bis 2099 mit einer astronomischen Berechnung überein. Die Regierung gibt jeden Termin im Februar des Vorjahres bekannt.
- Bankfeiertage: Samstage, Sonntage, Nationalfeiertage und 31. Dezember bis 3. Januar (Bankengesetz; die heutige Regel gilt für alle Jahre).
- Gotobi: An einem Bankfeiertag verschiebt sich der Tag auf den vorherigen Geschäftstag desselben Monats. Würde der 5. in den Vormonat rutschen (zum Beispiel im Mai 2027), ist dieser Geschäftstag bereits der Monatsend-Gotobi des Vormonats und wird nur dort aufgeführt.
Wissenswertes
- Gültige Jahre: 1980-2099. Außerhalb dieses Bereichs geben die Funktionen false, 0, eine leere Zeichenkette oder -1 zurück.
- Strategietester: Dort liefert TimeGMT() die Serverzeit, daher ist der automatische Versatz 0. Rufen Sie wie im Beispiel JpSetServerGmtOffset() oder JpSetServerTimeZone() in OnInit() auf. Wird im Tester der automatische Versatz verwendet, schreibt die Bibliothek einmal einen Hinweis in das Testerjournal.
- MT4 hat kein TimeTradeServer(), daher verwendet der automatische Versatz TimeCurrent(), die Zeit des letzten Kurses. Er stimmt, solange Kurse eintreffen; direkt nach dem Start des Terminals oder bei geschlossenem Markt kann er falsch sein (Werte außerhalb von -12 bis +14 Stunden werden ignoriert). In MT4 ist es sicherer, den Versatz mit JpSetServerTimeZone() festzulegen.
- Der automatische Versatz ist der aktuelle Versatz. Um vergangene Bars über einen Sommerzeitwechsel hinweg umzurechnen, legen Sie die Regel des Servers mit JpSetServerTimeZone() fest.
- Einstellungen gelten für das Programm, das sie aufruft: Rufen Sie sie in OnInit() jedes Expert Advisors oder Indikators auf.
- JpGotobiDaysOfMonth() benötigt ein dynamisches Array: datetime days[];
- Die Ergebnisse werden pro Jahr zwischengespeichert; ein wiederholter Aufruf innerhalb desselben Jahres dauert etwa 0,1 Mikrosekunden.
Support
Wenn etwas unklar ist, senden Sie mir bitte eine private Nachricht auf MQL5.
