
MQL5 イベント関数
OnTrade()
- できること
- 注文・ポジション・履歴が変化したときに呼ばれる
- 対応
- MQL5
OnTrade() とは
MT5 の EA で、注文の発注・約定・変更・削除、ポジションの変化、履歴の変化など、取引に関する変化があったときに呼ばれる関数です。何が変わったかは教えてくれないため、必要に応じてポジションや履歴を読み直します。
OnTrade() の書式と引数
void OnTrade()引数はありません。
戻り値
なし
OnTrade() の使い方(コード例)
int lastPositions = 0;
int OnInit()
{
lastPositions = PositionsTotal();
return INIT_SUCCEEDED;
}
void OnTick()
{
}
void OnTrade()
{
int now = PositionsTotal();
if(now != lastPositions)
Print("ポジション数が変わりました:", lastPositions, " → ", now);
lastPositions = now;
}MetaEditor でコンパイルできることを確認済みです。
OnTrade() の注意点
- MQL4 にはありません。MT4 で約定を検出したいときは、OnTick() で OrdersTotal() の変化を確認するなどの方法を使います。
- 1回の注文で OnTrade() が何度も呼ばれることがあります。何が起きたかを詳しく知りたいときは OnTradeTransaction() を使います。












