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

2019-07-11 阅读 :
MT5的推出,实在是广大汇友之福!新增的众多强大功能,相信会让大家在交易时如虎添翼。废话不多说,沿袭MTx编程实战开发系列的惯例,先来个小例子,让大家感受一下MT5的强大。 

选择菜单上”Tools->MetaQuotes Language Editor”选项,启动MQL5编辑器MetaEditor5(以下简称ME5),或者在MT5中直接按快捷键F4,同样可启动。进入ME5后,点击工具栏上的“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函数来设定的,在MT5中,将其细分为ObjectSetInteger、ObjectSetDouble和ObjectSetString三个函数了,三权分立,各司其职。 

ObjectSetString(0, "Button1", OBJPROP_TEXT, "Say"); 

ObjectSetString函数功能为设定Object的string类型(字符串类型)属性,这里设置Button1上面的文字。补充一下:MT5中对中文的支持仍然很差,这里如果设置为中文则无法显示,希望后续版本有所改善 

ObjectSetInteger(0, "Button1", OBJPROP_STATE, 0); 

最后,设定OBJPROP_STATE属性,这个属性控制着Button1的显示状态,设置为0,表示默认显示为弹起的,大家可将其设为1,看看效果。 

综述,上面的几句代码创建了一个叫做Button1的按钮,并设置了x,y坐标及按钮文字、显示状态。 

接着,我们来看看新增的函数OnChartEvent。如上所述,OnChartEvent顾名思义就是“当图表上发生了事情时。。。”,OnChartEvent的参数比较多,也比较复杂,这里暂时不解释,后面有机会再细谈,这里我们需要知道的是:在MT5中,当图表上发生了任何事情,如点击按钮、输入框中输入文字、拖动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)

本文标题:MT5编程实例课程(阿郎)第一讲:Hello,MT5 - MT5平台MQL5编程学习
本文地址:http://www.waihuibang.com/fxschool/autotrading/mql5/113858.html

相关文章

  • MT5编程实例课程(阿郎)第一讲:Hello,MT5

    MT5的推出,实在是广大汇友之福!新增的众多强大功能,相信会让大家在交易时如虎添翼。废话不多说,沿袭MTx编程实战开发系列的惯例,先来个小例子,让大家感受一下MT5的强大。 选择菜单上”Tools->MetaQuotes Language Editor”...

    2019-07-11 MQL5编程学习
  • MQL5编程学习之MT5中的调试功能(Debug)应用

    MetaTrader发展到MT5版本后,虽然相比起专业化的开发工具还有一定距离,但终于初具一个现代化软件开发工具的雏形了,这其中在MetaEditor5中提供的Debug功能(调试功能)就是一个巨大的进步。涉足过MT4编程的朋友可能都有过痛苦...

    2019-07-11 MQL5编程学习
  • MQL5变色线的画法(比MQL4更加简单)

    MQL5里有一种特殊指标数组“颜色数组”,他是和画线的指标数组配合使用的。通过对他的简单赋值可以使画出的线变色。 首先要在指标头部定义里指定一条线对应的数组是要使用变色画线方式,指定方法是: #property indicator_...

    2019-07-11 MQL5编程学习
  • MQL5编程MT5程序代码讲解 之 旋转的时间

    //+-----------------------------------------------------+ ytg_Time_exp.mq5 | //Copyright Yuriy Tokman | //yuriytokman@gmail.com | //+-----------------------------------------------------+ #property co...

    2019-07-11 MQL5编程学习
  • 外汇EA程序化交易的"圣杯"真的存在吗?
    外汇EA程序化交易的"圣杯"真的存在吗?

    记得最早接触外汇是2009年在美国留学的时候,虽然之前接触过股票,但是外汇的保证金交易还是感觉非常刺激。刚开始和大多数人一样,有过几天翻几倍的经历。当然也少不了n次爆仓的痛苦经历。自从开始交易外汇就阅读了大量的...

    2019-07-11 MQL5编程学习
  • 编写一个稳定盈利的外汇EA到底难不难?好的外汇EA长什么样?

    在一段时间,我们一直在研究赌博的概率与胜率,包括一些赌场高手的注码策略,对外汇的资金管理很有帮助,除了下单的胜率之外,您还要考虑平仓,您下单之后有浮赢了,能否变成真正的利润,还要取决于您的平仓策略,平仓策略不好,赚钱会变...

    2019-07-11 MQL5编程学习
  • 外汇EA入场主要使用什么交易策略?

    外汇EA如果进行细分,可以分为无数种,但是其入场策略按行情走势无非是以下三种: 1、突破交易:例如行情突破某一上方阻力位置(历史前高),EA自动识别,启动最多;行情突破某一下方支撑位置(历史前低),EA自动识别,启动最空。2、反弹交易...

    2019-07-11 MQL5编程学习
  • 外汇EA程序化交易系统设计心得体会

    投机就像山岳一般古老。毋庸费言,外汇零售市场的属性,必然会让国内的大多数外汇交易者,以中短期投机的方式居多,长期价值投资的偏少。而作为波动市场的王者,外汇市场给了手工交易和程序化交易最丰富的可能性,此种优势,其他市...

    2019-07-11 MQL5编程学习
  • 程序化交易全方位解读:外汇EA智能交易系统
    程序化交易全方位解读:外汇EA智能交易系统

    MQL4、MQL5编程提供:外汇EA、ea官网、程序化交易、程序自动交易、量化投资、EA自动化交易系统等相关学习文章和资料。一、什么是外汇EA智能交易?外汇EA智能交易是MT4与MT5的Expert Advisor(简称EA)的中文译名...

    2019-07-11 MQL5编程学习
  • EA交易可靠吗?关于智能化自动交易的多方位解读
    EA交易可靠吗?关于智能化自动交易的多方位解读

    关于外汇EA的种种及前因后果先行做个说明,以下尽量避免教科书式的解答。 1、智能交易的定义。但讽刺的是第一个话题就是我在网上搜的标准概念:由程序员借助一门计算机程序设计语言,通过编写程序交易指令、模拟人类交易员的行...

    2019-07-11 MQL5编程学习
你可能感兴趣