本文面向 OMS/EMS、FIX 网关和券商接入研发人员,根据 oems-fix-v2/docs/SecurityIDMap.md 整理,适用报文为 FIX 4.2 权益类新单(35=D)与撤单(35=F)。不构成投资建议,也不能替代券商接入规格、证券主数据或合规意见。

源文档更新日期:2026-10-21。文中的“当前实现”仅指源文档记录的代码与 UAT 配置快照,不代表所有券商或其他网关路径的能力,也不等于已经通过端到端 UAT。环境账号与账户值不在本文公开列出。

一、结论:证券代码、交易所和交易通道是三个维度

接入多个市场和券商时,最容易出现的错误是把内部代码、Bloomberg 标识、RIC 和交易所代码当成同一套字符串。

维度说明示例
标的(Instrument)具体证券601818、000001、00700
交易所(Exchange)上市或交易场所XSHG、XSHE、XBJE、XHKG
通道(Channel)券商接入和市场准入方式QFII、CONN(本文指北向沪深港通)

以同一只上海 A 股为例:

表示方式QFIICONN
内部 SecurityId601818.SS601818.SH
Bloomberg Symbol601818 CG601818 C1
标准 RIC601818.SS601818.SS
MICXSHGXSHG

核心结论是:在本文的映射口径下,Bloomberg 交易所代码会随 QFII/CONN 通道变化;同一证券的 RIC、ISIN、SEDOL 和场所 MIC 不随这两个通道变化。 内部后缀是项目约定,不能直接当作外部标准。

二、市场、板块与代码格式

2.1 A 股:先识别交易所,再处理板块

交易所板块常见代码前缀MIC补充说明
上交所 SSE主板600/601/603/605XSHGB 股为 900,不应混入普通 A 股映射
上交所 SSE科创板688;689(CDR)XSHG与主板共用场所 MIC
深交所 SZSE主板000/001/002/003XSHEB 股为 200
深交所 SZSE创业板300/301/302XSHE与深市主板共用场所 MIC
北交所 BSE股票920XBJE源文档记录自 2025-10-09 起统一使用 920 号段

北交所历史上存在 43/83/87/88 号段,其中 43/83/87 也涉及新三板。源项目的 GetQFIISfx 只按首字符 9 返回 BJ,旧号段会返回空串并被拒为 unknown stock type。因此本文所述当前北交所支持范围为 920xxx 股票,不能把历史代码直接送入现有路径。

代码前缀用于解释当前实现,不是完整的证券资格校验;实际标的和可交易范围仍要以证券主数据、账户和通道权限为准。

2.2 港股:五位内部代码不等于五位外部标识

市场或柜台内部代码格式常见范围或示例MIC
港交所主板五位,前导零补齐00001–09999 为主XHKG
港交所 GEM五位,前导零补齐08000–08999XHKG
人民币柜台五位,8xxxx80700、81810XHKG

GEM 的 08xxx 与人民币柜台的 8xxxx 不是一回事。 例如 08000 和 80700 不能因包含数字 8 就走同一条映射规则。

同一港股代码在不同标识体系中还会有不同的前导零处理:00700 对应 Bloomberg 700 HK,而 RIC 通常为 0700.HK。

三、内部编码:stocktype、后缀与 QFII/CONN

3.1 源项目的内部约定

stocktype通道代码首字符 → 内部后缀当前支持范围
1CONN0/3 → ZK;5/6 → SH沪深 A 股路径
2QFII0/3 → SZ;5/6 → SS;9 → BJ沪深 A 股及 920 北交所路径

对应的源项目实现位置是:

  • src/utils/market_utils.go:GetConnSfx、GetQFIISfx;
  • src/fixApi/trade.go:Trade() 中的 stocktype 分支。

这里的后缀描述的是内部路由约定。例如 CONN 深市使用 .ZK,不表示标准 RIC 也存在 .ZK 后缀。

3.2 两种通道改变什么,不改变什么

项目QFIICONN(北向沪深港通)
含义Qualified Foreign Institutional Investor,合格境外机构投资者Stock Connect,通过沪港通、深港通北向交易
本文涉及市场上交所、深交所、北交所上交所、深交所
内部后缀:沪 / 深 / 京SS / SZ / BJSH / ZK / —
Bloomberg 交易所代码CG / CS / JCC1 / C2 / —
RIC / MIC不因这两个通道变化不因这两个通道变化
当前 SG FIX session默认 fix.ini默认 fix.ini

源文档记录 SG 未配置 specialFixSessionFilePaths,因此当前 QFII 与 CONN 共用默认 FIX session。通道不同并不必然意味着 FIX session 不同,是否分会话属于券商和部署约定。

3.3 不要将港股塞进 A 股后缀判断

本文所述 Trade() 仅允许 stocktype ∈ {1, 2}。如果把港股 0700 送入该逻辑,其首字符 0 会被误判为深市,得到 CONN 的 ZK 或 QFII 的 SZ。

因此,后文港股标识表是映射参考,不是当前 SG A 股路径已经支持港股的声明。接入港股需要独立的市场或通道识别,不能复用 A 股首字符规则。

四、五类标识的映射规则

4.1 Bloomberg:交易所代码与通道有关

当 FIX 22=A 时,48 使用 Bloomberg Symbol,本文采用的格式为:

1
<ticker> <Bloomberg 交易所代码>
市场与通道内部后缀Bloomberg 代码示例
QFII 上海SSCG601818 CG
QFII 深圳SZCS000001 CS
QFII 北京BJJC920xxx JC
CONN 上海SHC1601818 C1
CONN 深圳ZKC2000001 C2
已采用北向 BBG 后缀C1 / C2保持原代码601818 C1
港股(映射参考)HKHK700 HK

其中:

  • CG、CS、JC 分别对应上海、深圳、北京市场;
  • C1、C2 分别对应沪港通、深港通北向;
  • CH 表示 China Composite,不是本文用于上海或深圳个股路由的交易所代码;
  • 港股 Bloomberg ticker 去掉前导零:00700 → 700 HK;五位有效代码保留其有效数字,例如 80388 HK。

源文档提醒,SG UAT ORC 可能仍接受旧的 CH/CS 口径。因此表中的映射调整必须经过券商规格确认和 UAT,不能仅凭字符串转换成功就切换实盘。

4.2 RIC:不要直接拼内部后缀

当 FIX 22=5 时,标准 RIC 格式为:

1
<ticker>.<交易所后缀>
市场内部后缀标准 RIC 后缀示例
上海SH / SS.SS601818.SS
深圳ZK / SZ.SZ000001.SZ
北京BJ.BJ920xxx.BJ
港股HK.HK0700.HK

要点有三个:

  1. 同一证券的 RIC 不因 QFII/CONN 通道变化;上海 SH → SS,深圳 ZK → SZ。
  2. 港股 RIC 通常补足四位:00700 → 0700.HK、01810 → 1810.HK;超过四位时保留原长度。
  3. 当前非 SG 路径默认使用 22=5、48=内部 SecurityId,但这不等于输出已经全部标准化为 RIC。尤其 .ZK 不是标准 RIC;BCY 的现有券商约定又要求保留 .ZK,不能未经确认全局替换。

标准标识映射与券商实际接收约定必须分层记录。 相同的 22=5,并不能证明各券商的 48 字符串要求完全一致。

4.3 MIC 与 Reuters Exchange Code:都不是 Bloomberg 代码

市场内部后缀MICReuters Exchange Code
上海SH / SSXSHGSS
深圳ZK / SZXSHESZ
北京BJXBJEBJ
港股HKXHKGHK

源文档记录 SG 的 100/207 接受 MIC 或 Reuters Exchange Code,当前网关使用 MIC。

  • C1/C2 属于 Bloomberg 交易所代码,不是 MIC;
  • 北向沪深港通的场所 MIC 仍是 XSHG/XSHE;
  • 100/207 实际写 MIC、Reuters 代码还是内部后缀,需要按 broker contract 确定,不能一概推断。

4.4 ISIN:不能从股票代码直接推导

ISIN 对应 FIX 22=4,共十二位,由两位国家或地区代码、九位 NSIN 和一位校验位组成。

标的ISIN 示例
601818CNE100000SL4
000001CNE000000040
腾讯 00700KYG875721634
小米 01810KYG9830T1067
港交所 00388HK0388045442

ISIN 必须依赖证券主数据,不能按 ticker 算出。其前缀与发行人注册地等因素有关,不只由上市地决定;港股中可见 KYG(开曼)、BMG(百慕大)、HK(香港注册)等开头,不能把所有港股都硬编码为 HK 前缀。

4.5 SEDOL:同样依赖主数据

SEDOL 对应 FIX 22=2,是七位字母数字标识,由 LSEG 体系分配。

标的SEDOL 示例
601818B53SCQ5
0000016802006
港交所 003886267359

SEDOL 不因 QFII/CONN 通道变化,也不能由股票代码直接推导。上述 ISIN、SEDOL 示例用于说明格式,实际接入前必须使用券商或权威证券主数据核对。

五、FIX 字段:22 决定 48 的解释方式

5.1 核心字段

Tag名称本文中的用法
22IDSource说明 48 使用哪一种证券标识体系
48SecurityID与 22 对应的标识值
55Symbol通常为裸 ticker;本文路径中 A 股六位,港股参考格式为五位;BCY 使用内部 SecurityId
15Currency如 CNY、HKD,实际币种应与证券及柜台一致
207SecurityExchange按券商约定填写交易所标识
100ExDestination按券商约定填写交易目的地;本文所述撤单路径不发送

22 和 48 是一组字段。例如:

1
2
3
4
5
6
7
# SG 上海 QFII 新单的证券识别字段片段
# 仅展示映射,不是可以直接发送的完整 FIX 报文
22=A
48=601818 CG
55=601818
100=XSHG
207=XSHG

5.2 FIX 4.2 的 IDSource 与券商准入是两件事

值标准含义
1CUSIP
2SEDOL
4ISIN
5RIC
8Exchange Symbol
ABloomberg Symbol

源文档记录 SG 当前接受的 IDSource 为 1 / A,本网关实际使用 A。即使 FIX 标准定义了 RIC、ISIN 和 SEDOL,也不能默认当前 SG 会话全部接受;切换前必须先确认券商允许的 22 取值及相应 48 格式。

六、多券商新单:相同字段名,不同契约

以下是源文档记录的 Trade() 实现快照,broker 别名由 IsXxx() 判断,不应当作各券商所有产品和接入路径的通用规范。

公共限制包括:stocktype 仅为 1/2、qty > 0、业务入参 OrdType 仅为 0/1,以及 LIMIT 价格精度普通股票两位、ETF 三位。这里的业务枚举不是 FIX OrdType 的标准取值;价格序列化精度也不等于交易所 tick 校验。

Broker2248 SecurityID55 Symbol100/207关键条件与限制
默认(MS/JPM/UBS/GS/BAML/CS/CLSA 等)5内部 SecurityId:code.SH/.ZK/.SS/.SZ/.BJ裸代码内部后缀condParams 控制 57/58/114;部分 broker 有额外 tag
BCY / Barclays5内部 SecurityId内部 SecurityId内部后缀发送 Tag 1;ClOrdID 使用 PackOrdId2;CONN 深市使用 .ZK,BCAP 拒绝 .SZ
SGABloomberg:CG/CS/JC 或 C1/C2裸代码MIC:XSHG/XSHE/XBJE775=1;57=DMA/ALGO;业务 Side=3 → 114=N
BNPP5内部 SecurityId裸代码dataCfg.tagMap 转换后的 MICDMA only;775=1;header 50/57;禁止 body 57;无 BJ 映射时拒单
GFHK5内部 SecurityId裸代码内部后缀requiredParams 含 11001;业务 Side=2 时设置 77
CITI5内部 SecurityId裸代码内部后缀775=1;业务 Side=2 时设置 77

最值得记住的是:

  1. 当前只有 SG 使用 22=A 的 Bloomberg 标识;其他列出的路径使用 22=5 与内部 SecurityId。
  2. BCY 是当前唯一让 55/48 都使用内部 SecurityId 的 broker。
  3. BNPP 的交易所字段依赖配置映射:SS/SH → XSHG,SZ/ZK → XSHE;没有 BJ 映射就不能宣称北交所已经可路由。
  4. 表中的 Side 条件是源项目业务入参判断,不应直接当成 FIX Tag 54 的取值解释。

七、撤单:不能复制新单字段表

源项目 Cancel() 的字段要求与新单并不对称:

Broker41 OrigClOrdID4855100/207其他行为
默认 / BNPP / CITIPackOrdId不发裸代码不发status >= 4 跳过
BCYPackOrdId2内部 SecurityId内部 SecurityId不发发送 Tag 1;status >= 4 跳过
SGPackOrdIdBloomberg裸代码不发status >= 4 跳过;不发 775
GFHKPackOrdId不发裸代码不发requiredParams 含 11001;status < 1 拒撤;status >= 4 跳过

这里有三个需要单独核对的边界:

  • 本文所述撤单实现一律不发 100/207,不能将该行为推广为所有券商 FIX 规范的通用规则;
  • tagMap / condParams 在当前实现中只对新单生效;
  • 非 BCY 使用的 PackOrdId 含进程启动日期,跨日重启后可能与原单标识不一致,需要对照原单记录核验 OrigClOrdID。

表中的 status 是源项目的订单状态判断,不能直接等同于 FIX OrdStatus。

八、配置与会话:保留结构,不公开环境账户

8.1 当前 UAT 路由结构

通道或部署源文档记录的会话安排核对重点
BCY CONN未配置特殊 session 路径默认会话及账户映射
BCY QFII深市存在专用 QFII session 配置市场与特殊会话选择
BNPP未配置特殊 session 路径DMA、header 路由字段及 tagMap
GFHK未配置特殊 session 路径必填私有字段
SG未配置特殊 session 路径QFII/CONN 共用默认 session,但证券映射不同
GFGM独立仓库维护不能把本仓库规则直接视为其实现证据

实际 UAT 账号、Tag 1 值和环境标识属于部署资料,不应从博客示例直接复制到任何运行环境。

8.2 dataCfg 的关键项

BrokertagMaprequiredParamscondParams
BCY CONN/QFII{}{}57=DMA/ALGO;业务 Side=3 时设置 114
BNPP100/207:SS/SH → XSHG,SZ/ZK → XSHE775=1业务 Side=3 时设置 114
SG{}775=157=DMA/ALGO;业务 Side=3 时设置 114
GFHK{}11001[]
CITI{}775=1[]

配置表与代码表必须一起看:字段由代码直接生成、配置补充还是映射替换,决定了修改配置能否真正改变最终报文。

九、完整映射示例

9.1 A 股:同一证券,不同通道

下表是各标识体系的并列对照,不表示当前网关已经实现所有输出格式。最后一列为场所 MIC;实际新单是否使用 MIC 仍取决于券商约定,本文所述撤单不发送 100/207。

标的通道内部后缀BBG(22=A)RIC(22=5)ISIN(22=4)SEDOL(22=2)场所 MIC
601818QFIISS601818 CG601818.SSCNE100000SL4B53SCQ5XSHG
601818CONNSH601818 C1601818.SSCNE100000SL4B53SCQ5XSHG
000001QFIISZ000001 CS000001.SZCNE0000000406802006XSHE
000001CONNZK000001 C2000001.SZCNE0000000406802006XSHE
920xxxQFIIBJ920xxx JC920xxx.BJ证券主数据证券主数据XBJE

920xxx 是格式占位,不是可发送的真实证券代码。

9.2 港股:前导零与柜台要单独处理

标的内部代码BBG(22=A)RIC(22=5)ISIN(22=4)SEDOL(22=2)场所 MIC
腾讯00700700 HK0700.HKKYG875721634证券主数据XHKG
小米018101810 HK1810.HKKYG9830T1067证券主数据XHKG
港交所00388388 HK0388.HKHK03880454426267359XHKG

补充规则:

  • 南向港股通交易同一港交所证券、同一柜台时,不因通道本身改变其 BBG/RIC/ISIN/SEDOL/MIC;
  • C1/C2 只用于本文的北向 A 股映射,不能用于港股;
  • 人民币柜台 8xxxx 是独立柜台,需单独映射,不能机械复用港币柜台的 ticker 和币种;
  • 以上港股表格只是规则参考,源文档所述 SG A 股路径当前尚未支持港股。

十、实现边界与上线前验证

10.1 当前能力矩阵

能力源文档记录的状态源项目代码位置或依赖
A 股 QFII:沪深 / 920 北交所支持trade.go 中的 Trade()、GetQFIISfx
A 股 CONN:沪深支持trade.go 中的 Trade()、GetConnSfx
北交所历史 43/83/87/88 号段不支持GetQFIISfx 仅识别首字符 9
港股接入本文所述路径不支持Trade() 仅允许 stocktype 1/2
Bloomberg 转换支持market_utils.go 中的 ToBloombergSymbol
MIC 转换支持market_utils.go 中的 ToMIC
独立 RIC 转换无独立函数非 SG 路径直接使用内部 SecurityId
ISIN / SEDOL未接入证券主数据需要主数据映射

这里的“支持”是源文档对代码能力的记录,不表示每个 broker、账户和市场组合均已具备生产准入。

10.2 最小核验清单

  1. 确认 SG 接受的 Bloomberg 口径:分别核验 QFII 601818 CG、000001 CS,以及 CONN 601818 C1、000001 C2;注意 UAT ORC 的旧口径差异。
  2. 核对新单与撤单:分别检查实际 raw FIX 中的 22/48/55,以及新单 100/207、撤单 OrigClOrdID,不能只测转换函数。
  3. 北交所仅使用真实 920 标的验证:旧号段当前会被拒绝;还要检查券商资格及映射配置。
  4. 切换 RIC/ISIN/SEDOL 前先确认 IDSource:标准存在该枚举,不代表当前会话准入;ISIN/SEDOL 值必须来自主数据。
  5. 港股先做独立准入与映射:不能直接复用现有 A 股 stocktype 和后缀判断。

源项目中可供核验的相关测试入口如下,需在 oems-fix-v2 仓库目录执行;这些命令不代表本文已经执行或完成券商 UAT:

1
2
go test ./src/utils -run TestToBloombergSymbol -v
go test ./src/fixApi -run TestTradeCancelChannelSecurityTags -v

任何实际送单验证都应在获得授权的隔离测试环境中进行。规则变更、生产配置或实盘路由切换必须另行取得券商确认、UAT 证据与审批。

十一、术语速查

缩写或字段英文全称中文含义读法或用途
BBGBloomberg彭博B-B-G;本文 22=A 对应的标识体系
RICReuters Instrument Code路透证券代码R-I-C;22=5
ISINInternational Securities Identification Number国际证券识别码I-S-I-N;ISO 6166,十二位,22=4
SEDOLStock Exchange Daily Official List伦敦证交所每日官方名单代码SEE-dol;七位,22=2
MICMarket Identifier Code市场识别码M-I-C;ISO 10383,四位
CUSIPCommittee on Uniform Security Identification Procedures北美证券标识体系Q-sip;九位,22=1
FIXFinancial Information eXchange金融信息交换协议fix;本文指 FIX 4.2
IDSourceSecurity ID Source证券标识来源Tag 22
SecurityIDSecurity Identifier证券标识Tag 48
SymbolTicker Symbol交易代码Tag 55
ExDestinationExecution Destination交易目的地Tag 100
SecurityExchangeSecurity Exchange证券交易所Tag 207
QFIIQualified Foreign Institutional Investor合格境外机构投资者Q-F-I-I
CONNStock Connect沪深港通本文通道语境指北向;口头常读 connect
GEMGrowth Enterprise Market港交所创业板G-E-M;常见 08xxx
SSEShanghai Stock Exchange上海证券交易所S-S-E;MIC XSHG
SZSEShenzhen Stock Exchange深圳证券交易所S-Z-S-E;MIC XSHE
BSEBeijing Stock Exchange北京证券交易所B-S-E;MIC XBJE
HKEXHong Kong Exchanges and Clearing香港交易所H-K-E-X;本文证券市场使用 MIC XHKG
CDRChinese Depositary Receipt中国存托凭证C-D-R;本文科创板示例为 689 开头
ETFExchange Traded Fund交易所交易基金E-T-F;源项目 LIMIT 价格精度为三位

十二、资料来源与版本追踪

  1. 源项目文档:oems-fix-v2/docs/SecurityIDMap.md,更新日期 2026-10-21;代码与配置结论均按该文档的快照表述,本文未重新认证源项目实现。
  2. SG FIX Protocol Specification – Equities v1.6:源项目中的券商规格资料,实际字段准入需核对获授权的有效版本。
  3. Bloomberg Exchange Codes Mapping
  4. HKEX Stock Code Allocation Plan
  5. HKEX ISIN 列表
  6. HKEX Stock Connect
  7. LSEG SEDOL

最后的工程建议:先解析证券、交易所和通道,再按券商契约生成 FIX 字段。内部 SecurityId、标准标识和券商特殊要求可以不同,但必须明确记录差异;不能靠一个后缀字符串同时承担全部语义。