基于 Tushare 的量化交易分析工具集,提供情绪周期监控、板块分析等功能。
quant-agent/
├── run_three_line_chart.py # 情绪周期三线图(根目录入口)
├── init_server.py # 服务器初始化脚本 ⭐ 新服务器必需
├── setup_windows_scheduler.py # Windows 定时任务设置
├── requirements.txt # Python 依赖
├── .env # 环境变量配置(需自行创建)
│
├── data/ # 数据库存储
│ └── daily_data.db # 主数据库(日线、交易日历、缓存等)
│
├── output/ # 输出目录(图表、Excel等)
│
├── src/ # 核心源码
│ ├── api/
│ │ └── tushare_client.py # Tushare API 客户端
│ └── data/
│ ├── daily_data_manager.py # 日线数据管理
│ ├── trade_calendar.py # 交易日历管理
│ ├── three_line_sentiment.py # 情绪周期计算
│ └── dragon_head_selector.py # 龙头股筛选器
│
├── .agents/skills/ # 基础能力层(可复用组件)
│ ├── a-share-trade-calendar/ # 交易日历管理
│ ├── a-share-daily-data/ # 日线数据获取
│ ├── a-share-limit-up-down/ # 涨跌停数据
│ ├── a-share-market-stats/ # 市场统计
│ ├── a-share-new-high/ # 新高计算
│ └── ths-sector-manager/ # 同花顺板块管理
│
├── scenarios/ # 业务场景层
│ ├── sentiment-three-line/ # 情绪周期三线图 ⭐ 主要功能
│ └── auction-monitor/ # 竞价监控(开发中)
│
└── config/ # 配置文件
└── sector_blacklist.json # 板块黑名单
- Python: 3.10 或更高版本
- 操作系统: Windows 10/11 / macOS / Linux
- Tushare Token: 需要 Tushare Pro API Token
# 克隆项目
git clone https://github.com/daibi/quant-agent.git
cd quant-agent
# 创建虚拟环境(推荐)
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt# 复制示例文件
cp .env.example .env
# 编辑 .env 文件,填入你的 Tushare Token
# Windows:
notepad .env
# macOS/Linux:
vim .env在 .env 文件中配置:
TUSHARE_TOKEN=your_tushare_token_here在新服务器上首次运行时,需要初始化基础数据:
# 运行初始化脚本 (推荐标准模式,获取30天历史数据)
python init_server.py
# 或快速模式 (仅基础数据,不获取历史日线)
python init_server.py --quick
# 或完整模式 (获取90天历史数据)
python init_server.py --full初始化内容:
- 创建数据库表结构
- 获取交易日历数据
- 获取同花顺板块列表
- 获取历史日线数据 (可选)
- 预计算三线数据缓存 (可选)
详细部署指南见:DEPLOYMENT.md
# 测试基础功能
python -c "from src.api.tushare_client import TushareClient; print('OK: Dependencies installed successfully')"
# 生成测试图表
python run_three_line_chart.py --days 20监控市场情绪的三个核心指标:
| 指标 | 颜色 | 计算公式 |
|---|---|---|
| 大盘系数 | 🔴 红线 | 上涨家数 / 20 |
| 超短情绪 | 🟣 紫线 | 涨停数 + 新增百日新高/2 + 昨日涨停表现×10 |
| 亏钱效应 | 🟢 绿线 | 炸板率 + 2×(跌停数 + 大幅回撤) |
方式1: 使用场景脚本(推荐)
# 进入场景目录
cd scenarios/sentiment-three-line
# 运行分析(自动获取最近20个交易日)
python scripts/run.py
# 指定日期范围
python scripts/run.py --start 20260101 --end 20260220
# 强制重新计算(忽略缓存)
python scripts/run.py --force-recalc
# 清除缓存
python scripts/run.py --clear-cache方式2: 使用根目录脚本
# 分析最近20个交易日
python run_three_line_chart.py
# 指定日期范围
python run_three_line_chart.py --start 20260101 --end 20260220所有输出保存在 scenarios/sentiment-three-line/output/ 目录:
three_line_combined_*.png- 三线合并图three_line_separate_*.png- 三线分开图three_line_*.xlsx- Excel数据
场景版本支持智能缓存:
- 首次运行会获取数据并缓存
- 后续运行只获取缺失的日期,大幅提升速度
- 缓存存储在
data/daily_data.db的three_line_cache表中
自动更新或手动更新日线数据:
from src.data.daily_data_manager import DailyDataManager
from src.api.tushare_client import TushareClient
client = TushareClient()
manager = DailyDataManager(tushare_pro=client.pro)
# 快速更新(按日期批量获取)
manager.update_daily_data_fast(
start_date='20260101',
end_date='20260206',
trade_calendar_manager=cal_manager
)from src.data.trade_calendar import TradeCalendarManager
cal = TradeCalendarManager()
# 获取最近N个交易日
recent_days = cal.get_last_n_trading_days(20)
# 获取下一个交易日
next_day = cal.get_next_trading_day('20260206')
# 获取上一个交易日
prev_day = cal.get_previous_trading_day('20260206')
# 更新交易日历数据库
cal.update_database()情绪分析(推荐每日执行):
# 生成情绪周期图表
cd scenarios/sentiment-three-line
python scripts/run.py
# 查看输出
ls output/更新日线数据(每周一次):
# 脚本会自动增量更新
python run_three_line_chart.py --days 60更新交易日历(每月一次):
from src.data.trade_calendar import TradeCalendarManager
cal = TradeCalendarManager()
cal.update_database()编辑 config/sector_blacklist.json 可配置需要跳过的板块:
{
"blacklist": [
"银行",
"券商",
"保险",
"信托"
]
}使用 setup_windows_scheduler.py 设置定时任务:
python setup_windows_scheduler.py| 数据库文件 | 说明 | 主要表 |
|---|---|---|
data/daily_data.db |
主数据库 | daily_data(日线数据) |
trade_cal(交易日历) |
||
limit_list_cache(涨跌停缓存) |
||
three_line_cache(三线数据缓存) |
||
ths_sector_indices(同花顺板块) |
||
ths_sector_members(板块成分股) |
- Tushare Token: 必须在
.env文件中配置有效的 Tushare Token - 数据初始化: 新服务器必须先运行
python init_server.py - 网络连接: 确保网络稳定,避免因断网导致数据获取失败
Q: 首次使用需要准备什么?
A:
- 配置
.env文件(Tushare Token) - 安装依赖
pip install -r requirements.txt - 运行初始化
python init_server.py - 运行三线图表
python run_three_line_chart.py
Q: 缓存数据过期了怎么办?
A: 清除缓存重新计算:
cd scenarios/sentiment-three-line
python scripts/run.py --clear-cacheQ: 如何更新历史数据?
A: 系统会自动增量更新,如需强制更新:
python scenarios/sentiment-three-line/scripts/run.py --force-recalc完整依赖列表见 requirements.txt。
| 依赖包 | 版本 | 用途 | 必需 |
|---|---|---|---|
pandas |
>=2.0.0 | 数据处理和分析 | ✅ |
numpy |
>=1.24.0 | 数值计算 | ✅ |
matplotlib |
>=3.7.0 | 图表绘制 | ✅ |
seaborn |
>=0.12.0 | 高级可视化 | ✅ |
tushare |
>=1.4.0 | 股票数据接口 | ✅ |
openpyxl |
>=3.1.0 | Excel 文件导出 | ✅ |
python-dotenv |
>=1.0.0 | 环境变量管理 | ✅ |
requests |
>=2.31.0 | 网络请求 | ✅ |
欢迎提交 Issue 和 PR!
MIT License
如有问题,请在 GitHub 上提交 Issue。