A股量化交易系统需求规格说明书 (聚焦版)
文档版本 2.0 (A股特化)
编制日期 2026-07-08
目标用户 个人A股量化交易者、研究型投资者
1. 项目概述
1.1 背景
构建一套完全面向A股市场(沪深交易所)的轻量级量化交易系统,覆盖股票、ETF、可转债等品种。数据模块必须完全基于免费且合法可用的公开接口,避免任何商业数据费用。
1.2 系统目标
提供稳定、低延迟的A股Level1实时行情,支持多股订阅。
具备完整的策略回测、模拟交易与可选实盘对接能力。
核心行情采集独立运行,数据可本地化存储,供回放和研究使用。
2. 功能需求
2.1 行情数据模块 (A股专用)
2.1.1 实时行情需求
全市场快照:在交易时段(9:15-15:00)内,每1~3秒轮询一次自定义股票池或全市场个股的实时数据,包括:
最新价、开盘价、最高价、最低价、昨收
涨跌幅、涨跌额、成交量、成交额
买一~买五价量、卖一~卖五价量(Level1盘口)
总市值、流通市值、换手率(部分接口提供)
增量推送(可选,追求低延迟):通过WebSocket接收实时逐笔成交或盘口变化推送,用于高频或事件驱动型策略。
指数与板块:获取上证指数、深证成指、创业板指等主要指数,以及行业板块涨跌排名。
数据持久化:所有实时tick或生成的分钟线存入本地时序数据库(如InfluxDB)或SQLite,确保历史数据完整可查。
2.1.2 历史数据补全
自动下载日K线(前复权、后复权、不复权)及分钟K线(1min/5min/15min/30min/60min),覆盖全部A股历史至今。
支持增量更新,每日收盘后自动拉取最新日线,保证回测数据最新。
2.1.3 免费A股实时行情接口详细方案
系统行情适配层需支持以下免费数据源,并可动态切换、互为备份。所有接口均经过社区大规模验证,可用于个人量化。
接口名称 接入方式 实时/准实时 推荐用途 优缺点
AkShare Python库 akshare 准实时(1~3秒延迟) 主推全功能数据源。获取沪深股票、指数、ETF、可转债的实时快照、历史日/分钟线、资金流、龙虎榜等。 封装了东方财富、新浪等接口,开箱即用,无需任何注册和Token。轮询频率不宜过高,单次可批量查询多只股票。
东方财富 WebSocket WebSocket (通常通过 efinance、pytdx 等库或原生协议) 实时推送 (毫秒级) 追求低延迟实时推送的首选。可订阅逐笔成交、盘口变化、K线更新。 完全免费,数据来自东方财富,行情快,但有非官方属性。协议公开,需自己编写解析或使用第三方封装。注意连接数限制。
新浪财经 HTTP http://hq.sinajs.cn/list=… 轮询 (约2~3秒) 作为轻量级实时快照补充,或当AkShare受限时备用。 接口极简,可批量查询(最多800只股票)。无验证,只返回字符串需自行解析。缺点是频次过高易被限制,且盘口深度有限。
腾讯证券 HTTP http://qt.gtimg.cn/q=… 轮询 (约2~3秒) 与新浪类似,备用方案。 格式较规范,提供基本盘口。
BaoStock Python库 baostock 仅历史数据,无实时 专门用于补充高质量的历史日线和分钟线,是回测数据的最佳免费来源。 完全免费,数据可靠,但需要登录(免费注册)。不提供实时行情,需与其他实时源配合。
TuShare Python库 tushare 实时需积分 不推荐作为免费实时来源。免费账户积分无法稳定获取实时数据,只适合有积分的老用户,或仅用于补充基本面数据。 历史数据尚可,但实时门槛高。
核心推荐组合:
实时快照:优先使用 AkShare 的 stock_zh_a_spot_em() 等函数,简单稳定。
低延迟推送:自行封装 东方财富 WebSocket 协议,或用 efinance 库。
历史数据:BaoStock 下载全量日/分钟线,存入本地数据库。
所有实时数据落地后,策略统一从本地数据库或消息队列消费,屏蔽接口差异。
2.1.4 数据标准化与存储
行情适配器将不同源的数据转换成统一结构(标准化字段:symbol, timestamp, open, high, low, close, volume, amount, bid_prices…)。
存储方案:热数据存于Redis(实时共享),冷数据归档至InfluxDB或PostgreSQL + TimescaleDB。
2.2 策略研发模块
A股特征处理:支持自动识别除权除息、停牌、ST、涨跌停等特殊状态,回测中真实模拟。
策略框架:提供 A股Strategy 基类,回调函数包括 on_bar(symbol, bar)、on_tick(symbol, tick)、on_order() 等。
回测引擎:
日线、分钟线回测,支持佣金(默认万2.5,可调)、印花税(卖出千1)、滑点。
成交量约束:当委托量超过当日成交量的百分比时部分成交。
涨跌停限制:买入价不可高于涨停价,卖出不可低于跌停价。
绩效分析:年化收益率、最大回撤、夏普比率、胜率、盈亏比,按市场时段或品种分组展示。
可视化:通过Streamlit Web界面展示回测权益曲线、交易记录、每日持仓。
2.3 交易执行模块
模拟交易:
内置A股撮合引擎,根据实时行情模拟成交。市价单按当前对手价成交,限价单按价格优先时间优先。
模拟账户需维护资金、持仓、可用资金,并扣除税费。
实盘接口 (可选扩展):
预留标准券商接口(如中泰XTP、华泰MATIC、国信TS等)。实盘接口通常需要开通账户并申请行情交易权限,不属于完全免费范畴,但系统架构支持接入。
初期可只开发模拟交易闭环,实盘仅做技术预留。
订单类型:支持限价单、市价单(转限价)、止盈止损单。
2.4 风控与监控
单票仓位上限、单日最大亏损限制、交易时段外禁止发单。
行情断流、延迟超标(>5秒无数据)则暂停策略并报警(控制台/邮件)。
所有交易日志和风控事件完整写入日志文件,便于事后审计。
3. 非功能需求
3.1 性能
实时快照采集:同时监控500只股票,轮询延迟在2秒以内。
WebSocket推送模式下,从交易所信息到达本地内存延迟 < 500ms。
回测:10年日线全市场(5000+股票)完整遍历 < 5分钟(视硬件)。
系统稳定运行,支持盘中不重启更新策略参数。
3.2 易用性
配置文件 config.yaml 定义数据源、股票池、风控参数。
提供命令行工具:python run_strategy.py --name my_strategy。
可选的Docker部署,环境一键搭建。
3.3 扩展性
行情采集、策略、交易执行三大部分通过内部消息队列(如Redis)解耦,可独立扩展。
新增数据源只需实现 A股DataProvider 接口。
3.4 合规提醒
所有推荐免费接口均为网络公开数据,仅供个人学习研究,不得用于商业分发或高频恶意抓取。
模拟交易无法律风险;若未来对接实盘,需使用合规券商通道并遵守监管规定。
4. 系统架构 (A股版)
5. 开发路线图(建议)
第一阶段:免费行情中台
实现AkShare全市场实时快照采集、BaoStock历史数据下载,数据落地。完成东方财富WebSocket简易客户端的接入验证。
第二阶段:基础回测框架
构建A股回测引擎,实现日线双均线等简单策略,展示绩效报告。
第三阶段:模拟交易闭环
开发模拟交易所,支持限价单、市价单,按实时行情撮合。完成仓位资金管理。
第四阶段:系统集成与看板
用Streamlit搭建监控界面,实时显示持仓、收益曲线、日志。引入风控规则,支持配置化运行。
6. 附录:免费A股实时行情接口速查
数据源 实时方式 历史数据 是否需要注册 推荐指数
AkShare 轮询(1-3秒) 支持 否 ★★★★★
东方财富 WebSocket 实时推送 部分(REST有历史) 否 ★★★★☆(需开发)
新浪财经 HTTP 轮询(约2秒) 否 否 ★★★☆☆
腾讯证券 HTTP 轮询(约2秒) 否 否 ★★★☆☆
BaoStock 无实时 优质日/分钟线 需免费注册 ★★★★☆(历史专用)
选择 AkShare + 东方财富WS 即可同时满足便捷性和低延迟需求,历史数据由 BaoStock 保障。完全可以零成本构建专业级A股量化数据基础。

