再読込みするかTime何たら関数を使えば回避できる
MQL4のバグ?らしき現象を発見しました。
インジケーターの初回読込時、Year関数をはじめとする日付関数の値を正しく取得できません。
サンプルコードは以下の通りです。
02 | Comment( " TimeYear = " , TimeYear(TimeCurrent()), " Year = " , Year(), "\n" , |
03 | " TimeMonth = " , TimeMonth(TimeCurrent()), " Month = " , Month(), "\n" , |
04 | " TimeDay = " , TimeDay(TimeCurrent()), " Day = " , Day(), "\n" , |
05 | " TimeHour = " , TimeHour(TimeCurrent()), " Hour = " , Hour(), "\n" , |
06 | " TimeMinute = " , TimeMinute(TimeCurrent()), " Minute = " , Minute(), "\n" , |
07 | " TimeSeconds = " , TimeSeconds(TimeCurrent()), " Seconds = " , Seconds()); |
09 | return (INIT_SUCCEEDED); |
上記を実行すると、datetime型の初期値である1970/1/1 0:00:00がそれぞれ返ってきていることが分かります。

比較のために、TimeYear関数をはじめとするTime何たら関数を掲載しています。こちらは問題ありませんね。
この現象は、時間足を切り替えたり、通貨ペアを切り替えたり、パラメーターを読み込み直すなど、再読み込みすれば正しい値を返すようになります。

この現象、EAでは起きませんでした。
FX業者の問題かとも思ったのですが、他のFX業者のMT4でも再現しました。ということは製品上の問題な気がします。
仕方がないので、Time何たら関数をしばらく使うようにします。