MQL4MQL5 日時
TimeCurrent()
- できること
- サーバー時刻(最後に受信したティックの時刻)を取得する
- 対応
- MQL4・MQL5
TimeCurrent() とは
取引サーバーの時刻(正確には、最後に受信したティックの時刻)を返す関数です。EA で「何時から何時まで取引する」といった時間帯の判定に使います。バックテストでは、テスト中の時刻が返ります。
TimeCurrent() の書式と引数
引数の組み合わせが違う 2 通りの書き方があります。
datetime TimeCurrent()
datetime TimeCurrent(MqlDateTime &dt_struct)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
dt_struct | MqlDateTime & | 必須 | 2つ目の書き方で、年・月・日・時・分・秒・曜日を受け取る MqlDateTime 構造体。 |
戻り値
サーバー時刻(datetime 型。1970年1月1日からの秒数)。
TimeCurrent() の使い方(コード例)
MQL4・MQL5 共通
// サーバー時刻で 9時〜20時 だけ取引する
MqlDateTime t;
TimeCurrent(t);
bool tradeTime = (t.hour >= 9 && t.hour < 20);
Print(TimeToString(TimeCurrent(), TIME_DATE | TIME_SECONDS), " 取引時間:", tradeTime ? "はい" : "いいえ");OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
TimeCurrent() の注意点
- サーバー時刻はブローカーごとに違い、日本時間とは多くの場合 6〜7 時間ずれています(夏時間で変わります)。
- 週末などティックが来ない間は、最後のティックの時刻のまま進みません。
TimeCurrent() を使う逆引きレシピ
- 一定時間たったポジションを決済したい現在のサーバー時刻 TimeCurrent() から約定時刻を引いて保有時間(秒)を求め、上限を超えたら決済します。
- 取引する時間帯を限定したいTimeCurrent(構造体) でサーバー時刻の「時」を取り出し、開始時〜終了時の範囲内かを判定します。日付をまたぐ時間帯にも対応させます。
- 金曜日の指定時刻にポジションを決済したい(週末持ち越しを避けたい)サーバー時刻の曜日(day_of_week が 5)と時刻を判定し、指定時刻を過ぎたら全決済し、新規注文も止めます。
- 日本時間で時刻を判定したいTimeGMT() に 9 時間を足すと日本時間になります。ただしバックテストでは使えないため、サーバー時刻との時差を入力して使う方法もあります。
- EA に有効期限を付けたい期限の日時を D'2026.12.31 23:59' のように書いておき、TimeCurrent() が期限を過ぎていたら動かないようにします。












