业务背景:
传统人工盯盘难以高效捕捉个股短期价格、成交量的突发异动(如放量拉升、破位下跌等),且人工交易存在反应延迟、情绪干扰等问题。本项目旨在搭建一套自动化量化系统,通过实时采集个股行情数据,计算量价核心指标并识别异动事件,触发预设的买入 / 卖出策略,实现量化交易的自动化、精准化执行,同时降低人工操作风险。
核心功能:
实时行情采集:对接证券行情数据源,拉取个股分钟级价格(开盘价、收盘价、最高价、最低价)、成交量、成交额等数据;
异动指标计算:基于 Pandas/NumPy 计算量价指标(如成交量环比增幅、价格涨跌幅、量比、换手率等),设定异动阈值(如成交量突增 50%、价格涨超 3%);
异动事件触发:当个股指标突破阈值时,生成异动事件(如 “放量上涨买入信号”“破位下跌卖出信号”);
交易指令执行:验证信号有效性后,生成标准化买入 / 卖出指令,同步至交易接口;
状态监控与缓存:通过 Redis 缓存实时行情、异动信号、指令执行状态,支持策略参数动态调整;
API 服务:基于 FastAPI 提供行情查询、策略启停、信号查询等接口,支持前端 / 运维端交互。
行情数据采集:通过 Python 编写异步爬虫 / 对接第三方行情 API,按 1 分钟频率拉取个股行情数据,利用 Pandas 进行数据清洗(缺失值填充、异常值过滤),NumPy 向量化计算提升指标运算效率;
数据缓存:将清洗后的实时行情数据(如个股代码、最新价、成交量)存入 Redis,设置过期时间(5 分钟),保证数据时效性;异动信号生成后,以 “个股代码 - 信号类型 - 时间戳” 为 Key 存入 Redis,便于策略层快速读取。
指标计算模块:封装 NumPy/Pandas 计算函数,批量计算个股量价指标(如:量比 = 当前成交量 / 过去 5 日同期平均成交量;价格涨跌幅 =(当前价 - 昨日收盘价)/ 昨日收盘价 ×100%);
异动识别模块:设定多维度阈值规则(如 “量比> 2 且涨跌幅 > 3%” 触发买入信号,“价格跌破 5 日均线且成交量放大 30%” 触发卖出信号),遍历 Redis 中的实时数据,匹配规则后生成异动信号;
信号校验模块:过滤无效信号(如停牌股票、涨跌停股票),验证账户可用资金 / 持仓数量,确保指令可执行。
基于 FastAPI 搭建 RESTful API:
GET /api/stock/{code}:查询指定个股的实时行情与指标;
POST /api/strategy/start:启动指定策略(传入策略 ID、个股池、阈值参数);
GET /api/signal:查询近 1 小时内的异动信号与指令执行状态;
接口鉴权:添加 Token 验证,防止非法访问;接口异步处理:利用 FastAPI 的异步特性,避免行情采集 / 指标计算阻塞接口响应。
指令下发模块:将校验通过的买入 / 卖出指令封装为标准化格式,对接模拟 / 实盘交易接口(如券商 API);
状态同步模块:实时更新指令执行状态(待执行 / 已执行 / 失败)至 Redis,并记录日志(包含指令时间、个股、价格、数量、结果),便于复盘分析。