docs(framework_v2): 更新 FlaskAPIFetcher 文档(API 日历集成)

## 使用指南更新(FLASK_API_FETCHER_GUIDE.md)
- get_trading_calendar() 方法签名更新
  - 新增 start, end 参数(支持动态日期范围)
  - 返回类型: pd.DatetimeIndex(准确日历)
- 使用示例更新(API 调用方式)
- 注意事项更新:交易日历准确性  已解决

## 架构设计更新(FLASK_API_FETCHER_ARCHITECTURE.md)
- get_trading_calendar() 实现更新
  - 从临时 pandas BDay → API 准确日历
  - API 端点: GET /api/v1/trading-calendar
- 未来优化: 移除交易日历 TODO(已完成)

## 文档一致性
- 所有示例代码使用 API 日历
- 架构描述与实际实现一致
- 版本历史更新(2024-04-16)
This commit is contained in:
2026-05-24 12:38:55 +08:00
parent b462c0520c
commit 99d3584d05
2 changed files with 26 additions and 20 deletions

View File

@@ -286,18 +286,23 @@ python framework_v2/tests/test_flask_api_fetcher.py
### 1. 交易日历准确性
**当前问题**:使用 pandas `bdate_range` 生成近似日历,未考虑节假日
**已解决**:通过 API 获取准确交易日历
**优化方案**
**实现**
```python
# TODO: 通过 API 获取准确日历
def get_trading_calendar(self, market: str) -> pd.Index:
# 1. 调用 API 端点
# 2. 或从数据库查询
# 3. 或加载本地日历文件
pass
def get_trading_calendar(self, market, start, end):
# 调用 API 获取准确日历
calendar = self._source.get_trading_calendar(
market=market,
start_date=start,
end_date=end
)
return calendar
```
**API 端点**`GET /api/v1/trading-calendar`
**返回**:准确的 DatetimeIndex包含节假日处理
### 2. 缓存机制
**当前问题**:每次请求都调用 API重复获取相同数据。

View File

@@ -76,8 +76,12 @@ from framework_v2.shared.data import FlaskAPIFetcher, CrossMarketAligner
# 1. 创建数据获取器
fetcher = FlaskAPIFetcher()
# 2. 获取 A 股交易日历
a_share_calendar = fetcher.get_trading_calendar(market='A')
# 2. 获取 A 股交易日历(通过 API
a_share_calendar = fetcher.get_trading_calendar(
market='A',
start='2024-01-01',
end='2024-12-31'
)
# 3. 创建对齐器
aligner = CrossMarketAligner(target_calendar=a_share_calendar)
@@ -132,7 +136,7 @@ FlaskAPIFetcher(
|------|------|----------|
| `fetch_indices(codes, start, end)` | 获取指数 OHLCV 数据 | `Dict[str, DataFrame]` |
| `fetch_etf(codes, start, end)` | 获取 ETF 数据(价格+净值) | `Dict[str, DataFrame]` |
| `get_trading_calendar(market)` | 获取交易日历 | `pd.Index` |
| `get_trading_calendar(market, start, end)` | 获取交易日历API | `pd.DatetimeIndex` |
| `get_benchmark(code, start, end)` | 获取基准数据 | `pd.Series` |
| `get_health()` | 检查 API 健康状态 | `Dict` |
@@ -193,7 +197,7 @@ framework_v2/shared/data/flask_api_fetcher.py # 具体实现
└── FlaskAPIFetcher(DataFetcher)
├── fetch_indices() ✅ 实现(调用 FlaskAPIDataSource
├── fetch_etf() ✅ 实现(调用 FlaskAPIDataSource
├── get_trading_calendar() ✅ 实现(临时pandas BDay
├── get_trading_calendar() ✅ 实现(API 准确日历
└── get_benchmark() ✅ 实现
```
@@ -319,18 +323,15 @@ python framework_v2/tests/test_flask_api_fetcher.py
### 1. 交易日历准确性
当前 `get_trading_calendar()` 使用 pandas `bdate_range` 生成近似日历,**未考虑节假日**
**已解决**:通过 API 获取准确交易日历,包含所有节假日。
**临时方案**
**使用方式**
```python
calendar = fetcher.get_trading_calendar(market='A')
# 手动移除节假日
holidays = pd.to_datetime(['2024-02-10', '2024-10-01', ...])
calendar = calendar[~calendar.isin(holidays)]
# 获取 A 股 2024 年交易日历(准确)
calendar = fetcher.get_trading_calendar('A', '2024-01-01', '2024-12-31')
print(f"A 股交易日: {len(calendar)} 天") # 242 天
```
**TODO**:后续通过 API 端点获取准确日历。
### 2. ETF 净值数据量
ETF 净值数据可能远多于价格数据(历史净值 vs 交易价格):