
股票交易接口到底能拿到什么账户数据?
股票交易接口不是万能的。它能返回的账户数据分两类。一类是静态信息,账户号、开户营业部、股东代码、资金账号类型。另一类是动态数据,总资产、可用资金、可取资金、冻结金额、市值、浮动盈亏。动态数据每分每秒都在变,接口调用频率直接决定你看到的是实时还是延迟。
期货账户更复杂。期货是保证金交易,账户数据里多出保证金占用、风险度、逐笔浮盈、盯市盈亏。持仓情况分今仓、昨仓,不同交易所规则不一样。上期所区分平今和平昨,大商所和郑商所不区分。抓取时弄混这些字段,算出来的可用资金就是错的。

普通散户拿不到这些数据。券商不会把接口开放给所有客户,只有机构户、专业投资者或者量化私募才能申请。个人想玩,要么通过券商提供的量化平台,要么用第三方软件模拟点击。模拟点击本质是自动化操作界面,不是真接口。窗口一关,数据就断。
合规的抓取路径只有两条
第一条路是券商官方API。国内主流券商都提供量化交易接口,中信、华泰、国泰君安、招商。这些接口基于C++或Python封装,底层走的是券商柜台系统。申请流程繁琐。你要先开机构户或者申请专业投资者认定,然后签风险协议,等券商审批。审批通过后拿到API密钥和服务器地址。
第二条路是期货公司的API。期货比股票开放得早。CTP接口是行业标准。上期技术综合交易平台。几乎所有的期货公司都支持CTP。你从期货公司拿到BrokerID、InvestorID、密码,然后通过CTP的认证接口登录。登录成功后,用查询指令抓取账户资金和持仓。CTP接口的持仓查询返回的是结构体数组,每个元素对应一个合约的持仓明细。
第三方交易软件比如同花顺、通达信,它们能读取账户数据,原理是内存注入或者模拟键鼠。这种做法违反券商用户协议。被风控发现,轻则限制登录,重则冻结账户。
用Python抓取持仓的实操逻辑
假设你已经拿到CTP接口权限。登录分三步。创建API实例,注册前置机地址,调用认证接口。认证成功后,调用结算确认接口。这一步很多人漏掉。不确认结算单,查询接口返回的持仓数据是空的。
结算确认后,调用ReqQryInvestorPosition。这个函数传入一个空的结构体指针。交易所回调OnRspQryInvestorPosition。每回调一次,给你一个合约的持仓。回调次数等于你持仓合约的数量。全部回调结束后,返回一个特殊的空指针,标记查询完成。
账户资金用ReqQryTradingAccount。回调返回可用资金、保证金占用、平仓盈亏、持仓盈亏、手续费、入金、出金。期货公司返还的数据字段可能略有差异。有些字段是交易所推送的,有些是期货公司自己计算的。
股票接口类似。只是股票没有保证金概念。持仓查询返回证券代码、持仓数量、可用数量、成本价、市价、参考盈亏。股票接口的响应速度比期货慢。因为股票是T+1交收,期货是T+0。
绕不开的权限和频率限制
券商API有查询频率限制。通常每秒钟最多一次查询。你写个循环每秒查十次,直接触发风控。有的券商限制每天查询总次数,比如一万次。超了要写申请单。
期货CTP接口限制更严。查询类指令有流量控制。每秒钟只能发一个查询。同时发多个查询,后面的会被拒绝。日志里报错CTP:查询未就绪。解决办法是收到一个查询回调后再发下一个。用队列串行发送,不要并行。
账户数据的敏感度极高。监管要求券商和期货公司对接口调用做审计。谁在什么时间查了哪个账户的持仓,全部留痕。你用接口做高频交易,一天查几万次持仓,交易所会发问询函。
个人投资者该走哪条路
资金量低于五十万,别碰官方接口。审批通不过。用券商自带的量化平台,比如华泰的MATIC、国泰君安的君弘量化。这些平台在券商内部运行,你能写策略,能拿到账户数据,但不能导出接口。策略跑在券商服务器上,你只看到结果。
资金量够大,开个量化私募通道。私募可以租用券商的极速交易柜台。柜台接口能拿到毫秒级的账户数据。成本一年几十万。
普通散户想抓取账户数据做分析,手动导出CSV最安全。券商APP支持导出历史成交和持仓。每天收盘后导出,用Excel或者Python做处理。数据有延迟,但不能被风控。
