diff --git a/src/components/StockChart/types/chart.types.ts b/src/components/StockChart/types/chart.types.ts new file mode 100644 index 00000000..c0454fe9 --- /dev/null +++ b/src/components/StockChart/types/chart.types.ts @@ -0,0 +1,122 @@ +/** + * KLineChart 图表类型定义 + * + * 适配 klinecharts@10.0.0-beta1 + * 文档: https://github.com/klinecharts/KLineChart + */ + +/** + * K 线数据点(符合 KLineChart 10.0 规范) + * + * 注意: 10.0 版本要求 timestamp 为数字类型(毫秒时间戳) + */ +export interface KLineDataPoint { + /** 时间戳(毫秒) */ + timestamp: number; + /** 开盘价 */ + open: number; + /** 最高价 */ + high: number; + /** 最低价 */ + low: number; + /** 收盘价 */ + close: number; + /** 成交量 */ + volume: number; + /** 成交额(可选) */ + turnover?: number; +} + +/** + * 后端原始数据格式 + * + * 支持多种时间字段格式(time/date/timestamp) + */ +export interface RawDataPoint { + /** 时间字符串(分时图格式:HH:mm) */ + time?: string; + /** 日期字符串(日线格式:YYYY-MM-DD) */ + date?: string; + /** 时间戳字符串或数字 */ + timestamp?: string | number; + /** 开盘价 */ + open: number; + /** 最高价 */ + high: number; + /** 最低价 */ + low: number; + /** 收盘价 */ + close: number; + /** 成交量 */ + volume: number; + /** 均价(分时图专用) */ + avg_price?: number; +} + +/** + * 图表类型枚举 + */ +export type ChartType = 'timeline' | 'daily'; + +/** + * 图表配置接口 + */ +export interface ChartConfig { + /** 图表类型 */ + type: ChartType; + /** 显示技术指标 */ + showIndicators: boolean; + /** 默认技术指标列表 */ + defaultIndicators?: string[]; + /** 图表高度(px) */ + height?: number; + /** 是否显示网格 */ + showGrid?: boolean; + /** 是否显示十字光标 */ + showCrosshair?: boolean; +} + +/** + * 事件标记接口 + * + * 用于在 K 线图上标记重要事件发生时间点 + */ +export interface EventMarker { + /** 唯一标识 */ + id: string; + /** 时间戳(毫秒) */ + timestamp: number; + /** 标签文本 */ + label: string; + /** 标记位置 */ + position: 'top' | 'middle' | 'bottom'; + /** 标记颜色 */ + color: string; + /** 图标(可选) */ + icon?: string; + /** 是否可拖动(默认 false) */ + draggable?: boolean; +} + +/** + * DataLoader 回调参数(KLineChart 10.0 新增) + */ +export interface DataLoaderCallbackParams { + /** K 线数据 */ + data: KLineDataPoint[]; + /** 是否还有更多数据 */ + more: boolean; +} + +/** + * DataLoader getBars 参数(KLineChart 10.0 新增) + */ +export interface DataLoaderGetBarsParams { + /** 回调函数 */ + callback: (data: KLineDataPoint[], options?: { more: boolean }) => void; + /** 范围参数(可选) */ + range?: { + from: number; + to: number; + }; +}