创建 EA 交易

在本章中,我们开始学习用于实现 EA 交易的 MQL5 交易 API。就无错编码和涉及的技术数量和种类而言,这种类型的程序可能是最复杂且要求最高的。特别是,我们需要利用从前几章学到的许多技能,从面向对象编程 (OOP) 到使用图形对象、指标、交易品种和软件环境设置等的实际应用层面。

根据所选择的交易策略,EA 交易开发人员可能需要特别注意以下几点:

  • 决策和订单发送速度(针对高频交易 (HFT))
  • 根据工具的相关性和波动性选择金融工具的最佳组合(针对集群交易)
  • 动态计算订单之间的手数和距离(针对鞅策略和网格策略)
  • 分析新闻或外部数据源(将在本书的第七章讨论)

开发人员应将所有这些特性以最佳方式应用于 MQL5 API 提供的交易机制中(之前已经介绍过这些机制)。

接下来,我们将详细考虑用于管理交易活动的内置函数、EA 交易事件模型及特定的数据结构体,并回忆终端和服务器之间交互的基本原则,以及 MetaTrader 5 中算法交易的基本概念:订单、交易和头寸。

同时,由于材料的多样性,EA 交易开发的许多重要细微差别,如测试和优化,将在下一章中重点介绍。

我们之前已经探讨了 各种类型的 MQL 程序的设计,包括 EA 交易,以及 程序启动和停止的功能入门知识。尽管 EA 交易是在定义了工作交易品种的特定图表上启动,但可以成功地集中管理任意一组金融工具的交易。这种 EA 交易传统上被称为多货币,尽管实际上其投资组合可能包括差价合约 (CFD)、股票、大宗商品和其他市场的交易代码。

在 EA 交易和指标中,有许多 关键事件 OnInit OnDeinit。这些事件不是强制性的,但通常出现在程序准备和常规完成的代码中:我们之前在示例中使用了这些事件,后面还会继续使用。在单独的一节中,我们提供了 所有事件处理函数的概述:迄今为止,我们已经详细研究了其中的一些函数(例如, OnCalculate 指标事件和 OnTimer 计时器)。本章中将介绍 EA 交易特定的事件(OnTickontradeOnTradeTransaction)。

EA 交易可以使用最广泛的来源数据作为交易信号: 报价分时报价市场深度交易账户历史或指标读数。在后一种情况下,创建指标实例和从缓冲区读取值的原则与 使用 MQL 程序中的现成指标中讨论的原则相同。在以下几节的 EA 交易示例中,我们将演示大多数技巧。

需要注意的是,交易函数不仅可以在 EA 交易中使用,也可以在脚本中使用。我们将看到两个选项的示例。