← 返回选股页面

📊 A股基本面选股系统 — 数据库 & 使用说明

服务器: 150.158.87.41:5432 | 数据库: appdb | 覆盖 5,209 只沪深A股 | K线 2022-2026 (3.5年)

一、系统概览

5,209
沪深A股基本面数据
2,425,435
日K线条数
3.5 年
K线数据时间跨度
750 天
每只股票最多K线天数

二、数据库总览

服务器: 150.158.87.41:5432 | 数据库: appdb | 用户: appuser | SSL: require
所有 stockA 相关表均位于 public schema 下,共 11 张表。

2.1 全部 stockA 表

表名记录数用途更新方式
stocka_database265,209基本面+技术指标主表HTTP API (sync_http.py)
stocka_k2,425,435日K线 OHLCV直连DB (sync_kline.py)
stocka_level1~50~10自选股分级池REST API (实时)
stocka_level110回收站REST API (实时)
stocka_move_log4股票池移动记录自动 (API触发)
stocka_note1股票行情备注REST API (实时)
stocka_etf1,494ETF行情数据sync_etf.py (本地导入)
stocka_fund888基金净值/收益率sync_fund.py (本地导入)
stocka_fund_holdings15,000+基金/ETF持仓明细sync_fund_holdings.py

三、核心表结构详解

3.1 stocka_database26 — 基本面+技术指标主表

用途: 选股筛选、详情页基本面面板的数据源。每行代表一只股票。

数据来源: QMT xtdata → all_data.pkl → sync_http.py → HTTP POST → Flask API

分类字段名类型说明
标识codeVARCHAR(20)股票代码 (如 600519.SH),唯一键
标识nameVARCHAR股票名称
标识marketVARCHAR市场: 上海A / 深圳A / 北交所
标识sectorTEXT板块分类,逗号分隔 (申万一级/行业/概念/地域)
元数据report_period_labelVARCHAR(20)报告期标签 (如 2026Q1),来自 m_timetag
元数据data_sourceVARCHAR(10)数据来源: "实时" 或 "模拟"
元数据updated_atTIMESTAMPTZ最后更新时间
行情priceNUMERIC最新价 (元)
行情volumeNUMERIC成交量 (手)
行情amountNUMERIC成交额 (万元)
行情turnover_rateNUMERIC换手率 (%)
基本面peNUMERIC市盈率 (年化)
基本面pbNUMERIC市净率
基本面roeNUMERICROE 净资产收益率 (年化%)
基本面gross_profit_marginNUMERIC毛利率 (%)
基本面net_profit_marginNUMERIC净利率 (%)
基本面debt_ratioNUMERIC资产负债率 (%)
基本面revenue_growthNUMERIC营收同比增长率 (%)
基本面profit_growthNUMERIC净利润同比增长率 (%)
基本面market_capNUMERIC总市值 (亿元)
基本面epsNUMERIC每股收益 EPS (年化)
技术td_price_gt_ma5_daysINTEGER连续收盘 > MA5 天数
技术td_price_gt_ma10_daysINTEGER连续收盘 > MA10 天数
技术td_price_gt_ma20_daysINTEGER连续收盘 > MA20 天数
技术td_weekly_uptrendINTEGER周线上涨趋势 (1=是)
技术td_weekly_vol_chgNUMERIC周成交量变化百分比
技术td_turnover_d5_chgNUMERIC5日均换手率变化%
技术td_turnover_w4_chgNUMERIC4周均换手率变化%
技术td_turnover_m3_chgNUMERIC3月均换手率变化%
技术td_kline_updatedTIMESTAMPK线指标计算时间
-- 样本数据 (000004.SZ *ST国华) code=000004.SZ | name=*ST国华 | market=深圳A sector=申万一级/SW1计算机, 行业/软件开发, 概念/5G price=2.76 | pe=0.00 | pb=4.21 | roe=-7.05 gross_profit_margin=80.00 | net_profit_margin=-23.85 | debt_ratio=66.57 revenue_growth=-9.34 | profit_growth=45.35 | market_cap=0.34 | eps=-0.0483 volume=0 | amount=0 | turnover_rate=0 td_price_gt_ma5_days=0 | td_weekly_uptrend=0

3.2 stocka_k — 日K线数据表

用途: 详情页K线图、技术指标计算、大盘/板块对比曲线的数据源。

数据来源: sync_kline.py 从腾讯K线 API 拉取 (web.ifzq.gtimg.cn),直连 PostgreSQL 写入。

字段名类型说明
codeVARCHAR(12)股票代码 (联合主键)
dateDATE交易日 (联合主键)
openNUMERIC开盘价
highNUMERIC最高价
lowNUMERIC最低价
closeNUMERIC收盘价 (前复权)
volumeNUMERIC成交量 (手)
amountNUMERIC成交额 (元,close×volume×100推算)
turnover_rateNUMERIC换手率 (%,volume×10000/流通股本推算)
数据覆盖: 5,208 只股票 | 2022-12-20 ~ 2026-06-05 (1,263天 ≈ 3.5年) | 每只最多 750 条日K线
主键: (code, date)ON CONFLICT DO UPDATE 幂等写入
前复权: 腾讯API参数 qfq,所有价格均为前复权价格
增量更新: 批量查询覆盖率 → 仅拉取缺失股票,已有数据自动跳过
-- 样本数据 (001223.SZ) code=001223.SZ | date=2024-02-28 open=23.54 | high=23.54 | low=20.35 | close=20.35 volume=18961 | amount=38589427.20 | turnover_rate=2.72

3.3 stocka_level1~5 + level11 — 自选股分级池

用途: 用户将选股结果按策略/关注度分级管理。Level1~5 为自选,Level11 为回收站。

数据来源: 浏览器端通过 REST API 实时操作。

字段名类型说明
idSERIAL PK自增主键
codeVARCHAR(12) UNIQUE股票代码 (唯一)
nameVARCHAR(50)股票名称
marketVARCHAR(20)所属市场
notesTEXT备注 (选股理由/观察要点)
added_atTIMESTAMPTZ加入时间 (移动时保留原始时间)
-- 样本 (stocka_level5) code=002415.SZ | name=海康威视 | market=深圳A | notes='' added_at=2026-06-05 19:18:36+08

3.4 stocka_move_log — 股票池移动记录

用途: 追踪每只股票在各级别间的移动历史,详情页显示完整时间线。

字段名类型说明
idSERIAL PK自增主键
codeVARCHAR(20)股票代码
from_levelINTEGER来源级别 (NULL=首次加入)
to_levelINTEGER目标级别
moved_atTIMESTAMP移动时间
-- 样本 id=1 | code=600519.SH | from_level=NULL | to_level=1 moved_at=2026-06-07 10:03:56 -- 解读: 贵州茅台于 6月7日首次加入 Level1 股票池

3.5 stocka_note — 股票行情备注

用途: 行情详情页的"📝 备注"面板,每只股票一条记录。

字段名类型说明
codeVARCHAR(20) PK股票代码 (主键)
notesTEXT备注内容 (多行文本)
updated_atTIMESTAMP最后保存时间

四、数据库部署信息

项目
服务器 IP150.158.87.41
端口5432
数据库名appdb
用户名appuser
SSLrequire (强制加密)
PostgreSQL 版本16.13
配置文件/var/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/data/pg_hba.conf
防火墙firewalld rich rule: 仅白名单 IP 可访问 5432
直连需 IP 注册当前: 223.78.155.112, 223.78.155.131
HTTP 同步POST /api/stocka/sync (无需直连,无需注册 IP)

五、数据更新体系

5.1 更新工具

脚本连接数据流向
数据库智能更新.bat混合一键执行全部3步全部
launch_sync_kline.bat直连DB腾讯K线API → stocka_kstocka_k
launch_compute_indicators.bat直连DBstocka_k → 技术指标计算stocka_database26
数据库更新_260607rev0.batHTTP APIall_data.pkl → API → DBstocka_database26

5.2 完整更新流程

[1/3] sync_kline.py --days 750 --workers 8 腾讯K线 API → stocka_k 表 批量预查覆盖率 → 仅拉取缺失 → ~20秒完成 增量模式: 750天覆盖率≥65%则跳过 [2/3] compute_indicators.py stocka_k → MA5/10/20, 周线趋势, 换手率变化 → stocka_database26 技术字段 [3/3] sync_http.py Data/all_data.pkl → POST /api/stocka/sync 失败自动回退 sync_db.py (直连DB)

六、API 端点

端点方法说明操作的表
/api/stocka/healthGET健康检查stocka_database26
/api/stocka/sectorsGET板块/市场列表stocka_database26
/api/stocka/screenGET多条件筛选stocka_database26
/api/stocka/stock/<code>GET单只股票详情stocka_database26
/api/stocka/syncPOST批量同步数据 (Token)stocka_database26
/api/stocka/noteGET/POST股票备注stocka_note
/api/stocka/move-logGET股票池移动记录stocka_move_log
/api/stocka/level/statusGET查询在哪些池stocka_level1~5
/api/stocka/level/listGET列出指定池stocka_level1~5,11
/api/stocka/level/addPOST加入股票池stocka_level1~5 + move_log
/api/stocka/level/movePOST移动级别stocka_level1~5,11 + move_log
/api/stocka/level/notePOST更新池内备注stocka_level1~5
/api/stocka/level/removePOST删除/移入回收站stocka_level1~5,11

七、数据来源

数据类型来源更新方式目标表
K线 (OHLCV)腾讯K线 APIsync_kline.py 每日增量stocka_k
实时行情腾讯 QT + QMT get_full_tick()浏览器实时 + 桌面分析stocka_database26
财务数据QMT XtQuant (PershareIndex)桌面分析 → HTTP同步stocka_database26
技术指标基于 stocka_k 本地计算compute_indicators.pystocka_database26
板块分类QMT 本地板块文件桌面分析时提取stocka_database26
分时图腾讯分时 API浏览器按需获取— (非DB)
大盘/板块对比东财K线 (优先) → 腾讯K线浏览器按需获取— (非DB)
自选股操作浏览器用户交互REST API 实时写入stocka_level*

八、字段含义与评判标准

列名字段含义评判
序号#筛选结果行号,翻页连续
股票代码code6位数字 + 后缀 (.SH/.SZ/.BJ)
股票名称name中文简称
板块sector申万一级行业 (鼠标悬停看完整)
最新价price最新成交价,详情页腾讯实时覆盖
PEpe市盈率=股价÷年化EPS,越低越便宜0~30合理
PBpb市净率=股价÷每股净资产0~3合理
ROE(%)roe净资产收益率(年化),越高越好≥10%优秀
毛利率(%)gross_profit_margin毛利润÷营收,高=护城河≥20%
净利率(%)net_profit_margin净利润÷营收≥5%
负债率(%)debt_ratio资产负债率,越低越安全≤70%
营收增长(%)revenue_growth营收同比增长正值=增长
净利增长(%)profit_growth净利润同比增长正值=增长
市值(亿)market_cap总市值=总股本×价格
EPSeps每股收益(年化),越高越好
成交量(手)volume当日成交量
成交额(万)amount当日成交金额(万元)
换手率(%)turnover_rate成交量÷流通股本,反映活跃度
年化说明: 财务数据按报告期年化 — Q1×4、中报×2、三季报×4/3、年报×1。报告期由 m_timetag 识别 (如 20260331→2026Q1)。

九、技术指标筛选

条件含义建议
连续收盘 > MA5/MA10/MA20收盘连续站在均线上方天数≥3天
周线上升本周收盘 > 上周收盘
周成交量提升%本周量较上周变化≥10%
日/周/月换手率上升%5日/4周/3月均换手率变化≥0%

十、筛选建议

条件保守型成长型
PE0~200~40
PB0~20~5
ROE 最小≥15%≥8%
毛利率最小≥30%≥15%
净利率最小≥10%≥3%
负债率最大≤50%≤70%
营收增长最小≥5%≥0%
净利增长最小≥10%≥0%

十一、搜索方式

方式示例
完整代码600519 → 精确匹配
代码片段519 → 模糊匹配
股票名称茅台 → 模糊匹配
板块筛选下拉选择申万一级行业
市场筛选限定上海A/深圳A/北交所

十二、页面导航

页面URL功能
选股筛选/stockA/select/多条件选股
帮助说明/stockA/select/readme/本文档
股票池/stockA/select/stockpool/分级管理
行情详情(股票)/stockA/detail/?code=600519.SHK线+基本面+备注
行情详情(ETF)/stockA/detail/?code=510300.SHK线+持仓+基本面
行情详情(基金)/stockA/detail/?code=003382净值走势+收益率+持仓

十三、行情详情页 — K线图表说明

在选股页面点击任意股票行,会打开行情详情页(/stockA/detail/?code=CODE),页面左侧为 K线图区域,由三个垂直排列的子图组成

图表技术: 基于 ECharts 5.5 渲染,数据优先使用东方财富API,腾讯K线API作为备用。
复权方式: 所有K线数据均为前复权(qfq),价格可直接比较。
缩放操作: 鼠标滚轮缩放、拖动底部滑块选择时间范围、框选区域可放大。

13.1 图一:K线图(主图)— 占据 75% 高度

元素含义操作
K线柱 (蜡烛图)每根代表一个周期(日/周/月):红色=涨(收盘≥开盘),绿色=跌(收盘<开盘)。实体为开盘-收盘区间,影线为最高-最低区间悬停查看当日 OHLC 详情
MA5 / MA10 / MA205/10/20 日(周/月)移动平均线,反映短期趋势点击工具栏按钮切换显示
MA60 / MA12060/120 日均线,反映中长期趋势。MA120 默认关闭点击工具栏按钮切换显示
大盘对比线将对应大盘指数(上证/深证/创业板/科创50/北证50)等比缩放后叠加在主图上,虚线显示点击"📈 大盘"按钮
板块对比线将股票所属申万一级行业指数等比缩放后叠加,虚线显示点击"📊 板块"按钮(自动识别板块)
对比线原理: 指数收盘价按起始日等比缩放至与股价重合,之后按比例跟踪。若对比线在上方 → 指数跑赢个股;对比线在下方 → 个股跑赢指数。虚线仅反映相对走势,不反映绝对价格。

13.2 图二:成交量图 — 占据 9% 高度

元素含义
成交量柱每根柱子对应当日(周/月)成交量(手)。红色=当日收涨,绿色=当日收跌
量价配合价涨量增=强势;价涨量缩=动能衰减;价跌量增=恐慌抛售;价跌量缩=抛压减轻

13.3 图三:MACD 指标图 — 占据 9% 高度

元素含义
MACD 柱 ( histogram )MACD = (DIF - DEA) × 2。红柱=DIF在DEA上方(多头),绿柱=DIF在DEA下方(空头)。柱体高度反映多空力度
DIF 线 (快线)EMA12 - EMA26,反映短期与长期价格均线的偏离。深色实线
DEA 线 (慢线)DIF 的 9日 EMA 平滑线,橙色实线
金叉/死叉DIF 上穿 DEA = 金叉(看涨信号);DIF 下穿 DEA = 死叉(看跌信号)
顶/底背离股价创新高但 MACD 柱未创新高 = 顶背离(见顶);股价创新低但 MACD 柱未创新低 = 底背离(见底)

13.4 工具栏功能一览

按钮/控件功能
日线 / 周线 / 月线切换K线周期。切换后自动重新加载该周期的K线数据
分时切换为当日分时走势图(价格曲线+均价线+每分钟量柱),隐藏均线和MACD
MA5 / MA10 / MA20 / MA60 / MA120切换各均线在主图上的显示/隐藏
📈 大盘叠加对应大盘指数对比曲线(虚线)
📊 板块叠加所属申万一级行业指数对比曲线(虚线),自动识别板块
60/120/250/750条/全部控制图表显示的K线条数,默认750条(约3年)
↺ 还原重置图表缩放,恢复到全量视图
分时图模式: 点击"分时"按钮后,三图布局变为两图 — 上方为价格曲线(蓝线)+ 均价线(黄虚线)+ 昨收参考线(灰虚线),下方为每分钟成交量柱。适用于盘中实时盯盘。上午/下午之间用竖线分隔。

十四、基金门类

系统支持股票、ETF、基金三个门类切换筛选。页面顶部有三个按钮:📈 股票 → 📊 ETF → 💰 基金。选择后自动记住,直到点击重置。

14.1 基金数据概览

888
基金总数
6
覆盖类型
19,682
全市场基金池
500+388
绝对收益 + 分类排名

14.2 基金收录策略

阶段策略数量
第一批全市场近1年收益率前500名500
第二批按类型各取前100名(股票型/混合型/债券型/指数型/QDII/FOF)+388
合计去重后共覆盖6大类型888

14.3 基金类型分布

类型数量说明
混合型353股债混合,灵活配置
股票型118纯股票投资
指数型117跟踪指数(含ETF联接)
债券型100国债/信用债/可转债
QDII100海外市场投资
FOF100基金中的基金

14.4 基金筛选条件

条件含义
基金类型按股票型/混合型/债券型等筛选
近1年收益 ≥最近一年收益率下限
近3月收益 ≥最近三个月收益率下限
今年来收益 ≥年初至今收益率下限

14.5 基金详情页

点击基金行进入详情页,包含:

面板内容
💰 基金概览代码、类型、单位净值、累计净值、日涨幅、评分
净值走势图近1年单位净值面积图 + 日涨跌柱状图
📊 收益率近1周/1月/3月/6月/1年/2年/3年/今年来/成立来
📦 前十大重仓股票型显示股票持仓,债券型显示债券持仓
搜索方式: 基金支持代码搜索(如 003382)、名称搜索(如 民生加银)、拼音首字母搜索(如 yfd → 易方达)。

十五、持仓数据库

ETF 和基金的持仓数据存储在 stocka_fund_holdings 表中,通过批量脚本定期更新(季度报告发布后),前端直接从数据库读取,无需等待网络请求。

字段类型说明
fund_codeVARCHAR(20)基金/ETF代码
rankINTEGER持仓排名
asset_codeVARCHAR(20)持仓资产代码
asset_nameVARCHAR(200)持仓资产名称
weightNUMERIC占净值比例(%)
market_valueNUMERIC持仓市值(万元)
asset_typeVARCHAR(10)stock(股票) / bond(债券)
report_dateVARCHAR(50)报告期(如 2026年1季度)

15.1 更新方式

# 全量更新基金+ETF持仓(季度报告发布后运行) python3 sync_fund_holdings.py # 888只基金 python3 sync_etf_holdings.py # 1494只ETF
数据来源: 股票持仓来自 akshare fund_portfolio_hold_em,债券持仓来自 fund_portfolio_bond_hold_em。按季度更新,每次报告期后重新运行即可。

十六、常见问题

Q: PE显示为"—"?
A: EPS为0或负值(亏损),PE无意义。也可能是数据未更新。

Q: 筛选结果为空?
A: 逐放宽条件 — PE/PB上限 → ROE下限 → 毛利率 → 增长指标。

Q: 报告期和数据来源为什么显示为空?
A: 需在桌面端用新代码重新"开始分析"→ HTTP同步。旧版代码未填充这两个字段。

Q: 数据多久更新?
A: K线每日增量;基本面随财报季(4/8/10月);桌面端分析后同步即可。

Q: K线同步需要直连数据库吗?
A: 是,K线同步和技术指标计算需要直连 PostgreSQL (IP需在白名单)。基本面同步使用 HTTP API,无需直连。

Q: 如何注册桌面IP?
A: IP 223.78.155.112223.78.155.131 已注册。变更时通过 POST /api/register-ip 添加。