基于多因子模型的A股量化选股、分析、回测与交易系统。
| 层级 | 技术选型 |
|---|---|
| 数据源 | AKShare(免费)/ Tushare(备选) |
| 数据库 | SQLite + SQLAlchemy ORM |
| 后端 | Python 3.10+ / FastAPI |
| 前端 | Vue 3 + Vite |
| 券商接口 | easytrader |
| 定时任务 | APScheduler |
| 日志 | loguru |
| 数据分析 | pandas + numpy + TA-Lib |
- 多因子智能选股(基本面40分 + 技术面30分 + 情绪面30分)
- 个股基本面深度分析(排雷 + 盈利 + 现金流 + 估值)
- 技术面买卖信号判定(均线/量价/MACD/筹码)
- 市场情绪监测(涨跌家数/涨停数/北向资金/融资余额)
- 策略回测评估(年化收益/最大回撤/夏普比率/胜率)
- 实盘风控(仓位管理/止损止盈/黑名单/交易频率)
# 克隆项目
git clone <repo-url>
cd finance
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txtcp .env.example .env
# 编辑 .env 填入实际配置# 初始化数据库表结构 + 拉取全市场股票列表 + 近1年历史行情
python scripts/init_data.py --all
# 或分步执行
python scripts/init_data.py --db # 仅建表
python scripts/init_data.py --stocks # 仅更新股票列表
python scripts/init_data.py --history 365 # 拉取近365天行情# Windows 一键启动
scripts\start_backend.bat
# 或手动启动
python -m uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000
# API文档: http://localhost:8000/docscd frontend
npm install
npm run dev
# 访问: http://localhost:5173# Windows
scripts\start_monitor.bat
# 或手动启动(在数据库中先添加自选股)
python -c "
from backend.services.monitor.watcher import MarketWatcher
watcher = MarketWatcher()
watcher.load_watchlist_from_db()
watcher.start()
"| 时间 | 任务 | 说明 |
|---|---|---|
| 08:30 | 盘前数据更新 | 财务数据、股东数据 |
| 09:30 | 开启盯盘监控 | 轮询自选股信号(10秒/次) |
| 11:30-13:00 | 午间暂停 | 自动跳过 |
| 15:00 | 关闭盯盘 | - |
| 15:30 | 盘后数据更新 | 日K线、北向资金、龙虎榜 |
- 本系统所有信号仅供参考,不构成任何投资建议
- 自动交易模块存在风险,建议先模拟验证后再实盘使用
- easytrader 需要本地运行同花顺/东方财富客户端
- 请严格遵守风控规则,单日亏损超3%自动暂停交易
- 投资有风险,入市需谨慎
finance/
├── backend/ # Python后端
│ ├── api/ # FastAPI路由
│ ├── core/ # 核心配置
│ ├── models/ # SQLAlchemy ORM模型
│ ├── schemas/ # Pydantic数据模型
│ ├── services/ # 业务逻辑层
│ │ ├── data_feed/ # 数据采集
│ │ ├── stock_picker/# 选股服务
│ │ ├── analysis/ # 分析服务
│ │ ├── backtest/ # 回测引擎
│ │ ├── monitor/ # 盯盘监控
│ │ └── trader/ # 交易对接
│ ├── tasks/ # 定时任务
│ └── utils/ # 工具函数
├── frontend/ # Vue3前端
├── scripts/ # 部署运维脚本
├── tests/ # 测试
├── data/ # 数据存储
└── logs/ # 日志
MIT