企业微信

券商API的核心功能

券商数据API是连接交易系统与证券交易所的核心桥梁,主要提供两类服务:

  1. 行情数据服务

  2. 实时推送股票、期货的买卖盘口(Level-1/Level-2数据)

  3. 支持历史K线查询(分钟线、日线等)

  4. 市场深度数据(期货持仓量、资金流向

  5. 交易执行服务

  6. 委托下单(限价单、市价单、条件单)

  7. 持仓查询与资金监控

  8. 撤单及订单状态跟踪


主流券商API协议类型

CTP协议(综合交易平台)

由中国期货市场监控中心主导开发,广泛用于国内期货公司。特点包括:

  • 采用TCP长连接通信

  • 支持C++/Java/Python语言

  • 需通过ThostFtdcTraderApi实现交易指令

  • 行情接口使用ThostFtdcMdApi


# Python调用CTP行情接口示例

from thostmduserapi import MdApi, CThostFtdcMdSpi

class CMdSpi(CThostFtdcMdSpi):

    def OnFrontConnected(self):

        print("行情服务器连接成功")

        req = {}

        self._api.ReqUserLogin(req, 0)

    def OnRtnDepthMarketData(self, pDepthMarketData):

        print(f"最新价: {pDepthMarketData.LastPrice}")

md_api = MdApi.CreateMdApi()

md_spi = CMdSpi()

md_api.RegisterSpi(md_spi)

md_api.RegisterFront("tcp://180.168.146.187:10131")

md_api.Init()

QDP协议(量化交易平台)

部分券商自研协议,适用于股票量化交易:

券商数据api如何接入交易系统

  • 提供WebSocket或RESTful API

  • 支持高频行情(毫秒级延迟)

  • 内置策略回测沙盒环境


API接入流程

  1. 资质申请

  2. 向券商提交机构/个人开发者认证

  3. 签署API使用风险协议

  4. 获取AppIDAuth Token

  5. 环境配置

  6. 安装券商提供的SDK(如华泰的hts、中信的citics_api

  7. 配置网络白名单(实盘环境需专线接入)

  8. 功能集成

  9. 初始化连接并实现回调接口

  10. 处理行情数据解析与订单状态机


# QDP协议委托下单伪代码

import qdp_sdk

def place_order(symbol, price, volume):

    trader = qdp_sdk.TraderAPI(api_key="YOUR_API_KEY")

    order = {

        "symbol": "IF2309",

        "direction": "BUY",

        "price": price,

        "volume": volume,

        "order_type": "LIMIT"

    }

    resp = trader.submit_order(order)

    if resp["code"] == 0:

        print(f"委托成功! 订单ID: {resp['order_id']}")


风控与合规要求

  1. 流量控制

  2. 单账户每秒请求上限(通常≤50次/秒)

  3. 行情订阅标的数量限制(如≤500只证券)

  4. 异常行为监控

  5. 撤单率超过80%触发警报

  6. 同向订单短时频次检测(防程序化异常交易)

  7. 数据使用规范

  8. 禁止转售行情数据

  9. 实时行情需延迟15分钟方可公开


量化交易应用场景

套利策略

利用API获取跨市场价差:


# 股指期货与ETF套利监控

if futures_price - etf_price > threshold:

    sell_futures_buy_etf()

做市商策略

通过Level-2盘口数据计算订单簿不平衡度:

$$

Imbalance = \frac{BidVolume_{top5} - AskVolume_{top5}}{TotalVolume}

$$

当$|Imbalance|>0.7$时触发反向报价


常见问题解决方案

  • 连接不稳定

使用双链路备份(如同时接入CTP和QDP)

  • 数据丢包

实现行情数据重传机制(SeqNo连续性校验)

  • 订单状态同步

启动独立线程轮询GetOrder接口

注意:实盘环境需通过券商压力测试方可上线,测试用例需覆盖断网重连、大并发请求等极端场景。