以莫斯科交易所衍生产品市场为例的交易定价原则·进阶篇
◍ 流动性的真实边界与价格牵引
准备吃下 33 份黄金合约(2+15+3+13)时,盘口里只有 16 份可撮合。此时再下市价单,大概率只会部分成交甚至完全不撮合,卖方同样受限于对手方流动性。MT5 市场深度里白色空行就是缺口价位,可隐藏也可展开,最大化与最小化视图下同一深度表现不同。 把成交序列放横轴、金价放纵轴,红线是最佳卖价 Ask、蓝线是最佳买价 Bid、绿线是最新成交 Last。先买后卖的动作会持续改写 Last,因为交易所价格就是最后一笔成交价。第 4、5 笔同价很正常——同一价位可排多个对手,但每笔成交始终只有买卖双方两人,不同卖家量不同,就堆出一条分时直线。 MT5 市场观察窗口切到「分时」栏就能看 Ask/Bid/Last 三线实时流,最佳卖价蓝线、最佳买价红线、成交绿线。两者价差是点差,每撮合一笔愿意按最优价交易的对手就少一个,点差随之扩张,相当于我们「吞噬」了流动性,价格才跟手移动。 剧烈行情时点差会大幅拉开、流动性骤降,市价入场滑点可观,外汇与贵金属属高风险品种,低流动性时段市价单成本可能极高。交易所常引入做市商压窄点差、补流动性:原始盘口里 $1280.1 与 $1279.7 各挂 500 盎司,无做市商时加权买盘约 $1280.46,有做市商后贴近 $1280.1,我们主要从做市商吃单,微量销售几乎掀不起波澜。 不想付滑点就改挂限价单。原深度卖盘 17/3/5/1/2/15/3/13,挂 $1279.9 买 17 盎司后,买侧多出一档 17,所有人都能看见这笔单;但限价单不保证成交,若别人市价扫货或更高价买单插队,我们就从队首顺移到中部甚至更后,价续涨就废单。 部分执行是核心机制:挂 $1280.3 买 17,优于或等于该价的卖盘共 9 盎司(1+5+3)先撮,剩 8 盎司留在 $1280.3 档。限价单可「主动劣化」到比市价更差的位置来圈定最大滑点——一方面成交价不会差过设定,另一方面至少能吃到即时流动性的一部分。 市价单保执行不保价,限价单保价不保执行;一张单可拆多笔成交,完整/部分/不执行都要在策略里兜底。高波动时市价单滑点大但可能比限价不成交好,低流动性慢市挂市价单可能直接打穿账户,外汇贵金属高风险,平衡点得自己按盘面拿捏。 中央交易所能统计总限价买量(总需求)与总限价卖量(总供给)及买卖家数,这类实时情绪数据 MT5 本身不画图,但 MQL5 可自绘表格或分时;现成如 IShift 这类程序就能监控买卖意愿量。MT4 里订单可开可平,交易所模型里订单只有成交或不成交,反向发单才是平仓。
MT5 订单与成交分离带来的执行透明度
MT4 的订单是一笔捆绑了开仓与平仓的事务,最多附带止损/止盈;MT5 的订单只是买或卖的指令,真正推动账户变动的是成交(deal)。两者概念错位,是很多从 MT4 迁过来的交易者第一道坎。 在 MT5 中,一笔订单可由多笔成交完成,系统会明确给出执行该订单的承包商数量与成交价位。这种数据暴露让执行过程可审计,而 MT4 执行后的订单无法反推是谁、以什么路径成交。 看 MT5 市场深度时,能在入场前估算大概滑点;MT4 做不到这点。更关键的是部分填充:MT5 订单额度和已成交总量直接比对——相等即执行完,少于即处理中或部分成交。MT4 真实环境也可能只跑出大单的一部分,但既不说是流动性不足还是券商阻挠,也不给任何确认信息。 订单执行往往耗时,不是瞬时事件。限价单的部分履行里,一部分由若干成交填掉,其余挂起等价,过程中成交越积越多。MT5 里订单状态始终清晰可监视;MT4 执行期间状态未定义,中间发生什么全是黑盒。外汇和贵金属杠杆高,执行黑盒会放大滑点与拒单风险,建议开 MT5 演示账户对比同一品种在两端的成交明细。
「莫斯科交易所期货的结算与滚动机制」
在莫斯科交易所衍生品分部,期货采用现金结算为主:到期时买卖双方不交实物,只结清协商价与到期价之间的差额。以 2014 年 8 月黄金期货为例,5 日 10:00 以 1292.1 美元/盎司开多,7 日 18:45 到期价 1306.6,理论利润 14.5 美元;但中途经历三次夜间结算,持仓被切成三段滚动。 具体切法:8 月 5 日结算价 1284.9(段一亏 7.2),6 日结算价 1307.6(段二赚 22.7),7 日结算价 1306.6(段三亏 1),加总仍是 14.5。MT5 不在结算后开新仓,而是改写原仓入场价为上一结算价,未实现盈亏同步变——严格说这是换了底仓,界面上却还是同一行。 交易所每天跑两遍结算:14:00–14:03 日内、18:45–19:00 夜间,各冻价约 15 分钟。夜间结算会把变动保证金固化进账户,复位浮盈;日内结算的累积收入可当额外保证金用,但晚间不算它。外汇/贵金属带高杠杆,结算价若跳空,滚动段可能单段巨亏,实盘前先用模拟账户核一遍分段数。 未平仓合约(OI)在 MOEX 是实时推送,CME 却要收盘后几天才公布。MT5 里取 OI 需写 MQL5 程序读市场深度以外的专用字段,不是看盘就能瞅见。价格涨跌停边界由交易所在每时段开局重设,碰线停单几分钟重新分险,历史触线样本少,别拿它当反转信号。
◍ 结算价与指导性汇率决定卢布盈亏
莫斯科交易所的期货若以美元报价、账户却是卢布,点值就会随指导性汇率浮动。换算率不是固定值:夜盘结算取莫斯科时间 18:30 前最后一分钟均价,日盘结算取 13:45 前最后一分钟均价;非交易时段则引用汤姆森·路透社汇率。你只盯 14:44 与 18:29 的一分钟收盘价就够了。 以 GOLD-12.14 为例,成交单 1469806 结果为 -$3.2,乘当日 18:30 指导性汇率 38.2961,得到 -122.55 卢布。汇率表在 moex.com 的 currency-rate 页以表格和 XML 双格式提供,MT5 也挂了 FORTS-USDRUB 工具直接画图。
| 交易所佣金分剥头皮和非剥头皮两档。公式可写成:剥头皮费×(总买+总卖) + (非剥头皮费−剥头皮费)× | 总买−总卖 | 。黄金合约剥头皮 0.5 卢布、非剥头皮 1.0 卢布,10 份净持仓的非剥头皮附加费就是 (1.0−0.5)×10=5 卢布。 |
|---|
券商「Otkritie」对大于 2 万卢布账户每合约抽 0.71 卢布基础佣金,和交易所费用是两套账。自己拉成交表重算一遍,比等券商报告更不容易在 18:45 结算时踩坑。外汇与贵金属期货杠杆高,重算仅降低对账风险,不消除爆仓可能。
用 Web 数据喂饱 EA 的业绩核算
MQL5 里的 Web 请求函数能让智能专家程序直接拉取外部服务器数据,比如莫斯科交易所官网的结算价与换算率。把这类数值接进 EA 后,持仓的财务业绩可以按每个算法分别自动算清,不用人工对账。 这套做法本质是把结算周期对齐到单笔交易事务,计算复杂且吃资源,但一旦跑通,你就拥有了一个精度极高的统计模块。2014.12.12 13:04:07 的日志显示,Si-12.14 的 H1 周期下限 54177、上限 57243,这类边界值正是自动核算时必须实时校对的参数。 外汇与贵金属自带高杠杆风险,接外部行情做自动业绩统计前,先在 MT5 策略测试器里用小资金验证 Web 请求稳定性,避免实盘时断流导致核算错位。
class="num">2014.12.class="num">12 class="num">13:class="num">04:class="num">07.875 GetLimitValue(Si-class="num">12.14,H1) Lower price limit: class="num">54177 class="num">2014.12.class="num">12 class="num">13:class="num">04:class="num">07.875 GetLimitValue(Si-class="num">12.14,H1) Upper price limit: class="num">57243
「从定价机制延伸到自动化交易的下一步」
把交易所结算价的滚动与净持仓再分配逻辑摸清楚后,MT5 的持仓模型和交易所清算接口其实是同构的,这意味着你写的 EA 在外汇或贵金属上跑,账面盈亏和结算责任能对得上交易所的账。 顺着这个基础,下一步值得盯的是买卖盘流动性结构的动态偏移——比如某合约在结算窗口前总持仓从 12 万手滚到 8 万手时,盘口 ask 厚度若同步缩一半,价格向 bid 侧挤压的概率会明显上升。 这类现象在莫斯科交易所的 Si 系列合约上反复出现,用 MQL5 把 Level II 深度和持仓变动叠在一起回放,比单纯看 K 线更能抓到定价断层。外汇和贵金属杠杆高、跳空频繁,任何基于结构的推断都只是概率优势,实盘前先在策略测试器跑够样本。 作者那串关于 R 平方评估、自定义回测的文章,算是把这条线接下去的现成台阶,有兴趣直接照着复现就行。