Japan Bank Holiday and Gotobi Library MT4
- Kütüphaneler
- Sürüm: 1.0
Japan Bank Holiday and Gotobi Library MT4, yen piyasasının takvim sorularını kendi Uzman Danışmanınızın, göstergenizin veya betiğinizin içinde yanıtlar: Bugün Japonya'da banka tatili mi, gotobi günü mü, bir sonraki Tokyo fixing'i ne zaman ve aracı kurumunuzun sunucu saatine göre Japonya'da saat kaç.
Tüm kurallar hesaplanır, bu yüzden güncellenmesi gereken bir tatil tablosu yoktur. 1980-2027 yılları için sonuçlar, Japonya Kabine Ofisi'nin ulusal tatil listesiyle gün gün aynıdır. DLL yok, web isteği yok, dosya yok, işlem fonksiyonu yok.
Neleri yanıtlar
- Japonya'nın ulusal tatilleri; telafi tatilleri ve «vatandaş tatilleri» dahil, her tatilin İngilizce adıyla birlikte.
- Japonya'daki banka tatilleri: cumartesiler, pazarlar, ulusal tatiller ve 31 Aralık - 3 Ocak. Diğer tüm günler iş günüdür.
- Gotobi günleri: ayın 5'i, 10'u, 15'i, 20'si, 25'i ve son günü. Bu gün banka tatiline denk gelirse gotobi bir önceki iş gününe alınır.
- Tokyo fixing saati: Japonya saatiyle 09:55.
- Aracı kurum sunucu saatinden Japonya saatine ve tersine dönüşüm. Japonya'da yaz saati uygulaması yoktur (JST = UTC+9).
Fonksiyonlar
- JpIsBankHoliday(date) - cumartesi, pazar, ulusal tatiller ve 31 Aralık - 3 Ocak arasında true.
- JpIsBusinessDay(date) - Tokyo bankalarının iş günlerinde true.
- JpIsNationalHoliday(date) - ulusal tatillerde true; telafi ve vatandaş tatilleri dahil.
- JpHolidayName(date) - İngilizce adı, örneğin "Marine Day", "Substitute Holiday" veya "Bank Holiday"; diğer günlerde boş dize.
- JpIsGotobi(date) - gotobi günlerinde true.
- JpGotobiDaysOfMonth(year, month, days[]) - bir ayın tüm gotobi günleri; sayısını döndürür.
- JpNextGotobi(date) / JpPrevGotobi(date) - tarihte veya sonrasındaki ilk gotobi / tarihte veya öncesindeki son gotobi.
- JpTokyoFixing(date) - o günün Japonya saatiyle 09:55'i.
- JpNowJst() - şu anki Japonya saati.
- JpServerToJst(time) / JpJstToServer(time) - sunucu saati ile Japonya saati arasında dönüştürür.
- JpServerGmtOffsetSeconds() - sunucunun saniye cinsinden GMT farkı (otomatik: TimeCurrent() - TimeGMT(), 15 dakikaya yuvarlanır).
- JpSetServerGmtOffset(seconds) - sabit bir fark, örneğin GMT+2 için 7200.
- JpSetServerTimeZone(seconds, rule) - yaz saati dışındaki fark ve bir yaz saati kuralı: 0 yok, 1 ABD, 2 AB.
- JpSetServerGmtOffsetAuto() - otomatik farka geri döner (varsayılan).
- JpLibraryVersion() - sürüm, "1.00".
Tarih argümanları Japonya saatidir; günün herhangi bir saati verilebilir. Tatil ve gotobi tarihleri Japonya saatiyle 00:00 olarak döndürülür.
Nasıl kullanılır
Market kütüphaneyi MQL4\Libraries\Market\Japan Bank Holiday and Gotobi Library MT4.ex4 olarak kurar. Bu içe aktarma bloğunu programınızın başına yapıştırın (veya MQL4\Include\JpMarketCalendar.mqh olarak kaydedip bu dosyayı ekleyin):
#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
Bir Uzman Danışman için örnek:
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));
} Kullanılan kurallar
- Japonya Ulusal Tatiller Kanunu ve değişiklikleri: sabit tarihler, pazartesi tatilleri (Reşit Olma Günü ile Sağlık ve Spor Günü 2000'den, Deniz Günü ile Yaşlılara Saygı Günü 2003'ten itibaren), 2016'dan itibaren Dağ Günü, döneme göre İmparatorun Doğum Günü ve 2020 ile 2021'de taşınan günler.
- Telafi tatili: bir ulusal tatil pazara denk gelirse, ondan sonraki ulusal tatil olmayan ilk gün tatildir (2007'den itibaren; öncesinde yalnızca ertesi gün).
- Vatandaş tatili: iki ulusal tatil arasında kalan gün (1986'dan itibaren), örneğin 22 Eylül 2026.
- Tek seferlik tatiller: 1989-02-24, 1990-11-12, 1993-06-09, 2019-05-01 ve 2019-10-22.
- Ekinoks günleri: 1980-2099 için geçerli standart yaklaşık formül. 2027'ye kadar her yıl resmi tarihi verir ve 2099'a kadar her yıl astronomik bir hesapla aynı sonucu verir. Hükümet her tarihi bir önceki yılın şubat ayında duyurur.
- Banka tatilleri: cumartesiler, pazarlar, ulusal tatiller ve 31 Aralık - 3 Ocak (Bankacılık Kanunu; bugünkü kural tüm yıllara uygulanır).
- Gotobi: gün banka tatiline denk gelirse aynı ayın bir önceki iş gününe alınır. Ayın 5'i önceki aya kayacaksa (örneğin Mayıs 2027), o iş günü zaten önceki ayın ay sonu gotobisidir ve yalnızca orada listelenir.
Bilmeniz gerekenler
- Geçerli yıllar: 1980-2099. Bu aralığın dışında fonksiyonlar false, 0, boş dize veya -1 döndürür.
- Strateji Test Cihazı: orada TimeGMT() sunucu saatini döndürür, bu yüzden otomatik fark 0 olur. Örnekteki gibi OnInit() içinde JpSetServerGmtOffset() veya JpSetServerTimeZone() çağırın. Test cihazında otomatik fark kullanılırsa kütüphane test günlüğüne bir kez hatırlatma yazar.
- MT4'te TimeTradeServer() yoktur; bu yüzden otomatik fark, son fiyatın zamanı olan TimeCurrent() ile hesaplanır. Fiyatlar gelirken doğrudur; terminal başladıktan hemen sonra veya piyasa kapalıyken yanlış olabilir (-12 ile +14 saat dışındaki değerler yok sayılır). MT4'te farkı JpSetServerTimeZone() ile ayarlamak en güvenli yoldur.
- Otomatik fark, şu anki farktır. Geçmiş çubukları yaz saati değişikliği boyunca dönüştürmek için sunucunun kuralını JpSetServerTimeZone() ile ayarlayın.
- Ayarlar, onları çağıran programa uygulanır: her Uzman Danışmanın veya göstergenin OnInit() fonksiyonunda çağırın.
- JpGotobiDaysOfMonth() dinamik bir dizi gerektirir: datetime days[];
- Sonuçlar yıl bazında önbelleğe alınır; aynı yıl içinde tekrarlanan bir çağrı yaklaşık 0,1 mikrosaniye sürer.
Destek
Anlaşılmayan bir nokta olursa lütfen bana MQL5 üzerinden özel mesaj gönderin.
