This commit is contained in:
cheney
2026-06-24 16:50:59 +08:00
parent db4e519cc2
commit e046c08e02
18 changed files with 386 additions and 34 deletions

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

@@ -0,0 +1,50 @@
# 策略1:中证 A500 成立以来收盘价图
## 目标
从 `sidecar` 模块获取中证 A500 指数日线数据,将指数自成立日至今日的收盘价绘制为一张 SVG 折线图。
## 假设
- 指数名称:中证 A500 指数。
- 指数代码:`sh000510`。
- 成立起始日:`2024-09-23`。
- 数据周期:日线。
- K 线数据源:`sidecar.sources.tencent.TencentFinanceSource`。
- 输出格式:SVG 图片,默认路径为 `strategy/output/a500_close_chart/a500_close.svg`。
## 数据源说明
策略通过 `sidecar` 的统一服务读取和缓存数据,但 K 线源显式使用腾讯财经。原因是当前 mootdx 对 `sh000510` 返回的日线价格量级异常,腾讯财经快照和 K 线价格量级一致,更适合绘制中证 A500 指数历史走势。
## 运行方式
```powershell
python -m strategy.a500_close_chart --refresh
```
可指定输出路径:
```powershell
python -m strategy.a500_close_chart --output strategy/output/a500_close_chart/a500_close.svg --refresh
```
## 输入
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--output` | string | `strategy/output/a500_close_chart/a500_close.svg` | 输出 SVG 文件路径 |
| `--refresh` | bool | `False` | 是否强制刷新 sidecar 缓存 |
## 输出
生成一张 SVG 图片:
- 横轴:交易日期,范围为中证 A500 成立日 `2024-09-23` 至当前可获取的最新交易日。
- 纵轴:日收盘价。
- 标题:`中证 A500 指数成立以来收盘价`。
## 测试用例
- `4-1`:过滤成立日之前的数据,并忽略空收盘价。
- `4-2`:根据收盘价点生成包含标题、日期和折线的 SVG。

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,62 @@
# 策略2:中证 A500 与沪深 300 双轴收盘价图
## 目标
从 `sidecar` 模块获取中证 A500 与沪深 300 指数日线数据,将两者自中证 A500 成立日至今日的收盘价绘制在同一张 SVG 图中。由于两个指数价格区间不同,图表使用双 Y 轴:左轴对应中证 A500,右轴对应沪深 300。
## 假设
- 中证 A500 指数代码:`sh000510`。
- 沪深 300 指数代码:`sh000300`。
- 横轴起始日:`2024-09-23`。
- 数据周期:日线。
- K 线数据源:`sidecar.sources.tencent.TencentFinanceSource`。
- 输出格式:SVG 图片,默认路径为 `strategy/output/a500_hs300_close_chart/a500_hs300_close.svg`。
## 双轴缩放规则
- 两个指数都以 `2024-09-23` 的收盘价作为各自基准价。
- Y 坐标按相对基准价的涨跌比例计算,而不是按各自价格区间独立拉伸。
- 因此两个指数起点位于同一水平线;相同涨跌比例对应相同纵向距离。
- 终点不强行对齐,终点高度真实反映各自相对起点的涨跌幅差异。
- 左右 Y 轴仍显示各自指数价格,同时括号展示对应涨跌比例。
## 数据处理
- 两个指数都通过 `sidecar` 统一服务读取并写入 DuckDB 缓存。
- 先过滤 `2024-09-23` 之前的数据。
- 再按共同交易日对齐,避免不同市场日历或缺失数据导致横轴错位。
## 运行方式
```powershell
python -m strategy.a500_hs300_close_chart --refresh
```
可指定输出路径:
```powershell
python -m strategy.a500_hs300_close_chart --output strategy/output/a500_hs300_close_chart/a500_hs300_close.svg --refresh
```
## 输入
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--output` | string | `strategy/output/a500_hs300_close_chart/a500_hs300_close.svg` | 输出 SVG 文件路径 |
| `--refresh` | bool | `False` | 是否强制刷新 sidecar 缓存 |
## 输出
生成一张 SVG 图片:
- 横轴:共同交易日期,范围为中证 A500 成立日 `2024-09-23` 至当前可获取的最新交易日。
- 左轴:中证 A500 日收盘价。
- 右轴:沪深 300 日收盘价。
- 标题:`中证 A500 与沪深 300 收盘价对比`。
## 测试用例
- `5-1`:按共同交易日对齐两组收盘价。
- `5-2`:生成包含双轴图例和两条折线的 SVG。
- `5-3`:相同涨跌比例映射到相同 Y 坐标。