Japan Bank Holiday and Gotobi Library
- Bibliothèque
-
Mikoto Hamazono
AI Trader Kyo | Développeur MQL & Innovateur Forex
En tant que développeur MQL et passionné par l'innovation dans le forex, je crée des solutions de trading de pointe tirant le meilleur parti de l'intelligence artificielle. - Version: 1.0
Japan Bank Holiday and Gotobi Library répond aux questions de calendrier du marché du yen directement dans votre propre Expert Advisor, indicateur ou script : les banques japonaises sont-elles fermées aujourd'hui, est-ce un jour gotobi, quand a lieu le prochain fixing de Tokyo et quelle heure est-il au Japon d'après le serveur de votre courtier.
Toutes les règles sont calculées : il n'y a aucune table de jours fériés à mettre à jour. Pour 1980-2027, les résultats correspondent jour par jour à la liste des jours fériés nationaux du Bureau du Cabinet japonais. Pas de DLL, pas de requêtes web, pas de fichiers, pas de fonctions de trading.
Ce qu'elle indique
- Les jours fériés nationaux du Japon, y compris les jours fériés de remplacement et les « jours fériés des citoyens », avec le nom anglais de chaque jour férié.
- Les jours de fermeture des banques japonaises : samedis, dimanches, jours fériés nationaux et du 31 décembre au 3 janvier. Tous les autres jours sont des jours ouvrés.
- Les jours gotobi : le 5, le 10, le 15, le 20, le 25 et le dernier jour du mois. Si ce jour est un jour de fermeture des banques, le gotobi est avancé au jour ouvré précédent.
- L'heure du fixing de Tokyo : 09:55, heure du Japon.
- Conversion de l'heure du serveur du courtier en heure du Japon et inversement. Le Japon n'a pas d'heure d'été (JST = UTC+9).
Fonctions
- JpIsBankHoliday(date) - true les samedis, dimanches, jours fériés nationaux et du 31 décembre au 3 janvier.
- JpIsBusinessDay(date) - true les jours ouvrés des banques de Tokyo.
- JpIsNationalHoliday(date) - true les jours fériés nationaux, y compris les jours de remplacement et ceux des citoyens.
- JpHolidayName(date) - le nom anglais, par exemple "Marine Day", "Substitute Holiday" ou "Bank Holiday" ; une chaîne vide les autres jours.
- JpIsGotobi(date) - true les jours gotobi.
- JpGotobiDaysOfMonth(year, month, days[]) - tous les jours gotobi d'un mois ; renvoie leur nombre.
- JpNextGotobi(date) / JpPrevGotobi(date) - le premier gotobi à la date ou après / le dernier gotobi à la date ou avant.
- JpTokyoFixing(date) - 09:55, heure du Japon, ce jour-là.
- JpNowJst() - l'heure actuelle au Japon.
- JpServerToJst(time) / JpJstToServer(time) - convertit entre l'heure du serveur et l'heure du Japon.
- JpServerGmtOffsetSeconds() - le décalage du serveur par rapport à GMT, en secondes (automatique : TimeTradeServer() - TimeGMT(), arrondi à 15 minutes).
- JpSetServerGmtOffset(seconds) - un décalage fixe, par exemple 7200 pour GMT+2.
- JpSetServerTimeZone(seconds, rule) - le décalage hors heure d'été et une règle d'heure d'été : 0 aucune, 1 États-Unis, 2 UE.
- JpSetServerGmtOffsetAuto() - revient au décalage automatique (par défaut).
- JpLibraryVersion() - la version, "1.00".
Les arguments de date sont en heure du Japon ; n'importe quelle heure de la journée peut être passée. Les dates des jours fériés et des gotobi sont renvoyées à 00:00, heure du Japon.
Utilisation
Le Market installe la bibliothèque sous MQL5\Libraries\Market\Japan Bank Holiday and Gotobi Library.ex5. Collez ce bloc d'importation au début de votre programme (ou enregistrez-le sous MQL5\Include\JpMarketCalendar.mqh et incluez ce fichier) :
#import "Market\\Japan Bank Holiday and Gotobi Library.ex5" 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
Exemple pour un 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));
} Règles utilisées
- Loi japonaise sur les jours fériés nationaux et ses modifications : dates fixes, jours fériés du lundi (Jour de la majorité et Jour de la santé et du sport depuis 2000, Jour de la mer et Jour du respect des personnes âgées depuis 2003), Jour de la montagne depuis 2016, l'anniversaire de l'Empereur selon l'ère et les jours déplacés de 2020 et 2021.
- Jour férié de remplacement : quand un jour férié national tombe un dimanche, le jour suivant qui n'est pas un jour férié national est chômé (depuis 2007 ; avant, seulement le lendemain).
- Jour férié des citoyens : un jour situé entre deux jours fériés nationaux (depuis 1986), par exemple le 22 septembre 2026.
- Jours fériés uniques : 1989-02-24, 1990-11-12, 1993-06-09, 2019-05-01 et 2019-10-22.
- Équinoxes : la formule d'approximation standard, valable pour 1980-2099. Elle donne la date officielle pour chaque année jusqu'en 2027 et concorde avec un calcul astronomique pour chaque année jusqu'en 2099. Le gouvernement annonce chaque date en février de l'année précédente.
- Fermeture des banques : samedis, dimanches, jours fériés nationaux et du 31 décembre au 3 janvier (loi bancaire ; la règle actuelle est appliquée à toutes les années).
- Gotobi : si le jour est un jour de fermeture des banques, il est avancé au jour ouvré précédent du même mois. Si le 5 devait passer au mois précédent (par exemple en mai 2027), ce jour ouvré est déjà le gotobi de fin du mois précédent et n'apparaît que là.
À savoir
- Années valides : 1980-2099. En dehors de cette plage, les fonctions renvoient false, 0, une chaîne vide ou -1.
- Testeur de stratégie : TimeGMT() y renvoie l'heure du serveur, le décalage automatique vaut donc 0. Appelez JpSetServerGmtOffset() ou JpSetServerTimeZone() dans OnInit(), comme dans l'exemple. Si le décalage automatique est utilisé dans le testeur, la bibliothèque écrit une fois un rappel dans son journal.
- Le décalage automatique nécessite un terminal synchronisé avec le serveur de trading. Juste après le démarrage du terminal, il peut valoir 0 pendant quelques secondes ; il est relu à chaque appel.
- Le décalage automatique est le décalage actuel. Pour convertir des barres passées à travers un changement d'heure d'été, définissez la règle du serveur avec JpSetServerTimeZone().
- Les réglages s'appliquent au programme qui les appelle : appelez-les dans OnInit() de chaque Expert Advisor ou indicateur.
- JpGotobiDaysOfMonth() nécessite un tableau dynamique : datetime days[];
- Les résultats sont mis en cache par année ; un appel répété dans la même année prend environ 0,01 microseconde.
Assistance
Si quelque chose n'est pas clair, envoyez-moi un message privé sur MQL5.
