![火线MT4编程教程_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/cff85134-8603-49e3-b88e-fa9c0fed1065/cff85134-8603-49e3-b88e-fa9c0fed10651.gif)
![火线MT4编程教程_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/cff85134-8603-49e3-b88e-fa9c0fed1065/cff85134-8603-49e3-b88e-fa9c0fed10652.gif)
![火线MT4编程教程_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/cff85134-8603-49e3-b88e-fa9c0fed1065/cff85134-8603-49e3-b88e-fa9c0fed10653.gif)
![火线MT4编程教程_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/cff85134-8603-49e3-b88e-fa9c0fed1065/cff85134-8603-49e3-b88e-fa9c0fed10654.gif)
![火线MT4编程教程_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/cff85134-8603-49e3-b88e-fa9c0fed1065/cff85134-8603-49e3-b88e-fa9c0fed10655.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、火线MT4编程教程MT4编程开发实战系列-画图系列1:如何画直线这是MT4编程开发实战系列的第一站,我们先来学习一下如何在MT4图表上进行基本的画图操作。在开始动手之前,首先讲一个很基本也很重要的概念:在MT4系统中,图表的方向是从右到左的,举例说:在一个记录有当前图表每根K线位置的数组中,第一个数值表示的是图表最右边、也就是当前的K线的数值!画图最基本的操作是画直线。下面的两个例子将演示如何在图表上画一条直线。首先在MetaEditor编辑器中创建一个客户指标文件,名字可以任意,我这里就把它命名为Lesson1_DrawLine。然后在其中的start()函数中添加下面的代码:
2、20080221095208625.jpg (5.87 KB)2008-2-21 09:53添加完毕后,按F5编译代码,然后在MT4中打开任意一张图表,把编译好的指标Lesson1_DrawLine添加到图表上,我们可以看到图表上已经画出了一条横线:clip_image002.jpg (5.32 KB)2008-2-21 02:30现在来解释一下上面的代码。上面的代码使用了ObjectCreate这个函数。ObjectCreate是一个非常重要的函数,在后面的画图教程中会多次使用到这个函数。在上面的例子中,ObjectCreate函数有5个参数,第1个”Hline”是对你要画的横线起一个名字,
3、这个名字是可以任意的;第2个OBJ_HLINE是MT4系统默认的一个变量,表示横线,意义是告诉系统你准备画一条横线;第3个参数是0,表示在主窗口进行画图的操作,这里暂时不对这个参数作详细的说明,后面我会专门用一个专题来将画图窗口的知识;第4个参数也是0,这个代表的是横坐标(X轴),第5个参数是Bid,这个是MT4系统默认的一个变量,意思是当前的卖出价。这里重点说一下最后两个参数:在MT4中,图表的横坐标(X轴)代表时间,纵坐标(Y轴)代表价格,在上面的例子中,ObjectCreate函数的最后两个参数0和Bid就分别代表X轴坐标和Y轴坐标,意思是在Y轴为当前卖出价格的地方画一条横线(因为直线为
4、无限长,X坐标没有意义,所以这里就设成0了)。明白了这点,再画条竖线就很简单了。只要把X轴坐标设为你想要的数值即可,例如:我想在当前的K线位置上画条竖线,代码如下:20080221095433937.jpg (5.16 KB)2008-2-21 09:55 clip_image001.gif (3.04 KB)2008-2-21 02:31Time数组是MT4系统默认的一个数组,数组中每个数值对应当前图表上每根K线所处的时间。同样,因为直线是无限的,Y轴坐标此时也失去了意义,我们就把它设为0好了。在本节的最后,我补充说明一下指标文件的各个组成部分:当你创建了一个指标文件后,会发现系统
5、已经自动生成了init()、deinit()和start()这3个函数。Init函数是在初始化的时候调用的,也就是添加到图表的同时会执行一次,之后就不会再执行了;deinit函数是在关闭图表或删除指标的同时执行一次,主要作用是把该指标制作出来的东西删除掉;start函数是主函数,每次价格变动的时候,都会执行一次这个函数。画图系列2这是MT4编程开发实战系列的第2站,在上一节中,我们学习了如何利用ObjectCreate函数在图表上画直线。在这一节中,我们将继续用ObjectCreate函数在图表上画出更多的图形。有时候我们想对某些时间段的图形用椭圆形标识出来,下面我们一起来实现这样的一个指标。
6、利用ObjectCreate函数可以方便的在图表上画出一个椭圆形,MQL语言中表示椭圆的常量是OBJ_ELLIPSE。画一个椭圆需要两个坐标点,所以,画一个椭圆的基本语句如下:ObjectCreate(“ellipse”, OBJ_ELLIPSE, 0, x1, y1, x2, y2)新建一个指标文件,命名为”Lesson2_DrawShape_1”,然后在start函数中加入如下语句:20080221014644031.jpg (6.14 KB) 保存文件,按F5编译指标文件,然后把在MT4中新建一个图表,把Lesson2_DrawShape_1指标添加到图表上,可以看到我们已经在图表上画出
7、了一个椭圆形:解释一下ObjectCreate函数中的各个参数,第1个是图形的名字,可以任意写(忘记了就回头看看第一节);第2个是MT4系统默认的一个常量,意思是告诉MT4我们要画一个椭圆;第3个0是表示我们要在主窗口上进行画图;第4个是坐标点1的x坐标,简单起见,我这里写了Time0,代表起点是当前时间(还记得MT4图表的方向是从右到左的吗?);第5个参数是坐标点1的y坐标,为简单起见,这里我写了Bid,表示当前的卖出价;第6个是坐标点2的x坐标,Time10表示在当前图表上从当前时间往左第10根K线的位置;第7个是坐标点2的y坐标,Ask表示当前的买入价。椭圆已经画出来了,颜色似乎不够醒目
8、,那我们应该如何修改已画出来的图形的颜色呢?用ObjectSet函数。例如我现在想把椭圆的颜色改为红色,可以在ObjectCreate函数下面添加这样一句:20080221015700781.jpg (9.64 KB)2008-2-21 10:39编译后把指标重新添加到图表上,可以看到椭圆已经变为红色了:20080221015646046.jpg (2.23 KB)2008-2-21 10:39ObjectSet的第一个参数是图形的名字,意思是告诉MT4我将要对”ellipse”这个图形进行修改;OBJPROP_COLOR这个参数是MT4默认的系统常量,表示Object的颜色属性,在后面我们将
9、会看到,Object还会有很多各种各样的属性,这些属性命名的规则都是OBJ_XXX这样的,只要把这个常量更改为我们想要修改的属性就行了;第3个参数Red是MT4默认的系统常量,表示红色,在MQL语言中,各种颜色都可以直接用它们的英文名称来表示,非常方便。椭圆的颜色已经修改好了,但是大小似乎还不满意,我们再把它改大一点,在前面代码的基础上再添加一句:20080221021030312.jpg (12.71 KB)2008-2-21 10:46编译运行后重新添加到图表上,我们发现椭圆变大了:20080221021017984.jpg (2.14 KB)2008-2-21 10:46OBJ_SCAL
10、E表示对图形进行缩放,1是缩放的数值,越小椭圆就越大,具体效果可以自己修改看看。下面,我想用一个矩形来替代上面我们画出来的椭圆,该如何做呢?很简单,只要用OBJ_RECTANGLE代替OBJ_ELLIPSE就行了。下面我们一起动手做。首先新创建一个指标文件,命名为Lesson2_DrawShape_2,在start函数加入如下语句: 20080221100759140.jpg (9.37 KB)2008-2-21 10:49编译后运行,然后在MT4中新建一张图表,把Lesson2_DrawShape_2指标添加到图表上,可以看到我们已经在图表上画了一个矩形:200802211009
11、04468.jpg (2.99 KB)2008-2-21 10:49解释一下上面的代码:我们用OBJ_RECTANGLE代替了前面的OBJ_ELLIPSE,意思是告诉MT4我们将要在图表上画一个矩形;Time0和Time10分别是坐标点1的x轴坐标和坐标点2的x轴坐标,这个我们在前面都讲过了,关键是iHigh和iLow这两个函数,iHigh和iLow都是MT4自带的系统函数,iHigh的意思是获取指定周期的最高价格,iHigh函数里面有3个参数:Symbol()函数表明用当前图表上的货币、1440表示天图、0表示取当天的最高价。这里做个补充,在MT4编程中,表示时间周期有两种方法:一是直接用数
12、字表示,MT4中的时间单位是分钟,所以你要指定哪个时间周期,就直接填多少分钟行了,在上面的例子中,因为1天是1440分钟,所以直接填1440就行了,如果要取1小时图的最高值就填60,30分钟图就填30,如此类推;二是用MT4默认的系统变量,像上面的语句,我们也可以这样写:20080221101853015.jpg (9.88 KB)2008-2-21 10:49编译出来的指标是一样的,PERIOD_D1是MT4默认的系统变量,表示周期为天,如果1小时图就是PERIOD_H1,30分钟图就是PERIOD_M30,如此类推。同理,iLow就是取指定周期的最低价;最后一个参数是0,这里表示取最天图最
13、右边的K线的最高价和最低价,即当天的最高价和最低价,如果改为1,上面的例子就是取昨天的最高价和最低价了(还记得MT4图表的方向是由右往左吧?)。同样,我们可以用ObjectSet函数把上面画出来的矩形变为红色:20080221102728375.jpg (12.89 KB)2008-2-21 10:49现在,我们把指标Lesson2_DrawShape_2从图表上删除掉,发现已经画出来的矩形并没有从图表上删除,为什么呢?在MT4中,已经画出来的图形默认是不会随指标一起被删除的,这时我们就要用到deinit和ObjectDelete函数了。前面说过,deinit函数是在指标被删除的时候调用的,主
14、要用来做一些清理性的工作,ObjectDelete函数是删除一个指定的图形对象,因此,我们可以在deinit函数中加入如下代码:20080221103237015.jpg (6.05 KB)2008-2-21 10:49ObjectDelete函数中的参数表示告诉MT4我们要删除哪个图形。画图系列3:如何创建符号及文字这是MT4编程开发实战系列的第3站。在前面两节中,我们已经学会了如何利用ObjectCreate函数来画直线、椭圆和矩形。但这些都是很基本的图形,我们经常能看到一些MT4指标在图表上画出了各种各样的符号,非常有趣!那么这些符号是如何画出来的呢?答案还是ObjectCreate函数
15、!由此看见ObjectCreate函数在MT4画图编程中是多么的重要了吧,就如造物主一般创造出各种美妙的图形!下面,我们一起来学习一下,如何用ObjectCreate函数创造出更多的图形。首先创建一个指标文件,命名为Lesson3_DrawSymbol_1,然后在start函数中输入如下代码:20080221131304703.jpg (5.03 KB)2008-2-21 14:46编译后添加到图表,会发现我们已在图表上画了一个向上的箭头:20080221131418625.jpg (1.13 KB)2008-2-21 14:46从前面两节的学习中,我们知道”arrow”是图形的名字,OBJ_
16、ARROW是告诉MT4我们要画一个箭头,Time0是x轴坐标,Low0是表示当前K线的最低价。这里对Low和iLow()做一个解释。Low是一个数组,里面储存了当前周期图表上每根K线的最低价,注意了:仅储存了当前周期的!如果想获取其它周期的图表上的某根K线的最低价,就要用到iLow()函数了。同理,High和iHigh()也是这样区分的,这样解释,应该很清楚了吧?如果我想让箭头指向下方,该怎么做呢?现在,就开始了本节最精彩的部分了!在刚才的代码后面添加如下一句:20080221132147000.jpg (7.58 KB)2008-2-21 14:46编译后,会发现图表上的箭头已经指向下方了。
17、补充一下,学到这里我们可以发现一个规律:创建一个图形,用ObjectCreate,修改一个图形,用ObjectSet。就这么简单!在上面的例子中,最关键的是ObjectSet的第三个参数:242。我们把242改成67,然后再编译,看看图表现在的图形是什么?是一个大拇指向上的手势。改成68,再编译看看,是一个大拇指向下的手势。看到这里,相信大家都知道怎么回事了吧,没错!只要更改这个参数,就能画出各种我们想要的符号了。我曾在火线发过一个中文的MT4编程文档,大家可以下载来查看一下,里面有个图形符号代码表,只要将第3个参数改成代码表里面的数值,就可以画出相应的符号了。下面我们来做个有趣的尝试:把MT
18、4里面的各种符号都拉出来检阅一遍!首先新建一个指标文件,命名为Lesson3_DrawSymbol_2,然后在start函数中输入如下的代码:20080221133851796.jpg (17.45 KB)2008-2-21 14:46编译后把Lesson3_DrawSymbol_2指标添加到图表上,看到了什么?没错,所有MT4支持的图形符号都跑出来了!20080221134045343.jpg (29.64 KB)2008-2-21 14:46在上面的代码中,我用了一个循环,从当前K线往左数257根K线,在每根K线的最低价位置画一个符号。为什么是257呢?你可以把这个数字改大一点,会发现之后
19、所有的图形符号都是一样的了,这说明MT4支持的图形符号就是到257为止了。学完了前面的例子后,我相信很多朋友都能在图表上随意画出自己想要的各种图形和符号了,那么假如想在图表上加入一些文字呢?这个问题是初学MT4编程的朋友经常提出的一个问题,答案还是用ObjectCreate和ObjectSet这对配合得天衣无缝的函数来实现!在MT4图表上添加文字,有两种方法,一种是用Comment函数,缺点是只能在图表的左上角添加,且不能对文字的各种特性调整,如大小、颜色等;另外一种就是我们下面将要学到的方法,用ObjectCreate函数来创建。ObjectCreate函数可以创建两种类型的文字,一种是OB
20、J_TEXT,一种是OBJ_LABEL。这两种类型的区别:OBJ_TEXT是以时间和价格作为坐标的,且可以设置显示角度;OBJ_LABEL是以当前图表可视区域的相对位置作为坐标的,且不能调整显示角度。下面我们用例子来加深理解。新建一个指标文件,命名为Lesson3_DrawText_1,在start函数输入如下代码:20080221142027609.jpg (8.45 KB)2008-2-21 14:48编译后添加Lesson3_DrawText_1指标到图表:20080221142233390.jpg (1.63 KB)2008-2-21 14:48如果我想让”Hello World!”以
21、与水平线成30度的角度显示,该如何做呢?在上面的代码后面添加一句:20080221143306828.jpg (12.25 KB)2008-2-21 14:48重新编译后效果如下:20080221143531171.jpg (2.2 KB)2008-2-21 14:48利用ObjectSet函数来调整显示文字的角度属性:OBJPROP_ANGLE,30表示30度。既然已经有OBJ_TEXT了,为什么MT4中还要再多一个OBJ_LABEL呢?关键就是两者的坐标性质不同。OBJ_TEXT的坐标是时间和价格,而OBJ_LABEL的坐标是以当前可视区域的相对位置作为坐标。当你移动图表的时候,会发现用O
22、BJ_TEXT创建的文字的位置会随着图表的移动而变化,但用OBJ_LABEL创建的文字则始终不变,除非你更改了屏幕分辨率它才会变化,当你想创建一些始终显示在某个固定位置的文字时,用OBJ_LABEL;如果想在某个固定的价格或时间位置显示文字,用OBJ_TEXT。由于精力所限,我就不再演示OBJ_LABEL的使用方法了,大家可以参照帮助文档来使用,记住坐标的性质不同就行了。画图系列4:如何画曲线这是MT4编程开发实战系列的第4站。在前面3节我们分别学习了直线、椭圆和矩形、文字及符号的创建方法,这次我们要学习一下如何在图表上创建曲线。虽然MT4中已经自带了很多曲线类型的指标,如各种不同的均线、布林
23、带等等,但经常有些朋友还需要创建一些自己独有的曲线,系统自带的指标已经无法满足需求,这时我们就需要通过MT4编程来开发自己的曲线指标了。 下面我们一起通过实例来学习如何画曲线。假设我现在想把图表上每根K线的中间部分(即最高价与最低价之和的均值)用一条曲线连接起来。首先创建一个新的指标文件,命名为Lesson4_DrawCurve_1。在指标文件的开始部分,添加如下语句:20080223162059890.jpg (8.16 KB)2008-2-25 13:19红色框内部分为我们添加的语句。然后在init函数内添加如下语句:20080223162235796.jpg (7.71 KB)2008-
24、2-25 13:19在start函数内添加如下语句:20080223162316828.jpg (19.81 KB)2008-2-25 13:19编译后,将Lesson4_DrawCurve_1指标添加到图表上,会看到我们已创建了一条红色的曲线,将图表上每根K线的中间部分连接了起来:20080223162437671.jpg (10.32 KB)2008-2-25 13:20下面来解释一下上面代码的意思。首先我们在指标文件的开始部分插入了3条语句,前面两条分别是:#property indicator_buffer 1的意思是本指标将使用一个指标缓存(最多只能有8个指标,编码是从0至7);#p
25、roperty indicator_color Red的意思是创建的指标将用红色显示。#property的意思是给指标文件添加一个编译参数(注:由于这些东西涉及到程序开发中比较专业的部分了,本教程的主旨是“实用为主”,所以我将不会对一些太过专业的部分进行深入探讨,只需知道应该这样做就行了。有兴趣的朋友可以私下聊J)。假如你想创建两条曲线,则可以写成:#property indicator_buffer 2;假如想改变曲线的颜色,则可以把Red数值改为其它颜色,如Yellow、Green等。 在添加了两个编译参数后,我们还创建了一个double类型的数组ExtMapBuffer,这个数组的作用是
26、储存每根K线中间部分的数值,画图的时候就根据这个数组里面的数值来画。 在init()函数中,我们用到了SetIndexStyle和SetIndexBuffer这两个MT4中的系统函数。SetIndexStyle的意思是设置我们要画的图形的类型,SetIndexStyle中的第一个参数0,表示我们要对第一个指标的样式进行设置,在MT4中,最多只能设置8个指标,编码是从0开始至7结束;第二个参数DRAW_LINE是MT4默认的系统变量,意思是告诉MT4我们将要在图表上画线。如果我们现在想在每根K线的中间部分画个箭头,该如何做呢?用DRAW_ARROW替换DRAW_LINE就行了,替换后的效果如下:
27、20080223165429703.jpg (9.94 KB)2008-2-25 13:22刚才我们画出来的曲线是一条连续的曲线,如果我想画一条虚线该如何做呢?给SetIndexStyle增加一个参数就行了,现在我们把SetIndexStyle函数改写为如下这样:20080223165907515.jpg (3.6 KB)2008-2-25 13:22编译后重新添加到图表上,会发现现在的曲线已经是一条虚线了。20080223165802062.jpg (10.62 KB)2008-2-25 13:22同理,如果用STYLE_DOT替换STYLE_DASH,就可以画出一条由点组成的曲线了,更多的
28、类型大家可以通过查找编程文档获得。 现在,假如我们觉得曲线太细了,想加粗该怎么做呢?这时就需要给SetIndexStyle函数增加第4个参数了:20080223170242140.jpg (3.87 KB)2008-2-25 13:23SetIndexStyle的第4个参数4,意思是把曲线的宽度设置为4(从1开始,最大为5)。最后,假如想把刚才画的线更改一下颜色,可以用到SetIndexStyle的第5个参数,像下面这句:20080225131933984.jpg (4.6 KB)2008-2-25 13:23最后一个参数Blue的意思是把曲线的颜色改为蓝色。如何创建警报在前面几节,我们学习了MT4编程开发中画图方面的一些基础知识,这次我们来学习一下如何在MT4编程中应用报警功能。 大家都知道,外汇市场是24小时不间断的,而人的精力是有限的,那么,在休息的时候如果价位到达了自己的目标价位,这时候该怎么办呢?答案是利用MT4的警报功能。在MT4平台上如何设置警报这里就不详述了,具体可参考帮助文档,这里说一下如何通过编程来实现。 首先,我们来实现一个最简单的指标:当价格到达指定价位时,进行报警。新创建一个指标文件,命名为:Lesson5_Alert_1。在程序头部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理部工作计划汇编
- 小学一年级下学期工作计划
- 区2025年度计划生育工作计划2
- 分厂第十六个百日安全无事故活动计划
- 《外科常见急腹症》课件
- 《水暖理论知识培训》课件
- 《氨基酸之亮氨酸》课件
- 合同 第三方费用 报销条款
- 铁路培训合同
- 2025年阿克苏货运从业资格证模拟考试题目
- 江苏开放大学本科行政管理专业060191西方行政学说期末试卷
- 服装厂生产制度
- 2022年六年级语文上册期末考试及答案【A4打印版】
- 2024年中国东方资产管理公司招聘笔试冲刺题(带答案解析)
- MOOC 统计学-南京审计大学 中国大学慕课答案
- 高考作文标准方格纸-A4-可直接打印
- 身份认同研究综述
- 浙江2024年01月高考:《化学》科目考试真题与参考答案
- 海洋体育安全与救护智慧树知到期末考试答案2024年
- 2023年国家粮食和物资储备局直属联系单位招聘考试真题及答案
- 机械制图-第二章投影基础
评论
0/150
提交评论