
招商证券交易接口技术架构
招商证券交易接口采用多层架构设计,核心由行情网关、交易网关和风险控制引擎组成。行情网关支持TCP/UDP协议推送实时市场数据,交易网关通过CTP协议(期货)及FIX4.4协议(证券)处理订单指令。所有通信均采用SSL双向认证加密,客户端需加载由招商证券颁发的数字证书方可建立连接。
系统提供两种接入模式:
直连模式:通过10G光纤专线直连交易所撮合引擎,延迟控制在微秒级
云网关模式:通过VPC专有云通道接入,支持动态扩容
# SSL证书加载示例
import ssl
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
context.load_cert_chain(certfile="client.crt", keyfile="client.key")
行情数据获取规范
实时行情订阅
通过MD_Spi接口订阅Level-1/Level-2行情数据,支持以下数据类型:
证券快照(字段包括:最新价、成交量、买卖五档)
指数行情(上证指数、深证成指等)
期权隐含波动率
数据推送频率为500ms/次,使用差分压缩技术降低带宽占用。特殊行情场景下(如集合竞价)支持100ms高频推送。

历史数据下载
调用QryHistoryBar方法获取历史K线,需指定以下参数:
struct HistoryBarReq {
char instrumentID[31]; // 合约代码
int barType; // K线类型(1=1分钟/5=日线)
char tradingDay[9]; // 交易日(格式YYYYMMDD)
int recordCount; // 请求条数(上限500)
};
服务器响应时间不超过300ms,返回数据包含开盘价、最高价、最低价、收盘价、成交量等12个字段。
交易指令处理机制
委托报单流程
通过
OrderInsert接口提交订单请求风控系统执行实时预检查(包括资金校验、持仓校验)
交易所返回报单编号(OrderRef)
订单状态通过
OnRtnOrder回调实时推送
委托指令支持以下特殊属性:
IOC(立即成交剩余撤单)
FOK(全部成交或撤单)
冰山订单(隐藏大单量)
撤单处理
撤单操作需在订单生命周期内完成:
// 撤单请求示例
CThostFtdcInputOrderActionField actionField = new CThostFtdcInputOrderActionField();
actionField.OrderActionFlag = THOST_FTDC_AF_Delete;
actionField.OrderRef = "20230815000001";
actionField.FrontID = session.getFrontID();
actionField.SessionID = session.getSessionID();
traderApi.ReqOrderAction(actionField, requestID++);
系统保证撤单指令300ms内送达交易所,超过该时限将触发异常报警。
账户管理接口
资金查询
调用QryTradingAccount获取实时资金数据,响应包含:
可用资金(Available)
持仓市值(PositionProfit)
保证金占用(CurrMargin)
冻结资金(FrozenCash)
持仓同步
通过QryInvestorPosition实现持仓动态同步,关键字段包括:
今仓/昨仓标识(PositionDate)
多头/空头方向(PosiDirection)
开仓均价(OpenCost)
系统每30秒自动推送持仓变动通知,支持增量更新模式减少数据传输量。
安全控制体系
访问认证
采用三重安全验证机制:
硬件证书(USB Key)绑定MAC地址
动态口令(每分钟更换)
交易指令签名(SHA256withRSA)
风险熔断
设置多级风控阈值:
单笔最大委托量(默认500手)
分钟级委托次数(上限100次)
日亏损限额(可自定义)
触发风控规则时,系统自动执行:
拒绝新委托
撤销未成交订单
发送短信/邮件警报
异常处理规范
连接恢复
网络中断时,客户端应执行:
def reconnect():
try:
api.Init()
api.RegisterFront("tcp://180.168.146.187:10000")
api.SubscribePrivateTopic(THOST_TERT_QUICK)
api.SubscribePublicTopic(THOST_TERT_QUICK)
except Exception as e:
logger.error(f"连接失败: {str(e)}")
time.sleep(30)
reconnect()
订单状态同步
断线期间订单状态通过以下方式同步:
重连后自动获取未完成订单
调用
QryOrder主动查询使用
ReqQryTrade核对成交明细
系统保证订单状态最终一致性,最长恢复时间不超过5分钟。
性能优化建议
低延迟配置
- 使用RDTSC指令替代系统时钟
inline uint64_t rdtsc() {
return __builtin_ia32_rdtsc();
}
- 配置JVM参数减少GC停顿
-XX:+UseParallelGC -XX:MaxGCPauseMillis=10
- 采用DPDK用户态网络驱动
批量处理
支持批量委托指令(上限50笔/包):
<BatchOrder>
<Order InstrumentID="600000" Price="12.5" Volume=1000/>
<Order InstrumentID="000001" Price="15.8" Volume=2000/>
</BatchOrder>
响应时间比单笔委托提升300%,适用于组合订单场景。