MQL5 快速上手Word文件下载.docx
《MQL5 快速上手Word文件下载.docx》由会员分享,可在线阅读,更多相关《MQL5 快速上手Word文件下载.docx(14页珍藏版)》请在冰点文库上搜索。
致编程新手
如果您没有高级语言编程方面的经验,在学习
MQL5语言基础时,您可以将任何C++手册作为示例参照:
语法、数据类型、变量、操作符、函数、OOP等。
MQL5开发人员力求确保其功能与高度普及的C++语言的最大兼容性。
经验表明,在短短几个月的时间内,从头开始学会MQL5是可能的,而不到一年的时间则可能足够某些用户清楚掌握其全部功能。
参阅
MetaTrader5与MQL5提供的无限机会
一文,可能它会赋予您灵感,创建一些真正的好东西。
致MQL4有经验的用户
最开始,您可能会觉得创建指标的新方法很不习惯,大量新的事件处理函数可能会让您大感吃惊,同时类似C语言的语法和新数据类型乍看起来亦不似寻常。
但一小段时间过后,您就能体会到MQL5对比您所熟知的上一代MQL4语言的所有优点。
您会爱上使用图表、图形对象的丰富可能性及其如在画布上绘制图像的能力。
待您熟悉MQL5后,您就能尝试上述所有新功能了。
致专业程序员
如果您采用任何当代语言编程,对您来讲,快速掌握MQL5都是小菜一碟。
您已经掌握了ООP和事件模型。
现在,您只需学习那些专为算法交易准备的具体函数:
▪图表操作
▪交易函数
▪获取市场信息
▪自定义指标
▪对象函数
▪以及其它。
因安全代码编写和优化运行时间理由而采用的语言语法,亦存在细微差异:
▪无指针运算,MQL5指针实际上是描述符;
▪无异常;
▪任何类型的数组始终均以引用的方式传递;
▪数组不能超过4个维度;
▪数组和对象不能从函数返回,但可以返回一个对象指针;
▪无#ifdef、#else、#endif"
等附加编译。
▪无goto(跳转)操作符。
如果您之前执行过交易操作,则在编写您的交易机器人时,您就可能有一些与交易术语和“策略测试仪”相关的问题。
文章章节中包含的有用发表作品会帮到您:
▪MetaTrader5中的测试原理
▪MetaTrader5中的订单、头寸与交易
▪MetaTrader5中的交易事件
▪利用MQL5云网络加速计算
因此,对于专业程序员来讲,MQL5语言完全不在话下。
主要问题在于熟悉交易及相关概念。
MetaTrader5终端安装
MetaTrader5终端网络安装程序可通过下述链接到官网下载
5终端的安装简单得很。
几次点击即可完成。
但我们建议您将此终端安装于任何驱动器上,当然已安装Windows操作系统的除外。
原因是Microsoft从WindowsVista开始即已实行了用户操作控制新系统-
UAC。
因此,如果您对系统管理不是很有经验,或是不愿意在众多的隐藏文件夹中转来转去,则将此终端的安装文件夹指定在ProgramFiles之外,以允许数据终端存储于MetaTrader5终端的相同目录下。
比如说,将此终端安装于驱动器
D:
\(如果操作系统已安装于驱动器
C:
\)。
取决于安装路径的MetaTrader5几种操作模式间差异的更多详情,请参阅内置用户指南的
入门指南→启动终端章节。
指标、脚本与“EA交易”
MQL5语言实现三种基础程序类型。
每一种类型都完美适于解决其特定任务:
▪脚本是一种专为价格图表上的某个单一启动而设计的程序。
一旦执行到预先定义的
OnStart()
句柄的末尾时,脚本即已完成,并于图表中卸载。
OnStart()函数仅为脚本而设计。
此为唯一的启动点,可执行代码也必须放入其中。
脚本可能包含一个在迭代之间有短时间暂停的无限循环,并由此于图表上运行,直到被强制停止。
每个图表只能同时执行一个脚本。
▪指标是一种根据价格数据计算值数组的程序。
存储指标值的特定数组则被称为指标缓冲区。
一个指标内允许的缓冲区数量几乎没有限制。
每个图表都可以同时拥有多个指标,其中包括同一指标的几个复本。
使用指标属性的各个函数,只能通过指标使用。
不管是通过脚本还是“EA交易”,皆不可用。
只要在程序中探测到
OnCalculate()
句柄,即可认定其为指标。
指标的生命周期没有限制。
只要不将其移出图表,它就会一直执行。
OnCalculate()函数只能在指标中调用。
▪“EA交易”又是一种生命周期无限制的程序类型。
它还可以放到图表上,且可以根据需要的时长,无限期推迟强制卸载。
“EA交易”通常都有
OnTick()
事件句柄,该句柄会明确指出我们处理的是某“EA交易”的源代码。
一个图表上同时只能存在一个、因此也只能执行一个“EA交易”。
“EA交易”的主要目标是交易系统的自动化。
但是它们还可以拥有独占性服务函数-手动交易图形界面和(或)当前市场状况分析以及可视化呈现等等的实现。
最好是从编写脚本开始学习MQL5基础,您可以从MQL5文档或代码库粘贴示例。
之后,您就可在模拟账户上开始使用对象函数并体验交易操作了。
下一阶段,是编写您自己的自定义指标并对来自代码库和文章中的示例进行分析。
这段时间,您会掌握指标,为学习事件处理函数做好准备。
最终目标是创建简单的“EA交易”,并利用MetaTrader5终端中的“策略测试仪”根据历史对其进行验证。
专家、测试仪和交易系统中也都有专门探讨该主题的文章。
当然,我们也要讲讲有关MQL5编程最让人兴奋的功能。
也就是通过
MQL5向导开发“EA交易”自定义模块。
您可以找到许多与此相关的文章,而且代码库中还有各种各样的即用型
MQL5向导模块。
事件模型
MQL5程序只会在某些事件发生时工作。
事件可能包括某MQL5程序正在下载和初始化、有新订单号抵达(交易品种价格变化)、图表属性有变更、某图表上的交易品种或时间表有变化、挂单执行等。
因此,事件模型允许您以最简单的方式编写交互程序。
为编写自定义图形面板和创建适合您需求的便利用户界面提供了极大的可能性。
使用图形的内置函数,则允许创建功能全面且设计优良的应用程序。
利用
EventChartCustom()
函数为MetaTrader5中任何活动图表生成自定义事件的能力,则允许创建复杂的交互系统。
事件俘获与处理均由
OnChartEvent()
函数执行。
上面提到的功能,在基于交易历史单的交易播放器一文和
函数示例中均有呈现。
调试与用户指南
MetaTrader5终端与MetaEditor5包含记录详实的内置用户指南,可按
F1获取。
所有文档均通过LiveUpdate(实时更新)自动更新。
此外,MetaTrader5交易平台的官网上还以多种语言提供此用户指南。
▪
-MetaTrader5终端用户指南,
-MetaEditor5开发环境用户指南。
MQL5文档是最重要的学习来源,该文档不仅于
在线呈现,还有多种语言的CHM和PDF格式版本可供下载。
客户端与MetaEditor5彼此紧密集成。
您始终都可以按
F4
切换到另一个应用程序。
编辑代码时,这项功能非常方便,尤其是如果您同时使用多个终端。
按
F5
即可通过终端中的编辑器调试任何MQL5程序。
图表会自动打开,而您的程序(脚本、指标或“EA交易”)也会于其上启动。
调试脚本时,您还应考虑到在OnStart()运行结束后令其自动上传。
因此,调试过程会自动于此阶段结束,而"
debug"
图表则会在不保存此脚本完成的所有图形对象的情况下关闭。
由此,将一个断点或带有一个超大值的
Sleep()
放到脚本末尾return()操作符的前面。
无论是对于您程序中错误的探测,还是MQL5语言的研究和学习,调试模式都必不可少。
您不能只在您的代码中设置断点。
有一个专用的
DebugBreak()
函数,但只在程序处于调试模式下时有效。
当然,我们也要提到集成于MetaTrader5的强大搜索引擎,该引擎不仅可在源文件或文件夹中搜索必要数据,还可以搜索MQLmunity网站(文章、论坛、代码库)。
获得的数据可通过必要的分类进行过滤。
因此,这种开发环境不仅提供了MQL5语言相关的内置用户指南,还提供了到网站查找有用材料的能力。
代码剖析
MetaEditor5开发环境为程序员提供了大量简化代码编写与调试的便利功能。
除了调试功能以外,程序员还需要什么呢?
当然是代码剖析。
剖析是应用各种程序功能以某种便利形式的聚集,比如其各自片段(函数、行)的执行时间。
剖析允许您快速探测出您应用程序中最耗时的部分。
您可以对运行速度方面实现的变化进行评估,以选择最具效率的算法。
专业开发人员都能清楚地意识到此功能能有哪些用途,而新人则能以一种新视角来检视其程序。
上方屏幕截图显示的是论坛中展示的代码剖析(
MQL5存储:
以某种统一的方式存储和管理您的工作
您的个人
MQL5源代码存储,是MQL5编程又一项有趣且便利的功能。
利用它,您随时都可以在世界任何地方通过MetaEditor5直接访问您的文件。
您不仅可以存储MQL5程序,还能存储C++源(cpp,h)以及BMP与WAV源文件。
您可以添加和提取您的代码、撤消更改-简而言之,您可以执行现代
SVN
系统允许的所有事情。
除了直接通过MetaEditor5使用MQL5存储之外,您还可以利用任何支持
Subversion1.7
的外部客户端,比如
TortoiseSVN。
指标、图表及图形对象的样态
开发MetaTrader5时已考虑到了之前的所有经验。
因此,初看某些功能可能觉得不习惯。
比如说,效率模型即被用于指标计算
-一个指标代表一个计算部分。
多个“EA交易”、脚本和其它指标可以使用同一个指标的结果。
这还意味着,如果在带有相同交易品种和时间表的多个图表中设置了同一个指标,则计算会在一个单独的计算实体中执行。
这种方法实现了时间与内存的双重节约。
此外,一个指标的值,可以利用另一个指标或利用MQL5中的数组值计算得出。
如此则允许以一种统一且简单的方式获取复杂的指标计算。
前面提到过,MQL5语言中指标图形化表示的可能性真的无限大。
有关图表属性与图形对象管理的所有操作均为异步。
如此会防止用户在等待终端视频系统显示颜色、尺寸等方面的变化方面浪费时间。
如果您想获得通过对象函数或图表操作区段执行函数的即时结果,则调用
ChartRedraw()
令图表强制重绘。
否则,此终端一有机会就会自动重绘图表。
交易操作
MQL5中的交易是通过利用
OrderSend()
函数发送请求来完成的。
请求是一种专用的
MqlTradeRequest
结构,根据必要的交易动作,在其中填入必要的值。
您可以买入或卖出,下达挂单以根据某些确定条款买入或卖出,或是删除某现有的挂单。
如果OrderSend()已成功执行,则交易请求执行结果被固定于
MqlTradeResult
结构中。
学习MQL5的初期,您无需检查
结构的正确性。
“标准库”中拥有执行交易操作的专属
CTrade
类。
该类专为简化MQL5程序员的工作而设计:
操作订单
OrderOpen
利用设定的参数下达挂单
OrderModify
修改挂单的参数
OrderDelete
删除挂单
操作头寸
PositionOpen
利用设定的参数建仓
PositionModify
修改头寸参数
PositionClose
平仓方式
附加方法
Buy
利用指定的参数建长仓
Sell
利用指定的参数建短仓
BuyLimit
利用指定的参数下达“买入限价”类型的挂单(低于当前市场价买入)
BuyStop
利用指定的参数下达“买入止损”类型的挂单(高于当前市场价买入)
SellLimit
利用指定的参数下达“卖出限价”类型的挂单(高于当前市场价卖出)
SellStop
利用指定的参数下达“卖出止损”类型的挂单(低于当前市场价卖出)
此终端标配的MACDSample培训“EA交易”中,有一个CTrade类应用示例。
此“EA交易”位于<
terminal_directory>
\MQL5\Experts\Examples\MACD。
交易类章节中还有一些其它操作订单、头寸、交易等等的有用类,还包括CTrade。
MetaTrader5策略测试仪
MetaTrader5不仅允许利用交易机器人在各种金融市场上交易,还提供了根据不同部分的历史检查其盈利能力和稳定性的能力。
为实现这一目标,策略测试仪已于此终端中实现。
应考虑到让此终端充当一个执行管理器,在测试或优化某“EA交易”时,向被称为代理的各个服务分配任务。
由此,将这些测试作为此终端与各代理之间的通信会话而执行。
测试仪会向各代理发送任务,并获取作为回应的执行结果。
测试仪与代理相关讯息均置于日志中。
测试时,各代理可通过Print()和Alert()函数发送超大量由“EA交易”生成的讯息。
因此,并非所有源自代理的讯息都会显示于“日志”中,某些讯息可以跳过。
如此则会避免因显示所有讯息而减慢测试速度。
由此,“日志”被独立存储于<
terminal_folder>
\tester\logs\,而带有所有讯息的详细记录则被保存于测试仪代理的相应文件夹中。
测试分析搜索详细记录时,一定要记住这一点。
幸好此测试仪拥有一个专用的日志检视器,您可以在此查找某特定间隔的日志。
除测试之外,还有某“EA交易”输入参数的优化模式,测试仪可在此模式下使用数十、上百甚至几千个测试仪代理(比如通过
MQL5云网络)。
这种情况下,通过Print()和Alert()函数发送和显示的讯息,被严格抑制不得增加向测试仪方向的输出通信量,并节约PC机上测试仪代理所在硬盘的空间。
唯一的破例是针对
OnInit()
函数做出。
此函数可使用Print()发送讯息,可澄清由于技术原因导致未能成功初始化或拒绝采用
ExpertRemove()
函数执行测试的原因。
更多有趣的详情,请参阅测试仪章节。
我们相信,您一定会感激MetaTrader5客户端“策略测试仪”提供的多样可能性。
突破界限前行
不管您是谁,都会在学习MQL5后发现新的机遇。
其中可能包括对于编程语言的更好理解,对于交易产生的新的深刻见解,或是习得新的技术。
这个新型的MetaTrader5终端包含如此之多的新功能,我们很可能找不到任何一位开发人员能够发挥出其迄今为止的全部潜力。
还有大量激动人心的事情,我们未于本文中提到,其中包括使用DLL的便利性,从“代码库”将程序下载到编辑器,终端中的那些一键启用,等等。
如果您不怕要阅读的终端功能列表太长,我们欢迎您参阅
MetaTrader5-超乎您的想像!
一文!
祝愿大家一切顺利,也衷心期望大家能够加入成为MQLmunity的永久会员!