2020年4月27日月曜日

休日判定コード(備忘録)

久々に仲値EAを作ってみました。
ALEXAさんや青い豚さん aboyさんにいろいろと教えていただいて祝日を計算する関数を作りました。

参考にしたのは
「青い豚さんのブログ」
https://trv-and-mt4.blogspot.com/2019/12/mt4.html

銀行法
https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=357CO0000000040&openerCode=1

内閣府hp
https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

2020と2021はオリンピックで大きく変わるようですが、とりあえずベースができました。
国民の休日が日曜日の場合は翌日にする処理がいります。
国民の休日に挟まれた日も休日になります。(前回は2015年、次は2032年)



MqlDateTime A;
TimeCurrent(A);
bool Holiday()
   {
   if(A.mon==1&&A.day<=3)return true;//New Year
   if(8<=A.day_of_year&&A.day_of_year<=14&&A.day_of_week==MONDAY)return true;//Genpuku
   if(A.mon==2&&A.day==11)return true;//Foundation Day
   if(A.mon==2&&A.day==23)return true;//Emperor's Day
   if(A.mon==3&&A.day==20&&fmod(A.year,4)<=1)return true;//Vernal Equinox Day
   if(A.mon==3&&A.day==21)return true;//Vernal Equinox Day
   if(A.mon==4&&A.day==29)return true;//Showa
   if(A.mon==5&&3<=A.day&&A.day<=5)return true;//GW
   if(A.mon==7&&A.day_of_week==MONDAY&&15<=A.day&&A.day<=21)return true;//Love Sea
   if(A.mon==8&&A.day==11)return true;//Love Mountain
   if(A.mon==9&&A.day_of_week==MONDAY&&15<=A.day&&A.day<=21)return true;//Respect for the Oldish
   if(A.year>=2012&&A.mon==9&&A.day==22&&!fmod(A.year,4))return true;//Autumn equinox day
   if(A.mon==9&&A.day==23)return true;
   if(A.mon==10&&8<=A.day&&A.day<=14&&A.day_of_week==MONDAY)return true;//Sport day
   if(A.mon==11&&A.day==3)return true;//Taca's Wedding Anniversary
   if(A.mon==11&&A.day==23)return true;//Labor Thanksgiving Day
   if(A.mon==12&&A.day==31)return true;//End of Year
   return false;
   }

0 件のコメント:

コメントを投稿