MetaTrader のスクリプトでハンドル可能なイベントは、Start イベントのみです。
OnStart 関数
int OnStart(void);
スクリプトの OnStart() 関数は、Start イベントが発生したときに呼び出されます。
戻り値が void
のバージョンもありますが、互換性のために残されているだけなので、int
を返すバージョンを使ってください。
スクリプトは、チャートにアタッチした瞬間にロードされ、実行されます。 そして、その処理が完了され次第、自動的にアンロードされます。
☝️ インジケーターでは OnInit() や OnDeinit() は使えない
カスタムインジケーターや EA では、
OnInit()
や OnDeinit()
が呼び出されるようになっていますが、スクリプトではこれらの関数は呼び出されません。
これらのイベントハンドラーは、チャートの内容(シンボルや時間足)が変更されたときのために用意されています。
それが必要なのは、カスタムインジケーターや EA のみです。
スクリプトには OnStart()
だけあれば十分なのです。関連記事
- MetaTrader/MQL: アプリの種類ごとに扱えるイベントハンドラーの一覧
- MetaTrader/MQL: インジケーターの実装例 - 大きなシンボル名を表示する
- MetaTrader/MQL: テキストを出力する方法まとめ (Alert, Comment, Print, MessageBox)
- MetaTrader/MQL: デバッグ用のマクロを定義する (#define)
- MetaTrader/MQL: 価格情報を取得する (SymbolInfoTick, CopyRates)
- MetaTrader/MQL: 描画オブジェクトの基本 (ObjectCreate, ObjectDelete, ObjectSetXxx)
- MetaTrader/MQL: OrderSend で決済注文を出す(ポジションのクローズ)(MT5)