インジケーターの初回読込時にYear()等の日付関数の値を正しく取得できない

再読込みするかTime何たら関数を使えば回避できる

MQL4のバグ?らしき現象を発見しました。

インジケーターの初回読込時、Year関数をはじめとする日付関数の値を正しく取得できません。

サンプルコードは以下の通りです。

int OnInit() {
  Comment(" TimeYear = ", TimeYear(TimeCurrent()),   " Year = ", Year(), "\n",  
          " TimeMonth = ", TimeMonth(TimeCurrent()), " Month = ", Month(), "\n", 
          " TimeDay = ", TimeDay(TimeCurrent()), " Day = ", Day(), "\n", 
          " TimeHour = ", TimeHour(TimeCurrent()), " Hour = ", Hour(), "\n", 
          " TimeMinute = ", TimeMinute(TimeCurrent()), " Minute = ", Minute(), "\n", 
          " TimeSeconds = ", TimeSeconds(TimeCurrent()), " Seconds = ", Seconds());

  return(INIT_SUCCEEDED);
}

上記を実行すると、datetime型の初期値である1970/1/1 0:00:00がそれぞれ返ってきていることが分かります。

Year関数のバグ?

比較のために、TimeYear関数をはじめとするTime何たら関数を掲載しています。こちらは問題ありませんね。

この現象は、時間足を切り替えたり、通貨ペアを切り替えたり、パラメーターを読み込み直すなど、再読み込みすれば正しい値を返すようになります。

この現象、EAでは起きませんでした。

FX業者の問題かとも思ったのですが、他のFX業者のMT4でも再現しました。ということは製品上の問題な気がします。

仕方がないので、Time何たら関数をしばらく使うようにします。

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG