MQL4的程序结构
•程序结构
MQL4 程序由以下几大部分组成:
- 头部
- 特别函数 init()
- 特别函数 start()
- 特别函数 deinit()
- 外建函数(用户自定义函数)
代码执行顺序
在主窗(货币对K线窗)中开启程序,最先执行的是头部代码。
接着执行特别函数 init(),并且只执行这一次。
程序的主要操作,是运行特别函数 start()。
start() 完成操作任务后,把控制交还MT4。在新的报价(tick)到来时,MT4再次把控制交给 start(),由其运行。
启动后的程序,可以这样循环运行几个星期至几个月。
如果汇客把在主窗中的程序移除,MT4会一次性执行特别函数 deinit()。 这对于正确终止操盘手的操作,是必要的。
•特别函数 init(), start() 和deinit()
它们是由MT4内部调用的,程序中没有对其调用的语句。
函数 init()
操盘手的init() 调用执行,是在MT4启动并装入历史数据之后;或者,更换货币对之后;或者,更换K线图时间周期之后;或者,程序重新编译之后;或者,改变操盘手设置参数之后;以及,变更用户帐号之后。
脚本的 init() 调用执行,是在脚本置入主窗口之际。
外建指标 的init() 调用执行,是在MT4启动之后;或者,更换货币对之后;或者,更换K线图时间周期之后;或者,程序重新编译之后;或者,改变外建函数设置参数之后。
函数 start()操盘手的start() 调用执行,是在新报价(tick)到来之际。如果在start()执行时,有新报价到来,则其被忽略,不予处理。
脚本的 start() 一次性调用执行,是在脚本由init()初始化之后。
外建指标的 start() 调用执行,是在其被置入主窗之后,新报价到来之际;或者,改变了主窗大小;或者,更换币种、更换K线图时间周期之后。
函数 deinit()
可译为“善后函数”,处理程序结束时的事务。系统调用它的原因是:MT4关闭、主窗关闭、更换货币对、改变K线周期、程序重新编译、改变输入参数、改变用户帐号等。
操盘手 和 脚本 结束时引起的deinit()执行,发生在新的同类程序置入主窗,替换前者时。外建函数, 在新指标加入主窗时,并不引起的deinit() 的执行。
函数deinit()执行限于2.5秒内完成。若超时则被系统强行终止。
•程序的运行
一些基本常识,不译了。
• 几个例子
十分浅显的程序例子,给无编程经验的看的,不译了。