MT4のEA(エキスパートアドバイザー)プログラムって、最初は難しそうに見えますよね。
でも実は、「リーダー」と「作業員」の関係に例えると、とてもわかりやすく理解できます。
今回は初心者の方に向けて、MT4のEAで使われる「int OnInit()」「int OnDeinit()」「OnTick()」という作業員たちの動きを、リーダーと作業員のストーリーで解説していきます。
EAは「リーダー」、各関数は「作業員」の関係
イメージしてください。EAは会社の「リーダー」です。
- リーダーは指示を出すだけで、自分で作業はしません。
- 実際の仕事をするのは「int OnInit()」「int OnDeinit()」「OnTick()」という3人の作業員たちです。
作業員たちは、依頼が来るまでじっと待っています。
リーダーが「仕事してね!」と依頼すると、作業員は作業を始めて、終わると結果を報告します。

この関係性が、MT4のEAプログラムの基本的な動きです。
初期化担当「int OnInit()」の役割と動き
まずは「int OnInit()」作業員。
- EAが起動したときに一番最初に呼ばれ、準備や初期化を担当します。
- リーダーから「準備して!」と依頼が来ると作業開始。
- 作業が終わると、「正常に終わったよ!」とリーダーに報告します。
プログラム上では、これが
return(INIT_SUCCEEDED);
という部分です。
もし問題があったら、ここは
return(INIT_FAILED);
となります。
リーダーはこの報告を受けて、問題がなければ次の作業へ進みます。

- EA起動時に一度だけ呼ばれる準備担当。
- 作業が終わると「return(INIT_SUCCEEDED);」でリーダーに正常終了を報告。
- 問題があった場合は「return(INIT_FAILED);」を返します。
※初心者はここでつまずきやすいですが、「必ず正常終了をリーダーに伝える」ことが大切なポイントです。
終了担当「int OnDeinit()」の役割
次は「int OnDeinit()」作業員。
- 例えるなら「閉会式」のような役割で、きちんと終わらせるための最後の一手ですね。
- EAが終了するときに呼ばれて、終了処理を担当します。
- 初期化担当と同じく、依頼が来ると作業しますが、基本的には何もしないことも多いです。
メイン作業員「OnTick()」の働き方
そしてメインは「OnTick()」作業員です。
- 「OnTick()」作業員は値動きがあるたびに忙しく動き回り、ロング・ショートの判断やチャートの状況チェックを行います。
- この作業員は、チャートに値動きがあるたびにリーダーから作業依頼が来ます。
- 例えば、ドル円が109.940から109.941に動いたら、リーダーは「OnTick()」に「今のチャート状況を確認して、エントリーや決済をしてね!」と指示を出します。

この作業員は値動きがあるたびに忙しく動き回り、ロング・ショートの判断をしたりチャートの状況をチェックしたりします。
頻繁な値動きでも安心!作業の管理はリーダーにおまかせ
「でも、値動きが頻繁に起きたら『OnTick()』作業員はパンクしないの?」と心配になるかもしれません。
実は、MT4のリーダーはそこをしっかり管理しています。
- 「OnTick()」がまだ作業中のときは、新しい作業依頼は出しません。
- つまり、作業員が過労で倒れることはありません。
- 作業が終わったら次の依頼が来るので、安心して着実に処理が進みます。
このように、リーダーと作業員の連携プレーでEAは効率よく動いています。
まとめ:リーダーと作業員のチームワークを理解してEAの仕組みをつかもう!
- EAは「リーダー」、作業をするのは「int OnInit()」「int OnDeinit()」「OnTick()」という作業員たち
- リーダーは一つずつ順番に仕事を頼み、作業員は依頼があるまで待機
- 「int OnInit()」はEA起動時の準備担当、「int OnDeinit()」は終了時の後片付け担当
- 「OnTick()」はチャートの値動きに合わせて常に働くメイン作業員
- 頻繁な作業依頼でもリーダーが作業の順序を管理してくれるので問題なし
このチームワークのイメージを持つことで、EAプログラムの流れがとても理解しやすくなります。
プログラミング初心者の方も、まずはこの基本を押さえて一歩ずつステップアップしていきましょう!
コメント