MQL5 快速上手_第1页
MQL5 快速上手_第2页
MQL5 快速上手_第3页
MQL5 快速上手_第4页
MQL5 快速上手_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、为什么说您需要 MQL5您决定学习现代 MQL5 交易策略编程语言的原因可能多种多样,但不管怎样,我们都热烈欢迎!有经验的用户可以随心所欲地徜徉浏览此语言文档,以及于此提供的各种文章和服务。但如果您是首次接触 MetaTrader 5 客户端,刚开始可能会对许多事物觉得不习惯,晕头转向。那么,通过掌握 MQL5,您能得到哪些好处呢?可能您已经决定要学习一门当代的 OOP (面向对象编程)语言。学成 MQL5 后,您就可以轻松掌握其它的高级语言,比如 C+、#、Java 等。当然,这并不是说它们非常相似,而是其基础都大同小异。或者,您已经掌握了上述某种语言,而且有制作自己的交易机器人或信息分析系

2、统、以供金融市场中使用的想法?这种情况下,您就可以轻松掌握专门为此创建的专用 MQL5 语言。又或者,您已经懂得MQL4 语言,且活学活用于制作各种交易机器人,并针对备受欢迎的 MetaTrader 4 交易终端制作指标?那么,您只需要驾轻就熟地查看新 MQL5 语言的全部阵容,以及新MetaEditor 5 开发环境的所有优点。学习 MQL5 的理由可能多种多样,而我们会为您提供一些小贴士,告诉您从哪里着手以及重点关注的内容。那么,我们开始吧。此语言的可能性与功能MetaQuotes Language 5 (MQL5)由 MetaQuotes Software Corp. 基于其在创建几代在

3、线交易平台领域的长时间经验开发而成。主要优势: 语言语法尽可能贴近 C+。允许 MQL5 轻松适配用其它语言编写的应用程序。 MQL5 程序的运行速度几乎与 + 程序一样快。 丰富的内置功能,可供创建技术指标、图形对象及用户界面。 内置OpenCL 支持。 一个巨大的标准库以及代码库中的海量示例。 数十数千单线程的并行数学优化任务,且无需编写任何代码。致编程新手如果您没有高级语言编程方面的经验,在学习MQL5 语言基础时,您可以将任何 C+ 手册作为示例参照:语法、数据类型、变量、操作符、函数、OOP 等。MQL5 开发人员力求确保其功能与高度普及的 C+ 语言的最大兼容性。经验表明,在短短几

4、个月的时间内,从头开始学会 MQL5 是可能的,而不到一年的时间则可能足够某些用户清楚掌握其全部功能。参阅MetaTrader 5 与 MQL5 提供的无限机会一文,可能它会赋予您灵感,创建一些真正的好东西。致 MQL4 有经验的用户最开始,您可能会觉得创建指标的新方法很不习惯,大量新的事件处理函数可能会让您大感吃惊,同时类似 C 语言的语法和新数据类型乍看起来亦不似寻常。但一小段时间过后,您就能体会到 MQL5 对比您所熟知的上一代 MQL4 语言的所有优点。您会爱上使用图表、图形对象的丰富可能性及其如在画布上绘制图像的能力。待您熟悉 MQL5 后,您就能尝试上述所有新功能了。致专业程序员如

5、果您采用任何当代语言编程,对您来讲,快速掌握 MQL5 都是小菜一碟。您已经掌握了 P 和事件模型。现在,您只需学习那些专为算法交易准备的具体函数: 图表操作 交易函数 获取市场信息 自定义指标 对象函数 以及其它。因安全代码编写和优化运行时间理由而采用的语言语法,亦存在细微差异: 无指针运算,MQL5 指针实际上是描述符; 无异常; 任何类型的数组始终均以引用的方式传递; 数组不能超过 4 个维度; 数组和对象不能从函数返回,但可以返回一个对象指针; 无 #ifdef、#else、#endif 等附加编译。 无 goto (跳转)操作符。如果您之前执行过交易操作,则在编写您的交易机器人时,您

6、就可能有一些与交易术语和“策略测试仪”相关的问题。文章章节中包含的有用发表作品会帮到您: MetaTrader 5 中的测试原理 MetaTrader 5 中的订单、头寸与交易 MetaTrader 5 中的交易事件 利用 MQL5 云网络加速计算因此,对于专业程序员来讲,MQL5 语言完全不在话下。主要问题在于熟悉交易及相关概念。MetaTrader 5 终端安装MetaTrader 5 终端网络安装程序可通过下述链接到官网下载 5 终端的安装简单得很。几次点击即可完成。但我们建议您将此终端安装于任何驱动器上,当然已安装 Windows 操作系统的除外。原因是 Microsoft 从 Win

7、dows Vista 开始即已实行了用户操作控制新系统 -UAC。因此,如果您对系统管理不是很有经验,或是不愿意在众多的隐藏文件夹中转来转去,则将此终端的安装文件夹指定在 Program Files 之外,以允许数据终端存储于 MetaTrader 5 终端的相同目录下。比如说,将此终端安装于驱动器D:(如果操作系统已安装于驱动器C:)。取决于安装路径的 MetaTrader 5 几种操作模式间差异的更多详情,请参阅内置用户指南的入门指南 启动终端章节。指标、脚本与“EA 交易”MQL5 语言实现三种基础程序类型。每一种类型都完美适于解决其特定任务: 脚本是一种专为价格图表上的某个单一启动而设

8、计的程序。一旦执行到预先定义的OnStart()句柄的末尾时,脚本即已完成,并于图表中卸载。OnStart() 函数仅为脚本而设计。此为唯一的启动点,可执行代码也必须放入其中。脚本可能包含一个在迭代之间有短时间暂停的无限循环,并由此于图表上运行,直到被强制停止。每个图表只能同时执行一个脚本。 指标是一种根据价格数据计算值数组的程序。存储指标值的特定数组则被称为指标缓冲区。一个指标内允许的缓冲区数量几乎没有限制。每个图表都可以同时拥有多个指标,其中包括同一指标的几个复本。使用指标属性的各个函数,只能通过指标使用。不管是通过脚本还是“EA 交易”,皆不可用。只要在程序中探测到OnCalculate

9、()句柄,即可认定其为指标。指标的生命周期没有限制。只要不将其移出图表,它就会一直执行。OnCalculate() 函数只能在指标中调用。 “EA 交易”又是一种生命周期无限制的程序类型。它还可以放到图表上,且可以根据需要的时长,无限期推迟强制卸载。“EA 交易”通常都有OnTick()事件句柄,该句柄会明确指出我们处理的是某“EA 交易”的源代码。一个图表上同时只能存在一个、因此也只能执行一个“EA 交易”。“EA 交易”的主要目标是交易系统的自动化。但是它们还可以拥有独占性服务函数 - 手动交易图形界面和(或)当前市场状况分析以及可视化呈现等等的实现。最好是从编写脚本开始学习 MQL5 基

10、础,您可以从 MQL5 文档或代码库粘贴示例。之后,您就可在模拟账户上开始使用对象函数并体验交易操作了。下一阶段,是编写您自己的自定义指标并对来自代码库和文章中的示例进行分析。这段时间,您会掌握指标,为学习事件处理函数做好准备。最终目标是创建简单的“EA 交易”,并利用 MetaTrader 5 终端中的“策略测试仪”根据历史对其进行验证。专家、测试仪和交易系统中也都有专门探讨该主题的文章。当然,我们也要讲讲有关 MQL5 编程最让人兴奋的功能。也就是通过MQL5 向导开发“EA 交易”自定义模块。您可以找到许多与此相关的文章,而且代码库中还有各种各样的即用型MQL5 向导模块。事件模型MQL

11、5 程序只会在某些事件发生时工作。事件可能包括某 MQL5 程序正在下载和初始化、有新订单号抵达(交易品种价格变化)、图表属性有变更、某图表上的交易品种或时间表有变化、挂单执行等。因此,事件模型允许您以最简单的方式编写交互程序。为编写自定义图形面板和创建适合您需求的便利用户界面提供了极大的可能性。使用图形的内置函数,则允许创建功能全面且设计优良的应用程序。利用EventChartCustom()函数为 MetaTrader 5 中任何活动图表生成自定义事件的能力,则允许创建复杂的交互系统。事件俘获与处理均由OnChartEvent()函数执行。上面提到的功能,在基于交易历史单的交易播放器一文和

12、EventChartCustom()函数示例中均有呈现。调试与用户指南MetaTrader 5 终端与 MetaEditor 5 包含记录详实的内置用户指南,可按F1获取。所有文档均通过 LiveUpdate (实时更新)自动更新。此外,MetaTrader 5 交易平台的官网上还以多种语言提供此用户指南。 MetaTrader 5 终端用户指南, MetaEditor 5 开发环境用户指南。MQL5 文档是最重要的学习来源,该文档不仅于 CHM 和 PDF 格式版本可供下载。客户端与 MetaEditor 5 彼此紧密集成。您始终都可以按F4切换到另一个应用程序。编辑代码时,这项功能非常方便

13、,尤其是如果您同时使用多个终端。按F5即可通过终端中的编辑器调试任何 MQL5 程序。图表会自动打开,而您的程序(脚本、指标或“EA 交易”)也会于其上启动。调试脚本时,您还应考虑到在 OnStart() 运行结束后令其自动上传。因此,调试过程会自动于此阶段结束,而debug 图表则会在不保存此脚本完成的所有图形对象的情况下关闭。由此,将一个断点或带有一个超大值的Sleep()放到脚本末尾 return() 操作符的前面。无论是对于您程序中错误的探测,还是 MQL5 语言的研究和学习,调试模式都必不可少。您不能只在您的代码中设置断点。有一个专用的DebugBreak()函数,但只在程序处于调试

14、模式下时有效。当然,我们也要提到集成于 MetaTrader 5 的强大搜索引擎,该引擎不仅可在源文件或文件夹中搜索必要数据,还可以搜索 MQLmunity 网站(文章、论坛、代码库)。获得的数据可通过必要的分类进行过滤。因此,这种开发环境不仅提供了 MQL5 语言相关的内置用户指南,还提供了到 网站查找有用材料的能力。代码剖析MetaEditor 5 开发环境为程序员提供了大量简化代码编写与调试的便利功能。除了调试功能以外,程序员还需要什么呢?当然是代码剖析。剖析是应用各种程序功能以某种便利形式的聚集,比如其各自片段(函数、行)的执行时间。剖析允许您快速探测出您应用程序中最耗时的部分。您可以

15、对运行速度方面实现的变化进行评估,以选择最具效率的算法。专业开发人员都能清楚地意识到此功能能有哪些用途,而新人则能以一种新视角来检视其程序。上方屏幕截图显示的是论坛中展示的代码剖析 (MQL5 存储:以某种统一的方式存储和管理您的工作您的个人MQL5 源代码存储,是 MQL5 编程又一项有趣且便利的功能。利用它,您随时都可以在世界任何地方通过 MetaEditor 5 直接访问您的文件。您不仅可以存储 MQL5 程序,还能存储 C+ 源 (cpp, h) 以及 BMP 与 WAV 源文件。您可以添加和提取您的代码、撤消更改 - 简而言之,您可以执行现代SVN系统允许的所有事情。除了直接通过 M

16、etaEditor 5 使用 MQL5 存储之外,您还可以利用任何支持Subversion 1.7的外部客户端,比如Tortoise SVN。指标、图表及图形对象的样态开发 MetaTrader 5 时已考虑到了之前的所有经验。因此,初看某些功能可能觉得不习惯。比如说,效率模型即被用于指标计算- 一个指标代表一个计算部分。多个“EA 交易”、脚本和其它指标可以使用同一个指标的结果。这还意味着,如果在带有相同交易品种和时间表的多个图表中设置了同一个指标,则计算会在一个单独的计算实体中执行。这种方法实现了时间与内存的双重节约。此外,一个指标的值,可以利用另一个指标或利用 MQL5 中的数组值计算得

17、出。如此则允许以一种统一且简单的方式获取复杂的指标计算。前面提到过,MQL5 语言中指标图形化表示的可能性真的无限大。有关图表属性与图形对象管理的所有操作均为异步。如此会防止用户在等待终端视频系统显示颜色、尺寸等方面的变化方面浪费时间。如果您想获得通过对象函数或图表操作区段执行函数的即时结果,则调用ChartRedraw()令图表强制重绘。否则,此终端一有机会就会自动重绘图表。交易操作MQL5 中的交易是通过利用OrderSend()函数发送请求来完成的。请求是一种专用的MqlTradeRequest结构,根据必要的交易动作,在其中填入必要的值。您可以买入或卖出,下达挂单以根据某些确定条款买入

18、或卖出,或是删除某现有的挂单。如果 OrderSend() 已成功执行,则交易请求执行结果被固定于MqlTradeResult结构中。学习 MQL5 的初期,您无需检查MqlTradeRequest结构的正确性。“标准库”中拥有执行交易操作的专属CTrade类。该类专为简化 MQL5 程序员的工作而设计:操作订单OrderOpen利用设定的参数下达挂单OrderModify修改挂单的参数OrderDelete删除挂单操作头寸PositionOpen利用设定的参数建仓PositionModify修改头寸参数PositionClose平仓方式附加方法Buy利用指定的参数建长仓Sell利用指定的参数

19、建短仓BuyLimit利用指定的参数下达“买入限价”类型的挂单(低于当前市场价买入)BuyStop利用指定的参数下达“买入止损”类型的挂单(高于当前市场价买入)SellLimit利用指定的参数下达“卖出限价”类型的挂单(高于当前市场价卖出)SellStop利用指定的参数下达“卖出止损”类型的挂单(低于当前市场价卖出)此终端标配的 MACD Sample 培训“EA 交易”中,有一个 CTrade 类应用示例。此“EA 交易”位于 MQL5ExpertsExamplesMACD。交易类章节中还有一些其它操作订单、头寸、交易等等的有用类,还包括 CTrade。MetaTrader 5 策略测试仪M

20、etaTrader 5 不仅允许利用交易机器人在各种金融市场上交易,还提供了根据不同部分的历史检查其盈利能力和稳定性的能力。为实现这一目标,策略测试仪已于此终端中实现。应考虑到让此终端充当一个执行管理器,在测试或优化某“EA 交易”时,向被称为代理的各个服务分配任务。由此,将这些测试作为此终端与各代理之间的通信会话而执行。测试仪会向各代理发送任务,并获取作为回应的执行结果。测试仪与代理相关讯息均置于日志中。测试时,各代理可通过 Print() 和 Alert() 函数发送超大量由“EA 交易”生成的讯息。因此,并非所有源自代理的讯息都会显示于“日志”中,某些讯息可以跳过。如此则会避免因显示所有讯息而减慢测试速度。由此,“日志”被独立存储于 testerlogs,而带有所有讯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论