Skip to content

daibi/quant-agent

Repository files navigation

Quant Agent - 量化交易 Agent 系统

基于 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     # 板块黑名单

🚀 快速开始

1. 环境要求

  • Python: 3.10 或更高版本
  • 操作系统: Windows 10/11 / macOS / Linux
  • Tushare Token: 需要 Tushare Pro API Token

2. 安装依赖

# 克隆项目
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

3. 配置环境变量

# 复制示例文件
cp .env.example .env

# 编辑 .env 文件,填入你的 Tushare Token
# Windows:
notepad .env
# macOS/Linux:
vim .env

.env 文件中配置:

TUSHARE_TOKEN=your_tushare_token_here

4. 初始化数据 (新服务器必需)

在新服务器上首次运行时,需要初始化基础数据:

# 运行初始化脚本 (推荐标准模式,获取30天历史数据)
python init_server.py

# 或快速模式 (仅基础数据,不获取历史日线)
python init_server.py --quick

# 或完整模式 (获取90天历史数据)
python init_server.py --full

初始化内容:

  • 创建数据库表结构
  • 获取交易日历数据
  • 获取同花顺板块列表
  • 获取历史日线数据 (可选)
  • 预计算三线数据缓存 (可选)

详细部署指南见:DEPLOYMENT.md

5. 验证安装

# 测试基础功能
python -c "from src.api.tushare_client import TushareClient; print('OK: Dependencies installed successfully')"

# 生成测试图表
python run_three_line_chart.py --days 20

📊 功能模块

一、情绪周期三线图 (Sentiment Three-Line)

监控市场情绪的三个核心指标:

指标 颜色 计算公式
大盘系数 🔴 红线 上涨家数 / 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.dbthree_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()

📈 每日工作流

盘后工作(每日 15:00 后)

情绪分析(推荐每日执行):

# 生成情绪周期图表
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": [
    "银行",
    "券商",
    "保险",
    "信托"
  ]
}

Windows 定时任务

使用 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(板块成分股)

⚠️ 注意事项

关键依赖

  1. Tushare Token: 必须在 .env 文件中配置有效的 Tushare Token
  2. 数据初始化: 新服务器必须先运行 python init_server.py
  3. 网络连接: 确保网络稳定,避免因断网导致数据获取失败

常见问题

Q: 首次使用需要准备什么?

A:

  1. 配置 .env 文件(Tushare Token)
  2. 安装依赖 pip install -r requirements.txt
  3. 运行初始化 python init_server.py
  4. 运行三线图表 python run_three_line_chart.py

Q: 缓存数据过期了怎么办?

A: 清除缓存重新计算:

cd scenarios/sentiment-three-line
python scripts/run.py --clear-cache

Q: 如何更新历史数据?

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。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages