期货量化软件:赫兹量化中开发 EA 构造函数的一次尝试
从一开始,我的预定目标就是使用标准库。我的首要任务是实现最简单的功能:包括
CTrade
交易类,及执行
买入
或
卖出
的方法。
#晒出上学时的你#
我之所以选择标准库,是因为它可以生成更简洁的代码。以下以脚本形式执行的短代码以交易量1.0手执行开多头仓位:
//+——————————————————————+// Open Buy.mq5// Copyright [gf]a9[/gf]2018-2021, Vladimir Karputov //+——————————————————————+#property copyright “Copyright [gf]a9[/gf]2018-2021, Vladimir Karputov”#property version “1.001”//—#include CTrade mtrade;// trading object//+——————————————————————+// Script program start function //+——————————————————————+void OnStart(){//— mtrade.Buy(1.0);// open Buy position, volume 1.0 lot }
渐渐地,需求变得越来越复杂,我几乎每次在编写新的智能交易系统(EA)时都会遇到交易错误。故此,我对编写正确代码的渴望变得越来越强烈。最终,一篇非常重要的文章《交易机器人在市场发布前必须通过的检查》问世了。当这篇文章发表时,我已经意识到需要针对交易指令的执行进行可靠控制的函数。从那一刻起,我开始逐渐积攒了大量经过验证的函数,这些函数可以通过
复制
->
粘贴
轻松添加到 EA 之中。
由于 EA 的操作几乎总是涉及到使用指标,因此我开始积攒创建正确指标句柄,以及接收指标数据的函数。
NB
MQL5样式意味着指标句柄只能创建一次。作为一条规定,这是在 OnInit 中完成的。
自2.XXX,版起,我开始维护两个开发分支— 正常的面向过程代码,和类形式的代码(类的主要目标是实现多币种 EA)。
在我的工作动向中,构造函数逐渐接受了最流行的设置:
止损和止盈,尾随,依据风险百分比、或恒定/最小手数计算手数,控制交易运作内的时间间隔,场内只存在一笔持仓,反转交易信号,在出现翻转信号的情况下强制平仓…
每个输入都牵扯到创建代码模块和新函数。
对于日常使用,我决定在 Trading engine 3.mq5 EA 当中收集所有最流行的函数和完整的输入集合。事实上,这是一个成品 EA,它能把我们从大量日常工作中解脱出来。我们所要做的就是在每种特定情况下添加/删除函数,或更改代码模块之间的交互。
1.构造函数之后的 EA 功能
由构造函数创建的 EA 立即拥有多个设置,可以组合这些设置来创建独特的策略。版本4.XXX 应用了以下规则:
使用当前品种符号(EA 启动时所在图表的品种符号)止盈、止损和尾随都在输入中设定。 Points —依据报价货币计量的当前品种符号点数大小,例如“EURSD”1.00055-1.00045=10个点。
发表回复