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

【MQL5】EventSetTimer関数について

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

EventSetTimer関数の働き・役割

EventSetTimer関数は、特定の秒数ごとにタイマーイベントを生成するようMetaTrader5クライアント端末に指示します。

タイマーイベントとは?

タイマーイベントとは、プログラムが定期的に特定の時間間隔で動作を行うために発生するイベントのことです。

タイマーイベントを利用することで、エキスパートアドバイザーインジケータなどのMQL5プログラムが、予定された時間ごとに自動的に特定のコードを実行できるようになります。

例えば、毎秒または数ミリ秒ごとに市場データを分析する処理を行うことができます。

EventSetTimer関数は、エキスパートアドバイザーインジケータが定期的に特定の動作を行うために使用される関数であり、イベントハンドラーであるOnTimer関数を利用する際に必ず用いられるものとなります。

スポンサーリンク

EventSetTimer関数の引数について

EventSetTimer関数は単一の引数を取ります。この引数タイマーイベントが発生する頻度を秒単位で指定します。従ってデータ型int型です。

スポンサーリンク

EventSetTimer関数の戻り値について

EventSetTimer関数は成功した場合にtrueを、失敗した場合にはfalseを返します。

従って戻り値データ型bool型です。

エラーが発生した場合、GetLastError関数を使用してエラーコードを取得できます。

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

スポンサーリンク

EventSetTimer関数を使う際の注意点

EventSetTimer関数は通常、OnInit関数またはクラスコンストラクタ内で呼び出されます。

EventSetTimer関数が通常、OnInit関数またはクラスのコンストラクタ内で呼び出される理由

EventSetTimer関数が通常、OnInit関数またはクラスコンストラクタ内で呼び出される理由は、これらの部分がプログラムの初期化段階で実行されるためです。

OnInit関数エキスパートアドバイザーカスタムインジケ-タがチャートに読み込まれたとき、またはMT5が起動する時に自動的に呼び出されます。

OnInit関数内でEventSetTimer関数を呼び出すことで、必要なタイマーがプログラムの生存期間全体で活動することが保証されます。

タイマーを設定することは、定期的な操作や監視を自動化する基本的なステップであり、これを最初に設定することはプログラムの構造上、理にかなっているという訳です。

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

また、クラスコンストラクタインスタンスが生成される時に自動的に実行されるため、タイマーを設定することが適切です。これにより、そのインスタンスが活動を開始すると同時に必要なタイマーも設定されます。

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

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

記事冒頭にも書きましたが、タイマーイベントを処理するためには、イベントハンドラーであるOnTimer関数が必要です。

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

また、各プログラムは一つのタイマーのみを持つことができ、そのタイマーはプログラムが終了する際に、明示的に停止させなければ強制的に破棄されます。

※ここでいう「タイマー」とは、特定の時間間隔ごとにイベントを発生させるために設定される機能の事を指します。

※タイマーの明示的な破棄を行うにあたってはEventKillTimer関数を用います。

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

スポンサーリンク

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

// OnInit関数でタイマーを1分間隔で設定します
int OnInit() {
    Comment("");  // コメントをクリア
    EventSetTimer(60);  // 60秒ごとにタイマーイベントを生成
    return(INIT_SUCCEEDED);
}

// OnTimer関数でタイマーイベントが発生するたびに呼ばれます
void OnTimer() {
    datetime serverTime = TimeCurrent();  // サーバーの現在時刻を取得

    // サーバー時刻をコンソールに出力
    Print("サーバーの現在時刻: ", TimeToString(serverTime, TIME_DATE|TIME_MINUTES));
}

// ファイルがチャートから削除される時に実行される関数
void OnDeinit(const int reason) {
    EventKillTimer();  // タイマーを停止します

    // チャートから削除されたことをユーザーに通知
    if (reason == REASON_REMOVE) {
        Comment("このエキスパートアドバイザーはチャートから削除されました。");
    }
}

上記のサンプルコードでは、OnInit関数でタイマーを設定し、OnTimer関数で現在のサーバー時刻を計算し表示する方法を示しています。この例では60秒ごとにタイマーイベントが発生します。

スポンサーリンク

サンプルコードに使われた関数や文法要素の解説

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

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

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

EventKillTimer関数タイマーイベントを停止する関数です。

Comment関数:チャートの左上にテキストを表示するために使用します。この例では、エキスパートアドバイザーがチャートから削除されたときにメッセージを表示しています。

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

<参照>

EventSetMillisecondTimer関数/OnTimer関数/GetLastError関数/OnInit関数/コンストラクタ/EventKillTimer関数/TimeCurrent関数/OnDeinit関数

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

<MQL5でEAを作ろう講座>

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

【言語基礎編】

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

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

関連用語リンク集

MQL5FX関連の用語リンク集です。
当サイトでは、元々わからない言葉や概念に出くわしたら、すぐその言葉に立ち戻れるよう、かなり細かく内部リンクを張り巡らせており、多様な用語を網羅しています。

興味のある内容に直接アクセスし、疑問の解決にお役立ていただければと思います。

スポンサーリンク
MQL5リファレンス
スポンサーリンク
シェアする
エムキューエルをフォローする
スポンサーリンク
【超入門】MQL5 でEAを作ろうブログ
タイトルとURLをコピーしました