最简单的方法用:ObjectsDeleteAll(),保证全干掉,包括其他指标创建的物件都会被干掉。
谢谢楼上的回复。
可是我不想把图上的物件都删除掉,只想删除开仓、平仓的价格标签。
这件事真奇怪,今天又做了一个单独用来删除标签的指标,其实就是把上面的代码放在 int start() {......} 函数里面,单独做成一个指标。用这个指标就把要删除的这些标签都删除了。
不过,这个指标刚加载的时候也只删除一部分,好像是指标第二次执行时才把全部要删除的标签删除了。为什么上面那段代码执行第一遍的时候不能把 SELL 和 BUY 开头的标签物件全删除掉,非要代码第二遍运行时才能删除利索?
以前做的类似的指标,都是在指标退出时, int deinit() {......} 里的一段代码,一次就把全部箭头物件删除干净了。
迷茫中...,还望各位赐教。
在for (int j=0; j<obj_total-1; j++)里面去掉-1,应该就好了。
受楼上的启发,把代码做了一点修改。
最后的代码为:
int deinit() { //---- int obj_total = ObjectsTotal(); int obj_type; for (int j=obj_total-1; j>=0; j--) { name = ObjectName(j); obj_type = ObjectType(name); if(obj_type == OBJ_TREND || obj_type == OBJ_ARROW) { if(StringFind(name,"SELL",0)> -1) { ObjectDelete(name); } if(StringFind(name,"BUY",0)> -1) { ObjectDelete(name); } } } //---- return(0); }
问题完美解决。
谢谢楼上两位的回复,多谢。
一个指标程序,是在MT4图表上画一些平仓后订单的开仓点、平仓点的价格标签,标签的名字都是 SELL 或 BUY 开头的。当指标程序关闭的时候,下面这段代码竟然不能完全删除这些标签,而只删除一部分。
迷惑中...
望各位高手赐教。