一个基于 Python + PyQt6 的 A 股行情监控和策略预警工具,整合了实时行情悬浮窗口和智能交易预警功能。
- 多市场支持:支持沪深 A 股、可转债、港股、美股、ETF 基金等
- 独立浮动窗口:每个标的使用独立的无边框悬浮窗口,可随意拖动
- 始终置顶:支持窗口始终置顶,方便随时查看
- 高度自定义:字体大小、透明度、列显示、刷新频率等均可调整
- 定时显示:支持设置时间段自动显示/隐藏窗口
- 多种策略:内置均线趋势、MACD动量、布林带回归、涨跌停预警等策略
- 策略热重载:策略定义文件支持运行时动态重载,无需重启程序
- 多数据源:支持东方财富、腾讯、新浪三大数据源,自动故障切换
- 钉钉通知:支持钉钉机器人推送交易信号
- 托盘图标:程序运行后在系统托盘显示图标
- 右键菜单:快速访问所有功能
- 双击切换:双击托盘图标快速显示/隐藏行情窗口
- Windows 10 / 11
- Python 3.9 及以上
# 克隆项目
cd AShareTools
# 创建虚拟环境
python -m venv venv
.\venv\Scripts\activate
# 安装依赖
pip install -r requirements.txtpython -m src.main或者直接运行:
python src/main.py程序启动后会在系统托盘显示图标,右键点击可访问所有功能。
程序启动后在系统托盘显示图标。双击图标可快速显示/隐藏行情窗口。 主要功能配置请通过 右键托盘图标 → 设置 进入设置窗口进行操作。
在设置窗口的"行情窗口"标签页中:
- 监控股票:输入股票代码(如
sh600519或sz000001),点击"添加"加入监控列表。选中股票可删除。 - 显示设置:
- 字体与透明度:拖动滑块调整字体大小、背景透明度和文字透明度。
- 刷新间隔:设置行情数据的刷新频率。
- 显示选项:可选择是否显示股票名称、代码、标题栏,以及是否始终置顶。
- 定时显示:启用后,行情窗口仅在设定的时间段内(如 09:25-11:35, 12:55-15:05)自动显示,其余时间隐藏。
在设置窗口的"行情预警"标签页中:
- 钉钉通知:配置钉钉机器人的 Webhook 和 Secret,用于接收策略触发的预警消息。
- 预警任务:
- 扫描间隔:设置策略检查的时间间隔。
- 任务列表:添加需要预警的股票,选择策略(如布林带回归、均线趋势等)和 K 线周期。
- 策略控制:
- 重载策略:修改
strategies.py文件后,点击此按钮可热重载策略代码。 - 刷新状态:刷新当前预警任务的运行状态。
- 重载策略:修改
策略定义在项目根目录的 strategies.py 文件中,可以直接编辑该文件添加或修改策略。
修改后点击"重载策略"即可生效,无需重启程序。
| 策略ID | 名称 | 说明 |
|---|---|---|
| MA_TREND | 均线趋势 | MA10/MA60 金叉死叉策略 |
| MACD_MOMENTUM | MACD动量 | MACD 0轴上方金叉策略 |
| BOLL_REVERSION | 布林带回归 | 布林带触底反弹策略 |
| TIME_BREAKOUT | 时间突破 | 早盘高低点突破策略 |
| GRID | 网格交易 | 固定网格间距交易策略 |
| LIMIT_BOARD_WARNING | 涨跌停预警 | 涨跌停板开板预警 |
- 编辑
strategies.py文件 - 在
STRATEGIES字典中添加策略定义 - 在
Strategy类中添加对应的策略方法 - 点击"重载策略"
运行时配置文件,首次运行会自动创建。包含:
- 行情窗口股票列表和显示设置
- 时间段配置
- 预警任务和钉钉配置
策略定义文件,包含:
- 策略注册表(STRATEGIES 字典)
- 策略实现类(Strategy 类)
使用 PyInstaller 将程序打包为单文件可执行程序。
.\venv\Scripts\activate
pip install pyinstallerpyinstaller AShareTools.specdist/
AShareTools.exe # 可执行文件
部署时需要将以下文件放在 EXE 同目录:
strategies.py # 策略定义文件(必需,支持热重载)
settings.json # 配置文件(首次运行自动创建)
icon.ico # (可选)自定义图标文件
运行时自动生成:
asharetools.log # 日志文件
stock_names.json # 股票名称缓存
- 将
dist/AShareTools.exe复制到目标目录 - 将
strategies.py复制到 EXE 同目录 - (可选)复制
settings.json.example为settings.json并修改配置 - 双击运行
AShareTools.exe
注意事项:
strategies.py必须放在 EXE 同目录,否则无法加载策略settings.json和日志文件会自动在 EXE 同目录创建- 首次运行时会自动获取股票名称并缓存
- 程序内置了默认图标,如需自定义,请在 EXE 同目录放置
icon.ico文件(优先使用)
AShareTools/
├── src/
│ ├── __init__.py
│ ├── main.py # 程序入口
│ ├── config.py # 静态配置
│ ├── constants.py # 常量定义
│ ├── utils.py # 工具函数
│ ├── logger.py # 日志模块
│ ├── scheduler.py # 时间调度
│ ├── settings_manager.py # 配置管理
│ ├── indicators.py # 技术指标
│ ├── data_fetcher.py # 数据获取
│ ├── alert_engine.py # 预警引擎
│ └── gui/
│ ├── __init__.py
│ ├── float_window.py # 浮动窗口
│ ├── quote_manager.py # 行情管理
│ ├── tray_icon.py # 系统托盘
│ └── dialogs.py # 对话框
├── strategies.py # 策略定义(热重载)
├── settings.json # 运行配置(自动生成)
├── requirements.txt # 依赖列表
├── AShareTools.spec # 打包配置
└── README.md
A: 程序默认最小化到系统托盘,请在任务栏托盘区域查找图标。
A: 点击"重载策略"按钮,或者检查策略文件是否有语法错误。
A: 确保 strategies.py 文件在 EXE 同目录。
本工具仅供学习和个人使用,行情数据来源于公开接口,不保证数据的准确性和及时性。投资有风险,请谨慎决策。
本项目采用 MIT License 开源授权。