(完全に自分用のメモ書きなので、意味不明だと思いますが悪しからず……)
MT5で等間隔(数値による間隔の設定ができるもの)に複数のトレンドラインを引きたいと思ってMQL5を齧り中。
インディケータ表示用のプログラムの構造
- property 部分
- OnInit 関数
- OnCalculate関数
- OnDeinit関数(必須ではない)
この4つがメインとして記述する部分。
OnInit 関数
この関数は、Initイベントが発生するときに指標やEAで呼び出され、実行中のMQL5プログラムを初期化するのに使用されます。(リファレンスより)
プログラムが呼び出されたときに実行される関数。
OnStart関数というのもあるが、違いがよくわからない。
OnCalculate 関数
この関数は、Calculateイベントが発生して価格の変化が処理されるときに、指標で呼び出されます。この関数の型は 2 つあります。1つの指標内では1つだけ使用できます。(リファレンスより)
価格が動くたびに呼び出される関数。
OnDeinit 関数
この関数はDeinitイベントが発生するときに指標やEAで呼び出され、実行中のMQL5プログラムの初期化を解除するのに使用されます(リファレンスより)
Deinitイベントというのは
グローバル変数が初期化解除されプログラム(エキスパートアドバイザーまたはカスタム指標)がアンロードされる前に、クライアント端末はプログラムに Deinit イベントを送信します。Deinit はまた、クライアント端末の閉鎖時、チャートの閉鎖時、セキュリティ及び/または時間軸の変更直前、プログラムの再コンパイル成功時、入力パラメータの変更時、及び口座変更時に生成されます。
チャートを閉じたり、時間軸を変更する前に呼び出し、メモリを解放しておくための関数(のようだ)。
ObjectCreate 関数
トレンドラインや水平線、長方形等の図形(=オブジェクト)をチャート上に描画する際にはObjectCreate関数を使うようだ。
Object指向ということで、各図形を一つのオブジェクトとして扱っているのだろう。