(‘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関連する関数
MORNING BRIEF平日 毎朝7時までに更新
今日はどこを見ればいいか。
ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。
朝刊を見る→9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし