TimeTradeServer

取引サーバの計算された現在時刻を返します。TimeCurrent() と異なり、時間値の計算はクライアント端末で実行されお使いのコンピュータの時刻設定に依存します。この関数には 2 つのバージョンがあります。

パラメータなしでの呼び出し

datetime  TimeTradeServer();

MqlDateTime 型のパラメータとの呼び出し

datetime  TimeTradeServer(
  MqlDateTime&  dt_struct      // 構造体型の変数
  );

パラメータ

dt_struct

[out] MqlDateTime 構造体型の変数

戻り値

datetime 型の値

注意事項

MqlDateTime 構造型の変数がパラメータとして渡された場合は、それに応じて満たされます。

高解像度のカウンターとタイマーを配置するには、ミリ秒単位で値を生成する GetTickCount() 関数を使用します。

ストラテジーテスターのテスト中には TimeTradeServer() は常にシミュレーとされたサーバタイムの TimeCurrent() に等しいです。

例:

void OnStart()
 {
//--- 日付/時刻データを格納するMqlDateTime変数を宣言し、最後の相場の時刻と取引サーバーの推定現在時刻を取得する
  MqlDateTime tm={};
  datetime   time_current=TimeCurrent();                 // 呼び出しの最初の形式:気配値表示ウィンドウ内のいずれかのシンボルの最後の相場の時刻
  datetime   time_server =TimeTradeServer(tm);           // second form of call: estimated current time of the trade server with filling in the MqlDateTime structure
  int         difference  =int(time_current-time_server); // difference between Time Current and Time Trade Server
 
//--- ログ内の埋め込まれたMqlDateTime構造体のデータを使用して、最後の相場の時刻と取引サーバーの推定現在時刻を表示する
  PrintFormat("Time Current: %s\nTime Trade Server: %s\n- Year: %u\n- Month: %02u\n- Day: %02u\n"+
              "- Hour: %02u\n- Min: %02u\n- Sec: %02u\n- Day of Year: %03u\n- Day of Week: %u (%s)\nDifference between Time Current and Time Trade Server: %+d",
              (string)time_current, (string)time_server, tm.year, tm.mon, tm.day, tm.hour, tm.min, tm.sec, tm.day_of_year, tm.day_of_week,
              EnumToString((ENUM_DAY_OF_WEEK)tm.day_of_week), difference);
 /*
  結果:
  Time Current: 2024.04.18 16:10:14
  Time Trade Server: 2024.04.18 16:10:15
  - Year: 2024
  - Month: 04
  - Day: 18
  - Hour: 16
  - Min: 10
  - Sec: 15
  - Day of Year: 108
  - Day of Week: 4 (THURSDAY)
  Difference between Time Current and Time Trade Server: -1
 */
 }