feat(web): M9-3 K线 Chart 组件(candlestick + 量 + MA + Signal↔Fill 标记)

- components/StockChart/CandleChart.tsx:ECharts candlestick(红涨绿跌)+ 成交量副网格 +
  MA20/MA60 叠加 + 事件标记:成交 fills 实心三角、未成交信号空心三角(v3 §20.3);
  组件只展示不计算;层隔离便于替换 TradingView Lightweight Charts
- lib/types.ts:ChartResult/OHLC/Volume/Series/Marker DTO
- tsc --noEmit 通过
This commit is contained in:
Simon
2026-09-09 07:13:43 +08:00
parent bfeac7aa4c
commit 63c61ded37
2 changed files with 253 additions and 0 deletions
+40
View File
@@ -186,3 +186,43 @@ export interface SignalRun {
signal_id: string;
result: SignalResult;
}
/* ---- Chart Service(v3 §20,与 domain/entities/chart.py 对应) ---- */
export interface ChartOHLC {
time: string;
open?: number | null;
high?: number | null;
low?: number | null;
close?: number | null;
}
export interface ChartVolumePoint { time: string; value?: number | null }
export interface ChartSeriesPoint { time: string; value?: number | null }
export interface ChartMarker {
time: string;
kind: string; // selection | signal_buy|signal_sell|signal_watch | fill_buy|fill_sell
symbol?: string;
price?: number | null;
score?: number | null;
text: string[];
ref_id?: string | null;
}
export interface ChartResult {
metadata: {
symbol: string;
name?: string;
adjust_mode: string;
execution_price_basis?: string | null;
start?: string | null;
end?: string | null;
bar_count: number;
indicator_windows: number[];
};
bars: ChartOHLC[];
volume: ChartVolumePoint[];
indicators: Record<string, ChartSeriesPoint[]>;
selections: ChartMarker[];
signals: ChartMarker[];
fills: ChartMarker[];
factor_values?: Record<string, ChartSeriesPoint[]>;
}