期货量化软件:赫兹量化中开发 EA 构造函数的一次尝试

从一开始,我的预定目标就是使用标准库。 我的首要任务是实现最简单的功能:包括 CTrade 交易类,及执行买入或卖出的方法。 我之所以选择标准库,是因为它可以生成更简洁的代码。以下以脚本形式执行的短代码以交易量 1.0 手执行开多头仓位:

 
 

//+------------------------------------------------------------------+ //| Open Buy.mq5 | //| Copyright © 2018-2021, Vladimir Karputov | //+------------------------------------------------------------------+ #property copyright "Copyright © 2018-2021, Vladimir Karputov" #property version "1.001" //--- #include <Trade\Trade.mqh> CTrade m_trade; // trading object //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- m_trade.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 个点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值