見出し画像

年末年始は動作させなくする(制御)

OnInit()

特になし

OnTick()

//年末年始ではない場合のみ動作させる
   if(New_year_holiday() == 0)
     {
    ・
    ・//作動させたい制御
    ・
     }

New_year_holiday()

//+------------------------------------------------------------------+
// 取引の停止
//+------------------------------------------------------------------+
int New_year_holiday()//年末年始ならTrueを返す
  {
   datetime present = TimeCurrent();
   MqlDateTime present_str;
   TimeToStruct(present, present_str);

   switch(present_str.year)
     {
      case 2000:
         if(StringToTime("2000.1.9")>=TimeCurrent()||TimeCurrent()>StringToTime("2000.12.21"))
            return 1;
         break;
      case 2001:
         if(StringToTime("2001.1.10")>=TimeCurrent()||TimeCurrent()>StringToTime("2001.12.23"))
            return 1;
         break;
      case 2002:
         if(StringToTime("2002.1.11")>=TimeCurrent()||TimeCurrent()>StringToTime("2002.12.24"))
            return 1;
         break;
      case 2003:
         if(StringToTime("2003.1.13")>=TimeCurrent()||TimeCurrent()>StringToTime("2003.12.26"))
            return 1;
         break;
      case 2004:
         if(StringToTime("2004.1.14")>=TimeCurrent()||TimeCurrent()>StringToTime("2004.12.26"))
            return 1;
         break;
      case 2005:
         if(StringToTime("2005.1.8")>=TimeCurrent()||TimeCurrent()>StringToTime("2005.12.21"))
            return 1;
         break;
      case 2006:
         if(StringToTime("2006.1.9")>=TimeCurrent()||TimeCurrent()>StringToTime("2006.12.22"))
            return 1;
         break;
      case 2007:
         if(StringToTime("2007.1.11")>=TimeCurrent()||TimeCurrent()>StringToTime("2007.12.24"))
            return 1;
         break;
      case 2008:
         if(StringToTime("2008.1.12")>=TimeCurrent()||TimeCurrent()>StringToTime("2008.12.24"))
            return 1;
         break;
      case 2009:
         if(StringToTime("2009.1.13")>=TimeCurrent()||TimeCurrent()>StringToTime("2009.12.26"))
            return 1;
         break;
      case 2010:
         if(StringToTime("2010.1.14")>=TimeCurrent()||TimeCurrent()>StringToTime("2010.12.20"))
            return 1;
         break;
      case 2011:
         if(StringToTime("2011.1.9")>=TimeCurrent()||TimeCurrent()>StringToTime("2011.12.22"))
            return 1;
         break;
      case 2012:
         if(StringToTime("2012.1.10")>=TimeCurrent()||TimeCurrent()>StringToTime("2012.12.22"))
            return 1;
         break;
      case 2013:
         if(StringToTime("2013.1.11")>=TimeCurrent()||TimeCurrent()>StringToTime("2013.12.24"))
            return 1;
         break;
      case 2014:
         if(StringToTime("2014.1.12")>=TimeCurrent()||TimeCurrent()>StringToTime("2014.12.25"))
            return 1;
         break;
      case 2015:
         if(StringToTime("2015.1.14")>=TimeCurrent()||TimeCurrent()>StringToTime("2015.12.20"))
            return 1;
         break;
      case 2016:
         if(StringToTime("2016.1.15")>=TimeCurrent()||TimeCurrent()>StringToTime("2016.12.20"))
            return 1;
         break;
      case 2017:
         if(StringToTime("2017.1.9")>=TimeCurrent()||TimeCurrent()>StringToTime("2017.12.22"))
            return 1;
         break;
      case 2018:
         if(StringToTime("2018.1.10")>=TimeCurrent()||TimeCurrent()>StringToTime("2018.12.23"))
            return 1;
         break;
      case 2019:
         if(StringToTime("2019.1.12")>=TimeCurrent()||TimeCurrent()>StringToTime("2019.12.25"))
            return 1;
         break;
      case 2020:
         if(StringToTime("2020.1.13")>=TimeCurrent()||TimeCurrent()>StringToTime("2020.12.25"))
            return 1;
         break;
      case 2021:
         if(StringToTime("2021.1.14")>=TimeCurrent()||TimeCurrent()>StringToTime("2021.12.20"))
            return 1;
         break;
      case 2022:
         if(StringToTime("2022.1.15")>=TimeCurrent()||TimeCurrent()>StringToTime("2022.12.21"))
            return 1;
         break;
      case 2023:
         if(StringToTime("2023.1.10")>=TimeCurrent()||TimeCurrent()>StringToTime("2023.12.23"))
            return 1;
         break;
      case 2024:
         if(StringToTime("2024.1.11")>=TimeCurrent()||TimeCurrent()>StringToTime("2024.12.23"))
            return 1;
         break;
     }
   return 0;
  }


処理のイメージ
①New_year_holiday()に、年末年始とする日時を指定し、年末年始なら1を返すようにしておく
②if(New_year_holiday() == 0)で、年末年始かどうかの判定を行い、年末年始かどうかに応じて、処理の有無を分けることができる


MQL5コード一覧はコチラ


この記事が気に入ったらサポートをしてみませんか?