
MQL4MQL5 イベント関数
OnTick()
- できること
- 新しいティック(価格の更新)を受信するたびに呼ばれる
- 対応
- MQL4・MQL5
OnTick() とは
EA で、チャートの通貨ペアの価格が更新される(ティックを受信する)たびに呼ばれる関数です。売買条件の判定、注文、決済、トレーリングストップなど、EA のメインの処理を書きます。
OnTick() の書式と引数
void OnTick()引数はありません。
戻り値
なし
OnTick() の使い方(コード例)
MQL4・MQL5 共通
datetime lastBar = 0;
int OnInit()
{
return INIT_SUCCEEDED;
}
void OnTick()
{
// 新しい足ができたときだけ処理する
datetime t = iTime(_Symbol, PERIOD_CURRENT, 0);
if(t == lastBar)
return;
lastBar = t;
double close1 = iClose(_Symbol, PERIOD_CURRENT, 1); // 確定した1本前の終値
Print("新しい足:", TimeToString(t), " 前の足の終値=", close1);
}MetaEditor でコンパイルできることを確認済みです。
OnTick() の注意点
- OnTick() が呼ばれるのは EA だけです。インジケーターでは OnCalculate()、スクリプトでは OnStart() を使います。
- 価格が動かない時間(週末・早朝など)は呼ばれません。一定時間ごとに処理したいときは EventSetTimer() と OnTimer() を使います。
- OnTick() の処理中に届いたティックはたまっていかず、処理が終わるまで待たされるか飛ばされます。重い処理を毎ティック行うとティックを取りこぼすので、「新しい足ができたときだけ判定する」などの工夫をします。
- ほかの通貨ペアの価格が動いても呼ばれません。複数の通貨ペアを扱う EA は、OnTimer() で定期的に確認する方法がよく使われます。












