@363045841yyt/klinechart 0.7.1 → 0.7.3-alpha.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 (236) hide show
  1. package/README.md +10 -6
  2. package/dist/components/DrawingStyleToolbar.vue.d.ts +28 -0
  3. package/dist/components/DrawingStyleToolbar.vue.d.ts.map +1 -0
  4. package/dist/{src/components → components}/IndicatorParams.vue.d.ts +3 -3
  5. package/dist/components/IndicatorParams.vue.d.ts.map +1 -0
  6. package/dist/{src/components → components}/IndicatorSelector.vue.d.ts +4 -4
  7. package/dist/components/IndicatorSelector.vue.d.ts.map +1 -0
  8. package/dist/components/KLineChart.vue.d.ts +63 -0
  9. package/dist/components/KLineChart.vue.d.ts.map +1 -0
  10. package/dist/components/KLineTooltip.vue.d.ts +30 -0
  11. package/dist/components/KLineTooltip.vue.d.ts.map +1 -0
  12. package/dist/{src/components → components}/LeftToolbar.vue.d.ts +3 -2
  13. package/dist/components/LeftToolbar.vue.d.ts.map +1 -0
  14. package/dist/components/MarkerTooltip.vue.d.ts +26 -0
  15. package/dist/components/MarkerTooltip.vue.d.ts.map +1 -0
  16. package/dist/components/index.d.ts +8 -0
  17. package/dist/components/index.d.ts.map +1 -0
  18. package/dist/{src/composables → composables}/useFullscreenTeleportTarget.d.ts +1 -0
  19. package/dist/composables/useFullscreenTeleportTarget.d.ts.map +1 -0
  20. package/dist/{src/debug → debug}/canvasProfiler.d.ts +1 -0
  21. package/dist/debug/canvasProfiler.d.ts.map +1 -0
  22. package/dist/index.cjs +2 -49
  23. package/dist/index.d.cts +124 -0
  24. package/dist/index.d.ts +124 -2
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +1390 -23809
  27. package/dist/klinechart.css +1 -1
  28. package/dist/version.d.ts +3 -0
  29. package/dist/version.d.ts.map +1 -0
  30. package/package.json +75 -112
  31. package/src/__tests__/_mockController.ts +192 -0
  32. package/src/__tests__/contract.test.ts +132 -0
  33. package/src/components/DrawingStyleToolbar.vue +199 -0
  34. package/src/components/IndicatorParams.vue +570 -0
  35. package/src/components/IndicatorSelector.vue +1042 -0
  36. package/src/components/KLineChart.vue +1570 -0
  37. package/src/components/KLineTooltip.vue +200 -0
  38. package/src/components/LeftToolbar.vue +844 -0
  39. package/src/components/MarkerTooltip.vue +155 -0
  40. package/src/components/index.ts +7 -0
  41. package/src/composables/useFullscreenTeleportTarget.ts +18 -0
  42. package/src/debug/canvasProfiler.ts +296 -0
  43. package/src/index.ts +402 -0
  44. package/src/version.ts +3 -0
  45. package/LICENSE +0 -21
  46. package/dist/favicon.ico +0 -0
  47. package/dist/mock-stock-data.json +0 -1
  48. package/dist/schema-CzmPW09E.cjs +0 -1
  49. package/dist/schema-DBMGp6Af.js +0 -437
  50. package/dist/src/App.vue.d.ts +0 -4
  51. package/dist/src/api/data/baostock.d.ts +0 -90
  52. package/dist/src/api/data/baostock.integration.test.d.ts +0 -1
  53. package/dist/src/api/data/index.d.ts +0 -26
  54. package/dist/src/api/data/kLine.d.ts +0 -11
  55. package/dist/src/api/data/types.d.ts +0 -33
  56. package/dist/src/api/data/unified.d.ts +0 -37
  57. package/dist/src/components/DrawingStyleToolbar.vue.d.ts +0 -12
  58. package/dist/src/components/KLineChart.vue.d.ts +0 -100
  59. package/dist/src/components/KLineTooltip.vue.d.ts +0 -17
  60. package/dist/src/components/MarkerTooltip.vue.d.ts +0 -13
  61. package/dist/src/components/index.d.ts +0 -2
  62. package/dist/src/config/chartSettings.d.ts +0 -69
  63. package/dist/src/core/chart-store.d.ts +0 -74
  64. package/dist/src/core/chart.d.ts +0 -617
  65. package/dist/src/core/controller/interaction.d.ts +0 -167
  66. package/dist/src/core/controller/markerInteraction.d.ts +0 -28
  67. package/dist/src/core/controller/pinchTracker.d.ts +0 -18
  68. package/dist/src/core/controller/tooltipPosition.d.ts +0 -21
  69. package/dist/src/core/draw/pixelAlign.d.ts +0 -114
  70. package/dist/src/core/drawing/index.d.ts +0 -47
  71. package/dist/src/core/drawing/interaction.d.ts +0 -75
  72. package/dist/src/core/drawing/plugin.d.ts +0 -27
  73. package/dist/src/core/indicators/atrState.d.ts +0 -16
  74. package/dist/src/core/indicators/bollState.d.ts +0 -34
  75. package/dist/src/core/indicators/calculators.d.ts +0 -465
  76. package/dist/src/core/indicators/cciState.d.ts +0 -15
  77. package/dist/src/core/indicators/chaikinVolState.d.ts +0 -18
  78. package/dist/src/core/indicators/cmfState.d.ts +0 -16
  79. package/dist/src/core/indicators/demaState.d.ts +0 -16
  80. package/dist/src/core/indicators/donchianState.d.ts +0 -23
  81. package/dist/src/core/indicators/eneState.d.ts +0 -30
  82. package/dist/src/core/indicators/expmaState.d.ts +0 -30
  83. package/dist/src/core/indicators/fastkState.d.ts +0 -15
  84. package/dist/src/core/indicators/fibState.d.ts +0 -26
  85. package/dist/src/core/indicators/hmaState.d.ts +0 -16
  86. package/dist/src/core/indicators/hvState.d.ts +0 -18
  87. package/dist/src/core/indicators/ichimokuState.d.ts +0 -44
  88. package/dist/src/core/indicators/indicator.worker.d.ts +0 -5
  89. package/dist/src/core/indicators/indicatorDefinitionRegistry.d.ts +0 -30
  90. package/dist/src/core/indicators/indicatorMetadata.d.ts +0 -81
  91. package/dist/src/core/indicators/indicatorRegistry.d.ts +0 -57
  92. package/dist/src/core/indicators/indicatorRuntime.d.ts +0 -126
  93. package/dist/src/core/indicators/kamaState.d.ts +0 -20
  94. package/dist/src/core/indicators/keltnerState.d.ts +0 -27
  95. package/dist/src/core/indicators/kstState.d.ts +0 -21
  96. package/dist/src/core/indicators/maState.d.ts +0 -26
  97. package/dist/src/core/indicators/macdState.d.ts +0 -58
  98. package/dist/src/core/indicators/mfiState.d.ts +0 -16
  99. package/dist/src/core/indicators/momState.d.ts +0 -15
  100. package/dist/src/core/indicators/obvState.d.ts +0 -14
  101. package/dist/src/core/indicators/parkinsonState.d.ts +0 -18
  102. package/dist/src/core/indicators/pivotState.d.ts +0 -29
  103. package/dist/src/core/indicators/pvtState.d.ts +0 -14
  104. package/dist/src/core/indicators/rocState.d.ts +0 -16
  105. package/dist/src/core/indicators/rsiState.d.ts +0 -43
  106. package/dist/src/core/indicators/sarState.d.ts +0 -26
  107. package/dist/src/core/indicators/scheduler.d.ts +0 -262
  108. package/dist/src/core/indicators/soa.d.ts +0 -115
  109. package/dist/src/core/indicators/stateComposer.d.ts +0 -146
  110. package/dist/src/core/indicators/stochState.d.ts +0 -18
  111. package/dist/src/core/indicators/structureState.d.ts +0 -43
  112. package/dist/src/core/indicators/supertrendState.d.ts +0 -22
  113. package/dist/src/core/indicators/temaState.d.ts +0 -16
  114. package/dist/src/core/indicators/trixState.d.ts +0 -20
  115. package/dist/src/core/indicators/vmaState.d.ts +0 -16
  116. package/dist/src/core/indicators/volumeProfileState.d.ts +0 -34
  117. package/dist/src/core/indicators/vwapState.d.ts +0 -16
  118. package/dist/src/core/indicators/wmaState.d.ts +0 -16
  119. package/dist/src/core/indicators/wmsrState.d.ts +0 -15
  120. package/dist/src/core/indicators/workerProtocol.d.ts +0 -496
  121. package/dist/src/core/indicators/zonesState.d.ts +0 -26
  122. package/dist/src/core/layout/pane.d.ts +0 -103
  123. package/dist/src/core/marker/registry.d.ts +0 -174
  124. package/dist/src/core/paneRenderer.d.ts +0 -45
  125. package/dist/src/core/renderers/Indicator/atr.d.ts +0 -17
  126. package/dist/src/core/renderers/Indicator/boll.d.ts +0 -2
  127. package/dist/src/core/renderers/Indicator/cci.d.ts +0 -22
  128. package/dist/src/core/renderers/Indicator/chaikinVol.d.ts +0 -4
  129. package/dist/src/core/renderers/Indicator/cmf.d.ts +0 -4
  130. package/dist/src/core/renderers/Indicator/dema.d.ts +0 -5
  131. package/dist/src/core/renderers/Indicator/donchian.d.ts +0 -5
  132. package/dist/src/core/renderers/Indicator/ene.d.ts +0 -2
  133. package/dist/src/core/renderers/Indicator/expma.d.ts +0 -2
  134. package/dist/src/core/renderers/Indicator/fastk.d.ts +0 -22
  135. package/dist/src/core/renderers/Indicator/fib.d.ts +0 -4
  136. package/dist/src/core/renderers/Indicator/hma.d.ts +0 -5
  137. package/dist/src/core/renderers/Indicator/hv.d.ts +0 -4
  138. package/dist/src/core/renderers/Indicator/ichimoku.d.ts +0 -5
  139. package/dist/src/core/renderers/Indicator/index.d.ts +0 -59
  140. package/dist/src/core/renderers/Indicator/indicatorData.d.ts +0 -13
  141. package/dist/src/core/renderers/Indicator/kama.d.ts +0 -5
  142. package/dist/src/core/renderers/Indicator/keltner.d.ts +0 -5
  143. package/dist/src/core/renderers/Indicator/kst.d.ts +0 -22
  144. package/dist/src/core/renderers/Indicator/ma.d.ts +0 -3
  145. package/dist/src/core/renderers/Indicator/macd.d.ts +0 -50
  146. package/dist/src/core/renderers/Indicator/macdLegend.d.ts +0 -12
  147. package/dist/src/core/renderers/Indicator/mainIndicatorLegend.d.ts +0 -10
  148. package/dist/src/core/renderers/Indicator/mfi.d.ts +0 -4
  149. package/dist/src/core/renderers/Indicator/mom.d.ts +0 -22
  150. package/dist/src/core/renderers/Indicator/obv.d.ts +0 -4
  151. package/dist/src/core/renderers/Indicator/parkinson.d.ts +0 -4
  152. package/dist/src/core/renderers/Indicator/pivot.d.ts +0 -4
  153. package/dist/src/core/renderers/Indicator/pvt.d.ts +0 -4
  154. package/dist/src/core/renderers/Indicator/roc.d.ts +0 -5
  155. package/dist/src/core/renderers/Indicator/rsi.d.ts +0 -33
  156. package/dist/src/core/renderers/Indicator/sar.d.ts +0 -5
  157. package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +0 -11
  158. package/dist/src/core/renderers/Indicator/scale/cci_scale.d.ts +0 -11
  159. package/dist/src/core/renderers/Indicator/scale/fastk_scale.d.ts +0 -11
  160. package/dist/src/core/renderers/Indicator/scale/indicator_scale.d.ts +0 -38
  161. package/dist/src/core/renderers/Indicator/scale/kst_scale.d.ts +0 -11
  162. package/dist/src/core/renderers/Indicator/scale/macd_scale.d.ts +0 -14
  163. package/dist/src/core/renderers/Indicator/scale/mom_scale.d.ts +0 -11
  164. package/dist/src/core/renderers/Indicator/scale/rsi_scale.d.ts +0 -11
  165. package/dist/src/core/renderers/Indicator/scale/stoch_scale.d.ts +0 -11
  166. package/dist/src/core/renderers/Indicator/scale/volume_scale.d.ts +0 -14
  167. package/dist/src/core/renderers/Indicator/scale/wmsr_scale.d.ts +0 -11
  168. package/dist/src/core/renderers/Indicator/stoch.d.ts +0 -22
  169. package/dist/src/core/renderers/Indicator/structure.d.ts +0 -4
  170. package/dist/src/core/renderers/Indicator/subPaneConfig.d.ts +0 -9
  171. package/dist/src/core/renderers/Indicator/supertrend.d.ts +0 -5
  172. package/dist/src/core/renderers/Indicator/tema.d.ts +0 -5
  173. package/dist/src/core/renderers/Indicator/trix.d.ts +0 -5
  174. package/dist/src/core/renderers/Indicator/vma.d.ts +0 -4
  175. package/dist/src/core/renderers/Indicator/volumeProfile.d.ts +0 -4
  176. package/dist/src/core/renderers/Indicator/vwap.d.ts +0 -4
  177. package/dist/src/core/renderers/Indicator/wma.d.ts +0 -5
  178. package/dist/src/core/renderers/Indicator/wmsr.d.ts +0 -22
  179. package/dist/src/core/renderers/Indicator/zones.d.ts +0 -4
  180. package/dist/src/core/renderers/candle.d.ts +0 -21
  181. package/dist/src/core/renderers/crosshair.d.ts +0 -17
  182. package/dist/src/core/renderers/customMarkers.d.ts +0 -6
  183. package/dist/src/core/renderers/extremaMarkers.d.ts +0 -5
  184. package/dist/src/core/renderers/gridLines.d.ts +0 -7
  185. package/dist/src/core/renderers/lastPrice.d.ts +0 -9
  186. package/dist/src/core/renderers/paneTitle.d.ts +0 -40
  187. package/dist/src/core/renderers/subVolume.d.ts +0 -13
  188. package/dist/src/core/renderers/timeAxis.d.ts +0 -14
  189. package/dist/src/core/renderers/webgl/candleSurface.d.ts +0 -80
  190. package/dist/src/core/renderers/webgl/sharedWebGLSurface.d.ts +0 -33
  191. package/dist/src/core/renderers/yAxis.d.ts +0 -14
  192. package/dist/src/core/scale/logFormula.d.ts +0 -66
  193. package/dist/src/core/scale/price.d.ts +0 -11
  194. package/dist/src/core/scale/priceScale.d.ts +0 -87
  195. package/dist/src/core/subPaneManager.d.ts +0 -22
  196. package/dist/src/core/theme/colors.d.ts +0 -222
  197. package/dist/src/core/theme/fonts.d.ts +0 -12
  198. package/dist/src/core/utils/klineConfig.d.ts +0 -28
  199. package/dist/src/core/utils/tickCount.d.ts +0 -8
  200. package/dist/src/core/utils/tickPosition.d.ts +0 -24
  201. package/dist/src/core/utils/zoom.d.ts +0 -30
  202. package/dist/src/core/viewport/viewport.d.ts +0 -31
  203. package/dist/src/index.d.ts +0 -8
  204. package/dist/src/main.d.ts +0 -0
  205. package/dist/src/plugin/ConfigManager.d.ts +0 -31
  206. package/dist/src/plugin/EventBus.d.ts +0 -34
  207. package/dist/src/plugin/HookSystem.d.ts +0 -28
  208. package/dist/src/plugin/PluginHost.d.ts +0 -57
  209. package/dist/src/plugin/PluginRegistry.d.ts +0 -40
  210. package/dist/src/plugin/StateStore.d.ts +0 -37
  211. package/dist/src/plugin/index.d.ts +0 -11
  212. package/dist/src/plugin/rendererPluginManager.d.ts +0 -77
  213. package/dist/src/plugin/stateKeys.d.ts +0 -6
  214. package/dist/src/plugin/types.d.ts +0 -445
  215. package/dist/src/semantic/controller.d.ts +0 -35
  216. package/dist/src/semantic/drawShape.d.ts +0 -14
  217. package/dist/src/semantic/index.d.ts +0 -8
  218. package/dist/src/semantic/types.d.ts +0 -298
  219. package/dist/src/semantic/validator.d.ts +0 -43
  220. package/dist/src/test-setup.d.ts +0 -6
  221. package/dist/src/types/kLine.d.ts +0 -3
  222. package/dist/src/types/price.d.ts +0 -31
  223. package/dist/src/types/volumePrice.d.ts +0 -26
  224. package/dist/src/utils/cache.d.ts +0 -33
  225. package/dist/src/utils/dateFormat.d.ts +0 -83
  226. package/dist/src/utils/http.d.ts +0 -14
  227. package/dist/src/utils/kLineDraw/MA.d.ts +0 -7
  228. package/dist/src/utils/kLineDraw/axis.d.ts +0 -150
  229. package/dist/src/utils/kLineDraw/grid.d.ts +0 -30
  230. package/dist/src/utils/kLineDraw/kLine.d.ts +0 -15
  231. package/dist/src/utils/kline/format.d.ts +0 -11
  232. package/dist/src/utils/kline/viewport.d.ts +0 -10
  233. package/dist/src/utils/logger.d.ts +0 -5
  234. package/dist/src/utils/mock/genRandomPriceData.d.ts +0 -3
  235. package/dist/src/utils/priceToY.d.ts +0 -7
  236. package/dist/src/utils/volumePrice.d.ts +0 -54
@@ -1,35 +0,0 @@
1
- import { Chart } from '../core/chart';
2
- import { SemanticChartConfig, ApplyResult } from './types';
3
- /** 状态事件类型 */
4
- export type SemanticEventType = 'config:loading' | 'config:ready' | 'config:error';
5
- export declare class SemanticChartController {
6
- private chart;
7
- private validator;
8
- private events;
9
- constructor(chart: Chart);
10
- /**
11
- * 应用语义化配置
12
- */
13
- applyConfig(config: SemanticChartConfig): Promise<ApplyResult>;
14
- /**
15
- * 订阅状态事件
16
- */
17
- on(event: SemanticEventType, handler: (data?: unknown) => void): void;
18
- /**
19
- * 取消订阅
20
- */
21
- off(event: SemanticEventType, handler: (data?: unknown) => void): void;
22
- /**
23
- * 应用语义化 UI 配置
24
- * @param config 语义化配置
25
- */
26
- private doApplyConfig;
27
- private applyIndicators;
28
- private applyMAIndicator;
29
- private applyBOLLIndicator;
30
- private applyEXPMAIndicator;
31
- private applyENEIndicator;
32
- private applySubIndicator;
33
- private applyMarkers;
34
- private applyChartOptions;
35
- }
@@ -1,14 +0,0 @@
1
- import { MarkerShapeType, MarkerStyle, MarkerLabel } from './types';
2
- /**
3
- * 绘制标记形状
4
- */
5
- export declare function drawShape(ctx: CanvasRenderingContext2D, shape: MarkerShapeType, x: number, y: number, size: number, style: MarkerStyle): void;
6
- /**
7
- * 绘制文本标注
8
- * @param isAboveMarker 标记是否在K线上方(true → 文字在标记上方,false → 文字在标记下方)
9
- */
10
- export declare function drawLabel(ctx: CanvasRenderingContext2D, label: MarkerLabel, x: number, y: number, markerSize: number, style: MarkerStyle, isAboveMarker?: boolean): void;
11
- /**
12
- * 点击测试(判断点是否在形状内)
13
- */
14
- export declare function hitTestShape(mx: number, my: number, shape: MarkerShapeType, x: number, y: number, size: number): boolean;
@@ -1,8 +0,0 @@
1
- /**
2
- * 语义化图表配置模块
3
- * 用于 Agent 通过 JSON 控制图表渲染
4
- */
5
- export type { SemanticChartConfig, DataConfig, IndicatorsConfig, MainIndicatorConfig, SubIndicatorConfig, SubIndicatorType, MAParams, BOLLParams, MarkersConfig, CustomMarker, MarkerShapeType, MarkerStyle, MarkerLabel, LegendConfig, ChartOptions, ThemeConfig, ApplyResult, ValidationResult, SecurityResult, } from './types';
6
- export { SemanticChartController, type SemanticEventType } from './controller';
7
- export { SemanticConfigValidator, sanitizeParams, sanitizeColor, validateColor, validateSymbol, } from './validator';
8
- export { drawShape, drawLabel, hitTestShape } from './drawShape';
@@ -1,298 +0,0 @@
1
- /**
2
- * 语义化图表配置类型定义
3
- * 用于 Agent JSON 控制图表渲染
4
- */
5
- /** 语义化图表配置 */
6
- export interface SemanticChartConfig {
7
- /** 版本号,使用 semver 格式 */
8
- version: `${number}.${number}.${number}`;
9
- data: DataConfig;
10
- indicators?: IndicatorsConfig;
11
- markers?: MarkersConfig;
12
- chart?: ChartOptions;
13
- theme?: ThemeConfig;
14
- }
15
- /** 数据配置 */
16
- export interface DataConfig {
17
- source: 'baostock' | 'dongcai';
18
- /** 股票代码(6位数字,不含前缀) */
19
- symbol: string;
20
- /** 交易所(可选,默认根据代码自动识别) */
21
- exchange?: 'SH' | 'SZ' | 'BJ';
22
- /** 开始日期 YYYY-MM-DD */
23
- startDate: string;
24
- /** 结束日期 YYYY-MM-DD */
25
- endDate: string;
26
- period: 'daily' | 'weekly' | 'monthly' | '5min' | '15min' | '30min' | '60min';
27
- adjust: 'qfq' | 'hfq' | 'none';
28
- }
29
- /** 指标配置 */
30
- export interface IndicatorsConfig {
31
- main?: MainIndicatorConfig[];
32
- sub?: SubIndicatorConfig[];
33
- }
34
- /** MA 均线参数 */
35
- export interface MAParams {
36
- periods: number[];
37
- }
38
- /** BOLL 布林带参数 */
39
- export interface BOLLParams {
40
- period?: number;
41
- multiplier?: number;
42
- }
43
- /** EXPMA 指数平滑移动平均线参数 */
44
- export interface EXPMAParams {
45
- fastPeriod?: number;
46
- slowPeriod?: number;
47
- }
48
- /** ENE 轨道线参数 */
49
- export interface ENEParams {
50
- period?: number;
51
- deviation?: number;
52
- }
53
- /** 主图指标配置(判别联合) */
54
- export type MainIndicatorConfig = {
55
- type: 'MA';
56
- enabled: boolean;
57
- params?: MAParams;
58
- } | {
59
- type: 'BOLL';
60
- enabled: boolean;
61
- params?: BOLLParams;
62
- } | {
63
- type: 'EXPMA';
64
- enabled: boolean;
65
- params?: EXPMAParams;
66
- } | {
67
- type: 'ENE';
68
- enabled: boolean;
69
- params?: ENEParams;
70
- };
71
- /** 副图指标参数映射 */
72
- export interface SubIndicatorParams {
73
- VOLUME?: never;
74
- MACD?: {
75
- fast?: number;
76
- slow?: number;
77
- signal?: number;
78
- };
79
- RSI?: {
80
- period1?: number;
81
- period2?: number;
82
- period3?: number;
83
- };
84
- CCI?: {
85
- period?: number;
86
- };
87
- STOCH?: {
88
- n?: number;
89
- m?: number;
90
- };
91
- MOM?: {
92
- period?: number;
93
- };
94
- WMSR?: {
95
- period?: number;
96
- };
97
- KST?: {
98
- roc1?: number;
99
- roc2?: number;
100
- roc3?: number;
101
- roc4?: number;
102
- signal?: number;
103
- };
104
- FASTK?: {
105
- period?: number;
106
- };
107
- ATR?: {
108
- period?: number;
109
- };
110
- WMA?: {
111
- period?: number;
112
- };
113
- DEMA?: {
114
- period?: number;
115
- };
116
- TEMA?: {
117
- period?: number;
118
- };
119
- HMA?: {
120
- period?: number;
121
- };
122
- KAMA?: {
123
- period?: number;
124
- fastPeriod?: number;
125
- slowPeriod?: number;
126
- };
127
- SAR?: {
128
- step?: number;
129
- maxStep?: number;
130
- };
131
- SUPERTREND?: {
132
- atrPeriod?: number;
133
- multiplier?: number;
134
- };
135
- KELTNER?: {
136
- emaPeriod?: number;
137
- atrPeriod?: number;
138
- multiplier?: number;
139
- };
140
- DONCHIAN?: {
141
- period?: number;
142
- };
143
- ICHIMOKU?: {
144
- tenkanPeriod?: number;
145
- kijunPeriod?: number;
146
- spanBPeriod?: number;
147
- displacement?: number;
148
- };
149
- ROC?: {
150
- period?: number;
151
- };
152
- TRIX?: {
153
- period?: number;
154
- signalPeriod?: number;
155
- };
156
- HV?: {
157
- period?: number;
158
- annualizationFactor?: number;
159
- };
160
- PARKINSON?: {
161
- period?: number;
162
- annualizationFactor?: number;
163
- };
164
- CHAIKIN_VOL?: {
165
- emaPeriod?: number;
166
- rocPeriod?: number;
167
- };
168
- VMA?: {
169
- period?: number;
170
- };
171
- OBV?: Record<string, never>;
172
- PVT?: Record<string, never>;
173
- VWAP?: {
174
- sessionResetGapMs?: number;
175
- };
176
- CMF?: {
177
- period?: number;
178
- };
179
- MFI?: {
180
- period?: number;
181
- };
182
- PIVOT?: Record<string, never>;
183
- FIB?: {
184
- period?: number;
185
- };
186
- STRUCTURE?: {
187
- leftWindow?: number;
188
- rightWindow?: number;
189
- breakoutSource?: 'close' | 'wick';
190
- };
191
- ZONES?: {
192
- showFVG?: boolean;
193
- showOB?: boolean;
194
- showFilledZones?: boolean;
195
- obLookback?: number;
196
- };
197
- VOLUME_PROFILE?: {
198
- bins?: number;
199
- lookback?: number;
200
- valueAreaPercent?: number;
201
- };
202
- }
203
- /** 副图指标类型 */
204
- export type SubIndicatorType = keyof SubIndicatorParams;
205
- /** 副图指标配置 */
206
- export type SubIndicatorConfig = {
207
- [K in SubIndicatorType]: {
208
- type: K;
209
- enabled: boolean;
210
- params?: SubIndicatorParams[K];
211
- };
212
- }[SubIndicatorType];
213
- /** 标记配置 */
214
- export interface MarkersConfig {
215
- showVolumePriceMarkers?: boolean;
216
- showExtremaMarkers?: boolean;
217
- customMarkers?: CustomMarker[];
218
- legend?: LegendConfig;
219
- }
220
- /** 预设图形形状 */
221
- export type MarkerShapeType = 'arrow_up' | 'arrow_down' | 'flag' | 'circle' | 'rectangle' | 'diamond';
222
- /** 自定义标记 */
223
- export interface CustomMarker {
224
- id: string;
225
- /**
226
- * 日期时间字符串
227
- * - 日K/周K/月K: "YYYY-MM-DD" (如 "2025-01-15")
228
- * - 分钟K: "YYYY-MM-DD HH:mm" (如 "2025-01-15 09:30")
229
- */
230
- date: string;
231
- shape: MarkerShapeType;
232
- /** 图例分组键(可选,用于区分同形状不同含义的标记) */
233
- groupKey?: string;
234
- /** 标记位置偏移(相对K线中心) */
235
- offset?: {
236
- x?: number;
237
- y?: number;
238
- };
239
- /** 样式配置 */
240
- style?: MarkerStyle;
241
- /** 文本标注 */
242
- label?: MarkerLabel;
243
- /** 元数据(点击弹窗展示,渲染时必须转义防XSS) */
244
- metadata?: Record<string, unknown>;
245
- }
246
- /** 标记样式 */
247
- export interface MarkerStyle {
248
- fillColor?: string;
249
- strokeColor?: string;
250
- textColor?: string;
251
- size?: number;
252
- lineWidth?: number;
253
- opacity?: number;
254
- }
255
- /** 文本标注 */
256
- export interface MarkerLabel {
257
- text: string;
258
- position?: 'left' | 'right' | 'top' | 'bottom' | 'inside';
259
- align?: 'start' | 'center' | 'end';
260
- fontSize?: number;
261
- offset?: {
262
- x?: number;
263
- y?: number;
264
- };
265
- }
266
- /** 图例配置 */
267
- export interface LegendConfig {
268
- enabled?: boolean;
269
- position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
270
- /** 点击图例项的行为 */
271
- onClick?: 'highlight' | 'toggle' | 'none';
272
- }
273
- /** 图表选项 */
274
- export interface ChartOptions {
275
- kWidth?: number;
276
- kGap?: number;
277
- autoScrollToRight?: boolean;
278
- }
279
- /** 主题配置 */
280
- export interface ThemeConfig {
281
- priceUpColor?: string;
282
- priceDownColor?: string;
283
- }
284
- /** 应用结果 */
285
- export interface ApplyResult {
286
- success: boolean;
287
- errors?: string[];
288
- }
289
- /** 校验结果 */
290
- export interface ValidationResult {
291
- valid: boolean;
292
- errors?: string[];
293
- }
294
- /** 安全校验结果 */
295
- export interface SecurityResult {
296
- passed: boolean;
297
- violations?: string[];
298
- }
@@ -1,43 +0,0 @@
1
- import { SemanticChartConfig, ValidationResult, SecurityResult } from './types';
2
- export declare class SemanticConfigValidator {
3
- private limits;
4
- private _ajv;
5
- constructor();
6
- private getAjv;
7
- /**
8
- * 入口校验(在 JSON.parse 之前调用)
9
- * 检查原始字符串大小
10
- */
11
- validateRawInput(raw: string): ValidationResult;
12
- /**
13
- * JSON Schema 校验
14
- */
15
- validate(config: unknown): Promise<ValidationResult>;
16
- /**
17
- * 安全校验(纯同步)
18
- */
19
- securityCheck(config: SemanticChartConfig): SecurityResult;
20
- private checkPrototypePollution;
21
- private checkDateRange;
22
- private checkSymbol;
23
- private checkMarkerStyle;
24
- /** 日期格式正则:YYYY-MM-DD 或 YYYY-MM-DD HH:mm */
25
- private static readonly DATE_PATTERN;
26
- private checkMarkerDate;
27
- }
28
- /**
29
- * 净化参数对象(防止原型污染)
30
- */
31
- export declare function sanitizeParams(params: Record<string, unknown>): Record<string, unknown>;
32
- /**
33
- * 净化颜色值(浏览器环境)
34
- */
35
- export declare function sanitizeColor(input: string): string | null;
36
- /**
37
- * 校验颜色值格式
38
- */
39
- export declare function validateColor(color: string): boolean;
40
- /**
41
- * 校验股票代码
42
- */
43
- export declare function validateSymbol(symbol: string, exchange?: 'SH' | 'SZ' | 'BJ'): boolean;
@@ -1,6 +0,0 @@
1
- /**
2
- * Vitest 测试环境 polyfill
3
- * - jsdom 不实现 Path2D
4
- * - jsdom 不实现 WebGL —— 给 getContext('webgl'/'webgl2') 一个最小桩,让 Chart 构造不会崩
5
- */
6
- export {};
@@ -1,3 +0,0 @@
1
- import { KLineData } from './price';
2
- export type kLineTrend = 'up' | 'down' | 'flat';
3
- export declare function getKLineTrend(KLineData: KLineData): kLineTrend;
@@ -1,31 +0,0 @@
1
- export interface KLineData {
2
- timestamp: number;
3
- open: number;
4
- high: number;
5
- low: number;
6
- close: number;
7
- /** 股票代码(东财等数据源会提供) */
8
- stockCode?: string;
9
- /** 成交量 */
10
- volume?: number;
11
- /** 成交额 */
12
- turnover?: number;
13
- /** 振幅 */
14
- amplitude?: number;
15
- /** 涨跌幅 */
16
- changePercent?: number;
17
- /** 涨跌额 */
18
- changeAmount?: number;
19
- /** 换手率 */
20
- turnoverRate?: number;
21
- }
22
- export interface KLineDailyDongCaiResponse extends KLineData {
23
- stockCode: string;
24
- volume: number;
25
- turnover: number;
26
- amplitude: number;
27
- changePercent: number;
28
- changeAmount: number;
29
- turnoverRate: number;
30
- }
31
- export declare function toKLineData(arr: KLineDailyDongCaiResponse[]): KLineData[];
@@ -1,26 +0,0 @@
1
- /**
2
- * 量价关系类型枚举
3
- */
4
- export declare enum VolumePriceRelation {
5
- /** 量价齐升(放量上涨)- 价格上涨且成交量显著放大 */
6
- RISE_WITH_VOLUME = "rise_with_volume",
7
- /** 量价背离(缩量上涨)- 价格上涨但成交量萎缩 */
8
- RISE_WITHOUT_VOLUME = "rise_without_volume",
9
- /** 量增价跌 - 价格下跌且成交量放大 */
10
- FALL_WITH_VOLUME = "fall_with_volume",
11
- /** 量缩价跌 - 价格下跌且成交量萎缩 */
12
- FALL_WITHOUT_VOLUME = "fall_without_volume",
13
- /** 中性状态 - 其他情况 */
14
- OTHERS = "others"
15
- }
16
- /** 量价关系计算配置 */
17
- export interface VolumePriceConfig {
18
- /** 成交量放大阈值(相对于均值的倍数) */
19
- volumeAmplifyThreshold: number;
20
- /** 成交量萎缩阈值(相对于均值的倍数) */
21
- volumeShrinkThreshold: number;
22
- /** 计算均值的周期 */
23
- avgPeriod: number;
24
- }
25
- /** 默认量价关系计算配置 */
26
- export declare const DEFAULT_VOLUME_PRICE_CONFIG: VolumePriceConfig;
@@ -1,33 +0,0 @@
1
- declare class LocalCache {
2
- /**
3
- * 设置缓存
4
- * @param key 缓存键
5
- * @param data 缓存数据
6
- */
7
- set<T>(key: string, data: T): void;
8
- /**
9
- * 获取缓存
10
- * @param key 缓存键
11
- * @param maxAge 最大缓存时间(毫秒),默认 1 小时
12
- * @returns 缓存数据或 null
13
- */
14
- get<T>(key: string, maxAge?: number): T | null;
15
- /**
16
- * 删除指定缓存
17
- * @param key 缓存键
18
- */
19
- remove(key: string): void;
20
- /**
21
- * 清空所有缓存
22
- */
23
- clear(): void;
24
- /**
25
- * 生成缓存键
26
- * @param prefix 前缀
27
- * @param params 参数对象
28
- * @returns 缓存键字符串
29
- */
30
- generateKey(prefix: string, params: Record<string, unknown>): string;
31
- }
32
- export declare const cache: LocalCache;
33
- export {};
@@ -1,83 +0,0 @@
1
- /**
2
- * 日期格式化工具函数集合
3
- * 统一管理项目中所有日期相关的格式化逻辑
4
- */
5
- /**
6
- * 将时间戳格式化为 YYYYMMDD 格式(纯数字,无分隔符)
7
- * @param timestamp - 时间戳(毫秒)
8
- * @returns 格式化后的日期字符串,例如 "20250114"
9
- *
10
- * @example
11
- * formatDateToYYYYMMDDNoDash(1736793600000) // "20250114"
12
- */
13
- export declare function formatDateToYYYYMMDDNoDash(timestamp: number): string;
14
- /**
15
- * 获取当前日期的 YYYYMMDD 格式(纯数字,无分隔符)
16
- * @returns 当前日期的格式化字符串,例如 "20250114"
17
- *
18
- * @example
19
- * getCurrentDateYYYYMMDD() // "20250114"(根据实际日期)
20
- */
21
- export declare function getCurrentDateYYYYMMDD(): string;
22
- /**
23
- * 将时间戳格式化为 YYYY-MM-DD 格式(上海时区)
24
- * @param timestamp - 时间戳(毫秒)
25
- * @returns 格式化后的日期字符串,例如 "2025-01-14"
26
- *
27
- * @example
28
- * formatDateToYYYYMMDD(1736793600000) // "2025-01-14"
29
- */
30
- export declare function formatDateToYYYYMMDD(timestamp: number): string;
31
- /**
32
- * 格式化月份或年份用于显示
33
- * 当年为 1 月时显示年份,其他月份显示"X月"格式
34
- * @param timestamp - 时间戳(毫秒)
35
- * @returns 包含文本和是否为年份的标志
36
- *
37
- * @example
38
- * formatMonthOrYear(1704067200000) // { text: "2024", isYear: true } (2024年1月)
39
- * formatMonthOrYear(1706745600000) // { text: "2月", isYear: false } (2024年2月)
40
- */
41
- export declare function formatMonthOrYear(timestamp: number): {
42
- text: string;
43
- isYear: boolean;
44
- };
45
- /**
46
- * 生成月份键值用于比较(YYYY-M 格式)
47
- * 注意:月份未补零,用于快速比较月份是否相同
48
- * @param timestamp - 时间戳(毫秒)
49
- * @returns 月份键值,例如 "2025-1"
50
- *
51
- * @example
52
- * monthKey(1736793600000) // "2025-1"
53
- */
54
- /**
55
- * 生成月份键值用于比较
56
- * 返回数字 year * 12 + month,比字符串比较更快且无分配
57
- * 使用 new Date 保证本地时区正确(与显示一致)
58
- *
59
- * @example
60
- * monthKey(1736793600000) // 24301 (2025*12 + 0)
61
- */
62
- export declare function monthKey(timestamp: number): number;
63
- /**
64
- * formatDateToYYYYMMDD 的别名,保持与历史代码的兼容性
65
- * timestamp 是"上海时区当天 00:00:00"映射到 UTC 的值;显示时强制按上海时区格式化
66
- * @param ts - 时间戳(毫秒)
67
- * @returns 格式化后的日期字符串,例如 "2025-01-14"
68
- */
69
- export declare const formatShanghaiDate: typeof formatDateToYYYYMMDD;
70
- /**
71
- * formatDateToYYYYMMDD 的别名,用于十字线日期标签显示
72
- * 按上海时区格式化,避免不同时区出现日期偏移
73
- * @param ts - 时间戳(毫秒)
74
- * @returns 格式化后的日期字符串,例如 "2025-01-14"
75
- */
76
- export declare const formatYMDShanghai: typeof formatDateToYYYYMMDD;
77
- /**
78
- * 查找每个月份第一个K线的索引
79
- * 结果按数据引用缓存,同一份数据多次调用直接返回缓存
80
- */
81
- export declare function findMonthBoundaries(data: Array<{
82
- timestamp: number;
83
- } | undefined>): number[];
@@ -1,14 +0,0 @@
1
- interface HttpParams {
2
- params?: Record<string, string | number | undefined>;
3
- timeout?: number;
4
- }
5
- interface HttpResponse<T> {
6
- data: T;
7
- }
8
- export declare class HttpError extends Error {
9
- constructor(message: string);
10
- static isHttpError(error: unknown): error is HttpError;
11
- }
12
- declare function get<T>(url: string, config?: HttpParams): Promise<HttpResponse<T>>;
13
- export { get };
14
- export type { HttpParams, HttpResponse };
@@ -1,7 +0,0 @@
1
- import { KLineData } from '../../types/price';
2
- import { drawOption, PriceRange } from './kLine';
3
- export declare function drawMA5Line(ctx: CanvasRenderingContext2D, data: KLineData[], option: drawOption, logicHeight: number, dpr?: number, startIndex?: number, endIndex?: number, priceRange?: PriceRange, kLinePositions?: number[], theme?: 'light' | 'dark'): void;
4
- export declare function drawMA10Line(ctx: CanvasRenderingContext2D, data: KLineData[], option: drawOption, logicHeight: number, dpr?: number, startIndex?: number, endIndex?: number, priceRange?: PriceRange, kLinePositions?: number[], theme?: 'light' | 'dark'): void;
5
- export declare function drawMA20Line(ctx: CanvasRenderingContext2D, data: KLineData[], option: drawOption, logicHeight: number, dpr?: number, startIndex?: number, endIndex?: number, priceRange?: PriceRange, kLinePositions?: number[], theme?: 'light' | 'dark'): void;
6
- export declare function drawMA30Line(ctx: CanvasRenderingContext2D, data: KLineData[], option: drawOption, logicHeight: number, dpr?: number, startIndex?: number, endIndex?: number, priceRange?: PriceRange, kLinePositions?: number[], theme?: 'light' | 'dark'): void;
7
- export declare function drawMA60Line(ctx: CanvasRenderingContext2D, data: KLineData[], option: drawOption, logicHeight: number, dpr?: number, startIndex?: number, endIndex?: number, priceRange?: PriceRange, kLinePositions?: number[], theme?: 'light' | 'dark'): void;