招商证券交易接口如何接入

企业微信

招商证券交易接口技术架构

招商证券交易接口采用多层架构设计,核心由行情网关、交易网关和风险控制引擎组成。行情网关支持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个字段。

交易指令处理机制

委托报单流程

  1. 通过OrderInsert接口提交订单请求

  2. 风控系统执行实时预检查(包括资金校验、持仓校验)

  3. 交易所返回报单编号(OrderRef)

  4. 订单状态通过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秒自动推送持仓变动通知,支持增量更新模式减少数据传输量。

安全控制体系

访问认证

采用三重安全验证机制:

  1. 硬件证书(USB Key)绑定MAC地址

  2. 动态口令(每分钟更换)

  3. 交易指令签名(SHA256withRSA)

风险熔断

设置多级风控阈值:

  • 单笔最大委托量(默认500手)

  • 分钟级委托次数(上限100次)

  • 日亏损限额(可自定义)

触发风控规则时,系统自动执行:

  1. 拒绝新委托

  2. 撤销未成交订单

  3. 发送短信/邮件警报

异常处理规范

连接恢复

网络中断时,客户端应执行:


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()

订单状态同步

断线期间订单状态通过以下方式同步:

  1. 重连后自动获取未完成订单

  2. 调用QryOrder主动查询

  3. 使用ReqQryTrade核对成交明细

系统保证订单状态最终一致性,最长恢复时间不超过5分钟。

性能优化建议

低延迟配置

  1. 使用RDTSC指令替代系统时钟

inline uint64_t rdtsc() {

    return __builtin_ia32_rdtsc();

}

  1. 配置JVM参数减少GC停顿

-XX:+UseParallelGC -XX:MaxGCPauseMillis=10

  1. 采用DPDK用户态网络驱动

批量处理

支持批量委托指令(上限50笔/包):


<BatchOrder>

    <Order InstrumentID="600000" Price="12.5" Volume=1000/>

    <Order InstrumentID="000001" Price="15.8" Volume=2000/>

</BatchOrder>

响应时间比单笔委托提升300%,适用于组合订单场景。

转载请注明出处:https://www.lianghuajiaoyi.top/wenzhang/zhaoshang-zhengquan-apictp-xieyi-126.html