【MT4】EAの仕組みを初心者向けに解説|OnInit・OnDeinit・OnTickの役割と処理の流れ

スーツ姿のデグーマウスがMT4 EAのコードを指しながら解説しているイラスト。ぷろぐらむFXのデフォルトアイキャッチ。
EAを自作してみよう
スポンサーリンク

MT4のEA(エキスパートアドバイザー)は、 OnInit・OnDeinit・OnTickという関数を使って動作しています。

MT4のEAプログラムって、最初は難しそうに見えますよね。
でも実は、「リーダー」と「作業員」の関係に例えると、 とてもわかりやすく理解できます。

今回は初心者の方に向けて、 MT4のEAで使われる「OnInit()」「OnDeinit()」「OnTick()」の役割と動きを、 リーダーと作業員のストーリーで解説していきます。


EAは「リーダー」、各関数は「作業員」の関係

イメージしてください。EAは会社の「リーダー」です。

  • リーダーは指示を出すだけで、自分で作業はしません。
  • 実際の仕事をするのは「int OnInit()」「int OnDeinit()」「OnTick()」という3人の作業員たちです。

作業員たちは、依頼が来るまでじっと待っています。
リーダーが「仕事してね!」と依頼すると、作業員は作業を始めて、終わると結果を報告します。

MT4のEAの仕組みをリーダーと作業員に例えた図。EA本体が指示を出し、OnInit・OnDeinit・OnTickが処理を担当する関係を表している

この関係性が、MT4のEAプログラムの基本的な動きです。


EAの初期化担当「int OnInit()」の役割と動き

まずは「int OnInit()」作業員。

  • EAが起動したときに一番最初に呼ばれ、準備や初期化を担当します。
  • リーダーから「準備して!」と依頼が来ると作業開始。
  • 作業が終わると、「正常に終わったよ!」とリーダーに報告します。

プログラム上では、これが

return(INIT_SUCCEEDED);

という部分です。
もし問題があったら、ここは

return(INIT_FAILED);

となります。

リーダーはこの報告を受けて、問題がなければ次の作業へ進みます。

MT4のEAでOnInit関数が呼ばれるタイミングを示した図。EA起動時に一度だけ初期化処理が実行される流れを解説
  • EA起動時に一度だけ呼ばれる準備担当。
  • 作業が終わると「return(INIT_SUCCEEDED);」でリーダーに正常終了を報告。
  • 問題があった場合は「return(INIT_FAILED);」を返します。

※初心者はここでつまずきやすいですが、「必ず正常終了をリーダーに伝える」ことが大切なポイントです。


EAの終了担当「int OnDeinit()」の役割

次は「int OnDeinit()」作業員。

  • 例えるなら「閉会式」のような役割で、きちんと終わらせるための最後の一手ですね。
  • EAが終了するときに呼ばれて、終了処理を担当します。
  • 初期化担当と同じく、依頼が来ると作業しますが、基本的には何もしないことも多いです。

EAのメイン処理「OnTick()」の働き方

そしてメインは「OnTick()」作業員です。

  • 「OnTick()」作業員は値動きがあるたびに忙しく動き回り、ロング・ショートの判断やチャートの状況チェックを行います。
  • この作業員は、チャートに値動きがあるたびにリーダーから作業依頼が来ます。
  • 例えば、ドル円が109.940から109.941に動いたら、リーダーは「OnTick()」に「今のチャート状況を確認して、エントリーや決済をしてね!」と指示を出します。
MT4のEAにおけるOnTick関数の動作イメージ。価格が更新されるたびに売買判断や処理が実行される流れを示している

この作業員は値動きがあるたびに忙しく動き回り、ロング・ショートの判断をしたりチャートの状況をチェックしたりします。


頻繁な値動きでも安心!作業の管理はリーダーにおまかせ

「でも、値動きが頻繁に起きたら『OnTick()』作業員はパンクしないの?」と心配になるかもしれません。

実は、MT4のリーダーはそこをしっかり管理しています。

  • 「OnTick()」がまだ作業中のときは、新しい作業依頼は出しません。
  • つまり、作業員が過労で倒れることはありません。
  • 作業が終わったら次の依頼が来るので、安心して着実に処理が進みます。

このように、リーダーと作業員の連携プレーでEAは効率よく動いています。


❓ MT4 EAの仕組みに関するよくある質問【初心者向けQ&A】

💬 OnInit・OnDeinit・OnTickの役割やEAの動きについて、初心者からよくある疑問をまとめました。

MT4のEAはどの関数から動き始めるのですか?

EAはまず OnInit() から動き始めます。
OnInit() はEA起動時に一度だけ呼ばれる初期化処理で、
設定の準備やチェックを行い、問題がなければ処理を開始します。

OnInit()でreturn(INIT_SUCCEEDED)を書く理由は何ですか?

OnInit()の戻り値は「初期化が正常に終わったかどうか」をMT4に伝えるためのものです。
return(INIT_SUCCEEDED) を返すことで、
「EAは問題なく動作可能」とリーダー(MT4)に報告します。

OnTick()はどんなタイミングで実行されますか?

OnTick() は価格が動いたとき(ティックが発生したとき)に実行されます。
チャートに値動きがあるたびに呼ばれ、売買判断や条件チェックを行います。

OnTick()が連続で呼ばれて処理が重くなることはありませんか?

MT4はOnTick()の処理が終わるまで、次のOnTick()を呼びません。
そのため、処理が重なって暴走することはなく、
作業は必ず1つずつ順番に実行されます。

OnDeinit()はどんなときに使う関数ですか?

OnDeinit() はEAが停止・削除・再読み込みされるときに呼ばれます。
主に後片付けやログ出力、オブジェクト削除など、
EAを安全に終了させるための処理を行います。

EAの処理の流れを一言で言うとどうなりますか?

「起動時にOnInit()で準備し、
値動きのたびにOnTick()で判断し、
終了時にOnDeinit()で後片付けする」
という流れです。

まとめ:リーダーと作業員のチームワークを理解してEAの仕組みをつかもう!

  • EAは「リーダー」、作業をするのは「int OnInit()」「int OnDeinit()」「OnTick()」という作業員たち
  • リーダーは一つずつ順番に仕事を頼み、作業員は依頼があるまで待機
  • 「int OnInit()」はEA起動時の準備担当、「int OnDeinit()」は終了時の後片付け担当
  • 「OnTick()」はチャートの値動きに合わせて常に働くメイン作業員
  • 頻繁な作業依頼でもリーダーが作業の順序を管理してくれるので問題なし

このチームワークのイメージを持つことで、EAプログラムの流れがとても理解しやすくなります。

プログラミング初心者の方も、まずはこの基本を押さえて一歩ずつステップアップしていきましょう!

EAの仕組みが理解できたら、次は 「実際にEAがどのように売買判断をするのか」 を見てみるのがおすすめです。

コメント

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