路路发智能交易研发中心

 找回密码
 立即注册
查看: 17262|回复: 0

MT4智能交易编程教程- 从 MQL4 到 MQL5

[复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

积分
6521
帖子
2771
主题
2761
QQ
发表于 2014-3-27 10:51:22 | 显示全部楼层 |阅读模式
MT4智能交易编程教程-  从 MQL4 到 MQL5
MQL5是前任MQL4语言的发展,其中编辑进去许多指标,脚本和EA交易。尽管事实上,新的程序语言最大化的与前一代相匹配,但在这些语言之间,仍有区别,当转换程序时,这些区别应该标注出来。
对于了解MQL4的程序员来说,新的MQL5语言,该章节涵盖了促进代码改编进化的所有信息。
首先应该标明的是:
·新语言不包括函数start(), init() 和 deinit();
·指标缓冲区数量不限制;
·在下载EA程序后(或者其他MQL5程序),dll立即被加载;
·检测缩写的逻辑条件;
·当数组超过限制时,结束当前操作(紧急的-错误输出);
·像C++一样运算符优先;
·该语言提供隐式类型(甚至从字符串到数字);
·局部变量不能自动初始化(除了字符串);
·普通本地数组自动删除。
特殊函数 init, start and deinit
MQL4语言只包括3个预定函数可以操作指标,脚本或者EA交易(不包括files *.mqh和数据库文件)。在MQL5中没有那样的函数,但有与之相类似的函数,图表表明了近似函数。
MQL4
MQL5
init
OnInit
start
OnStart
deinit
OnDeinit

在MQL4中,函数 OnInit 和 OnDeinit 在 init 和 deinit 程序中执行了相同的任务-他们是为本地代码设计的,一定在MQL5程序的初始化过程中执行,可以因此重命名函数,或者以他们本身的形式呈现,但是在类似位置这些函数可以添加调用。
示例:
void OnInit()
  {
//--- 调用函数去初始化
   init();
  }
void OnDeinit(const int reason)
  {
//--- 调用无法初始化函数
   deinit();
//---
  }

开始函数只在脚本中被OnStart代替,在EA交易和指标中应该分别重命名成OnTick和OnCalculate。在MQL5程序操作过程中,这些代码可以执行,并保存3个函数中:
mql5程序
主函数
脚本
OnStart
指标
OnCalculate
EA交易
OnTick

如果指标或者代码不包括主函数,或者函数名称与要求的不相符,该函数的调用就不能执行。这表示了,如果脚本的资源代码不包括OnStart,该代码会以一个EA交易编辑。
如果指标代码不包括OnCalculate函数,该指标的编辑不能完成。
预定义变量
在MQL5中有诸如Ask, Bid, Bars的预定义变量,变量点和数字的拼写有稍许不同:
MQL4
MQL5
数字
_Digits
_Point
_LastError
_Period
_Symbol
_StopFlag
_UninitReason

访问时间序列
MQL5中没有像Open [], High [], Low [], Close [], Volume [] and Time []这样预定义的时间序列。时间序列必要的深度能用相关访问时间序列函数来设定。
EA交易
MQL5的EA交易不需要强制存在处理新订单号收据事件的函数-OnTick,如在MQL4中一样(当接收新订单时执行MQL4的启动函数),因为在MQL5中EA交易可以包含几种类型的预定义处理器函数。
·OnTick – 新订单号收据;
·OnTimer –时间数据;
·OnTrade - 交易事件;
·OnChartEvent – 键盘鼠标输入事件,图解物件移动事件,完成文本编辑事件输入LabelEdit物件领域中的;
·OnBookEvent – 市场深度状态更改事件。
自定义指标
在MQL4中,指标缓冲区的数量是有限的,不能超过8。而在MQL5中则没有这个限制,但是要记得每个指标缓冲区需要在程序端分配部分内存,所以,这个新功能也不能滥用。
MQL4只提供了6种自定义指标绘图;而MQL5现在提供了18种绘画类型 。绘画类型的名称不变,但是指标的图解表示意义却显著变化。
指标缓冲区中索引趋势也并不相同。默认情况下,在MQL5中,所有指标缓冲区都有常用数组行为,例如0索引元素是历史记录中最古老的一个,随着指数增加,数据也从旧的换成新的。
受MQL4保护的工作自定义指标的唯一函数是SetIndexBuffer 。但是调用改变;现在应该指定存储在数组中的数据类型,连接指标缓冲区。
自定义指标属性也已更改并发展。添加了访问时间序列的新函数,所以全部算法需要重新审议。
图解物件
在MQL5中图解物件的数量显著增加。此外,图解物件现在可以及时置于时间表的图表中且可精确到秒-现在物件定位点不会四舍五入到当前价格图表开盘时间柱上。对于箭头物件,可以指定文本和标签绑定方式 ,并且对于标签,可以设置按钮,图表,位图标签和编辑定位定位物件的图表角 。


外汇智能交易,成就财富梦想!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


MT4编程培训|EA定制开发|QQ在线咨询|路路发智能交易研发中心

GMT+8, 2024-12-22 16:50 , Processed in 0.162345 second(s), 26 queries .

© 2009-2022 520EA.com EA668.com

快速回复 返回顶部 返回列表