购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 EA运行逻辑框架

在前面几节中,我们简要地介绍了MQL4编程语言的基础知识,借助MQL4语言,我们可以编写自定义指标、自动化交易程序(EA)、脚本以及类库等。下面我们对EA的框架做一个深入解读。

既然要编写 EA,就要对 EA 的结构框架有一个深刻的认识和掌握。要想编写 EA,就必须知道一个完整的 EA 有哪些组成部分,每一个部分都起什么作用。

一个完整的EA由五部分组成:变量自定义模块、初始加载函数模块、退出加载函数模块、主程序模块和子函数存储模块。新建一个EA模板,如图2-9所示。

图2-9 EA模板

下面针对图2-9所示的EA模板进行框架分析。

区域1:变量自定义模块。此模块主要用于声明各种变量以及EA的属性,包括版本号、版权、链接等。编程语言不同于日常说话的语言,我们在用到一个变量的时候,必须对它进行变量声明,也就是必须对变量是什么数据类型、是不是全局变量等信息进行声明,否则程序不知道这个变量是什么,就会报错。区域1就是存放这些变量的。

区域 2:初始加载函数模块。此函数模块在加载 EA 时运行一次,比如我们有一些策略意图,要在EA加载时运行一次,那么就需要在这个模块编写相应的程序。要牢记的是,这个模块里的程序只在EA加载时运行一次,不是循环执行的,这是其区别主程序模块很重要的一点。

区域 3:退出加载函数模块。此函数模块在退出 EA 时运行一次。这个函数模块和初始加载函数模块都只运行一次,程序在这两个模块里不会重复运行。两者的区别在于:初始加载函数模块在加载程序时运行一次,退出加载函数模块在退出程序时运行一次。

区域 4:主程序模块。这个模块是程序的核心,我们的策略之所以能够循环执行,就是因为策略是在这个模块里编写的。策略触发有两个函数,一个是OnTick()函数,另一个是OnTimer()函数。OnTick()函数:每当货币对的价格变动一次,程序就会触发运行一次,若价格不变动,程序就不会触发运行。OnTimer()函数:程序会根据我们预设的时间执行,比如我们预设时间为1秒,程序执行的规则就是每过 1 秒执行一次,一直循环下去,直到退出 EA。主程序模块是循环执行的,与初始加载函数模块和退出加载函数模块只执行一次,有根本的区别。

区域5:子函数存储模块。这个模块是存储在其他模块中使用的子函数的,就是我们后面要讲到的模块化编程中存储模块的地方。在具体编程过程中,我们把必须用到的和经常用到的子函数存放在这里构成一个模板,既然是模板就不需要重复编写,只需要在模板的基础上对子函数进行合适的引用和对策略条件进行精确的编写,就能达到编写目的,简单高效。

上面我们对EA框架的五个模块进行了详细的介绍,掌握好这五个模块是我们高效完成自己的策略和看懂别人策略的基础。我们要弄清楚各个模块的作用和运行机制,知道每一个模块里面应该进行什么操作,唯有如此才能提高策略编写能力。 A+/6COod2XCZkF4O8cH2Gygi3UAdYxxnwjUCsIi3dx0by9ib/zoxs4mWfOXFV+Dy

点击中间区域
呼出菜单
上一章
目录
下一章
×