ObjectsDeleteAllの注意点

tocchi2023/08/17(木) - 21:34 に投稿

カスタムインジケータでラベルなどのオブジェクトを作成した場合、オブジェクトの削除を行わないと
カスタムインジケータを除外した時にラベルだけ残ったりします。

なのでラベルなどのオブジェクトを作成した場合、後始末が必ず必要。
適切なのはOnDeinit関数だと思うのでここにオブジェクトを削除するのがベスト。

削除する方法としては以下の二つになる。
・オブジェクト名を指定して個別に削除するObjectDelete関数を使う
・オブジェクトをまとめて削除するObjectsDeleteAll関数を使う

ObjectsDeleteAll関数が接頭語指定による削除が出来たりとかなり便利なのだが
とりあえず以下のようにchart_idだけ指定するだけでも削除してくれるので、
ObjectsDeleteAll( 0 );
とりあえずいいかと思いきや
定型チャートなどにテンプレとして組み込んだ場合、
バックテストで作成された取引のオブジェクトまで消えてしまう。(当たり前なのだが知らないとハマる)

ちゃんと調べれば何を指定すべきなのかわかるんだけどね。。。

タグ