MT4夏時間と冬時間の判定ソースコード公開 MQL4プログラムプログラミング

インジケーター用ソースコード

int OnCalculateの中に記載(テックが読み込まれるごとに毎回処理する) //■□■□■□■□■ サーバー時刻(キプロス時刻)における現在の時間 ■□■□■□■□■
datetime dt = TimeCurrent();
int year = TimeYear(dt);// 年度を取得
int month = TimeMonth(dt);// 月を取得
int day = TimeDay(dt);// 日を取得
int hour = TimeHour(dt);// 時間を取得
int minute = TimeMinute(dt);// 分数を取得
int second = TimeSeconds(dt);// 秒数を取得
int week = DayOfWeek();

//■□■□■□■□■ 曜日の指定 ■□■□■□■□■
#define SUNDAY 0 //Sunday
#define MONDAY 1 //Monday
#define TUESDAY 2 //Tuesday
#define WEDNESDAY 3 //Wednesday
#define THURSDAY 4 //Thursday
#define FRIDAY 5 //Friday
#define SATURDAY 6 //Saturday

//■□■□■□■□■ 夏時間と冬時間の判定 ■□■□■□■□■
//3月第2日曜日午前2時〜11月第1日曜日午前2時

SummerTime = false; //夏時間の時はtrue
if ( month == 4 || month == 5 || month == 6 || month == 7 || month == 8 || month == 9 || month == 10 ){
SummerTime = true;
}else if ( month == 12 || month == 1 || month == 2 ){
SummerTime = false;
}else if (month == 3 || month == 11){
if(year == 2005){
if(month == 3 && day >=13){
SummerTime = true;
}
if(month == 11 && day <= 6){
SummerTime = true;
}
} else if (year == 2006){
if(month == 3 && day >=12){
SummerTime = true;
}
if(month == 11 && day <= 5){
SummerTime = true;
}
} else if (year == 2007){
if(month == 3 && day >=11){
SummerTime = true;
}
if(month == 11 && day <= 4){
SummerTime = true;
}
} else if (year == 2008){
if(month == 3 && day >=9){
SummerTime = true;
}
if(month == 11 && day <= 2){
SummerTime = true;
}
} else if (year == 2009){
if(month == 3 && day >=8){
SummerTime = true;
}
if(month == 11 && day <= 1){
SummerTime = true;
}
} else if (year == 2010){
if(month == 3 && day >=14){
SummerTime = true;
}
if(month == 11 && day <= 7){
SummerTime = true;
}
} else if (year == 2011){
if(month == 3 && day >=13){
SummerTime = true;
}
if(month == 11 && day <= 6){
SummerTime = true;
}
} else if (year == 2012){
if(month == 3 && day >=11){
SummerTime = true;
}
if(month == 11 && day <= 4){
SummerTime = true;
}
} else if (year == 2013){
if(month == 3 && day >=10){
SummerTime = true;
}
if(month == 11 && day <= 3){
SummerTime = true;
}
} else if (year == 2014){
if(month == 3 && day >=9){
SummerTime = true;
}
if(month == 11 && day <= 2){
SummerTime = true;
}
} else if (year == 2015){
if(month == 3 && day >=8){
SummerTime = true;
}
if(month == 11 && day <= 1){
SummerTime = true;
}
} else if (year == 2016){
if(month == 3 && day >=13){
SummerTime = true;
}
if(month == 11 && day <= 6){
SummerTime = true;
}
} else if (year == 2017){
if(month == 3 && day >=12){
SummerTime = true;
}
if(month == 11 && day <= 5){
SummerTime = true;
}
} else if (year == 2018){
if(month == 3 && day >=11){
SummerTime = true;
}
if(month == 11 && day <= 4){
SummerTime = true;
}
} else if (year == 2019){
if(month == 3 && day >=10){
SummerTime = true;
}
if(month == 11 && day <= 3){
SummerTime = true;
}
} else if (year == 2020){
if(month == 3 && day >=8){
SummerTime = true;
}
if(month == 11 && day <= 1){
SummerTime = true;
}
} else if (year == 2021){
if(month == 3 && day >=14){
SummerTime = true;
}
if(month == 11 && day <= 7){
SummerTime = true;
}
} else if (year == 2022){
if(month == 3 && day >=13){
SummerTime = true;
}
if(month == 11 && day <= 6){
SummerTime = true;
}
} else if (year == 2023){
if(month == 3 && day >=12){
SummerTime = true;
}
if(month == 11 && day <= 5){
SummerTime = true;
}
} else if (year == 2024){
if(month == 3 && day >=10){
SummerTime = true;
}
if(month == 11 && day <= 3){
SummerTime = true;
}
} else if (year == 2025){
if(month == 3 && day >=9){
SummerTime = true;
}
if(month == 11 && day <= 2){
SummerTime = true;
}
} else if (year == 2026){
if(month == 3 && day >=8){
SummerTime = true;
}
if(month == 11 && day <= 1){
SummerTime = true;
}
} else if (year == 2027){
if(month == 3 && day >=14){
SummerTime = true;
}
if(month == 11 && day <= 7){
SummerTime = true;
}
} else if (year == 2028){
if(month == 3 && day >=12){
SummerTime = true;
}
if(month == 11 && day <= 5){
SummerTime = true;
}
} else if (year == 2029){
if(month == 3 && day >=11){
SummerTime = true;
}
if(month == 11 && day <= 4){
SummerTime = true;
}
} else if (year == 2030){
if(month == 3 && day >=10){
SummerTime = true;
}
if(month == 11 && day <= 3){
SummerTime = true;
}
} else if (year == 2031){
if(month == 3 && day >=9){
SummerTime = true;
}
if(month == 11 && day <= 2){
SummerTime = true;
}
} else if (year == 2032){
if(month == 3 && day >=14){
SummerTime = true;
}
if(month == 11 && day <= 7){
SummerTime = true;
}
} else if (year == 2033){
if(month == 3 && day >=13){
SummerTime = true;
}
if(month == 11 && day <= 6){
SummerTime = true;
}
} else if (year == 2034){
if(month == 3 && day >=12){
SummerTime = true;
}
if(month == 11 && day <= 5){
SummerTime = true;
}
} else if (year == 2035){
if(month == 3 && day >=11){
SummerTime = true;
}
if(month == 11 && day <= 4){
SummerTime = true;
}
} else if (year == 2036){
if(month == 3 && day >=9){
SummerTime = true;
}
if(month == 11 && day <= 2){
SummerTime = true;
}
} else if (year == 2037){
if(month == 3 && day >=8){
SummerTime = true;
}
if(month == 11 && day <= 1){
SummerTime = true;
}
} else if (year == 2038){
if(month == 3 && day >=14){
SummerTime = true;
}
if(month == 11 && day <= 7){
SummerTime = true;
}
}
}// 以上 3月と11月の処理

// -----------------------以上 夏時間と冬時間の判定------------------------------
//■□■□■□■□■ (夏時間と冬時間) ■□■□■□■□■
if (SummerTime == true){// 夏時間 +6:00
hour = hour + TimeDifference + 6;
}else {// 冬時間 + 7:00
hour = hour + TimeDifference + 7;
}
if ( hour >= 24 ){
hour = hour - 24;
}

EA用ソースコード

void OnTickの中に記載(ティックが動くごとに処理)
//■□■□■□■□■ 夏時間と冬時間の判定 ■□■□■□■□■
//3月第2日曜日午前2時〜11月第1日曜日午前2時

SummerTime = false; //夏時間の時はtrue
if ( Month() == 4 || Month() == 5 || Month() == 6 || Month() == 7 || Month() == 8 || Month() == 9 || Month() == 10 ){
SummerTime = true;
}else if ( Month() == 12 || Month() == 1 || Month() == 2 ){
SummerTime = false;
}else if (Month() == 3 || Month() == 11){
if(Year() == 2005){
if(Month() == 3 && Day() >=13){
SummerTime = true;
}
if(Month() == 11 && Day() <= 6){
SummerTime = true;
}
} else if (Year() == 2006){
if(Month() == 3 && Day() >=12){
SummerTime = true;
}
if(Month() == 11 && Day() <= 5){
SummerTime = true;
}
} else if (Year() == 2007){
if(Month() == 3 && Day() >=11){
SummerTime = true;
}
if(Month() == 11 && Day() <= 4){
SummerTime = true;
}
} else if (Year() == 2008){
if(Month() == 3 && Day() >=9){
SummerTime = true;
}
if(Month() == 11 && Day() <= 2){
SummerTime = true;
}
} else if (Year() == 2009){
if(Month() == 3 && Day() >=8){
SummerTime = true;
}
if(Month() == 11 && Day() <= 1){
SummerTime = true;
}
} else if (Year() == 2010){
if(Month() == 3 && Day() >=14){
SummerTime = true;
}
if(Month() == 11 && Day() <= 7){
SummerTime = true;
}
} else if (Year() == 2011){
if(Month() == 3 && Day() >=13){
SummerTime = true;
}
if(Month() == 11 && Day() <= 6){
SummerTime = true;
}
} else if (Year() == 2012){
if(Month() == 3 && Day() >=11){
SummerTime = true;
}
if(Month() == 11 && Day() <= 4){
SummerTime = true;
}
} else if (Year() == 2013){
if(Month() == 3 && Day() >=10){
SummerTime = true;
}
if(Month() == 11 && Day() <= 3){
SummerTime = true;
}
} else if (Year() == 2014){
if(Month() == 3 && Day() >=9){
SummerTime = true;
}
if(Month() == 11 && Day() <= 2){
SummerTime = true;
}
} else if (Year() == 2015){
if(Month() == 3 && Day() >=8){
SummerTime = true;
}
if(Month() == 11 && Day() <= 1){
SummerTime = true;
}
} else if (Year() == 2016){
if(Month() == 3 && Day() >=13){
SummerTime = true;
}
if(Month() == 11 && Day() <= 6){
SummerTime = true;
}
} else if (Year() == 2017){
if(Month() == 3 && Day() >=12){
SummerTime = true;
}
if(Month() == 11 && Day() <= 5){
SummerTime = true;
}
} else if (Year() == 2018){
if(Month() == 3 && Day() >=11){
SummerTime = true;
}
if(Month() == 11 && Day() <= 4){
SummerTime = true;
}
} else if (Year() == 2019){
if(Month() == 3 && Day() >=10){
SummerTime = true;
}
if(Month() == 11 && Day() <= 3){
SummerTime = true;
}
} else if (Year() == 2020){
if(Month() == 3 && Day() >=8){
SummerTime = true;
}
if(Month() == 11 && Day() <= 1){
SummerTime = true;
}
} else if (Year() == 2021){
if(Month() == 3 && Day() >=14){
SummerTime = true;
}
if(Month() == 11 && Day() <= 7){
SummerTime = true;
}
} else if (Year() == 2022){
if(Month() == 3 && Day() >=13){
SummerTime = true;
}
if(Month() == 11 && Day() <= 6){
SummerTime = true;
}
} else if (Year() == 2023){
if(Month() == 3 && Day() >=12){
SummerTime = true;
}
if(Month() == 11 && Day() <= 5){
SummerTime = true;
}
} else if (Year() == 2024){
if(Month() == 3 && Day() >=10){
SummerTime = true;
}
if(Month() == 11 && Day() <= 3){
SummerTime = true;
}
} else if (Year() == 2025){
if(Month() == 3 && Day() >=9){
SummerTime = true;
}
if(Month() == 11 && Day() <= 2){
SummerTime = true;
}
} else if (Year() == 2026){
if(Month() == 3 && Day() >=8){
SummerTime = true;
}
if(Month() == 11 && Day() <= 1){
SummerTime = true;
}
} else if (Year() == 2027){
if(Month() == 3 && Day() >=14){
SummerTime = true;
}
if(Month() == 11 && Day() <= 7){
SummerTime = true;
}
} else if (Year() == 2028){
if(Month() == 3 && Day() >=12){
SummerTime = true;
}
if(Month() == 11 && Day() <= 5){
SummerTime = true;
}
} else if (Year() == 2029){
if(Month() == 3 && Day() >=11){
SummerTime = true;
}
if(Month() == 11 && Day() <= 4){
SummerTime = true;
}
} else if (Year() == 2030){
if(Month() == 3 && Day() >=10){
SummerTime = true;
}
if(Month() == 11 && Day() <= 3){
SummerTime = true;
}
} else if (Year() == 2031){
if(Month() == 3 && Day() >=9){
SummerTime = true;
}
if(Month() == 11 && Day() <= 2){
SummerTime = true;
}
} else if (Year() == 2032){
if(Month() == 3 && Day() >=14){
SummerTime = true;
}
if(Month() == 11 && Day() <= 7){
SummerTime = true;
}
} else if (Year() == 2033){
if(Month() == 3 && Day() >=13){
SummerTime = true;
}
if(Month() == 11 && Day() <= 6){
SummerTime = true;
}
} else if (Year() == 2034){
if(Month() == 3 && Day() >=12){
SummerTime = true;
}
if(Month() == 11 && Day() <= 5){
SummerTime = true;
}
} else if (Year() == 2035){
if(Month() == 3 && Day() >=11){
SummerTime = true;
}
if(Month() == 11 && Day() <= 4){
SummerTime = true;
}
} else if (Year() == 2036){
if(Month() == 3 && Day() >=9){
SummerTime = true;
}
if(Month() == 11 && Day() <= 2){
SummerTime = true;
}
} else if (Year() == 2037){
if(Month() == 3 && Day() >=8){
SummerTime = true;
}
if(Month() == 11 && Day() <= 1){
SummerTime = true;
}
} else if (Year() == 2038){
if(Month() == 3 && Day() >=14){
SummerTime = true;
}
if(Month() == 11 && Day() <= 7){
SummerTime = true;
}
}
}// 以上 3月と11月の処理

// -----------------------以上 夏時間と冬時間の判定------------------------------