Skip to content

Repository files navigation

Transaction Filter

面向 A 股日线数据采集与多条件筛选的 Windows 工具。项目以 SQLite 保存本地行情数据,通过 baostock 获取日线数据,并同时提供推荐的控制台前端和过渡期 PyQt5 GUI。

功能

  • 采集并增量更新 A 股日线数据;
  • 按市场板块、价格、成交量、涨幅、振幅和换手率进行多条件筛选;
  • 支持最高、最低、累积、平均、某一天、每一天、至少 n 天、连续 n 天等时间逻辑;
  • 支持 AND / OR 组合及“同一天”日期约束;
  • 提供数据检查、网络诊断和 baostock 运行时更新入口;
  • 支持导出筛选条件和筛选结果。
  • 支持固定状态面板、编号菜单、确定性命令和稳定 JSON 非交互接口。

筛选条件的计算口径与限制见 docs/筛选条件说明.txt

开发者备注

当前筛选逻辑尚未经过面向实际股票筛选结果的充分人工或实盘验证。现有自动化测试主要用于检查程序分支、组合规则和边界行为,不能证明筛选结果在真实投资场景中的准确性。所有筛选结果仅供参考,本项目不对特定筛选条件下输出结果的准确性、完整性或适用性作出保证,也不构成任何投资建议。

环境要求

  • Windows 10 或更高版本
  • Python 3.9
  • 网络连接(首次采集或更新数据时需要)

快速开始

  1. 安装 Python 3.9,并确认 py -3.9 可用。

  2. 在项目根目录执行:

    pwsh -File scripts/setup_env.ps1
  3. 双击推荐入口 launch_console.cmd,或执行:

    .\.venv\Scripts\python.exe run_console.py

原 PyQt5 界面在过渡期继续保留,可通过 launch_gui.cmdrun_gui.py 启动。

首次采集数据时,程序会在本地创建 data/logs/failed_batches/ 和 SQLite 数据库。这些运行时文件不随源码仓库发布。

控制台命令

交互模式支持编号菜单,也支持以下确定性命令:

condition list|add|edit|remove|clear|import|export
filter run|within
result list|lock|unlock|delete|export
fetch show|set|start|stop
data check
network check
baostock check|update
status
help
back
quit

脚本和自动化可以使用非交互接口。所有动作均支持 --json,退出码 0 表示成功、2 表示参数或校验失败、3 表示数据库、网络或运行时失败。

.\.venv\Scripts\python.exe run_console.py --action status --json
.\.venv\Scripts\python.exe run_console.py --action validate-filter --conditions ".\filter_conditions.json" --json
.\.venv\Scripts\python.exe run_console.py --action filter --conditions ".\filter_conditions.json" --output ".\filter_results.csv" --json

数据源

当前公开版本仅正式支持 baostock,固定依赖版本为 0.9.1。配置白名单、采集器工厂和界面数据源选项均只启用该数据源。

AKShare、TuShare 和新浪行情接口曾用于早期可行性探索,但没有形成经过端到端验证的当前采集能力,也不包含在公开版本中。各数据源的实现状态、上游许可证及数据使用注意事项见 docs/数据源与许可.md

打包

安装开发依赖后执行:

pwsh -File scripts/build_release_minimal.ps1

脚本默认使用项目 .venv 中的 Python 与依赖;也可以通过 TRANSACTION_FILTER_BUILD_PYTHONTRANSACTION_FILTER_BUILD_SITE_PACKAGES 指定其他构建环境。生成的 release_minimal/ 同时包含控制台和 GUI 入口,是本地构建产物,不提交到源码仓库。

目录结构

Transaction Filter/
├─ collectors/                 baostock 数据采集器
├─ config/                     配置与校验
├─ console_app/                prompt_toolkit 控制台前端
├─ database/                   SQLite schema、查询与写入
├─ docs/                       面向用户的筛选规则说明
├─ gui/                        PyQt5 界面
├─ scripts/                    环境初始化与打包脚本
├─ services/                   筛选核心、应用控制器与采集编排
├─ utils/                      运行时、日志与网络诊断
├─ launch_console.cmd          推荐的控制台启动入口
├─ launch_gui.cmd              GUI 启动入口
├─ launch_fetcher.cmd          命令行采集入口
├─ CHANGELOG.md                版本变更记录
├─ requirements-py39.txt       Python 3.9 依赖
├─ LICENSE                     MIT 开源许可证
├─ run_console.py              控制台及非交互 Python 入口
└─ run_gui.py                  GUI Python 入口

本地数据与隐私

项目不会在源码中保存 API 密钥、个人配置、预抓取数据库、日志或失败批次。请勿提交 .fetch_settings.jsondata/logs/failed_batches/.venv/ 或运行时更新目录中的个人文件。

许可证

本项目源码采用 MIT License。第三方库和数据服务仍分别受其自身许可证、服务协议和数据权利约束;本项目许可证不授予第三方行情数据的再分发权。

About

A股日线数据采集与多条件筛选工具(GUI + Console / SQLite / baostock)。开发者备注:筛选逻辑尚未经过充分实际验证,结果仅供参考,不保证准确性。

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages