新增主力合约自动选取并补全项目文档

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
fish
2026-05-02 23:34:43 +08:00
parent b9975d6f91
commit bf8f578761
6 changed files with 117 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
# 期货行情分析系统 — 使用说明
基于 Docker + Python(tushare) + Go 的中国期货行情分析系统。当前阶段已实现数据采集与三层加权打分模型。
基于 Docker + Python(tushare) 的中国期货行情分析系统。当前阶段已实现数据采集与三层加权打分模型,运行方式为脚本自动化(宿主机定时器触发 `docker-compose run`)
## 环境准备
@@ -20,28 +20,40 @@ echo "TUSHARE_TOKEN=你的token" > tushare/.env
该文件已被 gitignore 排除,不会进入版本库。
### 2. 启动并跑默认合约
### 2. 启动并跑当月主力
```bash
docker-compose run --rm tushare
```
默认执行 `FG2609.ZCE`(玻璃期货 2609 合约),流程:
不传参时,按 `tushare/src/contracts.py``ROLLOVER_RULES` 自动选 FG 玻璃当月主力(例如 2026-05 -> `FG2609.ZCE`),启动后会先打印 `[AUTO] FG 当月主力 -> ...`,然后:
1. 从 tushare 拉取合约日线数据
2. 写入 SQLite `data/futures.db`
3. 运行三层打分模型
4. 保存打分结果并输出到 stdout
5. 通过 Bark 推送评分摘要
### 3. 跑其他合约
### 3. 跑其他合约或品种
```bash
# 螺纹钢 2510 合约(上期所)
# 显式指定合约
docker-compose run --rm tushare python -m src.main RB2510.SHF
# 铁矿石 2601 合约(大商所)
docker-compose run --rm tushare python -m src.main I2601.DCE
# 按品种代号自动选当月主力(目前只配置了 FG)
docker-compose run --rm tushare python -m src.main --symbol FG
```
### 4. 玻璃 FG 主力轮换规则
| 当前自然月 | 主力合约 |
|----------|---------|
| 1、2、3 月 | 当年 05 |
| 4、5、6、7 月 | 当年 09 |
| 8、9、10、11 月 | **次年** 01 |
| 12 月 | **次年** 05 |
## 三层打分模型
### 综合分数公式
@@ -131,6 +143,8 @@ trade/
├── fetcher.py # tushare 数据拉取
├── scorer.py # 打分模型核心
├── storage.py # SQLite 持久化
├── contracts.py # 主力合约轮换规则
├── notifier.py # Bark 推送
└── main.py # CLI 入口
```
@@ -154,8 +168,4 @@ A: 郑商所用 `.ZCE` 后缀(如 `FG2609.ZCE`),上期所用 `.SHF`,大
**Q: 如何定时自动跑?**
A: 当前为手动 CLI 触发。后续可在 `docker-compose.yml` 中增加 cron 服务或接入调度器
**Q: Go 后端怎么读数据?**
A: Go 端可直接用 `database/sql` + `github.com/mattn/go-sqlite3` 读取 `data/futures.db` 中的 `candles``scores` 表。
A: 通过宿主机 cron / launchd 等定时器调用 `docker-compose run --rm tushare ...`。打分结束会通过 Bark 推送结果(见 `tushare/src/notifier.py`