您现在的位置:简单化交易>> 外汇现货>> MT5>> MT5知识>>正文内容

MT5编程实例课程(阿郎)----第一讲:Hello,MT5 [MT4]

  • MT5的推出,实在是广大汇友福五鼠之孙子兵法!新增的众多强大功能,相信会让一班人在交易时滋长。赘言不多说。因循MTx编程实战开拓系列的惯例,你先来阅读答案个小事例,让一班人感受一下MT5的强大。

    取舍星巴克菜单上”Tools->MetaQuotes Language Editor”选项。启动MQL5编辑器MetaEditor5(以下简称ME5),也许在MT5中直接按剪切的快捷键是什么F4,同样可启动。进入ME5后,点击word工具栏上的“New”旋纽
    在弹出的微信对话框生成器中取舍Expert Advisor选项:

    点击“下一步”,输入EA的名称:

    这里我们将第一下EA事例命名为Lesson1,输入后点击“完成”旋纽,即可生成Lensson1.mq5文件。一切与ME4基本一致。
    让我们来观察一下Lesson1.mq5的代码结构,与MT4时代自动生成的EA代码基本一样,也是三个函数,其功能也是一样的,区别在于名字变了,MT4时代的是init,deinit和start,而MT5中学生书包成的是OnInit。OnDeinit和OnTick。On我们可以理解为“当。。。那么这三个函数就很形状了,分别为:当初始化,当程序结束和当价格跳动。这里作个补充:MT5中虽然大增了Timer机制。但默认仍然是基于Tick驱动事件的,Timer机制需自行启动(最后这段话看不懂?没什么,以后再用事例说明。这里不看也罢,呵呵)。
    那么我们想让第一下事例Lesson1实现些什么功能呢?我是这样打算的:让Lesson1在图表上添加一下旋纽,当点击这个旋纽时,会弹出一下微信对话框生成器。微信对话框生成器的内容是“Hello, MT5!”。有了目标就好办,我们继续前进!
    首先我们让Lessson1具备在图表上添加旋纽的功能。我们在OnInit函数中添加正象代码:

    输入完毕后,按下编译剪切的快捷键是什么F5。如输入不易,会自动乔装打扮到MT5图表:

    如图1-3勾上两个选项,EA就加载到图表上了。这时我们可以发觉,在图表中多了个旋纽:

    点击这个旋纽,什么都没发生,那是因为我们还没有为这个旋纽添加处理代码。我们继续为Lesson1添砖加瓦。
    在OnTick函数下面添加一下函数OnChartEvent,并输入如图1-5所示代码:

    再次按下编译剪切的快捷键是什么F5,然后点击图表上的旋纽。这时就会弹出个微信对话框生成器,内容为”Hello,MT5!”:
    碧水东流至此回。我们的Lesson1就完成了!MT5的功能不错吧?
    为一班人讲解一下上面的代码含义。首先我们看看在OnInit函数里面添加的代码
    假如读者杂志社投稿有MT4编程基础的话,ObjectCreate函数就非常熟悉了(如不熟悉请参阅笔者的《MT4编程实战开拓系列》。创建一下Object(物件),OBJ_BUTTON是MT5新增的参数,意即创建一下Button1(旋纽)。
    ObjectSetInteger(0, "Button1", OBJPROP_XDISTANCE, 250);
    ObjectSetInteger(0, "Button1", OBJPROP_YDISTANCE, 100);
    上面两句分别设定了Button1的X坐标和Y坐标。注意:在MT4时代,Object的全总属性都是用ObjectSet函数来设定的,将其细分为ObjectSetInteger,ObjectSetDouble和ObjectSetString三个函数了,总统制,各司其职 各司其责。
    ObjectSetString(0, "Button1", OBJPROP_TEXT, "Say");
    ObjectSetString函数功能为设定Object的string类型(字符串类型)属性,这里设置Button1上面的文字。补充一下:MT5中对中文的支持仍然很差,这里假如设置为中文则无法显示。希望后续版本有所改善
    ObjectSetInteger(0, "Button1", OBJPROP_STATE, 0);
    设定OBJPROP_STATE属性,这个属性控制着Button1的显示状态,表示默认显示为反弹的。一班人可将其设为1,看看效果。
    上面的几句代码创建了一下叫做Button1的旋纽,并设置了x,y坐标及旋纽文字,显示状态。
    我们来看看新增的函数OnChartEvent。莲如上人,OnChartEvent望文生义就是“当图表上发生了事情时。。。”,OnChartEvent的参数比较多,这里暂时不解说,末端有机会再细谈,这里我们需要知道的是:当图表上发生了任哪门子情,如点击旋纽,输入框中输入文字。拖动Object,按下键盘等等,就会调用OnChartEvent函数。那么,我们只要呆板。在OnChartEvent函数中检测Button1是否被按下:
    if (id==CHARTEVENT_OBJECT_CLICK && sparam=="Button1")
    意思就是当图表上发生了事情,假如是Object被按下,且Object的名字是Button1。继续下面的操作:
    MessageBox("Hello, MT5!", "Button1", MB_OK);
    MessageBox函数功能是弹出一下微信对话框生成器,里边参数这里就不详述了
    看上去Lesson1犹如工作得不错,旋纽在按下之后不会自动反弹来!为了歼灭这个问题,我们把OnChartEvent函数改进一下:
    还记得OBJPROP_STATE属性吧,控制旋纽的显示状态,那么这里的意思就是显示完MessageBox后,再次把旋纽的显示状态恢复为反弹。碧水东流至此回。Lesson1开拓全部结束,敦请体贴入微MT5编程实战开拓系列第二讲!
    作者:阿郎(shawnyau)栽自火线论坛http://www.fx998.cn。
    Lesson1.rar (1 K) 下载次数:257

相关乌有之乡最新文章

    没有相关内容
Baidu