MARKET
MT4ツールを、数字で作る。— Team REI|平日の朝に「相場分析」を更新しています|

OnInit ― チャートに乗った瞬間に呼ばれる、起動時の準備処理|MQL4/MQL5リファレンス

MQLリファレンス›関数イベントハンドラOnInit
(‘both’, ‘MQL4 / MQL5 両対応’)イベントハンドラ起動時の準備

OnInitチャートに乗った瞬間に呼ばれる、起動時の準備処理

EA・インジケーターがチャートに乗った瞬間に、最初の1回だけ呼ばれる。パラメータの検証・タイマーの開始・指標ハンドルの取得など、動き出す前の準備をここに書く。

1書式

int OnInit();

書式はMQL4・MQL5で同じ。戻り値の意味が重要(下記)。

2引数

無し。

3戻り値

INIT_SUCCEEDEDを返すとそのまま動き出す。それ以外(INIT_FAILED・INIT_PARAMETERS_INCORRECT等)を返すと、EA・インジケーターはチャートに乗らずすぐ外れる。パラメータが不正なときなどに使う。

4使用例

extern int MagicNumber = 12345;

int OnInit()
{
   if(MagicNumber <= 0)
   {
      Print("MagicNumberは1以上にしてください");
      return(INIT_PARAMETERS_INCORRECT);
   }
   EventSetTimer(60);
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) { EventKillTimer(); }
void OnTick() {}

MetaEditorでコンパイル0エラー・0警告を確認済み。

5MQL4→MQL5の違い

🔁 差分

MQL5にはさらにINIT_AGENT_NOT_SUITABLE(クラウドネットワークでの最適化時、そのエージェントの環境が合わないという意味)など、MQL4に無い戻り値定数がいくつかある。実チャートでの動作にはほぼ関係なく、最適化まわりの細かな違い。

6よくある罠

⚠ 実務で踏んだもの
  • 重い処理(大量のファイル読み込み・WebRequest等)をOnInitに書くと、チャートに乗せた瞬間の動作が固まったように見える。時間のかかる処理はOnTimerに逃がすことを検討する。
  • OnInitは、パラメータ(外部変数)を変更したときにも呼び直される。初回起動と区別しないと、変更のたびに前回の状態が消えてしまうことがある。

7関連する関数

REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。