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

3.1 模块化编程介绍

模块化编程也叫作搭积木式编程,即通过将特定的功能模块构建成一个全新的函数模块来实现快捷编程,在编辑过程中需要某种特定功能时直接调用其模块即可。这些新编程的功能模块和MQL4内置的函数类似,在使用过程中不需要对它的内在原理知道得一清二楚,只需要掌握如何调用和灵活使用即可。因此极大地降低了学习的难度,给投资者带来的最直观的感受就是简单和快捷。模块化编程会留给投资者大量的时间去验证和研究策略,而不是耗费大量时间去实现策略的自动化编程。

在模块化编程过程中,整个策略的编写可以被简化为两个部分,即编写条件语句和编写执行语句。整个编程过程和逻辑可以简化成一句话,即在满足什么条件的时候,执行什么结果。我们需要做的就是编写条件语句和执行语句,两者构成了一个完整的策略;复杂的策略无非就是条件语句多一些,以及执行语句多一些。模块化编程方法可以简化成如图3-1所示的内容。

图3-1 模块化编写方框图

那么模块在编程过程中充当什么角色呢?为什么说模块化编程是最简单、最容易掌握的方法呢?据网络公开报道,湖南省长沙市曾创下了 19 天建好一栋 57 层高楼的建造速度纪录,他们采用的就是拼装式的积木建造法。建筑工人在建造的时候只需要把事先浇筑好的房屋建造构件拼装好就可以了,这大大降低了建造楼层的难度,缩短了时间。模块化编程也是如此,模块函数构成了我们在编写条件语句和执行语句中要实现的种种复杂功能,比如在编写过程中要用到多单的数量、所有成交订单的最高开盘价等参量,都可以通过直接调用函数模块来获取。

我们以某一个条件的编写为例,单独的函数模块和条件语句的关系如图 3-2所示。在编写条件语句的时候,通过调用不同的函数模块来获取参量,参量间相互逻辑关系的组合就构成了不同的条件语句表达,这是整个模块化编程的精髓。由此可见,对于模块的熟练调用和灵活组合是模块化编程的关键。

图3-2 模块化编写演示图

3.1.1 模块的存放

将编写好的模块存放在 EA 运行逻辑框架的第五部分(即区域五),也就是我们第2章中讲到的子函数存储模块。这部分的模块,在使用的时候不需要修改,只要调用就可以了。本书后面会提供一套完整的编写模板供广大读者使用,这套编写模板包含了在编写策略时用到的大部分函数模块,如图 3-3 所示。当编写不同策略时,编写模板是不变的,唯一变化的是主程序策略模块,这里存放着不同的策略,也是自动化交易程序循环执行的地方。

图3-3 函数模块

3.1.2 模块的调用

通过上面的讲解,我们知道对模块的熟练调用和灵活组合是快速掌握程序自动化交易的关键。那具体应该怎样调用呢?其实调用很简单,就像我们调用MQL4自带的封装函数一样。比如我们调用自带的封装函数Open[]来获取当前根K线的开盘价格,直接用Open[0]就可以表达,函数的调用就是这么简单,模块的调用方法也是一样的。区别在于,调用模块是为了获取特定的参量,在调用完模块之后,直接使用计算出来的参量即可。下面我们通过一个例子来演示如何调用模块。这个例子是为了计算出当前持仓的所有多单数量和账户总的持仓手数。

这个示例代码看似很长、很复杂,但是实际核心内容只有EA框架的主程序策略模块的三行代码。在OnTick()主程序循环执行模块中,我们调用了一个函数模块,即户口检查管理(),通过该函数的计算,可以得到账户的总持仓手数和多单的数量,在编写条件语句的时候,可以直接引用这两个参量。一个模块可能包含很多参量,各式各样的参量相互组合就构成了千变万化的策略,因此一定要熟练掌握各个参量的含义和使用方法。 4qMqpDt25Z84dXWLkImbkl8/umfRhmAoFdBBKP28GCep67ojFgo5phZRsFLnINH1

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