MQL4 CAppDialog 日付と時刻表示

MT4のCAppDialog(パネル)に、サーバー時間・パソコンの時刻・GMT・日付を表示してみます。

記事の後半に、4つをまとめて表示するコピペ用の完成コードも載せています。

[PR]


MQL4の3つの時刻関数

MQL4には時刻を取得する関数が3つあり、それぞれ返す時刻が違います。

関数 表示される時刻 ポイント
TimeCurrent MT4のサーバー時間(チャートの時刻) 最後にレートを受信した時刻。週末は止まる
TimeLocal パソコンの時計の時刻 日本のパソコンなら日本時間
TimeGMT GMT(グリニッジ標準時) パソコンの時刻とタイムゾーン設定から計算

MT4のサーバー時間が日本時間とずれる理由(GMT+2/+3)は、こちらの記事で解説しています。

MT4の時間がGMTそのものでなく+2時間や+3時間(夏時間)というのはどう言うことでしょうか?     結論としては、NewYo...

関数ごとの細かい注意点は、記事後半の「補足:時刻表示の注意点」にまとめました。

TimeCurrent(サーバー時間)

まずはTimeCurrent()で、MT4のサーバー時間をCAppDialogのラベル(CLabel)に表示します。ポイントは次の3つです。

  • TimeToString(…, TIME_SECONDS) で「時:分:秒」の文字列にする
  • EventSetTimer(1) で1秒ごとのタイマーを動かす
  • OnTimer() でラベルの表示を更新する

全体のコードは次のとおりです。EAとして(MQL4\Experts フォルダに)保存・コンパイルして、チャートにセットします。

パネルにサーバー時間が表示されました。

TimeLocal(パソコンの時刻)

上のコードのTimeCurrent()をTimeLocal()に置き換えると、パソコンの時計の時刻が表示されます。日本のパソコンなら日本時間です。

TimeGMT(GMT)

TimeGMT()に置き換えると、GMT(グリニッジ標準時)が表示されます。日本時間より9時間遅い時刻です。

3つを並べて表示すると、次のようになります。

日付を追加する(完成コード)

日付は、TimeToString()の書式を TIME_DATE にすると「2025.03.15」のような形で取得できます。

日付用のラベル(labelDate)を追加して、3つの時刻とあわせて表示する完成コードです。ラベルの作成は共通の関数(CreateLabel)にまとめています。

日付と時刻がパネルに表示されました。

補足:時刻表示の注意点

  • TimeCurrentは「最後にレートを受信した時刻」:サーバー時間ですが、正確には気配値表示の銘柄で最後にティックを受け取った時刻です。週末やレートが動かない時間は止まるので、1秒ごとに更新しても秒が進まないことがあります。
  • サーバー時間はブローカーによって違う:多くの業者はNYクローズ(NY17:00)を日足の区切りにしたGMT+2(米国夏時間中はGMT+3)ですが、業者によって異なります。
  • TimeLocal・TimeGMTはパソコンの設定しだい:どちらもパソコンの時計とタイムゾーン設定をもとにしているため、パソコンの時計がずれていると表示もずれます。
  • 日付を日本の日付で出したいとき:TimeCurrentの日付はサーバー時間基準なので、日本時間の早朝は1日前の日付になります。日本の日付にしたい場合はTimeLocal()を使います。
  • ストラテジーテスターでは時刻が再現値になる:テスター内のTimeCurrentは過去データに沿ってシミュレートされ、TimeGMTもTimeCurrentと同じ値になります。
  • TimeToStringの書式:TIME_DATE=yyyy.mm.dd、TIME_MINUTES=hh:mi、TIME_SECONDS=hh:mi:ss。「TIME_DATE|TIME_SECONDS」のように組み合わせると日付と時刻を1行で表示できます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする