下载MetaTrader 5

以莫斯科交易所衍生产品市场为例的交易定价原则

28 四月 2015, 11:21
Vasiliy Sokolov
0
1 048

目录


介绍

在 2011 年中旬, MetaTrader 5 交易平台获得了用于俄罗斯股票交易 "Russian Trading System - 俄罗斯交易系统" (RTS) 的认证, 其与莫斯科国际货币交易所 (MICEX) 合并为单一的莫斯科交易所。毫无疑问,这是一个里程碑式的事件。它为许多交易者打开了一个机会,让他们尝试自行炒股,同时仍然使用熟悉并可靠的 MetaTrader 终端。近期发生的另一个重要事件: MetaTrader 5 已经可以在莫斯科交易所的外汇市场里使用, 可以在透明的交易平台上进行真实的货币现货交易。

尽管有这些精彩的事件,互换交易被认为是神秘的事情,尤其是外汇交易者。本文的目标就是揭开其中的奥秘。作为努力创造对冲终端的成果 - 在 MetaTrader 5 内部存在一个的特殊系统,它允许交易者在交易所环境的条件下能够舒适地进行交易活动。

这些资料是研究交易的一个良好起点。它只提到了基础知识,因此经验丰富的交易者将很难在这里找到什么新的东西。不过,与经验丰富的交易者真正沟通后表明,许多简单的“交易基础”对于他们来说也是新的。另一个重点是,有关交易的细节信息分散在整个因特网,结构性很差且不连贯。此外,很多细微之处的描写简直是不可理喻。因此,将相关信息的综合资源进行系统化构建就十分重要。我希望这篇文章将是这样一个资源。

文中会给出整个交易过程的描述, 定价原理和结算技术的细节, 并能够方便主流用户。本文不会让公式成为负担。而且本文没有 MQL5 源码,这往往在本网站上的其它资料里盛行。信息将会有意识地采用易读格式表达。这是斯蒂芬﹒霍金的著作“时间简史”序言中的名言警句:

"有人告诉我,我在书中每加一个方程就会减少一半销路。我因此决定完全不加任何方程。然而最终,我还是放入了一个爱因斯坦的著名方程 Е=mc^2。我希望这不会吓跑一半的潜在读者。"

我们在本文中删除大量更多著名物理学家的例子, 而仅关注重点, 即不用方程和计算机代码来表述, 而是通过图解、图表和表格。但是,我们不会简化。

本文中所呈现的资料需要读者用心理解才能掌握它。本文并非虚构。它需要仔细阅读。


第一章. 交易所定价原理

1.1. 卖方

就像任何正常的市场,在交易所里有多个卖家提供相同的货物,且有多个买家想要购买货物。所有卖家构成所谓的 供给 制定 卖出 价格。卖方希望出售他们的货物越贵越好; 买方希望购买的货物尽可能便宜。卖方可以为他们的货物设置不同的价格。价格可能会有所不同,即使来自不同卖家的货物是完全一样的。这些差异源于卖家为获取货物所需的付出不同。另外,每个卖家有他们的盈利预期,这与他人的期望并不总是相等。

价格的不同,也在于卖家的数量非常庞大。他们没有机会聚在一起,并制定一个共同的垄断价格。如果某些卖家聚到一起来制定价格,其他人也不会以他们为榜样。这意味着,如果一群卖家为他们的货物设置了较高的价格,买家仍可以买到更便宜的同种货物 - 从其他卖家。

因此,我们已经发现,来自不同卖家的同一产品,价格不同。由于卖方提供的货物相同,而价格不同,卖家开始互相竞争。这是因为买方可选择从不同供应商那里以不同的价格来购买同种货物,这意味着买方将总喜欢从提供最低价格的卖家那里购买产品。

卖家的竞争在表中得到最好的解释。这张表由若干行构成, 每行包括卖家名称, 卖家能够出售货物的价格, 和卖家能够出售的 货物数量。事实上,每个卖家可出售的货物都有限定额度。这个数量可以表示为盎司,或合约数或一些别的东西。要牢记的最主要事情是,卖家和买家的资源总是有限的。卖家不能出售无限度的货物,同时买家无法无限度地采购。因此,除了卖家的价格,该表还显示了卖家可出售货物的数量。与此类似,买方的表格将表现出他们能够采购的货物数量。

此表格按价格排序。最低价格的卖家都在表的底部,最高价格的卖家在顶部。

假设我们想在黄金市场里多买几盎司的黄金。此处是表中的卖方提供的样品总报价:

卖家, # 价格, $ 每金衡
盎司黄金
盎司数量
(合约)
Seller 5 1280.8 13
Seller 4 1280.8 60
Seller 3 1280.3 3
Seller 2 1280.1 5
Seller 1 1280.0 1

表.1。卖家报价

我们会尽快返回表格,但现在让我们转到买方。


1.2. 买方

正如之前已经提到,除了卖方,任何发达的市场也有很多买家。所有买家构成所谓的 需求 制定 买入 价格。不像卖家希望出售他们的货物越贵越好,买家希望购买的货物尽可能便宜。

所以, 买家对于货物的真实价值有不同看法。对于某些客户昂贵, 也许对其他人则是便宜的。这就是为何买家愿意为相同的货物支付不同的价格。如同卖家,买家可以自行设定购买货物的价格。例如,买家可以为购买货物下订单,而所提供的出售货物将不能超过买家在订单里设置的确定价格。

买家太多了, 他们无法聚在一起制定 垄断 买入价格。任何买家或一群买家设定的买入价过低,将会失去竞争力 - 还有其他买家准备从卖家那里以较高价格购买货物。因此不同的买家准备为相同的货物支付不同的价格,他们开始相互竞争。这是因为卖方可选择不同买家出售他们的货物,这意味着卖方更愿向出价更高的买家出售他们的货物。

买家之间的竞争,在如同卖家竞争关系一样的表格里很容易地看出,不同之处在于出价最高的买家在顶部,而出价最低的买家在底部。

这里是黄金市场的一个例子。此处是一个买家简单的采购需求:

买家, # 价格, $ 每金衡
盎司黄金
盎司数量
(合约)
Buyer 5 1279.8 2
Buyer 41279.7 15
Buyer 3 1279.3 3
Buyer 2 1278.8 12
Buyer 11278.8 1

表格 2. 买方的需求

如同卖家的表格,这其中包含了买方希望采购的货物数量。请记住,需求不是无限的,采购欲望总是受限于买方的资源。


1.3. 撮合卖方和买方,交易的市场深度

我们已经分析了买方和卖方,并发现他们对于货物的买或卖有不同的期望。这些期望可以按照排序表格呈现, 在卖方表格里所供货物价格最低的在底部, 而愿意支付最高价格的买家位于买方表格的顶部。

这些表格的每一行,可视作在确定价格买入或卖出确定数量货物的交易请求或订单。

表中的这些特征信息可被简化。首先,特定的卖家或买家的信息可省略,因为商品本身对我们更重要,而不是谁愿意出售或购买。我们是否从 Seller 1 或 Seller 2 采购真的无所谓。最重要的是,我们可以采购的货物价格和数量。

所以我们可以跳过卖家或买家的信息,我们可按照简单的级别结合他们提出的数量和价格。每个这样的级别都可以表示卖家供应的价格和总数,或是买家在相同价位的需求。

让我们来研究另一个报价表,这一次是白银:

卖家, # 价格, $ 每金衡
盎司白银
盎司数量
(合约)
Seller 5 19.3 21
Seller 4 19.3 15
Seller 319.13
Seller 219.05
Seller 119.08

表 3. 卖家报价

此处 "Seller 1" 和 "Seller 2", 以及 "Seller 4" 和 "Seller 5" 设置了类似的价位: 分别是 $19.0 和 $19.3。

我们简化这张表格, 删除无用信息列 "卖家" 并合并相同价格为一个级别, 它们的数量合计:

价格, $ 每金衡盎司白银 盎司数量 (合约)
19.3 36 (21+15)
19.1 3
19.013(5+8)

表 4. 卖方的总报价

现在,我们不知道有多少卖家愿意以 $19.0 向我们出售白银。我们所知道的是,他们的出售总数量为 13 份合约。是否它们由一个卖家提供或十三家是未知的。聚集成群的卖家将轮流出售他们的货物。

先下单者先出售货物。显然,如果没有买家愿意购买全部供给的数量,重要的是排在订单队列首位的应该优先于其他卖家出售货物,因为排在最后的卖家不会有买家。因此,当进行高频交易HFT 时,下单速度是非常重要的。这种交易方法要求特殊的设备和高速信道。

似乎我们的简化表格忽略了很多有用的信息。了解我们的采购是否来自一个大的市场参与者,或是少数小商家可能是有用的。下单时间和订单执行状态也可能是有用的。但是,这个数据量十分庞大,而且,即使能够提供这样的数据,它们也需另外付费。例如,莫斯科交易所提供完整的订单记录,而这种信息需要支付额外费用。

现在,我们已经从我们的表格里删除了不必要的信息,我们可以将它们合并。要做到这一点,我们将买方表格的顶部与卖方表格的底部连接。为了不至于混淆谁是谁,让我们用不同的颜色区分买家和卖家。我们用粉红色代表卖家,以及用蓝色代表买家。由此产生的表格称为市场深度DOM

价格, $ 每金衡盎司黄金
盎司数量 (合约)
1280.8 17
1280.3 3
1280.1 5
1280.0 1
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 5. 交易的市场深度

可能不同交易所的交易终端看起来有所不同,但本质是相同的 - 此表格显示所选交易工具的买入和卖出订单。

在 MetaTrader5 交易终端上市场深度看起来稍有不同,但原理是相似的:

GOLD-9.14 期货合约的市场深度

图例 1. GOLD-9.14 期货合约的市场深度


1.4. 在 MetaTrader 5 中的订单类型

让我们来看看市场深度如何工作的细节。我们先买入,然后立即卖出 17 盎司黄金。正如上面所提到的,我们的意向被称为下单或交易请求。我们可选择如何买入:

  1. 我们可以在卖家此刻提供的价格买入我们所需数量的黄金
  2. 我们可以在期望价位下订单买入黄金,以及所需额度。

在第一种情况, 我们同意卖家提出的价格。在第二种情况, 我们设置买入价格。在第一种情况我们的订单将按照 市价执行。在第二种情况, 我们的请求有价格限制, 低于它则不会被执行, 且它会被放进正常的市场深度作为一个 限价订单

每类交易的附带方式有本质区别,对于我们订单的执行,以及判断订单的执行属性,都需要不同的机制。

我们的意向不是抽象的概念。在一个 交易请求订单 中意向是正式化的。在 MetaTrader 5 中交易请求被称为订单, 且它们有若干类型。如果我们想按照市价买入或卖出,即我们同意需求或供给方所提供的价格,那么订单有以下可用类型:

  • Buy – 按照供给方的当前价或更高价格买入。
  • Sell – 在当前价或更低价格卖出。
  • Buy Stop – 若当前买入价等于或高于订单指定价位则买入。在此情况, 下单时刻的价格必须低于订单指定的价格。
  • Sell Stop – 若当前卖出价等于或低于订单指定价位则卖出。在此情况, 下单时刻的价格必须高于订单指定的价格。

如果我们想在我们设置的价格买入或卖出货物,订单应使用以下类型:

  • Buy Limit – 若当前价等于或低于订单指定价位则买入。
  • Sell Limit – 若当前价等于或高于订单指定价位则卖出。

不像突破和市价订单, 限价订单保证它们的执行价格不会比其界定的价格更糟糕。

除了这些类型的订单,MetaTrader 5 提供了特殊 算法 的订单 Buy Stop LimitSell ​​Stop Limit。这些特殊的订单在 MetaTrader 5 终端级别和后端均已实现。事实上,它们是 MetaTrader 5 的合成或算法订单,但并不存在于交易所。它们是突破和限价订单的组合,对于监测潜在的滑点和执行非市价时所带来的亏损扮演重要角色。


1.5. "成交" 的概念

一个交易请求或一张订单可在一笔或若干笔成交里执行。这些交易的另一方,就是满足我们条件的对手。假设我们想在市场里购买两盎司的黄金,场中只有两个卖家,每家只出售一盎司。我们需要协调销售合约,或简单地与这些卖家依次交易。因此,我们决定制定一张订单,并将由两个不同的卖家(对手)来执行。

就像订单,成交不是一个抽象的概念。在 MetaTrader 5 中成交使用同名 "成交" 的概念来表达。在 MetaTrader 5 中已提交的成交会体现在 "工具箱" 窗口的 "历史" 栏。

每张已执行订单至少有一笔交易。一张已执行订单可有多笔成交。每笔交易始终只有两个对手。一笔成交属于两个交易者和其账户,但每个交易者在系统上只能看见他或她的成交和订单,这就是为什么成交标识符看起来是唯一的。

在 MetaTrader 5 中, 券商在帐户里的任何操作也视同一笔成交。当然, 此类成交没有任何初始订单。

订单和其成交之间的连结可用图解形式来方便地表达:

图例.2. 成交与订单关系的简要示意

图例 2. 成交与订单关系的简要示意

请注意,成交和订单之间的连接是单边的。一张订单“不知道”属于哪笔成交,而成交则相反,包括唯一的订单标识符,即它们是由谁提交的基础上。这是因为,在下单的那一刻,尚未完成成交,这意味着它们的标识符是未知的。与此相反,一笔市价成交的执行之前总会有一张订单,且因此能够始终判断引发这笔成交的确切订单。


1.6. 买卖过程,滑点,流动性的概念

假设我们已经准备好接受卖家的报价,并选择市价执行。

再次看一下市场深度:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 17
1280.3 3
1280.1 5
1280.0 1
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 6. 交易的市场深度

超出所有可用价格,我们想从提供最低价格的卖家购买黄金。最低价格是 $1280.0。但是,在此价位只有一盎司可售。我们不得不从其他售价更高的卖家那里购买其余 16 盎司黄金。我们在价格 $1280.1 处购买 5 份合约, 在 $1280.3 处购买 3 份合约, 剩余 8 份合约在 $1280.8 处。购买 17 盎司的平均值与最佳报价不同。让我们来计算:

(($1280.0 x 1 oz.) + ($1280.1 x 5 oz.) + ($1280.3 x 3 oz) + ($1280.8 x 8 oz.)) / 17 oz. = (10246.4 + 3840.9 + 6400.5 + 1280.0) / 17 oz. = $21767.8 / 17 oz. = $1280.46 每金衡盎司 (1 合约)

我们为购买的黄金计算了 1 盎司的加权平均值。它是 $0.46 高于最佳报价。这是因为买卖双方的流动性都有限。

流动性是市场参与者以接近市场价格,从您处购买,及向您出售一定额度的您感兴趣货物的能力。

在流动性越高,您可以在最佳价位买卖货物的额度就越多。在流动性越低,您买卖货物的平均价格与最佳价位偏离越远。这种效应被称为滑点。此处是它的定义:

滑点 是加权成交均价和最佳价格之间的差额。

更通俗地讲,滑点被定义为加权成交均价,与指定价格订单成交之间的价差。不过,这个定义更加不确定,并涉及更多的问题,因为它可能以这样一种方式产生一个交易请求,即其所指定的期望价格比当前价格差很多(相差天文数字),因此,此订单将以市价立即执行。

事实上,真实的订单执行价格比订单出示的同一天文数字值更好,只是并非意味着我们实际上得到了正面的滑点,它在交易账户里可以被转化为盈利。好吧, "画饼充饥"。因此,我们使用更精确的滑点定义。

滑点的影响在外汇市场上几乎难以察觉。大部分市场流动性是由专业参与者提供,如银行和流动性供应商。买卖货币的散户几乎总能以最佳价格成交。这就是为什么相比于证券交易,外汇的市场深度其重要性并不高。

当我们购买所需额度的黄金,呈现在上表中的市场深度会发生变化。

已将黄金出售给我们的卖家会离开市场,因为我们已经完成了他们的报单:

价格, $ 每金衡盎司黄金盎司数量 (合约)
1280.8 9






1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 7. 市场深度中的流动性变化

现在,让我们尝试将刚刚买到的黄金出售给想要购买它的买主。请记住,这些买家都显示在表格的底部,并被标记为蓝色。就像卖方一样,买方的流动性也是有限的。出售黄金给买主,我们也要承担滑点造成的额外费用。

正如从市场深度中看到的那样,我们可以在 $1279.8 出售 2 盎司, 以及在 $1279.7 出售 15 盎司。在这种情况下,我们的平均销售价格(自黄金转手)等于 $1279.71 每盎司。如果在 1279.7 的合约越少,我们的滑点越大。

在我们售出已购的合约之后,市场深度的状态也会改变。现在,它看起来像这样:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 9










1279.3 3
1278.8 13

表 8. 市场深度中的流动性变化

原来,我们的举动降低了工具的整体流动性。此前,有 26 盎司黄金(17 + 3 + 5 + 1)可售,现在只有 9 盎司了。

同样的事情也在需求方发生:我们准备购买 33 份黄金合约(2 + 15 + 3 + 13),而现在只有 16 份。如果我们打算再次购买一定额度的黄金,可能没有足够的流动性,且我们的买入订单将会部分执行 或根本不会执行。这同样适用于销售方,因为他们也需要流动性。

在终端上的真实市场深度,可以显示空白价位,即它们以白色空行出现在表格上。空白级别也可以被隐藏。例如, 在 MetaTrader 5 上,一条以及相同的市场深度以最大化和最小化形式显示如下:

带有空白价位,以及没有它们的市场深度

图例 3. 有价格缺口 (右侧) 和没有价格缺口 (左侧) 的市场深度


1.7. 为什么价格会移动?

让我们想象将我们的举动化作图表, 其中 X 坐标轴有条件地表示次数或成交序列, 且 Y 坐标轴表示黄金价格。

红线可视为最佳动态供给 (Ask), 蓝线可视为最佳动态需求 (Bid), 绿线表示最后一笔成交的动态价格 (Last)。

我们的成交以三角形出现在图表上:

依时间变化的动态价格

图例 4. 随时间推移的价格变化示意图

正如图表所示, 我们的举动不仅降低了整体市场动态, 还 改变了价格! 交易所的价格是最后一笔缔结成交的价格 (Last)。因为我们是先买入,然后以不同的价格售出黄金,由于我们的行动,最后的价格是持续变化的。

要注意第 #4 和 5 笔交易。它们有相同的价格。这是出于这样的事实,即在相同的价位,可能有多个买主或卖主。然而,每笔交易始终只有两个对手 - 买方和卖方。当有多个卖家时,我们与他们中的每一家约定交易。这些交易可有不同的交易量。成交在一个价位形成很长的分时序列。

在分时图表上,它们显示为由多个点(报价)组成的直线:

图例.5. 分时序列 

图例 5. 分时序列

MetaTrader 5 终端提供了类似的价格动态变化图表,通过它可以您监视买入价、卖出价和最后成交价的实时变化。

要打开这个图表,在市场观察窗口选择所需要的工具,并切换到分时栏:

在 MetaTrader 5 上的 GOLD-9.14 分时图表

图例 6. 在 MetaTrader 5 上呈现的分时流

在此图表中,最佳供给价 (Ask) 显示为蓝线,最佳需求价 (Bid) 显示为一条红线。最后成交价 (Last), 像之前图表, 显示为绿线。

示意成交 (分时) 流动的视频在本文的章节 "1.12 一般供给和需求,买入和卖出订单" 里。

请注意,最佳销售价格(红线)和最佳购买价格(蓝线)之间的差价。其差价称为 点差。每笔缔结的成交点差增加, 因为愿意按照最佳价格买卖的卖主和买主逐渐渐递减。因为我们按照市场提供的价格购买和销售,我们满足卖家及买家的订单,之后他们离开市场。我们可以说,我们“吞噬”了市场的流动性。在另一方面,市场价格跟随我们的操作移动。如果没有我们的交易,买家和卖家会分开站立,等待第一个同意对方提出的价格之人。

示意图中,除其它事项外,显示到底是哪一方发起的交易 - 有意购买或出售的一方。从图表上可见,我们的买入交易产生的最后价格相当于 Ask,且卖出交易产生的最后价等于 Bid。今后,所有完成的交易流将在 MetaTrader 5 的特定表格“时间与销售”里出现。此表格显示所有提交的交易,其交易量,价格,以及是谁发起的交易 - 买方或卖方。

这个窗口看起来像是下面一个来自 Quik 的终端:

图例.7. Quik 中的成交列表

图例 7. Quik 中的成交列表


1.8. 做市商

重要的是要记住,在价格剧烈变化的时刻,点差可能会非常大,而且流动性也下降。在此时,按照市价入场可能非常昂贵:滑点值将是可观的。这通常发生在只有一小部分参与者的低流动性市场。即使在相对平静的时刻,如此入场可能会伴随着由滑点和点差导致的高成本。为了最大限度地降低成本,并鼓励交易者在这样的市场中进行交易,交易所可以吸引专业的做市商,其主要任务是保持市场流动性处于合理水平,并将距市价的点差保持在较窄范围内。

让我们来参考原始的黄金市场深度,看看有做市商参与之后市场会如何:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.817
1280.33
1280.1 500
1280.0 1
1279.8 2
1279.7 500
1279.3 3
1278.8 13

表 9. 市场深度中的做市商

大量额度集中在 $1280.1 和 $1279.7 的价位。市场深度并没有显示出谁提供的额度,以及有多少参与者拥有它们。它们很可能属于典型的放置大量镜像买卖订单的做市商。若无做市商,黄金的加权平均买盘价为 $1,280.46,若有做市商则是接近 $1280.1。我们会从做市商那里买入主要额度的黄金。销售的影响将难以察觉,仅仅是因为我们的交易量是微不足道的。

做市商是交易市场的 "守卫者"。他们增加流动性,并防止点差扩散。在一些低流动性的市场,诸如俄罗斯期权市场,通常做市商会作为您的交易对手。在此情况下,问题出现了:做市商通常是一个大公司,愿意从您这里购买以及出售给您很大的额度,那么您对未来价格变化的预期真的正确吗?

做市商的操作由他们为之工作的交易所监管。做市商有义务按照一定的时间百分比,或一定的交易时间段参与到市场,他们有责任将点差保持在一定范围内,以及提供一定额度的流动性。交易所,作为回报,为做市商提供一定的收益,好比支付费用或支付一些费用给做市商。

不过,交易所不保证任何做市商的盈利。他们应该开发自己的符合交易规则的算法,来产生利润。做市商的成功,很大程度上是因为他们承担的佣金成本较低。在降低佣金时,许多策略不用抵消一般性汇率并产生盈利,做市商可从中受益。


1.9. 限价订单以及它们的执行

我们已研究了订单的市场执行细节,并描述了这些订单执行过程中会出现的影响。

现在想象一下,我们不想为滑点付出,且不同意买卖双方的报价。取而代之,我们设定自己的买入和卖出价格。现在当我们想要购买一种产品时,我们向卖方制定价格。当我们决定卖掉它时,我们还将为买方设定价格。让我们再次购买 17 份黄金合约,但是这一次,我们将使用限价单。

这是我们原来的市场深度:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 17
1280.3 3
1280.1 5
1280.0 1
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 10. 交易的市场深度

还有其他参与者想要购买黄金。最佳售卖价格是 $1279.8。假设我们准备设置最可能价格 (市场上所有可能),并在 $1279.9 或更低 的价位购买 17 盎司黄金。因此,我们释放出一张特别限价订单来购买黄金。

一旦我们的订单发出,它会与其他参与者的订单一起出现在市场深度中:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 17
1280.3 3
1280.1 5
1280.0 1
1279.9 17
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 11. 市场深度中的限价订单

市场深度已经变化。您能看到买方打算购买 17 盎司黄金。这是我们的!

所有的市场参与者现在都可以看到我们的订单。现在,任何人想要在市场上出售他们的黄金,将首先从我们这里购买它,然后才轮到随后的卖家,因为我们的报价是最佳之一。然而,不像市价执行,我们的限价单无法保证执行。如果没有卖家愿意出售他们的黄金,我们的限价单会一直停留在市场深度里。记住,成交发自市价订单,而非限价单。

此外,买家可能会愿意以市价 购买 黄金,而这将会因为滑点而导致最后的成交价移动。其他买家可以响应这种变化,并高于我们开限价单,这将使得我们从订单队列的最高位置顺移。

这就是一些人按照市价购买 10 份黄金合约后,市场深度如何变化的:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 16






1279.9 17
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 12. 市场深度的变化

若有愿意出价比我们还高的黄金买家出现,我们将向下顺移:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 16
1280.3 15
1280.1 10
1280.0 3
1279.9 17
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 13. 市场深度的变化

我们的限价单刚好移至市场深度的中间。我们无法与最佳报价竞争。如果价格继续上涨,我们的订单最终将不会执行。


1.10. 订单的部分执行

订单的部分执行是交易执行的最重要特性之一。当市场流动性不足,或使用限价单时,则部分执行产生。

限价单的一个有趣特点是对其界定一个价格的能力,这会比当前价格更糟。

让我们来再次看看市场深度:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 17
1280.3 3
1280.1 5
1280.0 1
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 14. 交易的市场深度

我们可以设置一个限价买单, 界定它的限价高于 $1280.0, 例如 $1280.3!我们的订单在此情况下将会如何执行?

在市场深度中,三个卖家为其货物的报价比我们界定的价格更好或等于它。他们总计额度是 9 盎司 (1 + 5 + 3)。

交易所将撮合他们的限价单和我们的订单, 且剩余的 8 (17 - 9 = 8) 盎司黄金将出现在市场深度中那些卖家的位置上:

价格, $ 每金衡盎司黄金 盎司数量 (合约)
1280.8 17
1280.3 8
1279.8 2
1279.7 15
1279.3 3
1278.8 13

表 15. 限价单的执行

我们的限价单刚刚被部分执行。一些界定的交易量立即被可用卖家填补, 而其余部分留待市场深度中的新卖家。在这种交易执行模式里的操作, 对任何交易系统来讲都很重要。应该考虑到订单部分执行的可能性,以及所下限价单会比当前价位更差。我们的限价单的未来生存状况不详。在高流动性的市场,它好像可以完整填充:同意我们价格的卖家会来满足我们的需求。订单还可以保持部分填充,直到它被取消。

利用限价单您可以轻松地控制您的最大滑点。如果您想将其限制在一定的水平,只需简单地在该级别设置限价单。一方面,它的执行价格将不会比其内部指示的价格差。另一方面,总会有流动性会立即为其填充一些额度,至少部分。


1.11. 限价和市价订单的属性

我们已经研究了基本类型的订单。是时候来描述一下市价和限价订单的属性。我们勾勒那些重要的和基本的属性:

市价单会保证其履行,但不保证其即将执行的价格所在。限价单保证在其将要执行的价格,但不保证其执行。

市价单的价格会变得更糟糕,这是遇到滑点,但总能被执行限价单不改变价格,不受滑点影响,但它的执行得不到保障。

当然,即使市价单执行,也可能因为缺乏流动性而失败。但如此低流动性的市场应该可以避免,我们不考虑极端情况。

我们还发现,一张订单可由一笔或多笔成交来执行。订单可以完整执行,部分执行或根本不执行。这些都是开发一套可靠交易系统时,需要顾及的要点。这些属性对于对冲终端类型的系统甚为重要, 此处成交和订单彼此绑定, 以至于构成了具有一个入口点和出口点的单一逻辑事务, 且支持订单实现止损和止盈操作。

交易者决定使用什么类型的订单。不过,没有任何订单类型相比其它类型具有明显优势。在高度波动的市场,有时使用市价单伴随较大的滑点入场更好,而不是放置一个限价单来让它部分执行或根本不执行。

在高流动性的市场且交易量较小时,滑点小,由此而生的市价单的成本可能会低于部分执行情况下造成的利润亏损。另一方面,在低流动性和缓慢的市场,放置市价单是极其危险的。它们可能会导致巨大的滑点,甚至令交易者破产。在任何情况下,尽量在您的预期以及市场可以提供的价格之间保持平衡。


1.12. 一般供给和需求,买入和卖出订单

现在,我们已经分析了限价单及其执行的特点,我们可以处理一些有趣的属性,它可以在中央交易所里观察到,像莫斯科交易所。

每天,数以万计的交易者在交易所里进行交易。他们中的许多人放置限价单,以及许多交易者在当前价格购买。当前价的交易会立即执行。相对而言,交易者入场,看到当前价格并购买。

直到购买的那一刻,交易者的意图是未知的。这种情况与限价单不同。

正如我们所记,限价单不会移动价格。作为一项规则,它被设置在市场深度,然后等待被执行,直至买入或卖出的价格变得合适。基于此,交易所可以收集这些悬而未决的意图,进行有趣的统计。例如,您可以实时观察买卖双方的总量,以及供应和需求的总交易量。

  • 总需求 是所有限价买入合约的数量。事实上,它是来自需求方面的市场深度的总流动性。
  • 总供给 是所有限价出售合约的数量。与总需求类似,总供给显示来自供给方面的市场深度的总流动性。
  • 卖家总数 是愿意在他们指定限价出售资产的卖家总数。
  • 买家总数 是愿意在他们指定限价购买资产的买家总数。

分析总供给/需求动态以及参与者数量变化的信息,可以帮助您开发基于群体行为预测的有趣策略。这种策略被称为“情绪分析”。

由于交易所的特殊性,这些信息是实时提供。MetaTrader 5 接收这些信息。但是终端不提供任何表格或图表来可视化该信息,就像 Quik 上已经做到的那样。不过, 使用 MetaTrader 5 的 MQL5 编程语言, 您可以创建 一个任意类型的用户表格 或是一个特殊的 分时图表 来显示完全符合用户需求的信息。开发此类程序超出了本文的范围, 所以我们现在不会编写此类 "指标" (尽管耗时,但这将是一个非常令人兴奋的任务)。

让我们采用一个现成的解决方案。已经为 MetaTrader 5 编写了数千种不同的程序。它们有的在免费的代码库,或有的在 MetaTrader 交易应用的专业市场里提供。

免费和付费的应用,两者在市场里都有。一个此类程序是 Yuri Kulikov 的 IShift。它是专为实时监控供求变化设计的,以及交易者有意购买和出售外汇合约的数量。这恰好是我们需要示范的那些属性。

在这个程序中,供给和需求的动态显示在顶部。在视频的最开始,由一个箭头来强调 "买/卖交易量情绪时段":


此信息仅在中央交易所提供。这就有可能创建仅在中央交易所工作的独特策略。


1.13. 在 MetaTrader 5 和 MetaTrader 4 上的市价订单执行系统的比较和交易演示

以前版本的 MetaTrader 4 终端提供一个交易者行为简图。在 MetaTrader 4 里, 所有事务作为订单真实出现。在 MetaTrader 4 的订单可以待定、取消、触发以及平仓。"开单" 和 "平单" 的概念在交易所里没有意义, 因为如上所述, 一张交易所订单是买或卖的订单。订单将会被执行或不执行。订单不可能“关闭”或在当前价位返销。您只能出售或买回资产,即通过发送一个与此相反的订单至交易所。

因此,交换订单,特别是 MetaTrader 5 的订单与来自 MetaTrader 4 的订单概念明显有所不同。在 MetaTrader 4 里订单是一类事务,结合了入场和离场。它可以有选择地包括附加条件,来冻结本次事务的最大亏损(止损)和/或修复一定程度的盈利(止盈)。在 MetaTrader 5 里它实际上应该是 - 买或卖的订单。

在 MetaTrader 4 里, 已执行订单不能反推出是谁来执行它。而在 MetaTrader 5 里,订单由成交执行。它们能给出多少承包商来执行我们的订单,以及在什么价位。这些信息的可用性增加了执行的透明度。

而在分析 MetaTrader 5 的市场深度时,我们可以在入场之前计算出大概的滑点。而这不可能在 MetaTrader 4 里做到。

MetaTrader 5 通过独立订单和成交的表示法,提供部分订单填充的透明的模式。事实上,有关该订单的成交总量可以等于订单指定的额度,这意味着该订单被执行,若较少,则可认为订单正在处理或部分执行。在 MetaTrader 4 里, 在真实条件下订单的执行 也可以是较大交易量的一部分。在这种情况下,不清楚这部分履行是否出于缺乏流动性的结果,或是出于券商针对成功交易的阻挠。它根本不提供任何用于确认部分执行(成交)的信息。

只有在特定情况下,交易请求的执行可能是一个偶发(瞬间)事件。订单的执行往往需要一定的时间。参看描述限价单部分履行章节的性能示例。这个订单的一部分由若干笔成交填充,而其余部分进入“待机”模式,等待合适的价格。在此情况下,订单在执行过程中,会产生越来越多的成交。

由于成交,订单状态总是非常清楚和透明的。订单执行阶段可以在您需要时进行监视。在 MetaTrader 4 里, 订单在执行期间状态是未定义。我们无法看到在它的执行期间发生了什么。


第二章. 莫斯科交易所衍生产品分部的结算方法

本章目的是为那些已经在莫斯科交易所的衍生品分部交易,以及那些仍然关注这家交易所,并计划在未来进行衍生品交易的人。

在第一章里,我们已经讨论了具体的交易价格,现在是时候学习如何在交易双方之间进行调控。这些信息将有助于我们更好地理解券商是如何看到我们的仓位以及我们提交的交易。这一构想与 MetaTrader 4 里所表达的显著不同,其中的任何交易活动都是带有个人交易结果的独立事务。

我们将要讨论的结算, 以莫斯科交易所衍生产品市场为例,即进行期货和期权交易的分部。这是出于这样的事实,在 2011 年 MetaTrader 5 由 RTS(俄罗斯交易系统) 认证,它与 MICEX(莫斯科国际货币交易所)合并成一个单独的莫斯科交易所。


2.1. 期货概念

期货和基于期权的期货都在莫斯科交易所的衍生品分部进行交易。

期货 是一种标准化合约的商品供给,有效期至某一特定日期,称为期货到期

商品可以通过任何资产来体现,如公司股票,黄金,货币或股票指数,它们没有实物形态。期货合约是卖方和买方之间的合同。卖方承诺在未来的某个时刻(交割日)交割资产,而买方同意在约定的价格从卖方购买资产。显然,在交割日,资产价格可能上涨或下跌。因此,期货合约的卖方和买方承担由价格变动带来的风险。

在期货到期日,更低的价格有利于卖方,因为卖方已经以较高的价格售出资产。在期货到期日,更高的价格有利于买方,因为买方已经以较低的价格购买资产。所以,重要的是合约协商时与交割日之间的差价。卖买双方可以协商无需实际交付货物。取而代之, 卖方双买方只需简单地接受合约协商时与交割日之间的差价。采用这种结算方式的期货合约被称为现金结算

与此相反,期货,期满之后的货物被物理交付后,被称为实物。交付流程的描述超出了本文的范围,因此,在我们的例子中期货是指以现金结算的期货,因为它更容易理解,且它的到期结算模式类似于实物交割的期货。事实上,以现金结算的期货酷似差价合约或双方协商的 CFD(价差合约),不过它拥有更高的透明度,且交易是在集中式交易平台进行,像莫斯科交易所的衍生品分部。

很明显,在结算时,由于价格变化,其中一方会有负面结果,而另一方会有正面结果。他们的结果绝对意义不同,但模相等。因此,我们可以说,期货是一个零和游戏。虽然所有参与者的亏损和盈利的额度是相同的,但在他们之间可以不均匀地分布,因此,有可能以牺牲市场知情较少的参与者为代价来获利。

让我们来分析下面的例子。2014 年 8 月 5 日上午 10 点,我们以 $1292.1 每金衡盎司购买现金结算的黄金期货合约,此时我们有一个多头仓位。期货到期日期为 2014 年 8 月 7 日 18:45。假设这时黄金的价格将增长到 $1306.6。我们的合约的对方同意向我们支付这些价格之间的差额。

因此,在到期时,我们从对方会获得 $14.5 的利润($1306.6 - $1292.1 = $5.14)。如果黄金价格在此期间下跌,我们将支付差额。

下图显示了这种情况:

图例.8. 期货合约和到期时间

图例 8. 期货合约和到期时间

垂直虚线表示入场位置,和期货合约到期时的离场位置。

但是,我们不必等到期货到期。我们可以随时从这笔交易中退出,我们可以将买入的合约转售给其他参与者。

在这种情况下,结算将会与到期日相同:合约买卖之间的差额即可从我们的账户抹杀,亦或扣除它。不过,如何计算这种价格差异也有一些特点。稍后您会了解到这些差异和细微差别。


2.2. "未平仓合约" 和 "持仓总数" 的概念

从期货的定义可以跟踪一个非常有趣的属性; 它仅适用于这种类型的合约。

不像现货商品,诸如股票或货币,期货总有两个合约者。其中一个销售合约,而另一个购买合约。

假设交易者 A 决定购买期货合约。在市场上有两种选择:

  1. 交易者 A 可以从决定售出之前买入合约的交易者 B 那里 回购 期货合约。事实上, 交易者 B 受让 他的合约权力给交易者 A。在这种情况下,就没有必要新开期货合约,将旧的合约从交易者 B 转移给交易者 A 就足够了。交易者 B 在这种情况下离场,而交易者 A 相反,占据他的位置。参与者总数 并未变化。
  2. 已经入场的交易者 A 无法找到参与者来转让其合约权利的所有权。在这种情况下,交易者将不得不等待新的交易者 C,希望能协商一份新的售出期货合约,并签订一份新合约,将期货出售给新的交易者。在这种情况下,参与者总数增加了两个:新交易者 AC 来到市场。

持仓总数 是已缔结期货合约仓位的总数。它始终是一个偶数,因为每个合约有两个对手。

未平仓合约OI 是已协商期货合约的数量。为获得 OI 的值,将持仓总数除以二。

成员总数既可以上升也可下降。出于类似的原因,如果交易两侧对立的两个交易者打算相互退出市场,则他们的合约被取消。在这种情况下,成员的总数减少两个,并且未平仓合约,即显示的合约总数,降低一个,因为一份合约对应于两方。

由于特殊的组织,莫斯科交易所独具实时跟踪市场参与者总数的机会。在其它市场,此类信息往往是有限的。例如,在 芝加哥商品交易所 (CME) 仅在每天结束才计算未平仓合约信息,且在交易完成若干天之后才公布。

在 MetaTrader 5 里, 未平仓合约信息 (未平仓合约数量) 是实时提供的, 但需要特殊的 MQL5 程序存取它。关于这一点,以及有关程序可参考本文的章节 "1.12. 一般供给和需求,买入和卖出订单"。


2.3. 期货保证金,"杠杆" 的概念

由于期货是一种商品合约,而不是商品本身,即您可以购买和出售货物但并未拥有它们。一方面,参与者能够在交易商品时与价格无关,而另一方面,它的绝对价格动态可能对于小额本金的交易参与者太大了。

因此, 如果黄金价格从 $1292.1 变化到 $1306.6, 则我们可以说黄金价格上涨了1.1% (($1306.6 - $1292.1)/$1292.1)。在另一方面,如果我们进一手期货 卖出 合约需要占用账户资金 $100, 类似的黄金价格变化会从我们的账户抹杀 $5.14, 账户相应变化 -14.5%。这是显而易见的。

为了平衡参与者的愿望,使他们在市场里能够根据自身能力进行交易,交易所收取初始保证金IM,这是一笔特殊存款,充当参与者偿付能力的保证。初始保证金与期货合约当前价位之间的比率,被称为最大杠杆。经典定义表明,杠杆是净值与用于购买资产的融资的比率。在期货交易中不使用融资的概念,因为没有货物的实物购买。券商给我们提供一些信用,且我们不必为其支付使用利率。

让我们以莫斯科交易所衍生产品市场交易黄金期货合约为例。

我们打开 MetaTrader 5 连接到一家提供莫斯科交易所访问的券商, 在市场观察里选择 "GOLD-9.14", 若其可用, 否则在 "符号" 窗口里选择并添加它:

图例.9. 通过 MetaTrader 5 的菜单访问工具规格

图例 9. 通过 MetaTrader 5 的菜单访问工具规格

通过点击鼠标右键,我们打开此工具的上下文菜单,进入“规范......”

图例. 10. 期货合约规范窗口

图例 10. 期货合约规范窗口

此工具的初始保证金值在“初始保证金”字段指定。它的对应值为 5267.08 卢布。莫斯科交易所的所有计算都以卢布为准,因此,所有数值指定为卢布。这些数字是什么意思?

当缔结合约时, 券商在您的账户锁定部分额度作为保证金。如果我们的账户余额总计为 5268 卢布,我们能够买一份期货合约来买入或卖出 1 金衡盎司。因此,当前黄金价格为 $1292.1,汇率为 38.7365 卢布每 1 美元, 我们的杠杆是: ($1292.1 * 38.7365)/5268 卢布 = 9.51:9.5

出于这样的事实,初始保证金显然低于相关商品的期货合约价格,这就有可能结合期货和无风险资产使用复杂多样化策略。例如,取代简单地购买黄金,我们可以按照 1:1 杠杆购买现金结算的黄金期货 - 我们的帐户存款等于初始保证金和用于价格向错误方向移动时的额外风险保护资金,剩余的款项可以存进有利率的无风险银行账户。


2.4. 结算的概念

与合约协商时相比,价格可能明显变化,直到过期。买入或卖出,以及最终价格之间的差价可能很明显,使得交易的一方可能无法履行其义务。为避免这种情况,交易所负责在所有参与者之间提供换算,将价格差异转化为某些参与者的利润和亏损。

这种再分配叫做 结算过程。为执行结算,交易所雇用一家特殊的独立金融组织,名为 结算中心。这是一种避免当事人之间利益冲突的方式,以确保计算的透明度和公正性。

通过结算过程,交易所控制交易者的风险,并确保双方履行义务。在莫斯科交易所,实际帐户的计入和扣除在结算时发生,或者在双方转让期间,而不是在订单平仓时,正如 MetaTrader 4 所做的那样。

券商通过 MetaTrader 4 和 5 提供访问, 实时控制客户的风险。如果 MetaTrader 5 里的未平仓合约或者在 MetaTrader 4 里的订单触及高危亏损级别, 券商立即强行平仓并要求追加保证金。在莫斯科交易所,在结算的时候要求提高初始保证金,因为在结算期间,双方之间会发生实际的资金再分配。

结算过程很复杂,需要时间。莫斯科交易所 (MICEX 和 FORTS 的继任者), 每天进行两次结算: 从 14:00 到 14:03 (日内结算) 以及从 18:45 到 19:00 (夜间结算)。在此期间没有交易保留。为结算而将交易平仓之前,交易所冻结最后一笔交易价格。此价格成为 结算价格。这是所有交易参与者的转让价格。在前次结算时的所有缔结交易和未平持仓都要匹配这个价格。稍后,我们将观察日内结算,但现在我们要关注主要的夜间结算。


2.5. 通过结算持仓滚动

让我们返回我们黄金多头持仓,并从券商和结算中心的视角来分析它。

交易者的多头仓位是 2014.08.05 的 10:00 在 $1292.1 的价格开仓的,并于 2014.08.07.2014 在 $1306.6 的价位平仓,盈利结果 +$14.5。然而,在事件经历的两天之间,结算中心重新计算了三次,冻结相关的结算价格。

表格里是我们的交易持仓,包括时间,价格和事件:

日期价格, $ 事件
05.08.2014 10:00 1292.1 黄金多头开仓
05.08.2014 18:45 1284.9 夜间结算。
06.08.2014 18:45 1307.6 夜间结算。
07.08.2014 18:45 1306.6 夜间结算。期货到期。平多头仓位。

表 16. 通过结算持仓滚动

按照惯例,我们的多头持仓可分为三个段,每段都有其入场和离场的条件和价格,和其财务结果(入场和离场之间的差价)。这个过程在 MetaTrader 5 里被称为滚动。

这张表格将段落可视化:

周期 价格
入场, $
价格
离场, $
财务
结果, $
推动事件
05.08.2014 10:00 - 05.08.2014 18:45 1292.1 1284.9 -7.2 开多头仓位
05.08.2014 19:00 – 06.08.2014 18:45 1284.9 1307.6 +22.7 通过结算滚动
06.08.2014 19:00 – 07.08.2014 18:45 1307.6 1306.6 -1 通过结算滚动
最终结果: +14.5 期货到期, 多头仓位平仓。

表 17. 通过结算滚动

总结果在两种情况下是相同的,都等于 $14.5,但在第一种情况下,计算开仓和平仓之间的差价仅进行一次,而在第二种情况下,会有更复杂的计算,它将持仓划分为三个时间周期。两种情况下的结果始终是相同的,因为结算价位可以任意,它无须等于最后交易的实际价格。

您可以按照任意结算价取代此价格来轻易地验证这一点。再次,结果等于经典计算,因为来自结算前第一天差价的额外收益或亏损,总会被第二天的额外亏损或收益覆盖。但是,结算价格并非总是与通过终端得到的最后交易价格完全一样。

在上例中,仓位滚动的实际结果基于三个独立的仓位。这些仓位有独自的入场和离场价格和财务结果(见上表)。不过,为了便利交易者,在 MetaTrader 5 里结算之后并未创建新仓位,虽然严格意义上讲应该是这样的。

取而代之, 它保留了旧有持仓, 但改变了它的入场价格。这个价格等于最后结算价。该持仓的未实现利润相应地改变。因此,虽然滚动后持仓仍然存在,但其实这是具有自身开仓价和未实现财务业绩的另外持仓。

以上表格通过下图能够更好地示意:

图例.11. 结算和持仓滚动处理

图例 11. 结算和持仓滚动处理

2.6. 变动保证金和日内结算

变动保证金 是账户的浮动财务结果,而非由结算冻结。变动保证金是一个指导性数字,计算您的成交和未平持仓在当前价格基础上的近似财务结果。在外汇市场上,变动保证金的模拟是 净值 的概念。然而,外汇市场的浮动盈亏可以无限期保持。

在莫斯科交易所,夜间结算冻结变动保证金与交易者的愿望无关,并在交易者账户里反映出结算的适当财务结果。因此,每次夜间结算时,变动保证金复位。

日内结算是一次特殊的中间结算,莫斯科交易所对市场参与者的当前仓位进行评估,并更精准地重新分配他们之间的风险。在日内结算时,变动保证金被记录在券商账户的累积收入的特殊字段里。不像变动保证金,累积收入可以作为额外的初始保证金来产生新的交易并提升工具仓位的积累。然而,累积收入并未在主要的晚间结算计算时使用,所以日内结算过程一般可以忽略不计。


2.7. 价格限制的上边界和下边界

日内和夜间清算过程,有效应对外汇交易参与者之间的财政责任的重新分配,并有效控制其风险。不过,有时即使这样的措施也是不够的。在特别激动人心的时刻,市场价格可能会在短时间内急剧变化,以至于在下一次结算时,众多参与者将无法履行其财务责任。为了避免这种情形, 交易所设置 价格限制的上边界和下边界, 并且在触及这些价位时, 将临时暂停接受新交易,并在参与者之间重新分配负债。

价格限制会在每个市场开始新的交易时段时分别设置。当达到限价时,交易所限制某些订单的流动几分钟,重新分配各方之间的风险,然后撤除限制,以及基于当前价格计算并设置新的限价。除了风险控制,交易所的限价能够让参与者冷静下来:经常在触及限价后,市场反转或开始平静地交易。不过,触及限价相当罕见。因此从这些案例中,没有令人信服的价格行为的统计。

限价级别发布在莫斯科交易所指定的官方网站上。例如, 能看到当日 (2014.12.12) 的 美元兑卢布汇率的期货 Si-12.14 限价, 查看它的规格里的相关部分, 在下图中它们用红框显示:


图例. 12. 合约规格页面中的限价上下边界。

图例 12. 合约规格页面中的限价上下边界。

在 MetaTrader 5 中, 限价可通过软件界面访问。例如,限价可以使用脚本来获得,并显示在终端面板上:

2014.12.12 13:04:07.875 GetLimitValue (Si-12.14,H1)     Lower price limit: 54177
2014.12.12 13:04:07.875 GetLimitValue (Si-12.14,H1)     Upper price limit: 57243

现在让我们从图表上看看在触及限价时会如何。我们所看的期货合约 Si-12.14。这是卢布在历史中特有的激动人心的时刻。事实上,这次是卢布在全球贬值。在如此时刻,波动性非常高,并经常触及限价:


价格限制

图例 13. 触及价格限制。

在图表上触及限价时出现连续的几根柱线,其开盘价与收盘价相等。在一个时段期间可以有多个限价。当触及限价,依然还在接受订单,但在这些订单的价格不能高于上限或低于下限价格。否则,订单将被交易所拒绝。

触及限价对于交易机器人是一个严峻的挑战。它们需要识别这种情况,并正确地执行它们的逻辑。虽然这种情况很罕见,但一个设计优良的交易机器人应该考虑到这些。


2.8. 换算操作和指导性汇率计算

只有在计算点的值始终相同时,经典结果和交易所的计算结果匹配。如果期货价格显示的货币与交易者账户货币不同,需要额外的货币换算。在这种情况下,莫斯科交易所采用特殊的 指导性过程,其算法结合了 汤姆森.路透社 和莫斯科交易所外汇市场本身的汇率。

指导性利率的计算细节在文档 "计算外汇指导性汇率的方法论" 中描述,并保存在交易所的文件服务器上。我们只注重方法论的要点,您需要对交易所的换算操作有正确的理解。

由于汇率的计算是浮动的,期货的点值,因其报价是外币,所以也是不断变化的。因此,以账户货币表示的价值,即使点数相同,但在不同的结算时间也有所不同!我们已经知道,在 18:45 至19:00 期间的夜间结算时,交易所会重新分配所有参与者之间的财务结果。

在夜间结算时间,此汇率将以相应货币交易的最后一分钟到莫斯科时间 18:30 的平均价格产生。类似地,日内结算的换算率将以最后一分钟至 13:45 的平均价格产生。

若是莫斯科交易所外汇交易市场的非交易时间,汇率使用汤姆森.路透社计算。然而,在我们的例子中,我们只对两个价格感兴趣: 14:44 时的最后成交价或一分钟柱线收盘价 ,以及 18:29 时的最后成交价或一分钟柱线收盘价。

任何周期的指导性汇率列表可以在此网站找到 http://moex.com/en/derivatives/currency-rate.aspx?currency=USD_RUB

此列表以常规表格和 XML 形式提供, 例如, 可用交易算法精准计算交易结果:

图例 14. 在 moex.com 上的指导性货币汇率

图例 14. 在 moex.com 上的指导性货币汇率

MetaTrader 5 提供了一个单独的指导性工具 FORTS-USDRUB 在图表上可视化利率。

此处是图表:

图例 13. 指导性工具 FORTS-USDRUB 的图表

Figure 15. 指导性工具 FORTS-USDRUB 的图表


2.9. 在结算价位计算成交和持仓

现在,我们已经产生了期货合约是如何计算的概念,让我们试着来计算我们的交易财务结果,而不用依赖券商的计算,因为要处理问题的最好办法是尝试自己解决它。

让我们来分析以下任务。在 2014/09/24 至 2017/09/25 期间有四张买卖黄金的订单。这些订单通过若干成交来填充。

下面的表格来自 MetaTrader 5, 它描述了这种情形:

图例 14. 在 MetaTrader 5 中呈现的交易执行操作

图例 16. 在 MetaTrader 5 中呈现的交易执行操作

基于 MetaTrader 5 中显示的表格,这表格里包含交易操作的计算:

表 18. 全部结算

表 18. 全部结算

在此表格中的订单,净持仓记为棕绿色,成交为白色,计算中是灰色。

"结算日" 一栏将交易操作划分到结算日 – 时间间隔从前一天的 19:00 到本日的 19:00。接下来的五列是我们熟悉的,来自前一张的 MetaTrader 5 成交和订单表格。它们包含了下单时间和成交时间,订单或成交的单号,入场价和交易量。在 "价格" 列里的订单包含所有相关成交的入场价加权平均值。

"结算价" 一栏列举了相应结算日品种交易时段的结算价或最后的成交价。此价格可通过分析 18:44 时最后一分钟柱线的收盘价来获得。此外, 在 "交易结果" 表格里出示的每个工具的价格由交易所生成,并发布在品种的规格区。

我们的黄金期货表格位于: http://moex.com/en/derivatives/contractresults.aspx?code=GOLD-12.14:

图例.17. 期货合约的交易结果发布在 moex.com

图例 17. 期货合约的交易结果发布在 moex.com

"结果, $" 列简单地显示成交价格和结算价格之间的差价乘以交易量。对于买入操作它等于 (结算价 – 成交价) * 成交量。对于卖出操作它等于 (成交价 –结算价) * 成交量。

"换算率 USD/RUB" 一栏是当日 18:30 时的换算率。正如已经提及的,在 MetaTrader 5 终端里提供的这个汇率是指导性工具形式,并在交易所网站作为换算率的特殊表格。

"结果, RUB" 包括所有交易结果和卢布的仓位。了解在 "换算率 USD/RUB" 列中指定的换算率, 您可以根据公式很容易地计算每笔交易和持仓的卢布结果:结果, $ * 换算率 USD/ RUB。例如, 成交单号 1469806 的结果是 -$3.2 * 38.2961 = 122.55 卢布

接下来的两列包含交易所和券商执行交易收取的费用。略微更多的细节。在莫斯科交易所,交易所和提供访问的券商两者都收取手续费。券商的佣金按照资费计划从客户抽取。

例如, 券商 "Otkritie" 从大于 20000 卢布的客户帐户里每笔合约抽取 0.71 卢布。这个价格列在表格里作为基础之一。交易所的佣金涉及更复杂的计算。每个工具都要设置单独的佣金费。它由两部分构成,且在合约规格部分指定 - "合约买/卖费""日内 (剥头皮) 费"

我们的黄金示例位于: http://moex.com/en/contract.aspx?code=GOLD-12.14

图例.18. 在 moex.com 上的合约规格

图例 18. 在 moex.com 上的合约规格

交易所也从每笔买卖合约里抽取佣金, 但市场将所有提交事务划分为 剥头皮非剥头皮。剥头皮交易是在结算时其交易量无法产生净持仓的交易。

这是一例。一份合约的买卖两笔交易在交易时段执行,它们的总价值或结算时的净持仓为零:1 买 + 1 卖 = 0。在结算之后没有产生净持仓。全部这些交易可视作剥头皮,并遵守相关的资费 "日内 (剥头皮) 费": 每笔合约 0.5 卢布。

如果两份买入合约,出售其一,清算过程中会形成 1 份多头净持仓(2 买 + 1 卖 = 1 买)。一份合约产生一个净持仓,所以它会视为非剥头皮交易,而剩余交易量是“剥头皮”。两份合约的费用是 2*0.5 = 1 卢布,1 卢布以上是针对一份非剥头皮合余额收取。总佣金为 2 卢布。

在合约协商一刻,还不知道交易是否为剥头皮。所以剥头皮费用可以立即收取,而对于非剥头皮交易的其余费用,则在净持仓产生时收取。这种方法简单、清晰,而且它在以上表格里被采用。

计算公式表示如下:

剥头皮费用 * (合计(买入) + 合计(卖出)) + (非剥头皮费用 - 剥头皮费用) * 模(合计(买入) - 合计(卖出))

即,在交易时段所有已协商交易的交易量求和,并乘以剥头皮费用。

然后计算所有买卖交易累积量之间的绝对差(它形成了净持仓量),并将该差值乘以基本费用(非剥头皮是剥头皮的两倍),然后与初始费金额求和。

一旦所有交易计算完毕,在其总交易量的基础上形成结算时的净持仓。在表格里,此操作被标记为 "初始净持仓",并在 2014/09/24 的结算期间 18:45 出现。在表格里显示的非剥头皮费用基于净持仓计算 ((1.0 卢布 - 0.5 卢布) * 10 份合约 = 5 卢布)。

下一个交易时段将于 2014/05/25 19:00 开放, 会为此仓位收取变动保证金, 即开仓价 (2014/09/24 结算价格) 和当前价之间的差价。即使在此时段提交的交易方向相对,它们仍然会与结算价匹配,而不会是该持仓。

因此,成交和持仓将一直存在,直到结算,这可从图表上清晰看到这些交易活动:

图例.17. 结算规划

图例 19. 结算规划

注意最后一天,当前持仓由相反的交易“平仓”。事实上,它们并非平仓,而是冻结其价格。仓位仍然产生 - $105 亏损,但它会由相反交易的利润 +$89 来补偿。


2.10. 当未能彻底平仓时

事实上,净持仓接近表示交易者的义务。在结算日期间,换算率和独立计算每笔交易,这些义务与结算价格密不可分。

计算出的净持仓,与交易所计算之间的差异,可以看到意料之外的外表,甚至自相矛盾。在 MetaTrader 5 里, 以外币报价的工具平仓后均会用存款货币表示为固定的结果。

此结果在平仓时计算,并且取决于获利点数和换算率。第一个数值总是恒定的,它在平仓时获得,并不可再改变。不过,换算率在平仓时可以浮动(尚未记录)。在这种情况下,相同点数的成本持续变化,直到汇率冻结。

换句话说,如果我们在下午三点钟平仓,其财务结果仍然会略有不同,截至 18:30,换算率冻结!由于 MetaTrader 5 在平仓时锁定利润, 券商将会在结算时的冻结换算率与平仓时的换算率之间进行额外调整。


2.11. 分析券商报告

为了总结这一章,让我们来分析实际帐户的某日账单。这是由券商“Otkritie”提供的报告。

账户帐单可在网站的 "个人账户" 以若干格式订购, 但我们的帐单将使用 pdf。

这份帐单涵盖了 2013 年 9 月 26 日交易时段。让我们考察一下它的细节:

图例. 20. 来自 "Otkritie" 的标准报告

图例 20. 来自 "Otkritie" 的标准报告

客户帐单摘要 - 表中包含所选周期的最终结果摘要,在此情况下为一个交易时段。

开盘余额 - 于 2013/09/25 19:00 交易时段开始时的账户大小。

券商佣金 - 券商佣金总额度。基于券商的汇率计算。在此情况下,它等于每笔合约 0.24 卢布。在交易时段结束时合约总数为 239。因此,券商佣金的金额为 239 合约 * 0.24 卢布 = 57.36 卢布, 这正好对应于该列中指定的值。

交易所费用 - 交易所收取的总费用.在此时段买卖 15 份合约的 RTS-12.13 或 RIZ3。每份 RIZ3 的合约费用是,剥头皮 1 卢布,非剥头皮 2 卢布。因此,根据上面给出的公式,我们在这些交易结束时获得的费用:

费用 = 1 卢布 * (15 买 + 15 卖) + 模(15 买 – 15 卖) = 1 卢布 * 30 + 0 = 30 卢布。

类似地,我们可以计算出其它合约的总佣金。它们的总金额将等于该列中的值:141.50 卢布。

变动保证金 - 2013 年 9 月 26 日 18:45 结算时的冻结利润或亏损。这部分导致 11,179.80 卢布的损失。

收盘余额 - 计算如下: 收入额 + 变动保证金 + 券商佣金 + 交易所费用。

保证金需求 – 该表包括维持当前净持仓所需的初始保证金的数值。保证金的实际数值“保证金需求”里指定,在这种情况下,它是 64,764 卢布。这些保证金用于维持 SRZ3 的 63 份净空头合约。因此,初始保证金为一个合约是 1028 卢布。可用余额时计算出的收盘余额和所需保证金之间的差价。该金额可用作未来交易的保证金。

持仓 - 此表包含当前结算时的活跃净持仓. 在我们的例子中,仅有一笔净持仓,出售 SRZ3 的 63 份合约。然而,通过简单地计算所有交易的成交量,我们可以发现,它们的净金额不等于我们的净持仓。特别是,对于所有 SRZ3 交易的净持仓是 195 份卖合约,且 GZZ3 的净持仓为 14 份买合约,虽然这个工具没有持仓。

这些交易的交易量到哪里去了?实际上仓位的信息只在它们形成的时间才可用。因此,如果今天 SRZ3 开仓,它不会显示在明天的报告里,但在明天的报告里,其变动保证金将被冻结,就像所有交易一样。前一天(2013年9月25日)的开仓同样如此。它们只是不可见。因此,该交易的一部分今天结束,以前的平仓在报告中未显示。经分析,我们可以计算出来,在当前时段开始时,账户已经有一笔 132 份合约的 SRZ3 多头持仓: -195 份合约 + x = -63. X = -63 + 195 = 132 份合约。

如果我们下载前一天的报告(2013 年 9 月 25 日),我们会看到,形成了新的持仓:SRZ3 的 132 份多头合约持仓,和 GZZ3 的 14 份空头合约持仓,它们会转移到当前的交易时段。此类“隐形”仓位变动保证金是根据上述规则计算得出,即是,从“结算到结算”。

在交易系统里的事务 – 这是报告的最终表格。它包含有关当前交易时段中所执行的交易的信息。我们不会计算表中的所有交易,因为我们已经知道计算方法。让我们来计算两笔交易的变动保证金,只是为了确保我们与真实的券商计算结果相对应。让我们拿前两个交易 GZZ3 (成交单号 11442116682 ) 和 RIZ3 (成交单号11442102223)。

GZZ3 是 100 股 Gazprom 股份的期货交割合约。它以卢布报价,所以我们并不需要额外将其价值换算为卢布。根据报告,多头交易在 14,772 卢布执行。在“报价”一列,合约结算价等于 14,777 卢布。为了确保这个价格,在莫斯科交易所网站检查合约页面下方的“交易结果”。这个价格被列在相关日期的“结算价”一栏中。因此,买卖价格之间的差价为 5 点: 14,777 - 14,772 = 5 点。一点等于 1 美元,因此这笔交易的结果等于 +5 卢布,其在这笔事务之前的“变动保证金”一栏中指定。

RIZ3 是 RTS 指数的期货现金结算合约。其变动保证金的计算稍微复杂一点。此合约一点为 2 美分 ($0.02)。计算结算与成交之间的差价: 145,040 - 145,850 = -810 点。乘以 2 美分: -810 * $0.02 = -$16.2。这笔交易带来的损失为 - $16.2。现在将美元换算为卢布,为此我们使用当天的换算率。正如您已经知道的,它是在 http://moex.com/en/derivatives/currency-rate.aspx 并等于 32.1995 卢布。结果换算为卢布,并乘以买入合约数量: -$16.2 * 32 * 3 = -1564.8957 卢布。此值正好等于券商报告里的数值。


2.12. 自动计算

MetaTrader 5 提供内置报告生成功能,基于执行的交易和订单历史记录。然而,它不支持高级的报告,如单独的交易活动算法。此外,在 MetaTrader 5 中的计算方法与来自结算中心的方法不同。不过, MetaTrader 5 提供了新的 WebRequest() 函数。

此函数可用于智能专家程序,接收来自各种 Web 服务器的信息。例如,它们可以直接从莫斯科交易所的网站接收结算价和换算率。这些数值的可用性使之有可能将交易者的持仓计算完全自动化,并通过上述方法分别为每种交易算法(智能专家程序)计算财务业绩。

这是一个复杂且消耗资源的计算。除此之外,您将需要将结算周期匹配到单一交易事务。然而,如果将之完成,交易者将得到一个难以置信的精确统计工具,在此情况下,将有最大的清晰度和简洁性。当然,这样的工具将吸引更多的潜在交易者通过 MetaTrader 5 交易终端来访问莫斯科交易所衍生产品市场。 


结论

我们已经研究了交易定价的基本问题。我希望这些信息对您有用。

莫斯科交易所的结算中心进行的计算与定价问题有关。根据结算期间至下一个交易时段的总持仓和滚动,执行交易并使用结算价计算它们,构成一套责任互补的复杂系统,并在参与者之间再分配。在 MetaTrader 5 中体现的净持仓和交易,与交易所的结算系统有机配合,使之有可能考虑这个平台作为进行外汇交易的基础,并用它将您的交易自动化。

交易定价的知识,以及在参与者之间结算的细微之处,为构建能够在交易所环境中运行的,进行可靠交易的系统铺平了道路.此外,价格形成及其性质的知识,可以在开发交易系统领域提升进一步研究的兴趣。例如,进一步研究可以关注持仓或买卖双方整体流动性的动态变化,可以针对模式搜索,以及在之前的买卖双方结构变化的基础上来预测未来价格动态。

这些想法很有趣,我希望这篇文章中概括的知识,将是探索它们的一个良好基础。

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
原文地址: https://www.mql5.com/ru/articles/1284

交易者的统计 - 烹饪宝书:假设 交易者的统计 - 烹饪宝书:假设

本文讨论假设 - 数理统计的基本理念之一。各种假设需要进行检查,并利用数理统计方法的实例进行验证。使用非参数方法生成实际数据。Statistica 开发包和移植的 ALGLIB MQL5 数值分析库可用于处理数据。

液态图表 液态图表

您是否希望在小时图表里看到本小时内第二和第十五分钟开盘的柱线?每分钟开盘价都在变化的重绘图表看上去会像什么样?依据这样的图表进行交易有何优势?您将在本文当中找到这些答案。

让开发者为交易者进行服务? 让开发者为交易者进行服务?

算法交易变得越来越流行并需求旺盛,这自然导致了对于精致算法以及不同寻常任务的需求。从某种程度上说,这些复杂的应用程序都已经在代码库或市场中提供。尽管交易者只需几次简单的点击就可以访问这些应用, 但是这些应用也许不能完全满足所有的需要。为此, 交易者可以在 MQL5 的自由职业者板块分派订单,并寻找开发者来为他们编写期望的应用。

MQL5.com 自由职业: 开发者的收入来源 (信息图) MQL5.com 自由职业: 开发者的收入来源 (信息图)

值此 MQL5 自由职业服务的第四个生日, 我们准备了一幅信息图来展示其自创生来的整体服务成果。让数据本身说话: 迄今已总计执行了超过 10000 笔订单, 价值约 $600,000, 有 3000 余客户和 300 余开发者已经在使用此服务。