TimeGMT関数の働き・役割
TimeGMT関数は、グリニッジ標準時(GMT)を取得するために使われます。具体的には、端末のローカル時間から夏時間(DST)を考慮してGMT時間を計算してくれます。
これにより、市場がオープンしている時間や経済指標が発表される時間を世界共通の基準で把握することが可能になります。
※GMTについては↓の記事リンクをご参照ください
TimeGMT関数とTimeCurrent関数の違いについて
TimeCurrent関数は端末が接続しているサーバーの最新の時間(サーバータイム)を返しますが、TimeGMT関数はグリニッジ標準時(GMT)を返します。
つまり、TimeCurrent関数はトレードサーバー(=FXブローカーのサーバー)に依存するのに対し、TimeGMT関数はGMTに基づく固定された基準時間を提供します。
TimeGMT関数の引数について
//パラメータなしでの呼び出し
datetime TimeGMT();
//パラメータありでの呼び出し
datetime TimeGMT(
MqlDateTime& dt_struct // 構造体型の変数
);
TimeGMT関数は引数を必要としないシンプルな関数ですが、オーバーロードされたバージョンでは、MqlDateTime構造体のインスタンスを引数(参照渡し)として取ることもできます。
このパラメータ有りのバージョンを使用すると、取得した時間情報を直接MqlDateTime構造体型のインスタンスに格納する事ができます。
※オーバーロードについての詳細は↓の記事をご参照ください
※MqlDateTime構造体についての詳細は↓の記事をご参照ください
※参照渡しについての詳細は↓の記事をご参照ください
※インスタンスについての詳細は↓の記事をご参照ください
TimeGMT関数の戻り値について
TimeGMT関数の戻り値は取得した現在のサーバー日時情報になります。
MqlDateTime構造体を引数にとるヴァージョンの場合、引数に記述したMqlDateTime構造体型インスタンスに格納されている各メンバの値も更新されます
TimeGMT関数を使う際の注意点
TimeGMT関数を使う際は、高精度のタイマーを必要とする場合には適していないことに注意が必要です。
ミリ秒単位での精度が必要な場合は、GetTickCount関数を使用することを検討してください。
※GetTickCount関数については↓の記事をご参照ください
また、ストラテジーテスターを使ってのバックテスト中にはTimeGMT関数はTimeTradeServer関数と同じ値を返すことに注意してください。
TimeGMT関数を使ったサンプルコード
以下は、TimeGMT関数を使用してGMT時間を取得し、それをローカル時間とサーバー時間と比較するサンプルコードです。
// TimeGMT関数を使用してGMT時間を取得
datetime gmtTime = TimeGMT();
// ローカル時間を取得
datetime localTime = TimeLocal();
// サーバー時間を取得
datetime serverTime = TimeCurrent();
// GMT時間、ローカル時間、サーバー時間を表示
Print("GMT時間: ", TimeToString(gmtTime, TIME_DATE|TIME_MINUTES));
Print("ローカル時間: ", TimeToString(localTime, TIME_DATE|TIME_MINUTES));
Print("サーバー時間: ", TimeToString(serverTime, TIME_DATE|TIME_MINUTES));
ローカル時間の取得にはTimeLocal関数を使います
サーバー時間の取得にはTimeCurrent関数を使います
ログ出力にあたって、Print関数の第2引数に記述されている関数はTimeToString関数です。
第1引数に記述したdatetime型の値を文字列型に型変換してくれる関数です。
※TimeToString関数の詳細は↓の記事をご参照ください
<参照>
TimeCurrent関数/TimeLocal関数/TimeToString関数/UNIXタイム/タイムスタンプ/datetime型/iTime関数/StringToTime関数/ENUM_TIMEFRAMES/TimeToStruct関数/GetTickCount関数/MqlDateTime構造体/GetTickCount関数/TimeDaylightSavings関数/夏時間/TimeGMTOffset関数/ローカル時間/サーバー時間
————————————————————————————–
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。