《用MQL4编程》读书笔记(4)- MQL4的程序结构

来源:互联网 发布:docker添加端口 编辑:程序博客网 时间:2024/04/28 21:28

MQL4的程序结构


程序结构

MQL4 程序由以下几大部分组成:

  1. 头部
  2. 特别函数 init()
  3. 特别函数 start()
  4. 特别函数 deinit()
  5. 外建函数(用户自定义函数)

代码执行顺序

在主窗(货币对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秒内完成。若超时则被系统强行终止。

程序的运行
一些基本常识,不译了。

几个例子
十分浅显的程序例子,给无编程经验的看的,不译了。

0 0