【MQL5】TimeCurrent関数について

MQL5リファレンス

【広告↓】

スポンサーリンク

TimeCurrent関数の働き・役割

TimeCurrent関数は、最も最近のサーバー時間を取得するために使用されます。

※「サーバー時間」とは、MT5を提供している取引サーバーの時刻のことです。これは、FXやCFDなどの金融商品の取引を提供するブローカーのサーバーに同期されている時間で、全世界のトレーダーが統一された基準の時間を使用して取引できるようになっています。

具体的には、MT5の「気配値表示」ウィンドウで選択したシンボルの最新の相場受信時刻を取得するために使われます。

TimeCurrent関数を使う事により、リアルタイムの価格データを取得して、戦略を立てたり、トレードを実行したりする際に、現在の正確な時刻を基にすることができます。

※トレーダーの端末のローカル時間を返すTimeLocal関数という関数もあります。

TimeLocal関数については↓の記事をご参照ください

TimeCurrent関数の引数について

TimeCurrent関数引数を必要としないシンプルな関数ですが、オーバーロードされたバージョンでは、MqlDateTime構造体インスタンス引数(参照渡し)として取ることもできます。

このバージョンを使用すると、取得した時間情報を直接MqlDateTime構造体型のインスタンスに格納する事ができます。

オーバーロードについての詳細は↓の記事をご参照ください

MqlDateTime構造体についての詳細は↓の記事をご参照ください

参照渡しについての詳細は↓の記事をご参照ください

インスタンスについての詳細は↓の記事をご参照ください

TimeCurrent関数の戻り値について

TimeCurrent関数戻り値は取得した現在のサーバー日時情報になります。

必然的にデータ型dateTime型となります。

MqlDateTime構造体引数にとるヴァージョンの場合、引数に記述したMqlDateTime構造体インスタンスに格納されている各メンバの値も更新されます

TimeCurrent関数を使う際の注意点

TimeCurrent関数は、コンピューターのシステム時刻ではなく、サーバーの時刻を基にしているため、自分のコンピューターの時刻がズレていても、正確な取引時間を取得できる信頼性があります。

ただし、高解像度のタイムカウントが必要な場合は、ミリ秒単位の値を生成するGetTickCount関数を使用する必要があります。

また、ストラテジーテスターでのバックテスト中には、過去のデータに基づいて時間がシミュレートされるため、リアルタイムではありません。

TimeCurrent関数を使ったサンプルコード

以下はTimeCurrent関数を使用したサンプルコードです。

TimeCurrent関数を利用して、現在のサーバー時間を取得し、その情報をMqlDateTime構造体の各メンバに振り分け、その後振り分けた各メンバのデータをPrint関数で出力される・・・という挙動になっています。

void OnStart() 
{
  // 'TimeCurrent()' 関数を使用して現在のサーバー時間を取得
  datetime current_time = TimeCurrent(); 

  // 'MqlDateTime' 構造体の変数を宣言
  MqlDateTime mt_time;

  // 'TimeToStruct()' 関数を使用して 'datetime' 型の 'current_time' を
  // 'MqlDateTime' 型の 'mt_time' 構造体に変換
  // これにより年月日時分秒などの個別の情報に分けることができる
  TimeToStruct(current_time, mt_time); 

  // 分解した年月日時分秒などの情報を 'Print()' 関数で出力
  Print("Year: ", mt_time.year);            // 現在の年
  Print("Month: ", mt_time.mon);            // 現在の月
  Print("Day: ", mt_time.day);              // 現在の日
  Print("Hour: ", mt_time.hour);            // 現在の時間(時)
  Print("Minute: ", mt_time.min);           // 現在の時間(分)
  Print("Second: ", mt_time.sec);           // 現在の時間(秒)
  // 'day_of_week' は曜日を整数で表し、日曜日が0、月曜日が1...となる
  Print("Day of the Week: ", mt_time.day_of_week); 
  // 'day_of_year' は年始からの経過日数を表す
  Print("Day of the Year: ", mt_time.day_of_year);
}

<参照>

TimeLocal関数/TimeToString関数/タイムゾーン/UNIXタイム/タイムスタンプ/datetime型/iTime関数/StringToTime関数/ENUM_TIMEFRAMES/TimeToStruct関数/GetTickCount関数/MqlDateTime構造体/TimeGMT関数/TimeDaylightSavings関数/ローカル時間/サーバー時間

————————————————————————————–

※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる

<MQL5でEAを作ろう講座>

をメインコンテンツとして展開しています。

【言語基礎編】

【中級実際にEAを作ろう編】

【発展編・MT5用EAを作る工程をカスタマイズしていく】

第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。

【広告↓】

タイトルとURLをコピーしました