第三章:交易系统基础
做量化交易这些年,我见过太多人一上来就研究策略、回测、机器学习。但说实话,如果连交易系统的基础都没吃透,后面全是空中楼阁。今天我们就聊聊电子交易系统的骨架——架构、订单类型,还有市场微观结构。
3.1 电子交易系统架构
先说说架构。我刚开始做交易系统时,以为就是客户端连上交易所就完事了。后来被坑过一次才明白,这里面的门道深着呢。
一个典型的电子交易系统,通常分三层:
- 接入层:负责跟交易所通信。处理协议、心跳、重连这些脏活累活。
- 核心层:订单管理、风控检查、路由决策。这是系统的脑子。
- 策略层:跑你的交易策略,生成买卖信号。
我个人习惯把架构画成下面这样:
嗯,这里要注意。接入层是最容易被忽视的。我在项目中遇到过,策略跑得好好的,突然断连了。结果发现是交易所的会话超时机制没处理好。从那以后,我每个接入模块都加了自动重连和状态监控。
核心原则:每一层都要做隔离。策略层崩了不能影响接入层,接入层断线不能把核心层带崩。各层之间通过消息队列解耦,这是血的教训换来的。
3.2 订单类型
订单类型看着简单,但用错了会出大事。我见过有人把止损单当限价单用,结果亏了二十多万。咱们一个一个说。
3.2.1 市价单
市价单,说白了就是「不管多少钱,我现在就要成交」。它的特点是:
- 成交速度快:几乎瞬间吃掉对手盘
- 成交价格不确定:尤其在流动性差的时候,滑点能让你怀疑人生
我曾经在某个小品种上用过市价单,结果滑了3个tick,直接亏掉当天的利润。所以我现在只在流动性好的主力合约上用市价单。
3.2.2 限价单
限价单是「我只愿意在这个价格买/卖,高了我不买,低了我不卖」。它的特点是:
- 价格可控:不会出现滑点问题
- 成交不确定:可能挂一天都成交不了
做市策略基本全靠限价单。我建议,如果你做的是中低频策略,尽量用限价单。虽然慢一点,但成本可控。
3.2.3 止损单
止损单是风控的最后一道防线。它的逻辑是:价格触及止损价后,变成市价单或限价单去成交。
这里有个坑——止损单不保证成交价。我曾经在股指期货上设了止损,结果行情跳空,直接穿过了止损价,成交价比止损价低了十几个点。嗯,这就是所谓的「滑点放大」。
避坑指南:我曾经吃过一次大亏。在流动性差的合约上用了市价止损单,结果成交价远低于预期。后来我改用限价止损单,虽然可能不成交,但至少不会出现不可控的亏损。
三种订单的对比,我整理了个表格:
| 订单类型 | 成交确定性 | 价格确定性 | 适用场景 |
|---|---|---|---|
| 市价单 | 高 | 低 | 流动性好、追求速度 |
| 限价单 | 低 | 高 | 做市、成本敏感型策略 |
| 止损单 | 中 | 中 | 风控、趋势跟踪 |
3.3 市场微观结构
市场微观结构,听起来高大上,其实就是研究「订单是怎么撮合的」。你想想看,交易所里每天几百万笔订单,它们是怎么匹配的?
3.3.1 订单簿
订单簿就是交易所的「记账本」。买方的限价单按价格从高到低排,卖方的限价单按价格从低到高排。中间那个价格差,就是买卖价差。
我习惯把订单簿想象成一个「跷跷板」:
你看,买方最高出价100.50,卖方最低要价100.60。这中间的0.10就是价差。如果你现在用市价单买入,就会吃掉100.60那180手,然后继续吃100.70的。
3.3.2 买卖价差
价差是市场的「手续费」。你想想看,一买一卖之间,价差就是你的成本。流动性好的合约,价差可能只有1个tick。流动性差的,价差能大到几个tick甚至更多。
我建议,做策略之前先看看目标合约的价差。如果价差太大,你的策略利润可能全被价差吃掉了。我在做商品期货时,就因为这个原因放弃了好几个品种。
3.3.3 流动性
流动性,说白了就是「你想买的时候有人卖,你想卖的时候有人买」。衡量流动性的几个指标:
- 订单簿深度:挂单的数量多不多
- 价差宽度:买卖价差小不小
- 成交速度:大单能不能快速成交
个人经验:我一般用「订单簿前五档的总量」来判断流动性。如果前五档加起来不到100手,我基本不会用市价单。另外,早盘和尾盘的流动性通常比盘中差,这个也要注意。
为什么会这样?因为做市商在开盘和收盘时风险最大,他们往往会缩小挂单量。所以如果你在开盘时用市价单,滑点可能会比较大。
好了,这一章的内容就这些。交易系统的基础,说白了就是搞清楚「订单怎么来、怎么走、怎么成交」。把这些搞明白了,后面讲策略实现的时候,你才能知道代码到底在干什么。
公众号:蓝海资料掘金营,微信 deep3321