基本原理和概念:订单、交易和仓位

在开始研究 MQL5 中的 EA 交易开发之前,让我们回忆一下该平台的一般架构和形式化交易活动的基本概念。

MetaTrader 5 是一个客户终端,连接到多层级的服务器,这些服务器遍布于经纪商、经销商或交易所的计算机。一旦用户填写了执行交易订单,该订单将经过几个转发和验证阶段,然后由交易商或交易所登记或拒绝。然后,根据流动性、价格变化率、交易品种交易暂停或技术问题等情况,在市场上登记的订单可能会执行,也可能不会执行。

处理交易请求的一般方案
处理交易请求的一般方案

此处,绿色箭头表示交易操作成功执行,从终端进入市场,而红色箭头表示可能被拒绝。

MQL 程序生成的订单也会经历类似的情况。如果出现不利的结果,MQL5 API 将允许我们通过错误代码了解失败的原因。

整个过程用三个基本术语来表达(并记录在报告中):订单、交易和仓位。

订单是交易员向经纪商发出的买卖金融工具的指令。MetaTrader 5 支持多种类型的订单,但在一个简化形式中,可以有条件地分为市价单、挂单和特殊保护级别 Take ProfitStop Loss

订单成功执行的结果是在交易系统中执行交易。具体而言,如果是市价单,则可以按当前价格达成交易,如果是挂单,则在价格达到订单中指定的值时触发挂单。换言之,交易是买入或卖出特定金融工具的事实。

需要注意的是,在某些情况下,一个订单的执行可能会导致几笔交易。例如,如果订单簿未包含足够数量的交易品种流动性,那么买入订单可以通过多种反向订单执行,包括那些价格略有不同的订单。

根据交易买入或卖出的金融工具分别形成多头或空头仓位,这反映在交易账户的资产/负债中。由于仓位金融工具价格的后续变化,账户上会形成浮动盈亏,可以通过反向交易操作(订单和交易)平仓进行锁定。根据交易账户的类型(净额结算或对冲),同一金融工具的交易可修改单个净仓位或创建/删除独立仓位。

详细信息可参见 终端用户手册

所有订单、交易和仓位都包含在账户的交易历史中。

接下来,我们来看软件 API,其包括以下功能:发送交易订单、获取账户中投资组合的当前状态、检查保证金占用情况和潜在利润/损失以及分析交易历史。