MT4编程开发实战系列:画图系列
第一节如何画水平线与垂直线
 
这是MT4编程开发实战系列的第一站,我们先来学习一下如何在MT4图表上进行基本的画图操作。
在开始动手之前,首先讲一个很基本也很重要的概念:
在MT4系统中,图表的方向是从右到左的,举例说:在一个记录有当前图表每根K线位置的数组中,第一个数值表示的是图表最右边、也就是当前的K线的数值!
画图最基本的操作是画直线。下面的两个例子将演示如何在图表上画一条直线。
 
1、画水平线:
首先,在MetaEditor编辑器中创建一个客户指标文件,名字可以任意,我这里就把它命名为Lesson1_DrawLine。
然后,在其中的start()函数中添加下面的代码:
添加完毕后,按F5编译代码,然后在MT4中打开任意一张图表,把编译好的指标Lesson1_DrawLine添加到图表上,我们可以看到图表上已经画出了一条横线:
现在来解释一下上面的代码。
上面的代码使用了ObjectCreate这个函数。
ObjectCreate是一个非常重要的函数,在后面的画图教程中会多次使用到这个函数。
在上面的例子中,ObjectCreate函数有5个参数,第1个”Hline”是对你要画的横线起一个名字,这个名字是可以任意的;
第2个OBJ_HLINE是MT4系统默认的一个变量,表示横线,意义是告诉系统你准备画一条横线;
第3个参数是0,表示在主窗口进行画图的操作,这里暂时不对这个参数作详细的说明,后面我会专门用一个专题来将画图窗口的知识;
第4个参数也是0,这个代表的是横坐标(X轴),
第5个参数是Bid,这个是MT4系统默认的一个变量,意思是当前的卖出价。
这里重点说一下最后两个参数:
在MT4中,图表的横坐标(X轴)代表时间,纵坐标(Y轴)代表价格,
 
怎么下载mt4 
二、画垂直线:
    在上面的例子中,ObjectCreate函数的最后两个参数0和Bid就分别代表X轴坐标和Y轴坐标,意思是在Y轴为当前卖出价格的地方画一条横线(因为直线为无限长,X坐标没有意义,所以这里就设成0了)。
    明白了这点,再画条竖线就很简单了。只要把X轴坐标设为你想要的数值即可。
例如:我想在当前的K线位置上画条竖线,代码如下:
Time[]数组是MT4系统默认的一个数组,数组中每个数值对应当前图表上每根K线所处的时间。同样,因为直线是无限的,Y轴坐标此时也失去了意义,我们就把它设为0好了。
在本节的最后,我补充说明一下指标文件的各个组成部分:
当你创建了一个指标文件后,会发现系统已经自动生成了init()、deinit()和start()这3个函数。
Init函数是在初始化的时候调用的,也就是添加到图表的同时会执行一次,之后就不会再执行了;
deinit函数是在关闭图表或删除指标的同时执行一次,主要作用是把该指标制作出来的东西删除掉;
start函数是主函数,每次价格变动的时候,都会执行一次这个函数。
 
 
第二节如何画椭圆形与矩形
 
这是MT4编程开发实战系列的第2站,
在上一节中,我们学习了如何利用ObjectCreate函数在图表上画直线。在这一节中,我们将继续用ObjectCreate函数在图表上画出更多的图形。
有时候我们想对某些时间段的图形用椭圆形标识出来,下面我们一起来实现这样的一个指标。
 
一、画椭圆形:
利用ObjectCreate函数可以方便的在图表上画出一个椭圆形,MQL语言中表示椭圆的常量是OBJ_ELLIPSE。画一个椭圆需要两个坐标点,所以,画一个椭圆的基本语句如下:
ObjectCreate(“ellipse”, OBJ_ELLIPSE, 0, x1, y1, x2, y2)
新建一个指标文件,命名为”Lesson2_DrawShape_ 1”,然后在start函数中加入如下语句:
保存文件,按F5编译指标文件,然后把在MT4中新建一个图表,把Lesson2_DrawShape_1指标添加到图表上,可以看到我们已经在图表上画出了一个椭圆形:
解释一下ObjectCreate函数中的各个参数,