Skip to content

Instantly share code, notes, and snippets.

@ronta-trader
Last active May 27, 2020 13:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ronta-trader/635baba952c63c393184cc636528271d to your computer and use it in GitHub Desktop.
Save ronta-trader/635baba952c63c393184cc636528271d to your computer and use it in GitHub Desktop.
サマータイムに対応した日本時間を出力するEA
#property strict //コンパイルのモード
void OnTick()
{
Print("日本時間:", TimeCurrent() + CJT()," MT4時間:", TimeCurrent());
}
//+------------------------------------------------------------------+
// サマータイム対応日本時間変換関数 CJT関数
//+------------------------------------------------------------------+
// datetime型
//
// サマータイムであれば   6時間 を返す
// ウィンタータイムであれば 7時間 を返す
//
// 例えば、
// TimeCurrent() + CJT() 
// で日本時間が求められる。
//
//  【MT4のサマータイム】
//  ・3月第2日曜日午前2時〜11月第1日曜日午前2時)
//  ・サマータイム    MT4時間+6時間 で日本時間
//  ・ウィンタータイム  MT4時間+7時間 で日本時間
//+------------------------------------------------------------------+
datetime CJT(){
datetime Time_Summer = 21600; //6時間
datetime Time_Winter = 25200; //7時間
switch(Year()){
case 2005: if(StringToTime("2005.3.13")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2005.11.6"))return Time_Summer; break;
case 2006: if(StringToTime("2006.3.12")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2006.11.5"))return Time_Summer; break;
case 2007: if(StringToTime("2007.3.11")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2007.11.4"))return Time_Summer; break;
case 2008: if(StringToTime("2008.3.9") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2008.11.2"))return Time_Summer; break;
case 2009: if(StringToTime("2009.3.8") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2009.11.1"))return Time_Summer; break;
case 2010: if(StringToTime("2010.3.14")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2010.11.7"))return Time_Summer; break;
case 2011: if(StringToTime("2011.3.13")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2011.11.6"))return Time_Summer; break;
case 2012: if(StringToTime("2012.3.11")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2012.11.4"))return Time_Summer; break;
case 2013: if(StringToTime("2013.3.10")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2013.11.3"))return Time_Summer; break;
case 2014: if(StringToTime("2014.3.9") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2014.11.2"))return Time_Summer; break;
case 2015: if(StringToTime("2015.3.8") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2015.11.1"))return Time_Summer; break;
case 2016: if(StringToTime("2016.3.13")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2016.11.6"))return Time_Summer; break;
case 2017: if(StringToTime("2017.3.12")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2017.11.5"))return Time_Summer; break;
case 2018: if(StringToTime("2018.3.11")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2018.11.4"))return Time_Summer; break;
case 2019: if(StringToTime("2019.3.10")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2019.11.3"))return Time_Summer; break;
case 2020: if(StringToTime("2020.3.8") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2020.11.1"))return Time_Summer; break;
case 2021: if(StringToTime("2021.3.14")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2021.11.7"))return Time_Summer; break;
case 2022: if(StringToTime("2022.3.13")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2022.11.6"))return Time_Summer; break;
case 2023: if(StringToTime("2023.3.12")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2023.11.5"))return Time_Summer; break;
case 2024: if(StringToTime("2024.3.10")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2024.11.3"))return Time_Summer; break;
case 2025: if(StringToTime("2025.3.9") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2025.11.2"))return Time_Summer; break;
case 2026: if(StringToTime("2026.3.8") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2026.11.1"))return Time_Summer; break;
case 2027: if(StringToTime("2027.3.14")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2027.11.7"))return Time_Summer; break;
case 2028: if(StringToTime("2028.3.12")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2028.11.5"))return Time_Summer; break;
case 2029: if(StringToTime("2029.3.11")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2029.11.4"))return Time_Summer; break;
case 2030: if(StringToTime("2030.3.10")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2030.11.3"))return Time_Summer; break;
case 2031: if(StringToTime("2031.3.9") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2031.11.2"))return Time_Summer; break;
case 2032: if(StringToTime("2032.3.14")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2032.11.7"))return Time_Summer; break;
case 2033: if(StringToTime("2033.3.13")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2033.11.6"))return Time_Summer; break;
case 2034: if(StringToTime("2034.3.12")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2034.11.5"))return Time_Summer; break;
case 2035: if(StringToTime("2035.3.11")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2035.11.4"))return Time_Summer; break;
case 2036: if(StringToTime("2036.3.9") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2036.11.2"))return Time_Summer; break;
case 2037: if(StringToTime("2037.3.8") <=TimeCurrent()&&TimeCurrent()<=StringToTime("2037.11.1"))return Time_Summer; break;
case 2038: if(StringToTime("2038.3.14")<=TimeCurrent()&&TimeCurrent()<=StringToTime("2038.11.7"))return Time_Summer; break;
}
return Time_Winter;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment