给MQL行家的一个问题 - 页 3

 

我在某处得到建议,在使用ObjectCreate(或ObjectSet? 我不记得了)之前总是检查一个对象是否存在。

一般来说,我使用这种变体

if (ObjectFind("AsignalGF")==-1)
      {ObjectCreate("AsignalGF",OBJ_LABEL,0,0,0,0,0);
      ObjectSet("AsignalGF",OBJPROP_CORNER,1);
      ObjectSet("AsignalGF",OBJPROP_XDISTANCE,12*1);
      ObjectSet("AsignalGF",OBJPROP_YDISTANCE,1*5);
      ObjectSetText("AsignalGF",CharToStr(110),38,"Wingdings",DimGray);}
 
leonid553:

下午好。

已经花了半天时间了,还搞不清楚。

请告知这里可能存在什么错误?可能是在INIT 函数中?

该错误可能是

1.如果你在init()中或在init中调用的函数中调用WindowFind()

2.windowFind(),并且你已经声明了#property indicator_chart_window,因为windowFind()是为子窗口调用的。

3.窗口中没有你要找的名字的指示器

 
keekkenen:

3.你要找的指标名称不在窗口中

嗯......你说物体是什么意思?
 
Abzasc:
嗯......你说的对象是什么意思?

这与对象有什么关系?

该对象是次要的,因为它正试图在一个不存在的窗口中被渲染。

此外,如果对象被创建,将不会有错误,如果对象被二次创建,ObjectCreate() 将返回错误

 
keekkenen:

这与对象有什么关系?

该对象是次要的,因为它正试图在一个不存在的窗口中被渲染。

此外,如果对象被创建,将不会发生错误,如果对象被二次创建,ObjectCreate()将返回错误

明白了,谢谢 :)
 
keekkenen:

错误可以是

1. 如果你在init()中或在init中调用的函数中调用WindowFind()

2.windowFind(),你有#property indicator_chart_window声明,因为windowFind()是为子窗口调用的。

3.你要找的指标名称在窗口中不存在。


1.不,我在START中调用函数: object("Symbol1", Symbol_1, 11, Color_1, 5)

2.你已经声明了#属性 indicator_separate_window

3. 那么,如果一个指标的窗口是存在的,它怎么会丢失呢?

这里是函数本身。

void object(string name, string _text, int fontsize, color color_, int value) {
// задаем окно индикатора
 ObjectCreate(name+ WindowExpertName(), OBJ_LABEL, WindowFind(WindowExpertName()), 0, 0);
 // задаем текстовую метку в окне
ObjectSetText(name+ WindowExpertName(), _text, fontsize, "Times New Roman", color_);
 ObjectSet(name+ WindowExpertName(), OBJPROP_CORNER, 1);//задаем правый угол
 ObjectSet(name+ WindowExpertName(), OBJPROP_XDISTANCE, 4);//задаем х-координату
 ObjectSet(name+ WindowExpertName(), OBJPROP_YDISTANCE, value);//задаем у-коордтнату 
                                     }
我在INIT中根本就没有调用任何东西。也许我也应该在那里添加一些东西?



 
Abzasc:

我在某处得到建议,在使用ObjectCreate(或ObjectSet? 我不记得了)之前总是检查一个对象是否存在。

一般来说,我使用这种变体。

我应该在(ObjectFind("AsignalGF"))中指定什么名字 --

我应该怎样设置指标的名称或指标所画线的名称(数组)?

 
leonid553:

我应该在(ObjectFind("AsignalGF"))中设置哪个名字 --

指标名称或指标所画线的(数组)名称?

被创建/改变的对象的名称。
 

我想我明白了。我在函数中设置了对象的名称。

ObjectCreate(name+ WindowExpertName(),OBJ_LABEL, WindowFind(WindowExpertName()), 0, 0) 。


 
leonid553:

我在函数中设置了对象的名称。ObjectCreate(name+ WindowExpertName(), ....)。

是的,这就是我们正在寻找的。