耐火等级单位:实战系列2:在图表上画椭圆与矩形

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 00:03:09

这是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函数中的各个参数,第1个是图形的名字,可以任意写(忘记了就回头看看第一节);第2个是MT4系统默认的一个常量,意思是告诉MT4我们要画一个椭圆;第3个0是表示我们要在主窗口上进行画图;第4个是坐标点1的x坐标,简单起见,我这里写了Time[0],代表起点是当前时间(还记得MT4图表的方向是从右到左的吗?);第5个参数是坐标点1的y坐标,为简单起见,这里我写了Bid,表示当前的卖出价;第6个是坐标点2的x坐标,Time[10]表示在当前图表上从当前时间往左第10根K线的位置;第7个是坐标点2的y坐标,Ask表示当前的买入价。
椭圆已经画出来了,颜色似乎不够醒目,那我们应该如何修改已画出来的图形的颜色呢?用ObjectSet函数。例如我现在想把椭圆的颜色改为红色,可以在ObjectCreate函数下面添加这样一句: 

 编译后把指标重新添加到图表上,可以看到椭圆已经变为红色了:

ObjectSet的第一个参数是图形的名字,意思是告诉MT4我将要对”ellipse”这个图形进行修改;OBJPROP_COLOR这个参数是MT4默认的系统常量,表示Object的颜色属性,在后面我们将会看到,Object还会有很多各种各样的属性,这些属性命名的规则都是OBJ_XXX这样的,只要把这个常量更改为我们想要修改的属性就行了;第3个参数Red是MT4默认的系统常量,表示红色,在MQL语言中,各种颜色都可以直接用它们的英文名称来表示,非常方便。
椭圆的颜色已经修改好了,但是大小似乎还不满意,我们再把它改大一点,在前面代码的基础上再添加一句:

编译运行后重新添加到图表上,我们发现椭圆变大了:

OBJ_SCALE表示对图形进行缩放,1是缩放的数值,越小椭圆就越大,具体效果可以自己修改看看。
下面,我想用一个矩形来替代上面我们画出来的椭圆,该如何做呢?很简单,只要用OBJ_RECTANGLE代替OBJ_ELLIPSE就行了。下面我们一起动手做。首先新创建一个指标文件,命名为Lesson2_DrawShape_2,在start函数加入如下语句:

编译后运行,然后在MT4中新建一张图表,把Lesson2_DrawShape_2指标添加到图表上,可以看到我们已经在图表上画了一个矩形:

 解释一下上面的代码:我们用OBJ_RECTANGLE代替了前面的OBJ_ELLIPSE,意思是告诉MT4我们将要在图表上画一个矩形;Time[0]和Time[10]分别是坐标点1的x轴坐标和坐标点2的x轴坐标,这个我们在前面都讲过了,关键是iHigh和iLow这两个函数,iHigh和iLow都是MT4自带的系统函数,iHigh的意思是获取指定周期的最高价格,iHigh函数里面有3个参数:Symbol()函数表明用当前图表上的货币、1440表示天图、0表示取当天的最高价。这里做个补充,在MT4编程中,表示时间周期有两种方法:一是直接用数字表示,MT4中的时间单位是分钟,所以你要指定哪个时间周期,就直接填多少分钟行了,在上面的例子中,因为1天是1440分钟,所以直接填1440就行了,如果要取1小时图的最高值就填60,30分钟图就填30,如此类推;二是用MT4默认的系统变量,像上面的语句,我们也可以这样写:

 编译出来的指标是一样的,PERIOD_D1是MT4默认的系统变量,表示周期为天,如果1小时图就是PERIOD_H1,30分钟图就是PERIOD_M30,如此类推。同理,iLow就是取指定周期的最低价;最后一个参数是0,这里表示取最天图最右边的K线的最高价和最低价,即当天的最高价和最低价,如果改为1,上面的例子就是取昨天的最高价和最低价了(还记得MT4图表的方向是由右往左吧?)。
同样,我们可以用ObjectSet函数把上面画出来的矩形变为红色:

现在,我们把指标Lesson2_DrawShape_2从图表上删除掉,发现已经画出来的矩形并没有从图表上删除,为什么呢?在MT4中,已经画出来的图形默认是不会随指标一起被删除的,这时我们就要用到deinit和ObjectDelete函数了。前面说过,deinit函数是在指标被删除的时候调用的,主要用来做一些清理性的工作,ObjectDelete函数是删除一个指定的图形对象,因此,我们可以在deinit函数中加入如下代码:

 

 ObjectDelete函数中的参数表示告诉MT4我们要删除哪个图形。

一个圆柱体由一个矩形绕X轴旋转而成,矩形的底边在X轴上,而且整个矩形位于曲线Y=X/(X^2+1)与X轴之间。 急询:visio中如何在已有图形中将矩形统一换为椭圆? PROTEL99PCB版面上画椭圆 矩形与椭圆x的平方除a的平方+y方除b方等于1相切则椭圆面积与矩形面积之比与四分之派谁大?为什么? 电脑上如何画围棋实战图? 2006年世界杯的图表上的“2”在哪里? 在EXCEL 图表中,系列产生在行是什么意思 城墙上的垛口在实战中如何使用 如何在网页上嵌入图表? 黄金矩形与 已知矩形ABCD,AB在X轴上,且AB=3,C点在直线Y=2X-2上,D点在抛物线Y=2X平方上.求矩形顶点A的坐标 已知椭圆中心在原点,焦点在x轴上 中心在原点焦点在x 轴上的抛物线与直线y=3x-2截得的弦的中点横坐标为0.5,求此椭圆的方程。 椭圆与双曲线问题 椭圆与圆 若矩形ABCD的两个顶点A.B在x轴上,C.D 在函数y=-2x^2+4x+2(0<=x<=2)的图像上,求这个矩形面积的最大值。 请问在PHOTOSHOP里用了矩形工具画了五角星后怎样给五角星上颜色? 试求椭圆x*2/a*2+y*2/b*2=1内具有最大面积的矩形 把一根长为2的绳子折弯成一个矩形,并是矩形框的宽与长... 选择什么菜单中“图表”命令,将在屏幕上出现“图表向导”对话框 一个矩形被剪下了一个正方形,剩下的矩形与原矩形相似,那么这种矩形称作什么矩形? PROTEL99 的PCB版面上如何 画椭圆弧 矩形OABC的顶点A,C在坐标轴上,顶点B的坐标是(3,2),若y=mx-1,恰好将矩形分成面积1:3的两部分,则m=? 矩形OABC的顶点A,C在坐标轴上,顶点B的坐标是(3,2),若y=mx-1,恰好将矩形分成面积1:3的两部分,则m=?