港股 vs A 股下单规则对比:从交易所规则到 OMS/FIX 风控落地
文章目录
本文面向 OMS/EMS、FIX 网关和程序化交易研发人员,不构成投资建议,也不能替代券商、交易所当日公告、证券主数据和合规意见。
资料核对日期:2026-08-12。规则会调整;实际送单应以交易所当日有效规则、券商准入、证券状态、交易日历、公司行动及实时行情为准。
一、结论:不要为“股票”写一套通用下单规则
把港股视为“代码五位、币种 HKD”的 A 股变体,往往会在真实送单时出错。至少需要区分:
- 数量单位:A 股普通股票通常按 100 股买入;港股普通自动对盘按证券级
board lot,不能硬编码。 - 价格网格:A 股股票通常是 0.01 元;港股由
Spread Table Code和价格档位决定。HKEX Phase 2 已于 2026-08-03 改变部分证券的 tick。 - 市场状态:A 股主要处理涨跌幅、有效申报价格范围、集合竞价与保护限价;港股处理 POS/CTS/CAS、报价规则、竞价订单类型与 VCM。
- 卖空:港股受监管卖空要同时满足指定证券、覆盖/借券、卖空价格规则和券商声明;仅把 FIX Side 写成
SELL_SHORT不够。 - 通道和交收:本地 HKEX DMA、北向 Stock Connect、南向港股通不是同一个订单模型;交收周期也不等于成交后是否可售。
二、先把市场、板块和通道拆开
本文比较的范围:
| 范围 | 说明 |
|---|---|
| HKEX 本地证券市场 | OTP-C 自动对盘的香港股票订单,适用 HKEX POS/CTS/CAS 等规则 |
| A 股 | 上交所主板/科创板、深交所主板/创业板、北交所股票竞价交易 |
| 北向 Stock Connect | 香港/海外投资者交易沪深证券,遵循沪深交易规则,不是 HKEX 本地 POS/CAS |
| 南向港股通 | 内地投资者交易香港股票,但受港股通资格、人民币结算、交易日历及券商安排约束 |
ETF、REIT、债券、期权、权证、结构性产品、大宗交易等都有专项规则。订单路由的第一步应解析:
| |
三、核心规则总表
| 维度 | 港股(HKEX 本地) | 沪深主板 | 科创板 | 创业板 | 北交所 |
|---|---|---|---|---|---|
| 普通买入最小数量 | 证券 board lot | 100 股 | 限价/市价通常至少 200 股 | 100 股 | 100 股 |
| 数量增量 | 普通 automatch 为 board lot 整数倍 | 100 股整数倍 | 超过 200 股可按 1 股递增 | 100 股整数倍 | 100 股整数倍 |
| 普通竞价单笔上限 | 3,000 board lots | 通常 100 万股 | 限价 10 万;市价 5 万 | 限价 30 万;市价 15 万 | 100 万股 |
| 股票最小价位 | Spread Table Code 驱动 | 0.01 元 | 0.01 元 | 0.01 元 | 当前 0.01 元 |
| 常规涨跌幅 | 无普遍日涨跌停 | ±10% | ±20% | ±20% | ±30% |
| IPO 初期 | 不适用 A 股“五日”模型 | 以当期注册制规则/状态为准 | 前 5 个交易日无涨跌幅 | 前 5 个交易日无涨跌幅 | 向不特定合格投资者公开发行股票上市首日无涨跌幅 |
| 连续交易订单 | Limit / ELO / SLO | 限价、市价申报 | 限价、市价申报 | 限价、市价申报 | 限价、市价申报 |
| 市价单边界 | 不可把 FIX Market 直接当作 HKEX 通用市场单 | 依交易所规定的市价类型与状态 | 保护限价和板块规则 | 保护机制与价格笼子 | 有涨跌幅证券连续竞价,须保护限价 |
| 买入后的可售 | 券商、持仓和信用安排决定 | 股票通常 T+1 才可卖 | 同左 | 同左 | 同左 |
表中数值不是可直接硬编码的唯一输入;下单前还要结合证券状态、当前行情、订单类型和交易日历。
四、港股:四类最容易被 A 股逻辑误伤的规则
4.1 数量:board lot 不是“港股版 100 股”
对 HKEX 自动对盘证券:
- 单笔订单最大为 3,000 个 board lots;
- 每个交易所价格队列最多 40,000 笔订单;这不是单一 OMS 或券商独占的限额;
- 普通自动对盘订单按当前证券 board lot 处理;零股/特别手是否可交易、如何路由取决于交易所规则和券商支持。
正确的普通整手预校验概念如下:
| |
不要把此逻辑泛化到 odd lot / special lot 路径。board_lot 应是带生效日期的证券主数据:拆股、合股、供股、证券迁移和公司行动都可能改变结果。
HKEX 已于 2026-07-02 启动 board-lot 框架优化,并会在 2026-11-16 USM 上线时进入下一阶段。它不表示存量股票已经同时改为统一手数。HKEX 对零股自动撮合的探索最早预计 2027 年第三季度,仍受监管批准和市场准备条件约束。
4.2 价格:四位小数不等于 tick 校验
HKEX 的最低价差取决于证券的 Spread Table Code。截至本文核对日,最小价差下调 Phase 2 已于 2026-08-03 生效;对适用的 Spread Table Code 01 证券,常用档位如下:
| 价格区间(货币单位) | 最小价差 |
|---|---|
| 0.01–0.25 | 0.001 |
| >0.25–10.00 | 0.005 |
| >10–20 | 0.010 |
| >20–50 | 0.020 |
| >50–100 | 0.050 |
| >100–200 | 0.100 |
| >200–500 | 0.200 |
| >500–1,000 | 0.500 |
| >1,000–2,000 | 1.000 |
| >2,000–5,000 | 2.000 |
| >5,000–9,995 | 5.000 |
这个表不能按 .HK 后缀一概套用。ETP、债券、交易所买卖期权、结构性产品、inline warrants 等应读取各自的 Spread Table Code。工程上应:
- 使用 decimal 或定点整数判断价格网格,避免
float64做余数比较; - 保存
spread_table_code、产品类型、规则版本和生效日期; - 用当前 Security Definition / 行情主数据得出 tick;
- 把 tick、名义价限制、quotation rule、POS/CAS 价格范围拆成不同拒因。
港股没有 A 股式的统一日涨跌停,但并非没有价格约束:还需要处理名义价九倍/九分之一限制、连续交易 quotation rules、POS/CAS 价格范围和 VCM。应避免把所有港股价格拒绝都笼统标成“超涨跌停”。
4.3 时段:POS、CTS、CAS 是不同的状态机
| 时段 | 时间 | 行为要点 |
|---|---|---|
| POS | 09:00–09:30 | 仅 at-auction / at-auction limit;09:15–09:20 不可撤,09:20–最多 09:22 随机撮合,之后 blocking |
| CTS 上午 | 09:30–12:00 | 连续交易,Limit / ELO / SLO |
| Extended Morning | 12:00–13:00 | 仅适用于指定 Extended Trading Securities;不是一般港股午间交易时段 |
| CTS 下午 | 13:00–16:00 | 连续交易 |
| CAS | 16:00–随机 16:08–16:10 | CAS 证券的收市竞价;16:06–16:08 不可撤 |
半日市没有 Extended Morning 和下午 CTS;CAS 证券在 12:00–随机 12:08–12:10 收市,非 CAS 证券于 12:00 收市。
HKEX 本地 OTP-C 不存在可简单等价为“CTS 普通市价单”的通用 Market Order。FIX OrdType=Market 是否被某券商接收,属于 broker contract 和具体 venue-session 的组合判断,不能从交易所规则直接推导。
4.4 卖空:侧别、覆盖和声明缺一不可
受监管卖空至少要求:
- 标的位于 HKEX 当前的指定卖空证券名单;
- 卖空前有借券或无条件交付证券的权利,禁止裸卖空;
- 订单具有正确卖空标识;
- 连续交易一般不得低于当时最优卖价,法定/规则豁免除外;
- POS/CAS 还受专用订单类型和价格限制:例如 POS 卖空只能用 at-auction limit,且不得低于前收。
券商 FIX 的 locate / covered 声明属于另一层。它必须以已签署规格与 UAT 结果确定,不能替代指定证券、借券覆盖和交易所卖空价格规则。
五、A 股:分板块,而不是只有“±10%”
5.1 沪深北竞价和撤单窗口
普通股票竞价的核心时间结构:
| 时段 | 时间 |
|---|---|
| 开盘集合竞价 | 09:15–09:25 |
| 连续竞价上午 | 09:30–11:30 |
| 连续竞价下午 | 13:00–14:57 |
| 收盘集合竞价 | 14:57–15:00 |
通常 09:20–09:25 和 14:57–15:00 不接受竞价撤单。订单是否已被交易主机确认,而不是客户端接收时间,才是风险状态机的有效事实。
A 股市价申报并非“不支持”。交易所规定多类市价申报,但通常只适用于有涨跌幅限制证券的连续竞价,并受保护限价、无对手方、市场状态和板块规则约束。OMS 应基于:
| |
做准入,而不是用一个全局 OrdType=MARKET 开关。
5.2 主板、科创板、创业板、北交所
| 板块 | 数量和价格 | 涨跌幅 / 无涨跌幅 | 特别风险点 |
|---|---|---|---|
| 沪深主板 | 买入 100 股整数倍、零股余额一次卖出、通常最多 100 万股;股票 0.01 元 | 正常股票通常 ±10%;注册制新股初期按证券状态/现行规则 | 连续竞价有效申报价格范围、市价保护机制;2026-07-06 起沪深主板风险警示股票涨跌幅调整为 ±10% |
| 科创板 | 限价至少 200 股且最多 10 万;市价至少 200 股且最多 5 万;超过 200 股部分可按 1 股递增 | ±20%;IPO 前 5 个交易日无涨跌幅 | 市价保护限价、无涨跌幅日临停、价格范围 |
| 创业板 | 买入 100 股整数倍;限价最多 30 万,市价最多 15 万 | ±20%;IPO 前 5 个交易日无涨跌幅 | 连续竞价价格笼子;超范围限价申报可按规则暂存,不能一概等同立即拒单;无涨跌幅日有 ±30% / ±60% 临停 |
| 北交所 | 至少 100 股、100 股整数倍、通常最多 100 万;当前 tick 0.01 元 | ±30%;公开发行股票上市首日等无涨跌幅 | 市价仅限有涨跌幅证券连续竞价且要保护限价;限价超有效范围为无效申报 |
上海证券交易所 2026 规则已于 2026-07-06 生效:盘后固定价格交易由科创板扩展至全部 A 股和 ETF,主板风险警示股票由 ±5% 调整为 ±10%。该规则公告亦列有暂缓实施条文,具体订单功能仍要看当日已实施条文、交易所通知和会员接入能力。
北交所规则已列入盘后固定价格交易条款,但北交所公告明确其中部分条文的具体实施时间另行通知。生产系统应将此类功能建成按 venue + effective_date + member_capability 控制的开关,不能仅因规则文本出现就默认可路由。
六、交收周期与可售回转不能写成同一个字段
| 概念 | A 股股票 | HKEX 本地证券市场 |
|---|---|---|
| 可售回转 | 买入当日通常不可卖出,除非标的实行回转交易 | 取决于券商、持仓和信用安排 |
| 交易所/清算交收 | 按中国结算规则 | Exchange Participant 与 CCASS 间通常 T+2 |
| 通道差异 | 北向交易有证券、资金交收及可售节奏的专门规则 | 南向港股通又有独立结算和日历安排 |
T+2 不表示“港股一定当日可卖”,T+1 也不等同于所有资金和证券的清算时间。风险系统至少应分开保存 sellable_qty、settlement_date、borrow_coverage 和 channel。
HKEX 已提出现金市场向 T+1 迁移的目标安排(拟 2027 年第四季度),但截至本文核对日尚未生效。
七、MS/HKEX FIX:把交易所规则与券商字段分层
对 MS/HKEX DMA,新单适配层可参考下面的抽象检查表:
| 类别 | 应核验内容 |
|---|---|
| 证券识别 | 港股代码、币种、市场、产品类型、board lot、Spread Table Code、状态 |
| Session | POS / CTS / CAS / 半日市 / 交易日历 |
| 无状态校验 | side、数量、tick、订单类型、TIF、价格保护、必填字段 |
| 有状态校验 | 可售量、T+1、locate、限额、频率、重复 ClOrdID |
| Broker adapter | MS 账户映射、TargetSubID、专有 tag、reject 归一化 |
| 审计 | 规则版本、参考价、主数据版本、原始 FIX、券商与 venue 决策 |
具体 FIX Tag 值是券商会话/路由约定,不是 HKEX 交易所规则。生产字段值必须以 MS 已签署 specification、会话配置和 UAT raw FIX 为准。
当前项目代码的静态检查显示,新单路径包含五位港股代码检查、HKD、HK 交易所/目的地字段、DMA 路由和 ExecInst=1 等实现;但静态代码不等于 UAT。尤其要注意:
SELL_SHORT虽可映射为 FIX Side,但未见本地指定名单、locate、覆盖和卖空价格校验;BUY_TO_COVER当前映射为普通 FIXBUY,没有独立 close-to-cover 字段落地;- 新单与撤单字段并不完全对称;
- 当前未见港股 NewOrderSingle / Cancel 的字段级 raw-FIX 回归测试;
- 四位小数价格序列化不等于 Spread Table tick 校验。
八、建议的开发与测试矩阵
| 类别 | 必测边界 |
|---|---|
| 港股数量 | board lot 100/400;不足一手、整手、超过 3,000 手;odd/special-lot 路由 |
| 港股价格 | Phase 2 及其他 Spread Table 的边界、decimal 精度、nominal/quotation/CAS 约束 |
| 港股时段 | POS 可撤→不可撤→随机→blocking;CAS 四阶段;半日市 |
| 港股卖空 | 非指定证券、无 locate、价格不合规、POS/CAS 错误订单类型、FIX 声明 |
| 沪深主板 | 100 股、零股卖、±10%、价格范围、集合竞价禁撤窗口 |
| 科创板 | 199/200/201、10 万/5 万、无涨跌幅日前五日、保护限价 |
| 创业板 | 30 万/15 万、价格笼子暂存、±20%、无涨跌幅日临停 |
| 北交所 | ±30%、100 万、保护限价、超有效范围无效、盘后功能开关 |
| FIX 与回报 | ClOrdID / OrigClOrdID、39/150 组合、CumQty 单调性、reject 审计、重放幂等 |
高风险原则:先做只读预校验与拒因审计;规则切换、券商配置、实盘路由或写入任何生产状态前,必须有 UAT 证据、回放测试、审批和可回滚方案。
九、权威资料与版本追踪
- HKEX Trading Mechanism
- HKEX Trading Hours — Securities Market
- HKEX Securities Market Operations FAQ
- HKEX Regulated Short Selling
- HKEX Reduction of Minimum Spreads
- HKEX Board Lot Framework Conclusions, 2026-06-30
- 上海证券交易所交易规则(2026 年修订)
- 上交所修订发布《交易规则》
- 北京证券交易所交易规则
- 中国证监会系统:A 股交易新规 2026-07-06 起施行
最后的工程建议:将所有数字规则做成可版本化、可热更新、可回放的 market-rule 数据;源代码只实现规则解释器和强类型校验。不要把价格表、board lot、指定卖空名单、交易日历或某家券商的 FIX 文本硬编码进业务逻辑。
文章作者 lucas
上次更新 2026-08-12