ホーム » MQL5リファレンス » 【MQL5】GetTickCount関数について
a

【MQL5】GetTickCount関数について

MQL5リファレンス
スポンサーリンク

GetTickCount関数の働き・役割

【広告↓】

GetTickCount関数は、システムが起動してからの経過時間をミリ秒単位(1/1000秒)で返す関数です。

GetTickCount関数はシステムのパフォーマンス計測やタイミングの取得に有用で、プログラムがどれくらいの時間を要したかを計測するのによく使用されます。

スポンサーリンク

GetTickCount関数の引数について

GetTickCount関数引数を取らないため、特に指定する必要はありません。

スポンサーリンク

GetTickCount関数の戻り値について

戻り値uint型で、システムが起動してからの経過時間をミリ秒単位で表します。

スポンサーリンク

GetTickCount関数を使う際の注意点

GetTickCount関数は、システムタイマーの精度に依存するため、最も正確な時間を保証するものではないことに注意が必要です。

また、戻り値は符号なし整数(=uint型)であるため、最大値に制限があり、この最大値に達すると0に戻ります。

49.7日はその最大値に達する時間で、この時間が経過するとカウンターはリセットされ、再び0からカウントを開始します。

この現象をオーバーフローと言い、このため49.7日を超える時間測定にはGetTickCount関数は使用できません。

短期間の測定には有用ですが、長期間正確な時間を測定する場合は、別の方法を検討する必要があります。

スポンサーリンク

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

以下のサンプルコードは、40個のフィボナッチ数を計算するのにかかる時間をミリ秒単位で計測しています。

#define MAX_SIZE 40 // 定数MAX_SIZEを定義し、計算するフィボナッチ数列の数を40とする

// 40フィボナッチ数の計算時間を測定するスクリプト
void OnStart() {
  uint start = GetTickCount(); // GetTickCount関数を使用して、計算開始の現在時刻をミリ秒で取得
  long fib = 0; // フィボナッチ数を格納するための変数を宣言し、0で初期化

  // フィボナッチ数列を計算するループ処理
  for (int i = 0; i < MAX_SIZE; i++) {
    fib = TestFibo(i); // TestFibo関数を呼び出して、i番目のフィボナッチ数を計算し、変数fibに格納
  }

  uint time = GetTickCount() - start; // 終了時間の現在時刻を取得し、開始時刻からの差分(経過時間)を計算

  // 計測した経過時間をエキスパート操作ログに出力
  PrintFormat("Calculating %d first Fibonacci numbers took %d ms", MAX_SIZE, time);
}

// フィボナッチ数をシリアル番号で取得する関数
long TestFibo(long n) {
  if (n < 2) return (1); // 引数nが2未満の場合は1を返す(フィボナッチ数列の最初の二項は1)

  // 再帰を用いてフィボナッチ数を計算
  return (TestFibo(n - 2) + TestFibo(n - 1)); // n番目のフィボナッチ数は(n-2)番目と(n-1)番目のフィボナッチ数の和
}

サンプルコードの文法要素解説:

  • #define: プリプロセッサディレクティブで、定数を定義する際に使用します。ここではMAX_SIZEという名前の定数40として定義しています。

define命令についての詳細は↓の記事をご参照ください

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

  • PrintFormat: フォーマット指定された形式でデータを出力する関数です。ここでは経過時間を表示しています。
  • TestFibo: フィボナッチ数を計算するためのオリジナルな再帰関数です。再帰関数とは、関数が自分自身を呼び出すことを指します。この場合、フィボナッチ数列の定義に従って計算を行っています。

<参照>

TimeToString関数/UNIXタイム/タイムスタンプdatetime型/iTime関数/StringToTime関数/ENUM_TIMEFRAMES/TimeToStruct関数/TimeCurrent関数/TimeLocal関数

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

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

<MQL5でEAを作ろう講座>

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

【言語基礎編】

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

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

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

【広告↓】

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