MT4でいろんな時間を使い分けるソース公開

MT4(MQL4)でいろんな時間関数や取得方法をまとめたソースを公開しました。

どんな時間を取得できるのか?

取得できる時間の種類には下記の2つ軸があります。

  1. どこから時間を取得するのか
  2. どの単位を時間を取得するのか

「1」にはMT4会社のサーバ時間を取得するのか、MT4を動かしているパソコンのローカル時間を取得するのかの2つがあります。

「2」には秒単位まで取得するのか、秒よりも細かい1000分の1秒単位のTickの時間を取得するのかの2つがあります。さらに粒度を粗くすると「曜日」「日付」「時間(hour)」などを取得することもできます。

なぜいろんな時間の取得方法を使う必要があるのか

時間の活用には「〇秒後に処理をするといった処理の制御」と、「ログに出力して処理時間を確認する」といった使い方が考えられます。
前者は安定したMT4のサーバ時間を使うほうが良いのですが、後者はローカル時間のほうが後から時間を確認しやすいです。
また処理の制御をする際にミリ秒単位で制御したいのか、秒単位で制御したいのか、分単位で制御したいのかによっても取得方法が変わります。

「一度取引をしたから〇秒は取引をしない」「ある処理のあとに〇ミリ秒だけWaitする」「週を跨いだ取引をしないように金曜の〇時以降は取引しない」という制御はよく使われます。

関数とソースの説明

処理の制御やログ出力によく使う時間関数をまとめて記載します。

【結果ログのサンプル】
0 12:36:28.492 kensho USDJPY.oj1m,H1: MT4 ServerTime(YYYY.MM.DD HH:MM)=2019.10.25 06:36
0 12:36:28.492 kensho USDJPY.oj1m,H1: MT4 ServerTime(YYYY.MM.DD)=2019.10.25
0 12:36:28.492 kensho USDJPY.oj1m,H1: MT4 ServerTime(HH:MM)=06:36
0 12:36:28.492 kensho USDJPY.oj1m,H1: MT4 ServerTime(HH:MM:SS)=06:36:28
0 12:36:28.492 kensho USDJPY.oj1m,H1: MT4 ServerTime(sec)=1571985388
0 12:36:28.492 kensho USDJPY.oj1m,H1:
0 12:36:28.492 kensho USDJPY.oj1m,H1: PC LocalTime(YYYY.MM.DD HH:MM)=2019.10.25 12:36
0 12:36:28.492 kensho USDJPY.oj1m,H1: PC LocalTime(YYYY.MM.DD)=2019.10.25
0 12:36:28.492 kensho USDJPY.oj1m,H1: PC LocalTime(HH:MM)=12:36
0 12:36:28.492 kensho USDJPY.oj1m,H1: PC LocalTime(HH:MM:SS)=12:36:28
0 12:36:28.492 kensho USDJPY.oj1m,H1: PC LocalTime(sec)=1572006988
0 12:36:28.492 kensho USDJPY.oj1m,H1:
0 12:36:28.492 kensho USDJPY.oj1m,H1: MT4 ServerTime(msec)=3734040641
0 12:36:28.492 kensho USDJPY.oj1m,H1:
0 12:36:28.492 kensho USDJPY.oj1m,H1: Day of the week=5
0 12:36:28.492 kensho USDJPY.oj1m,H1: Hour=6
補足説明
・GetTickCountで取得する値は、「OS起動からのミリ秒数」です。約50日を経過すると、オーバーフローして0に戻るのでご注意ください。
おすすめの記事