@363045841yyt/klinechart 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +140 -187
  2. package/dist/components/IndicatorParams.vue.d.ts +28 -0
  3. package/dist/components/IndicatorSelector.vue.d.ts +10 -0
  4. package/dist/components/KLineChart.vue.d.ts +14 -17
  5. package/dist/components/MarkerTooltip.vue.d.ts +10 -0
  6. package/dist/core/chart.d.ts +84 -47
  7. package/dist/core/controller/interaction.d.ts +56 -18
  8. package/dist/core/layout/pane.d.ts +2 -0
  9. package/dist/core/marker/registry.d.ts +174 -0
  10. package/dist/core/paneRenderer.d.ts +7 -40
  11. package/dist/core/renderers/Indicator/boll.d.ts +28 -0
  12. package/dist/core/renderers/Indicator/bollLegend.d.ts +16 -0
  13. package/dist/core/renderers/Indicator/cci.d.ts +34 -0
  14. package/dist/core/renderers/Indicator/fastk.d.ts +34 -0
  15. package/dist/core/renderers/Indicator/index.d.ts +31 -0
  16. package/dist/core/renderers/Indicator/kst.d.ts +49 -0
  17. package/dist/core/renderers/Indicator/ma.d.ts +12 -0
  18. package/dist/core/renderers/Indicator/maLegend.d.ts +9 -0
  19. package/dist/core/renderers/Indicator/macd.d.ts +46 -0
  20. package/dist/core/renderers/Indicator/macdLegend.d.ts +10 -0
  21. package/dist/core/renderers/Indicator/mom.d.ts +34 -0
  22. package/dist/core/renderers/Indicator/rsi.d.ts +42 -0
  23. package/dist/core/renderers/Indicator/stoch.d.ts +43 -0
  24. package/dist/core/renderers/Indicator/wmsr.d.ts +34 -0
  25. package/dist/core/renderers/candle.d.ts +17 -4
  26. package/dist/core/renderers/crosshair.d.ts +13 -20
  27. package/dist/core/renderers/customMarkers.d.ts +6 -0
  28. package/dist/core/renderers/extremaMarkers.d.ts +3 -4
  29. package/dist/core/renderers/globalBorders.d.ts +8 -13
  30. package/dist/core/renderers/gridLines.d.ts +4 -3
  31. package/dist/core/renderers/lastPrice.d.ts +3 -3
  32. package/dist/core/renderers/paneTitle.d.ts +37 -10
  33. package/dist/core/renderers/subVolume.d.ts +7 -3
  34. package/dist/core/renderers/timeAxis.d.ts +9 -22
  35. package/dist/core/renderers/yAxis.d.ts +5 -12
  36. package/dist/core/scale/priceScale.d.ts +1 -0
  37. package/dist/core/theme/colors.d.ts +80 -0
  38. package/dist/core/utils/klineConfig.d.ts +28 -0
  39. package/dist/core/utils/tickCount.d.ts +7 -0
  40. package/dist/core/viewport/viewport.d.ts +5 -5
  41. package/dist/index.cjs +16 -1
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.js +10540 -1064
  44. package/dist/klinechart.css +1 -1
  45. package/dist/plugin/ConfigManager.d.ts +31 -0
  46. package/dist/plugin/EventBus.d.ts +34 -0
  47. package/dist/plugin/HookSystem.d.ts +28 -0
  48. package/dist/plugin/PluginHost.d.ts +47 -0
  49. package/dist/plugin/PluginRegistry.d.ts +40 -0
  50. package/dist/plugin/index.d.ts +11 -0
  51. package/dist/plugin/rendererPluginManager.d.ts +73 -0
  52. package/dist/plugin/types.d.ts +185 -0
  53. package/dist/semantic/controller.d.ts +29 -0
  54. package/dist/semantic/drawShape.d.ts +14 -0
  55. package/dist/semantic/index.d.ts +8 -0
  56. package/dist/semantic/schema.json.d.ts +259 -0
  57. package/dist/semantic/types.d.ts +185 -0
  58. package/dist/semantic/validator.d.ts +42 -0
  59. package/dist/types/volumePrice.d.ts +26 -0
  60. package/dist/utils/kLineDraw/MA.d.ts +5 -5
  61. package/dist/utils/logger.d.ts +1 -0
  62. package/dist/utils/volumePrice.d.ts +54 -0
  63. package/package.json +11 -10
  64. package/dist/core/renderers/crosshairLabels.d.ts +0 -36
  65. package/dist/core/renderers/grid.d.ts +0 -6
  66. package/dist/core/renderers/ma.d.ts +0 -15
  67. package/dist/core/renderers/maLegend.d.ts +0 -19
  68. package/dist/core/renderers/paneBorder.d.ts +0 -26
  69. package/dist/core/renderers/paneSeparator.d.ts +0 -18
package/README.md CHANGED
@@ -2,16 +2,28 @@
2
2
 
3
3
  [English](README_EN.md) | 简体中文
4
4
 
5
- 这是一个基于 Vue 3 Canvas 的金融图表绘制库,专注于提供高性能的 K 线图展示功能。该库支持横向滚动、移动平均线(MA)显示以及从多种数据源(包括 **BaoStock**、AKTools)获取金融数据。
5
+ 这是一个基于 Canvas 的金融图表绘制库,提供 Vue 组件封装。专注于高性能 K 线图渲染,支持**语义化 JSON 配置**,便于 AI Agent 直接控制图表渲染。特性包括横向滚动、多种技术指标(MA/BOLL/MACD/RSI 等)、自定义标记标注、多数据源支持(BaoStock、东方财富)。
6
6
 
7
- <img src="https://s2.loli.net/2026/02/01/7j9uHWIvrAGxFBC.png" alt="示例图片" style="border-radius: 8px;">
7
+ ![pasted-image-1775748542822.webp](https://files.seeusercontent.com/2026/04/09/u0nK/pasted-image-1775748542822.webp)
8
8
 
9
9
 
10
10
  ## 功能特性
11
11
 
12
12
  - **基于 Canvas**:使用 Canvas 实现高性能的 K 线图绘制
13
13
  - **响应式设计**:适配不同屏幕尺寸,支持所有设备像素比(DPR),不同 DPR 下绘制清晰
14
+ - **影线处理**:统一 DPR 坐标计算,底层保证影线在不同 DPR 屏幕下绝对居中并绘制清晰
15
+ - **像素对齐**:统一坐标源,在物理坐标层面实现像素对齐,消除亚像素渲染,确保线条锐利清晰
14
16
  - **框架无关**:核心逻辑完全独立,不依赖特定框架
17
+ - **插件化架构**:渲染器插件支持动态注册、配置和生命周期管理
18
+ - **量价关系标注**:自动识别并标注量价齐升、量价背离、量增价跌、量缩价跌四种形态
19
+
20
+ ### Agent 语义化控制
21
+
22
+ - **JSON 配置驱动**:通过 `semanticConfig` prop 接收 JSON 配置,AI Agent 可直接控制图表渲染
23
+ - **自定义标记**:支持 6 种预设形状(arrow_up、arrow_down、flag、circle、rectangle、diamond),标记大小随 K 线缩放自适应
24
+ - **完整指标支持**:主图 MA/BOLL,副图 MACD/RSI/CCI/STOCH 等
25
+ - **安全校验**:JSON Schema 校验、原型污染防护、颜色 XSS 防护、输入边界检查
26
+ - **日期友好格式**:使用 `YYYY-MM-DD` 自然日期格式,便于 Agent 输出
15
27
 
16
28
  ## 技术栈
17
29
 
@@ -21,146 +33,66 @@
21
33
  - [Canvas API](https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API)
22
34
  - [Vitest](https://vitest.dev/) - 单元测试框架
23
35
 
24
- ## 数据源
25
- - [BaoStock](http://baostock.com/) - 开源金融数据接口,每日支持十万次 API 调用
26
- - [AKTools](https://github.com/akfamily/aktools) - 开源金融数据接口库(可能存在反爬限制)
27
-
28
- ## 使用 NPM 安装组件库
29
- ```bash
30
- npm i @363045841yyt/klinechart
31
- ```
32
-
33
-
34
36
  ## 项目结构
35
37
 
36
38
  ```
37
39
  src/
38
- ├── api/ # API 接口定义
39
- │ └── data/
40
- ├── kLine.ts # 东财/AKTools K 线数据接口
41
- └── baostock.ts # BaoStock K 线数据接口(推荐)
42
- ├── components/ # 组件
43
- │ └── KLineChart.vue # K 线图主组件
44
- ├── core/ # 核心渲染引擎
45
- │ ├── chart.ts # 图表控制器
46
- │ ├── draw/ # 像素对齐工具
47
- │ │ └── pixelAlign.ts
48
- │ ├── renderers/ # 渲染器
49
- │ │ ├── candle.ts # K 线渲染器
50
- │ │ └── ...
51
- │ ├── scale/ # 缩放控制
52
- │ └── viewport/ # 视口管理
53
- ├── types/ # 类型定义
54
- │ ├── kLine.ts # K 线类型定义
55
- │ └── price.ts # 价格类型定义
56
- ├── utils/ # 工具函数
57
- │ ├── kLineDraw/ # K 线绘制工具
58
- │ ├── kline/ # K 线数据处理
59
- └── mock/ # 模拟数据生成
60
- ├── stores/ # 状态管理 (Pinia)
61
- └── assets/ # 静态资源
40
+ ├── api/ # API 接口定义
41
+ │ └── data/ # 数据源接口
42
+ ├── components/ # Vue 组件
43
+ ├── KLineChart.vue # K 线图主组件
44
+ ├── IndicatorSelector.vue # 指标选择器
45
+ │ └── IndicatorParams.vue # 指标参数编辑
46
+ ├── core/ # 核心渲染引擎
47
+ │ ├── chart.ts # 图表控制器
48
+ │ ├── renderers/ # 渲染器插件
49
+ │ │ ├── candle.ts # K 线渲染器
50
+ ├── ma.ts # MA 均线渲染器
51
+ │ │ ├── boll.ts # BOLL 布林带渲染器
52
+ │ │ ├── macd.ts # MACD 指标渲染器
53
+ ├── volume.ts # 成交量渲染器
54
+ └── ... # 其他渲染器
55
+ ├── theme/ # 主题配置
56
+ │ ├── marker/ # 标记点系统
57
+ │ └── utils/ # 核心工具
58
+ ├── semantic/ # 语义化配置模块(Agent 控制)
59
+ │ ├── types.ts # 类型定义
60
+ │ ├── schema.json # JSON Schema
61
+ ├── validator.ts # 校验器
62
+ ├── controller.ts # 控制器
63
+ └── drawShape.ts # 形状绘制
64
+ ├── plugin/ # 插件系统
65
+ │ ├── types.ts # 类型定义
66
+ │ ├── PluginHost.ts # 插件宿主
67
+ │ ├── EventBus.ts # 事件总线
68
+ │ ├── HookSystem.ts # 钩子系统
69
+ │ └── rendererPluginManager.ts # 渲染器管理
70
+ ├── types/ # 类型定义
71
+ └── utils/ # 工具函数
62
72
  ```
63
73
 
64
- ### BaoStock(推荐)
65
-
66
- BaoStock 是免费开源的 Python 证券数据接口,提供稳定可靠的金融数据服务。
67
-
68
- - 官方文档:[http://www.baostock.com/mainContent?file=stockKData.md](http://www.baostock.com/mainContent?file=stockKData.md)
74
+ ## 数据源
69
75
 
70
- #### 快速开始
76
+ - [BaoStock](http://baostock.com/) - 开源金融数据接口,每日支持十万次 API 调用
77
+ - [AKTools](https://github.com/akfamily/aktools) - 开源金融数据接口库(可能存在反爬限制)
71
78
 
72
- ```bash
73
- # 安装
74
- uv pip install baostock
75
- ```
79
+ ## 使用 NPM 安装组件库
76
80
 
77
- 由于 BaoStock 未提供 AkTools 的后端接口,需要自行搭建 FastAPI 服务:
78
81
  ```bash
79
- git clone https://github.com/363045841/stockbao.git
80
-
81
- # 启动服务
82
- python server.py
82
+ npm i @363045841yyt/klinechart
83
83
  ```
84
84
 
85
- ### AKShare
86
-
87
- AKShare 基于 Python 的开源财经数据接口库,数据来源于东方财富等公开渠道。
88
-
89
- - GitHub:[https://github.com/akfamily/akshare](https://github.com/akfamily/akshare)
90
-
91
- > **⚠️ 注意:** 该库采取直连API,容易触发反爬机制,频繁请求可能导致 IP 被封禁
92
-
93
- #### 快速开始
85
+ ## 快速开始
94
86
 
95
87
  ```bash
96
- # 安装
97
- uv pip install aktools
98
-
99
- # 启动服务
100
- uv run python -m aktools
101
-
102
- # 或通过本项目脚本启动
103
- pnpm aktools
104
- ```
105
-
106
- ### 后端数据源配置
107
-
108
- #### Vite 代理配置
109
-
110
- 本项目已配置双数据源代理:
111
-
112
- ```ts
113
- // vite.config.ts
114
- proxy: {
115
- '/api/stock': { // BaoStock (端口 8000)
116
- target: 'http://127.0.0.1:8000',
117
- changeOrigin: true,
118
- },
119
- '/api/public': { // AKTools (端口 8080)
120
- target: 'http://127.0.0.1:8080',
121
- changeOrigin: true,
122
- },
123
- }
124
- ```
125
-
126
- #### 统一接口使用
127
-
128
- ```vue
129
- <script setup lang="ts">
130
- import { fetchKLineData, type KLineDataSourceConfig } from '@/api/data'
131
-
132
- const DATA_SOURCE: 'baostock' | 'dongcai' = 'baostock'
133
-
134
- // AKshare要求日期为YYYYMMDD格式, BaoStock要求日期为YYYY-MM-DD格式
135
- const config: KLineDataSourceConfig = {
136
- symbol: '601360',
137
- startDate: '2024-01-01',
138
- endDate: '2024-12-31',
139
- period: 'daily',
140
- adjust: 'qfq',
141
- }
142
-
143
- const data = await fetchKLineData(DATA_SOURCE, config)
144
- </script>
145
- ```
146
-
147
- ## 使用方法
148
-
149
- ### 1. 安装依赖
150
-
151
- ```sh
88
+ # 安装依赖
152
89
  pnpm install
153
- ```
154
-
155
- ### 2. 启动开发服务器
156
90
 
157
- ```sh
91
+ # 启动开发服务器
158
92
  pnpm dev
159
93
  ```
160
94
 
161
- ### 3. 在组件中使用 K 线图
162
-
163
- #### 方式一:使用 BaoStock 数据源(推荐)
95
+ ## 使用示例
164
96
 
165
97
  ```vue
166
98
  <template>
@@ -177,100 +109,117 @@ pnpm dev
177
109
  <script setup lang="ts">
178
110
  import { ref, onMounted } from 'vue'
179
111
  import KLineChart from '@/components/KLineChart.vue'
180
- import { getKlineDataBaoStock } from '@/api/data/baostock'
181
112
  import type { KLineData } from '@/types/price'
182
- import { cache } from '@/utils/cache'
183
113
 
184
114
  const klineData = ref<KLineData[]>([])
185
115
 
186
116
  onMounted(async () => {
187
- const params = {
188
- symbol: 'sh.601360', // 三六零股票代码(带市场前缀)
189
- start_date: '2024-01-01', // YYYY-MM-DD 格式
190
- end_date: '2024-12-31',
191
- period: 'daily' as const,
192
- adjust: 'qfq' as const, // 前复权
193
- }
194
-
195
- // 缓存键
196
- const cacheKey = `kline:${params.symbol}:${params.start_date}:${params.end_date}`
197
-
198
- // 先尝试从缓存获取(1小时有效期)
199
- const cached = cache.get<KLineData[]>(cacheKey)
200
- if (cached) {
201
- klineData.value = cached
202
- return
203
- }
204
-
205
- // 从 API 获取
206
- const data = await getKlineDataBaoStock(params)
117
+ // 从数据源获取 K 线数据
118
+ const data = await fetchKLineData('baostock', {
119
+ symbol: 'sh.601360',
120
+ startDate: '2024-01-01',
121
+ endDate: '2024-12-31',
122
+ period: 'daily',
123
+ adjust: 'qfq',
124
+ })
207
125
  klineData.value = data
208
-
209
- // 存入缓存
210
- cache.set(cacheKey, data)
211
126
  })
212
127
  </script>
213
128
  ```
214
129
 
215
- #### 方式二:使用 AKTools 数据源
130
+ ### 语义化 JSON 控制(Agent 模式)
131
+
132
+ 通过 `semanticConfig` prop,AI Agent 可以用 JSON 配置完整控制图表渲染:
216
133
 
217
134
  ```vue
218
- <script setup lang="ts">
219
- import { getKlineDataDongCai } from '@/api/data/kLine'
220
- import { toKLineData } from '@/types/price'
135
+ <template>
136
+ <KLineChart :semanticConfig="config" />
137
+ </template>
221
138
 
222
- onMounted(async () => {
223
- const raw = await getKlineDataDongCai({
224
- symbol: '601360',
139
+ <script setup lang="ts">
140
+ import { ref } from 'vue'
141
+ import type { SemanticChartConfig } from '@363045841yyt/klinechart'
142
+
143
+ const config = ref<SemanticChartConfig>({
144
+ version: '1.0.0',
145
+ data: {
146
+ source: 'baostock',
147
+ symbol: '600519',
148
+ exchange: 'SH',
149
+ startDate: '2025-01-01',
150
+ endDate: '2025-04-18',
225
151
  period: 'daily',
226
- start_date: '20250501', // YYYYMMDD 格式
227
- end_date: '20251230',
228
152
  adjust: 'qfq',
229
- })
230
- klineData.value = toKLineData(raw)
153
+ },
154
+ indicators: {
155
+ main: [{ type: 'MA', enabled: true, params: { periods: [5, 10, 20] } }],
156
+ sub: [{ type: 'MACD', enabled: true }],
157
+ },
158
+ markers: {
159
+ customMarkers: [
160
+ {
161
+ id: 'buy_001',
162
+ date: '2025-02-15',
163
+ shape: 'arrow_up',
164
+ label: { text: '买入' },
165
+ style: { fillColor: '#52c41a' },
166
+ },
167
+ ],
168
+ },
231
169
  })
232
170
  </script>
233
171
  ```
234
172
 
235
- ### 组件属性
173
+ 详细配置说明请参阅 [语义化配置文档](./docs/semantic-config.md)。
236
174
 
237
- | 属性 | 类型 | 默认值 | 说明 |
238
- | ----------------- | ----------- | ------------------------------------- | ------------------------------ |
239
- | data | KLineData[] | [] | K 线数据数组 |
240
- | kWidth | number | 10 | K 线实体宽度 |
241
- | kGap | number | 2 | K 线间距 |
242
- | yPaddingPx | number | 60 | Y 轴上下留白像素 |
243
- | showMA | MAFlags | { ma5: true, ma10: true, ma20: true } | 是否显示移动平均线 |
244
- | autoScrollToRight | boolean | true | 数据更新后是否自动滚动到最右侧 |
175
+ ## 数据源配置
245
176
 
246
- ## 环境要求
177
+ ### BaoStock(推荐)
247
178
 
248
- - Node.js: ^20.19.0 || >=22.12.0
249
- - pnpm: 包管理器
250
- - Python: 用于运行 AKTools 服务(可选)
251
- - uv: Python 包管理器
179
+ 免费开源的 Python 证券数据接口,每日支持十万次 API 调用。
252
180
 
253
- ## 构建与部署
181
+ ```bash
182
+ uv pip install baostock
183
+ git clone https://github.com/363045841/stockbao.git
184
+ python server.py # 启动服务
185
+ ```
186
+
187
+ ### AKTools
254
188
 
255
- ### 生产环境构建
189
+ 基于 Python 的开源财经数据接口,数据来源于东方财富等公开渠道。
256
190
 
257
- ```sh
258
- pnpm build
191
+ ```bash
192
+ uv pip install aktools
193
+ uv run python -m aktools # 启动服务
259
194
  ```
260
195
 
261
- ### 预览生产包
196
+ > ⚠️ 注意:AKTools 采取直连 API,频繁请求可能触发反爬机制
262
197
 
263
- ```sh
264
- pnpm preview
265
- ```
198
+ ### 组件属性
266
199
 
267
- ## 贡献
200
+ | 属性 | 类型 | 默认值 | 说明 |
201
+ |------|------|--------|------|
202
+ | data | KLineData[] | [] | K 线数据数组 |
203
+ | semanticConfig | SemanticChartConfig | - | 语义化配置(Agent 模式,唯一数据源) |
204
+ | kWidth | number | 10 | K 线实体宽度 |
205
+ | kGap | number | 2 | K 线间距 |
206
+ | yPaddingPx | number | 60 | Y 轴上下留白像素 |
207
+ | showMA | MAFlags | { ma5: true, ma10: true, ma20: true } | 移动平均线配置 |
208
+ | autoScrollToRight | boolean | true | 数据更新后自动滚动到最右侧 |
268
209
 
269
- 欢迎提交 Issue 和 Pull Request 来改进这个项目。
210
+ ## 环境要求
270
211
 
271
- ## 许可证
212
+ - Node.js: ^20.19.0 || >=22.12.0
213
+ - pnpm: 包管理器
214
+ - Python: 用于运行数据源服务(可选)
215
+ - uv: Python 包管理器
272
216
 
273
- 本项目采用 MIT 许可证,详情请见 [LICENSE](./LICENSE) 文件。
217
+ ## 构建与部署
218
+
219
+ ```bash
220
+ pnpm build # 生产环境构建
221
+ pnpm preview # 预览生产包
222
+ ```
274
223
 
275
224
  ## 相关链接
276
225
 
@@ -278,6 +227,10 @@ pnpm preview
278
227
  - [Vite 官方文档](https://vite.dev/guide/)
279
228
  - [BaoStock 官方文档](http://baostock.com/)
280
229
  - [AKTools 官方文档](https://github.com/akfamily/aktools)
281
- - [AKShare 官方文档](https://akshare.akfamily.xyz/)
282
230
  - [Canvas API MDN 文档](https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API)
283
- - [Vitest 官方文档](https://vitest.dev/)
231
+ - [Vitest 官方文档](https://vitest.dev/)
232
+ - [语义化配置文档](./docs/semantic-config.md) - Agent JSON 配置说明
233
+
234
+ ## 许可证
235
+
236
+ 本项目采用 MIT 许可证,详情请见 [LICENSE](./LICENSE) 文件。
@@ -0,0 +1,28 @@
1
+ export interface ParamConfig {
2
+ key: string;
3
+ label: string;
4
+ type: 'number';
5
+ min?: number;
6
+ max?: number;
7
+ step?: number;
8
+ default?: number;
9
+ /** 参数描述 */
10
+ description?: string;
11
+ }
12
+ type __VLS_Props = {
13
+ visible: boolean;
14
+ indicatorId: string;
15
+ indicatorName: string;
16
+ /** 指标描述 */
17
+ indicatorDescription?: string;
18
+ params: ParamConfig[];
19
+ values: Record<string, number>;
20
+ };
21
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
22
+ close: () => any;
23
+ confirm: (values: Record<string, number>) => any;
24
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
25
+ onClose?: (() => any) | undefined;
26
+ onConfirm?: ((values: Record<string, number>) => any) | undefined;
27
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
28
+ export default _default;
@@ -1,17 +1,27 @@
1
+ import { ParamConfig } from './IndicatorParams.vue';
1
2
  export interface Indicator {
2
3
  id: string;
3
4
  label: string;
4
5
  name: string;
6
+ pane: 'main' | 'sub';
7
+ /** 指标描述 */
8
+ description?: string;
9
+ params?: ParamConfig[];
5
10
  }
6
11
  type __VLS_Props = {
7
12
  /** 当前选中的指标列表 */
8
13
  activeIndicators?: string[];
14
+ /** 指标参数配置 */
15
+ indicatorParams?: Record<string, Record<string, number>>;
9
16
  };
10
17
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
18
  toggle: (indicatorId: string, active: boolean) => any;
19
+ updateParams: (indicatorId: string, params: Record<string, number>) => any;
12
20
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
13
21
  onToggle?: ((indicatorId: string, active: boolean) => any) | undefined;
22
+ onUpdateParams?: ((indicatorId: string, params: Record<string, number>) => any) | undefined;
14
23
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
15
24
  scrollContainerRef: HTMLDivElement;
25
+ itemRefs: HTMLDivElement[];
16
26
  }, HTMLDivElement>;
17
27
  export default _default;
@@ -1,18 +1,11 @@
1
- import { KLineData } from '../types/price';
2
- type MAFlags = {
3
- ma5?: boolean;
4
- ma10?: boolean;
5
- ma20?: boolean;
6
- ma30?: boolean;
7
- ma60?: boolean;
8
- };
1
+ import { SemanticChartConfig } from '../semantic';
2
+ import { SubIndicatorType } from '../core/renderers/Indicator';
9
3
  type __VLS_Props = {
10
- data: KLineData[];
4
+ /** 语义化配置(必需,唯一控制源) */
5
+ semanticConfig: SemanticChartConfig;
11
6
  kWidth?: number;
12
7
  kGap?: number;
13
8
  yPaddingPx?: number;
14
- showMA?: MAFlags;
15
- autoScrollToRight?: boolean;
16
9
  minKWidth?: number;
17
10
  maxKWidth?: number;
18
11
  /** 右侧价格轴宽度 */
@@ -21,26 +14,30 @@ type __VLS_Props = {
21
14
  bottomAxisHeight?: number;
22
15
  /** 价格标签额外宽度(用于显示涨跌幅,默认 60px) */
23
16
  priceLabelWidth?: number;
24
- /** Pane 高度比例(主/副),默认 [0.85, 0.15] */
25
- paneRatios?: [number, number];
26
17
  };
27
18
  declare function scheduleRender(): void;
19
+ declare function addSubPane(indicatorId?: SubIndicatorType, params?: Record<string, number>): boolean;
20
+ declare function removeSubPane(paneId: string): void;
21
+ declare function clearAllSubPanes(): void;
22
+ declare function switchSubIndicator(paneId: string, newIndicatorId: SubIndicatorType): void;
28
23
  declare function scrollToRight(): void;
29
24
  declare const _default: import('vue').DefineComponent<__VLS_Props, {
30
25
  scheduleRender: typeof scheduleRender;
31
26
  scrollToRight: typeof scrollToRight;
27
+ addSubPane: typeof addSubPane;
28
+ removeSubPane: typeof removeSubPane;
29
+ switchSubIndicator: typeof switchSubIndicator;
30
+ clearAllSubPanes: typeof clearAllSubPanes;
31
+ plugin: import('..').PluginHostImpl | undefined;
32
32
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
33
- yPaddingPx: number;
34
33
  kWidth: number;
35
34
  kGap: number;
36
- showMA: MAFlags;
35
+ yPaddingPx: number;
37
36
  rightAxisWidth: number;
38
37
  bottomAxisHeight: number;
39
38
  minKWidth: number;
40
39
  maxKWidth: number;
41
40
  priceLabelWidth: number;
42
- autoScrollToRight: boolean;
43
- paneRatios: [number, number];
44
41
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
45
42
  containerRef: HTMLDivElement;
46
43
  canvasLayerRef: HTMLDivElement;
@@ -0,0 +1,10 @@
1
+ import { MarkerEntity, CustomMarkerEntity } from '../core/marker/registry';
2
+ type __VLS_Props = {
3
+ marker: MarkerEntity | CustomMarkerEntity | null;
4
+ pos: {
5
+ x: number;
6
+ y: number;
7
+ };
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ export default _default;