Init
クライアントターミナルがプログラム(EAとカスタムインジケータ)をロードした直後に、
OnInit()イベントハンドラによって送信される初期化イベント。
グローバル変数の初期化を開始します。
このイベントは、通貨ペアまたはチャート時間軸を変更した後にも生成されます。
またプログラムが再コンパイルされた時、
EA・カスタムインジケータの設定画面からインプットパラメータを変更した時、
アカウントが変更された時にも生成されます。
Deinit
プログラム(EAとカスタムインジケータ)がアンロードされる前に、
クライアントターミナルはプログラムにDeinitイベントを送信します。
Deinitは、
クライアントターミナルが閉じられた時、
チャートが閉じられた時、
時間軸が変更される直前、
プログラムが再コンパイルされた(コンパイルが成功した時)時、
アカウントが変更された時に生成されます。
Deinitの理由は
OnDeinit()関数へ渡される引数から得られます。
OnDeinit()関数実行は2.5秒に制限されています。
この時間内に関数の処理が完了しない場合、強制に処理終了となります。
Start
Startイベントはスクリプト起動時の為のイベントで、スクリプトロード時に送信されます。
このイベントは
OnStartハンドラによって処理されます。
StartイベントはEAまたはカスタムインジケータに送信されません。
NewTick
NewTickイベントは、新しいクォートがある場合に生成されます。
それはEAの
OnTick()関数で処理されます。
前のクォートでOnTick関数が処理されている時に新しいクォートを受信した場合、
新しいクォートはEAによって無視されます。
これは対応するイベントがキューに格納出来ないからです。
プログラム実行中に受信した全ての新しいクォートは、OnTick()関数が処理完了するまで無視されます。
関数の処理完了後に新しく受信したクォートのみ実行されます。
NewTickイベントは、自動売買が許可されているかどうかに関係無く生成されます。
自動売買の禁止はEAからのオーダー送信だけが許可されていないだけで、
EAの処理は保たれている事を示します。
ターミナルの自動売買ボタンを押す事による自動売買の禁止で、OnTick関数の現在の処理が停止する事はありません。
またEAのプロパティウィンドウが開いている時はOnTick()関数が開始されません。
EAプロパティを開いている時にOnTick関数が開始されないと記載されていますが、
恐らくEAをチャートに適用した時に初めに開かれるプロパティウインドウの時だけだと思います。
開始というニュアンスで書かれているのもその為だと思われます。
稼働済みのEAのプロパティウインドウを開いた場合はOnTick関数は普通に継続して処理されます。
Calculate
Calculateイベントは、インジケータでのみ発生します。
価格データの変更があった時にイベント発生します。
これは
OnCalculate関数で処理されます。
Timer
Timerイベントは、クライアントターミナルによって定期的に生成されます。
EventSetTimer()関数によってタイマーを起動させてEAによって定期的に生成されます。
通常、
EventSetTimer()関数はOnInitで呼び出します。
Timerイベントの処理は
OnTimer()関数で実行します。
EAの処理が完了した後、通常はOnDeinit関数が呼ばれた時に、
EventKillTimer()関数を使用してタイマーを破壊する必要があります。
Tester
Testerイベントは、EAのテスト完了後に生成されます。
イベントは
OnTester()関数によって処理されます。
ChartEvent
ChartEventイベントは、ユーザーがチャート上で以下の様な操作した時にクライアントターミナルによって生成されます。
・対象のチャートウインドウがフォーカスされている時に、キーボードのキーを押下。
・
グラフィカルオブジェクトが作成された
・グラフィカルオブジェクトが削除された
・グラフィカルオブジェクトがマウスでクリックされた
・グラフィカルオブジェクトがマウスで移動された
・LabelEditオブジェクトでテキスト編集が終わった
またカスタムイベントがあり、
EventChartCustom()関数を使用してMQL4プログラムによってEAに送信する事が出来ます。
イベントは
OnChartEvent()関数によって処理されます。