feat(chart): M9-1 Chart DTO + Chart Service + Chart API(v3 §20)
- domain/entities/chart.py:ChartResult/OHLC/Volume/Series/EventMarker/ChartMetadata
(adjust_mode + execution_price_basis 口径元数据)+ SelectionHit
- application/services/chart_service.py:个股 K线/量/MA 指标;显示层 qfq/hfq 折算
(基于主口径 none 行情 × adjust_factor,绝回写研究数据);回测个股视图把实际成交
转 fills 标记并在显示口径不同时做坐标换算(v3 §20.3/§20.5)
- by-symbol 历史查询:SignalRepository/SelectionRepository.list_by_symbol(含溯源 id)
- api/charts.py:/stocks/{symbol}/chart|signals|selections、/backtests/{id}/stocks/{symbol}/chart
|trades|positions
- tests/test_charts.py(指标/qfq-hfq 折算断言/回测 fills/API 集成+404);全量 pytest 通过
This commit is contained in:
@@ -55,3 +55,14 @@ class SignalMeta(BaseModel):
|
||||
watch: int = 0
|
||||
sell: int = 0
|
||||
created_at: datetime | None = None
|
||||
|
||||
|
||||
class SignalHit(BaseModel):
|
||||
"""个股在信号历史中的命中(by-symbol 查询,供 Chart 标记)。"""
|
||||
|
||||
signal_id: str
|
||||
signal_date: date
|
||||
signal_type: str
|
||||
score: float | None = None
|
||||
price: float | None = None
|
||||
trigger_reason: list[str] = Field(default_factory=list)
|
||||
|
||||
Reference in New Issue
Block a user