WindowOnDroppedでインジケーター挿入されたチャートのウィンドウ番号を取得する

MT4のチャートはローソク足などが表示されるメインウィンドウと、RSIやMACDなどのオシレーター系のインジケーターなどが表示されるサブウィンドウがあります。
これらの各画面にはウィンドウ番号が割り振られています。
メインウィンドウは必ず1つしかないので、ウィンドウ番号は0で固定です。
サブウィンドウは複数表示される場合があるので、1から順に連番で数値が割り振られます。
サブウィンドウはユーザーの操作によって幾つになるか分からないため、サブウィンドウに表示するインジケーターではどのウィンドウに表示されるかが分かりません。

EA、インジケーター、スクリプトが挿入されたウィンドウの番号を取得するにはWindowOnDropped関数が用意されています。

int WindowOnDropped();

WindowOnDroppedを使用すると現在のプログラムが挿入されているウィンドウ番号を返します。
0であればメインウィンドウ、0以外の数字であればサブウィンドウに挿入されています。

ウィンドウ番号が分かれば、例えばObjectsDeleteAll関数を利用してインジケーターが挿入されているサブウィンドウのオブジェクトだけを削除するなどが可能です。

void OnDeinit(const int reason){
ObjectsDeleteAll(0, WindowOnDropped());
}
TwitterでシェアFacebookでシェアGoogle+でシェアはてなブックマークに追加

TOPへ