陆龟多大怎么看:hello, world(特厉害的MT5/MQL5指标编程教程第五篇:创建一个Lable物...

来源:百度文库 编辑:偶看新闻 时间:2020/02/17 21:56:08

hello, world(特厉害的MT5/MQL5指标编程教程第五篇:创建一个Lable物件)

由 小时候可帅了 于 星期二, 12/20/2011 - 22:36 提交

为了方便和章节号对应,再新建一个mql5文件:

  1. “Ctrl+N”新建一个mql5文件。
  2. 自定义指标
  3. 名称:Indicators\telihai-5
    作者:telihai
    链接:http://www.telihai.com/
  4. OnCalculate(..., open, high, low, close
    不止一个时间序列用于计算
  5. “完成”

找到大概16行,也就是“OnInit”函数的函数体部分。代码如下:
int OnInit()
{
ObjectCreate(0, "telihai_text", OBJ_LABEL, 0, 0, 0);
ObjectSetString(0, "telihai_text", OBJPROP_TEXT, "hello, world");
ObjectSetInteger(0, "telihai_text", OBJPROP_CORNER, CORNER_RIGHT_LOWER);
ObjectSetInteger(0, "telihai_text", OBJPROP_XDISTANCE, 100);
ObjectSetInteger(0, "telihai_text", OBJPROP_YDISTANCE, 50);
return(0);
}

为了省地儿,我把注释删掉了,按照国际惯例,第一个测试程序是“hello, world”。OnInit()是初始化函数,也就是里面写的东西只在指标加载的时候运行一次,里用到了三个函数:ObjectCreate()、ObjectSetString()、ObjectSetInteger()。

ObjectCreate()是物件创建函数,解释一下参数:第一个“0”,表示这个物件创建在当前图表上,第二个“"telihai_text"”是在给创建的物件命名,名字是一个字符串,注意要加双引号,第三个“OBJ_LABEL”表示创建一个LABEL物件,是一个标签。后三个“0”分别代表主窗口、时间坐标、价格坐标,因为后面我们要重新写坐标,所以暂时不用管。

ObjectSetString()是设置物件属性用的,用这个函数设置的属性的值必须是字符串。前两个参数同上,第三个“OBJPROP_TEXT”表示设置物件的描述(物件中包含的文本),最后一个“"hello, world"”就是物件描述的值,是一个字符串,所以要加双引号。

ObjectSetInteger()与ObjectSetString()一样是用来设置物件属性用的,不同的是用这个函数设置的属性的值必须是日期时间、整型、颜色、布尔或者字符类型的,字符类型和字符串是不一样的,字符类型可以用一个数字表示一个字母。“OBJPROP_CORNER”表示这个物件,在图表上定位时,以图表哪里为原点。它的值只能是下面四个之一:
“CORNER_RIGHT_LOWER”(右下角)
“CORNER_RIGHT_UPPER”(右上角)
“CORNER_LEFT_LOWER”(左下角)
“CORNER_LEFT_UPPER”(左上角)

“OBJPROP_XDISTANCE”和“OBJPROP_YDISTANCE”分别表示x坐标和y坐标,单位是像素。

复习一下:

  1. 创建一个名字为“telihai_text”的LABEL。
  2. 叫“telihai_text”的LABEL的文字是“hello, world”。
  3. 叫“telihai_text”的LABEL定位于图表上的时候,以图表“右下角”为坐标原点。
  4. 叫“telihai_text”的LABEL的x坐标是“100”。
  5. 叫“telihai_text”的LABEL的y坐标是“50”。
  6. 整个初始化函数结束,返回值为“0”。

保存文件,顶部菜单栏:“文件” -> "保存"。

转载请注明,转载自:特厉害 ? hello, world(特厉害的MT5/MQL5指标编程教程第五篇:创建一个Lable物件)
原文链接:http://www.telihai.com/node/6