MT4 で時間の差を計算する

これは何か

  • MQL4 で、ある時間とある時間の差がどれくらいなのか、が知りたい。
    • 例えば、2017-01-07 12:00:002017-01-07 12:10:00 の差は 10 分、みたいな。

どうするか

普通に引き算すれば良い。

datetime は内部的には unix 時間(1970-01-01 00:00:00 からの経過秒)なので、引き算することで秒数が算出できる。

なお、int にしないと、秒数に変換されない罠があるので注意。

datetime datetime1 = D'2017.01.01 12:00:00';
datetime datetime2 = D'2017.01.01 12:10:01';

int diff = datetime2 - datetime1;

Print("diff = " + diff + " seconds.");
Print("diff = " + diff / 60 + " minutes."); // 分に変換
Print("datetime2 - datetime1 = " + (datetime2 - datetime1)); // int に代入せずにそのまま出力

結果

2017.01.06 17:28:25.293	Script test AUDJPYpro,M5: removed
2017.01.06 17:28:25.293	test AUDJPYpro,M5: uninit reason 0
2017.01.06 17:28:25.293	test AUDJPYpro,M5: datetime2 - datetime1 = 1970.01.01 00:00:00
2017.01.06 17:28:25.293	test AUDJPYpro,M5: diff = 10 minutes.
2017.01.06 17:28:25.293	test AUDJPYpro,M5: diff = 601 seconds.
5: initialized

参考

How to remove week end times when subtracting (datetime) in MQL4 - Stack Overflow

シェアする コメント
comments powered by Disqus