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

2.1 EA框架结构

既然要编写EA,就需要对EA的结构有一个深刻的认识和掌握,需要知道一个完整的EA都有哪些部分组成,每一个组成部分都起到什么作用。这些是熟练编程的基础,因此十分重要。

一个完整的 EA 由5部分组成,分别是变量自定义模块、初始加载函数模块、退出加载函数模块、主程序模块和子函数存储模块,具体如图2-1所示。

图2-1 EA框架结构

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

区域2:初始加载函数模块。此模块主要用于加载EA时运行,且只运行一次。有一些策略意图,例如在加载 EA 时核对账户号码是否被允许运行。如果某些策略要求不需要重复执行,只需要判断一次就可以,那么就需要在这个模块中编写相应的程序。我们要牢记一点,这个模块里的程序只在EA加载时运行一次,这是区别于主程序模块很重要的一点。

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

区域4:主程序模块。这个模块是我们编写程序的核心,自动化交易程序要求只要条件满足一次就要运行一次,因此我们策略的核心是,在这个模块里编写使其可以循环执行的程序。主程序策略的触发有两个函数:一个是OnTick(),另一个是OnTimer()。OnTick()是每当货币对的价格变动一次,程序就会触发运行一次,若价格不变动,那么程序就不会触发运行。OnTimer()是程序会根据我们预设的时间执行,比如我们预设时间为1秒,程序执行的规则是每过1秒就执行一次,且不管该货币对的价格有没有变动,将一直循环下去,除非退出EA。主程序模块是循环执行的,与加载函数模块和退出函数模块只执行一次有根本的区别。

区域5:子函数存储模块。这个模块存储的是我们要在其他模块中使用的子函数。在本书的后面章节中,我们将要构造很多子函数,这些子函数将被放置在这里作为一个模板,供我们在使用的时候调用。就像建造房屋一样,我们在建房子之前,把砖头、钢筋、混凝土等建筑材料放置在物料场,在建房子过程中需要什么材料,就去物料场取什么材料,简单有序、安全高效。我们的模块化编程也是一样的操作,在具体的编程过程中,把必须用到的和经常用到的子函数存放在这里构成一个模板。既然是模板就不需要重复编写,只需要在模板的基础上对子函数进行一个合适的调用,并且对策略条件进行一个精确的编写,就能达到我们的编写目的,简单而高效。 RWAVSaubdCaQzJee8d0aKBf3+Vy5m+GrTixfT+fpcxSxPw3A2nX8dZPtfZB4l1Vb

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