@363045841yyt/klinechart 0.7.1 → 0.7.3-alpha.1

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 (235) 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 +49 -85
  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/dist/favicon.ico +0 -0
  46. package/dist/mock-stock-data.json +0 -1
  47. package/dist/schema-CzmPW09E.cjs +0 -1
  48. package/dist/schema-DBMGp6Af.js +0 -437
  49. package/dist/src/App.vue.d.ts +0 -4
  50. package/dist/src/api/data/baostock.d.ts +0 -90
  51. package/dist/src/api/data/baostock.integration.test.d.ts +0 -1
  52. package/dist/src/api/data/index.d.ts +0 -26
  53. package/dist/src/api/data/kLine.d.ts +0 -11
  54. package/dist/src/api/data/types.d.ts +0 -33
  55. package/dist/src/api/data/unified.d.ts +0 -37
  56. package/dist/src/components/DrawingStyleToolbar.vue.d.ts +0 -12
  57. package/dist/src/components/KLineChart.vue.d.ts +0 -100
  58. package/dist/src/components/KLineTooltip.vue.d.ts +0 -17
  59. package/dist/src/components/MarkerTooltip.vue.d.ts +0 -13
  60. package/dist/src/components/index.d.ts +0 -2
  61. package/dist/src/config/chartSettings.d.ts +0 -69
  62. package/dist/src/core/chart-store.d.ts +0 -74
  63. package/dist/src/core/chart.d.ts +0 -617
  64. package/dist/src/core/controller/interaction.d.ts +0 -167
  65. package/dist/src/core/controller/markerInteraction.d.ts +0 -28
  66. package/dist/src/core/controller/pinchTracker.d.ts +0 -18
  67. package/dist/src/core/controller/tooltipPosition.d.ts +0 -21
  68. package/dist/src/core/draw/pixelAlign.d.ts +0 -114
  69. package/dist/src/core/drawing/index.d.ts +0 -47
  70. package/dist/src/core/drawing/interaction.d.ts +0 -75
  71. package/dist/src/core/drawing/plugin.d.ts +0 -27
  72. package/dist/src/core/indicators/atrState.d.ts +0 -16
  73. package/dist/src/core/indicators/bollState.d.ts +0 -34
  74. package/dist/src/core/indicators/calculators.d.ts +0 -465
  75. package/dist/src/core/indicators/cciState.d.ts +0 -15
  76. package/dist/src/core/indicators/chaikinVolState.d.ts +0 -18
  77. package/dist/src/core/indicators/cmfState.d.ts +0 -16
  78. package/dist/src/core/indicators/demaState.d.ts +0 -16
  79. package/dist/src/core/indicators/donchianState.d.ts +0 -23
  80. package/dist/src/core/indicators/eneState.d.ts +0 -30
  81. package/dist/src/core/indicators/expmaState.d.ts +0 -30
  82. package/dist/src/core/indicators/fastkState.d.ts +0 -15
  83. package/dist/src/core/indicators/fibState.d.ts +0 -26
  84. package/dist/src/core/indicators/hmaState.d.ts +0 -16
  85. package/dist/src/core/indicators/hvState.d.ts +0 -18
  86. package/dist/src/core/indicators/ichimokuState.d.ts +0 -44
  87. package/dist/src/core/indicators/indicator.worker.d.ts +0 -5
  88. package/dist/src/core/indicators/indicatorDefinitionRegistry.d.ts +0 -30
  89. package/dist/src/core/indicators/indicatorMetadata.d.ts +0 -81
  90. package/dist/src/core/indicators/indicatorRegistry.d.ts +0 -57
  91. package/dist/src/core/indicators/indicatorRuntime.d.ts +0 -126
  92. package/dist/src/core/indicators/kamaState.d.ts +0 -20
  93. package/dist/src/core/indicators/keltnerState.d.ts +0 -27
  94. package/dist/src/core/indicators/kstState.d.ts +0 -21
  95. package/dist/src/core/indicators/maState.d.ts +0 -26
  96. package/dist/src/core/indicators/macdState.d.ts +0 -58
  97. package/dist/src/core/indicators/mfiState.d.ts +0 -16
  98. package/dist/src/core/indicators/momState.d.ts +0 -15
  99. package/dist/src/core/indicators/obvState.d.ts +0 -14
  100. package/dist/src/core/indicators/parkinsonState.d.ts +0 -18
  101. package/dist/src/core/indicators/pivotState.d.ts +0 -29
  102. package/dist/src/core/indicators/pvtState.d.ts +0 -14
  103. package/dist/src/core/indicators/rocState.d.ts +0 -16
  104. package/dist/src/core/indicators/rsiState.d.ts +0 -43
  105. package/dist/src/core/indicators/sarState.d.ts +0 -26
  106. package/dist/src/core/indicators/scheduler.d.ts +0 -262
  107. package/dist/src/core/indicators/soa.d.ts +0 -115
  108. package/dist/src/core/indicators/stateComposer.d.ts +0 -146
  109. package/dist/src/core/indicators/stochState.d.ts +0 -18
  110. package/dist/src/core/indicators/structureState.d.ts +0 -43
  111. package/dist/src/core/indicators/supertrendState.d.ts +0 -22
  112. package/dist/src/core/indicators/temaState.d.ts +0 -16
  113. package/dist/src/core/indicators/trixState.d.ts +0 -20
  114. package/dist/src/core/indicators/vmaState.d.ts +0 -16
  115. package/dist/src/core/indicators/volumeProfileState.d.ts +0 -34
  116. package/dist/src/core/indicators/vwapState.d.ts +0 -16
  117. package/dist/src/core/indicators/wmaState.d.ts +0 -16
  118. package/dist/src/core/indicators/wmsrState.d.ts +0 -15
  119. package/dist/src/core/indicators/workerProtocol.d.ts +0 -496
  120. package/dist/src/core/indicators/zonesState.d.ts +0 -26
  121. package/dist/src/core/layout/pane.d.ts +0 -103
  122. package/dist/src/core/marker/registry.d.ts +0 -174
  123. package/dist/src/core/paneRenderer.d.ts +0 -45
  124. package/dist/src/core/renderers/Indicator/atr.d.ts +0 -17
  125. package/dist/src/core/renderers/Indicator/boll.d.ts +0 -2
  126. package/dist/src/core/renderers/Indicator/cci.d.ts +0 -22
  127. package/dist/src/core/renderers/Indicator/chaikinVol.d.ts +0 -4
  128. package/dist/src/core/renderers/Indicator/cmf.d.ts +0 -4
  129. package/dist/src/core/renderers/Indicator/dema.d.ts +0 -5
  130. package/dist/src/core/renderers/Indicator/donchian.d.ts +0 -5
  131. package/dist/src/core/renderers/Indicator/ene.d.ts +0 -2
  132. package/dist/src/core/renderers/Indicator/expma.d.ts +0 -2
  133. package/dist/src/core/renderers/Indicator/fastk.d.ts +0 -22
  134. package/dist/src/core/renderers/Indicator/fib.d.ts +0 -4
  135. package/dist/src/core/renderers/Indicator/hma.d.ts +0 -5
  136. package/dist/src/core/renderers/Indicator/hv.d.ts +0 -4
  137. package/dist/src/core/renderers/Indicator/ichimoku.d.ts +0 -5
  138. package/dist/src/core/renderers/Indicator/index.d.ts +0 -59
  139. package/dist/src/core/renderers/Indicator/indicatorData.d.ts +0 -13
  140. package/dist/src/core/renderers/Indicator/kama.d.ts +0 -5
  141. package/dist/src/core/renderers/Indicator/keltner.d.ts +0 -5
  142. package/dist/src/core/renderers/Indicator/kst.d.ts +0 -22
  143. package/dist/src/core/renderers/Indicator/ma.d.ts +0 -3
  144. package/dist/src/core/renderers/Indicator/macd.d.ts +0 -50
  145. package/dist/src/core/renderers/Indicator/macdLegend.d.ts +0 -12
  146. package/dist/src/core/renderers/Indicator/mainIndicatorLegend.d.ts +0 -10
  147. package/dist/src/core/renderers/Indicator/mfi.d.ts +0 -4
  148. package/dist/src/core/renderers/Indicator/mom.d.ts +0 -22
  149. package/dist/src/core/renderers/Indicator/obv.d.ts +0 -4
  150. package/dist/src/core/renderers/Indicator/parkinson.d.ts +0 -4
  151. package/dist/src/core/renderers/Indicator/pivot.d.ts +0 -4
  152. package/dist/src/core/renderers/Indicator/pvt.d.ts +0 -4
  153. package/dist/src/core/renderers/Indicator/roc.d.ts +0 -5
  154. package/dist/src/core/renderers/Indicator/rsi.d.ts +0 -33
  155. package/dist/src/core/renderers/Indicator/sar.d.ts +0 -5
  156. package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +0 -11
  157. package/dist/src/core/renderers/Indicator/scale/cci_scale.d.ts +0 -11
  158. package/dist/src/core/renderers/Indicator/scale/fastk_scale.d.ts +0 -11
  159. package/dist/src/core/renderers/Indicator/scale/indicator_scale.d.ts +0 -38
  160. package/dist/src/core/renderers/Indicator/scale/kst_scale.d.ts +0 -11
  161. package/dist/src/core/renderers/Indicator/scale/macd_scale.d.ts +0 -14
  162. package/dist/src/core/renderers/Indicator/scale/mom_scale.d.ts +0 -11
  163. package/dist/src/core/renderers/Indicator/scale/rsi_scale.d.ts +0 -11
  164. package/dist/src/core/renderers/Indicator/scale/stoch_scale.d.ts +0 -11
  165. package/dist/src/core/renderers/Indicator/scale/volume_scale.d.ts +0 -14
  166. package/dist/src/core/renderers/Indicator/scale/wmsr_scale.d.ts +0 -11
  167. package/dist/src/core/renderers/Indicator/stoch.d.ts +0 -22
  168. package/dist/src/core/renderers/Indicator/structure.d.ts +0 -4
  169. package/dist/src/core/renderers/Indicator/subPaneConfig.d.ts +0 -9
  170. package/dist/src/core/renderers/Indicator/supertrend.d.ts +0 -5
  171. package/dist/src/core/renderers/Indicator/tema.d.ts +0 -5
  172. package/dist/src/core/renderers/Indicator/trix.d.ts +0 -5
  173. package/dist/src/core/renderers/Indicator/vma.d.ts +0 -4
  174. package/dist/src/core/renderers/Indicator/volumeProfile.d.ts +0 -4
  175. package/dist/src/core/renderers/Indicator/vwap.d.ts +0 -4
  176. package/dist/src/core/renderers/Indicator/wma.d.ts +0 -5
  177. package/dist/src/core/renderers/Indicator/wmsr.d.ts +0 -22
  178. package/dist/src/core/renderers/Indicator/zones.d.ts +0 -4
  179. package/dist/src/core/renderers/candle.d.ts +0 -21
  180. package/dist/src/core/renderers/crosshair.d.ts +0 -17
  181. package/dist/src/core/renderers/customMarkers.d.ts +0 -6
  182. package/dist/src/core/renderers/extremaMarkers.d.ts +0 -5
  183. package/dist/src/core/renderers/gridLines.d.ts +0 -7
  184. package/dist/src/core/renderers/lastPrice.d.ts +0 -9
  185. package/dist/src/core/renderers/paneTitle.d.ts +0 -40
  186. package/dist/src/core/renderers/subVolume.d.ts +0 -13
  187. package/dist/src/core/renderers/timeAxis.d.ts +0 -14
  188. package/dist/src/core/renderers/webgl/candleSurface.d.ts +0 -80
  189. package/dist/src/core/renderers/webgl/sharedWebGLSurface.d.ts +0 -33
  190. package/dist/src/core/renderers/yAxis.d.ts +0 -14
  191. package/dist/src/core/scale/logFormula.d.ts +0 -66
  192. package/dist/src/core/scale/price.d.ts +0 -11
  193. package/dist/src/core/scale/priceScale.d.ts +0 -87
  194. package/dist/src/core/subPaneManager.d.ts +0 -22
  195. package/dist/src/core/theme/colors.d.ts +0 -222
  196. package/dist/src/core/theme/fonts.d.ts +0 -12
  197. package/dist/src/core/utils/klineConfig.d.ts +0 -28
  198. package/dist/src/core/utils/tickCount.d.ts +0 -8
  199. package/dist/src/core/utils/tickPosition.d.ts +0 -24
  200. package/dist/src/core/utils/zoom.d.ts +0 -30
  201. package/dist/src/core/viewport/viewport.d.ts +0 -31
  202. package/dist/src/index.d.ts +0 -8
  203. package/dist/src/main.d.ts +0 -0
  204. package/dist/src/plugin/ConfigManager.d.ts +0 -31
  205. package/dist/src/plugin/EventBus.d.ts +0 -34
  206. package/dist/src/plugin/HookSystem.d.ts +0 -28
  207. package/dist/src/plugin/PluginHost.d.ts +0 -57
  208. package/dist/src/plugin/PluginRegistry.d.ts +0 -40
  209. package/dist/src/plugin/StateStore.d.ts +0 -37
  210. package/dist/src/plugin/index.d.ts +0 -11
  211. package/dist/src/plugin/rendererPluginManager.d.ts +0 -77
  212. package/dist/src/plugin/stateKeys.d.ts +0 -6
  213. package/dist/src/plugin/types.d.ts +0 -445
  214. package/dist/src/semantic/controller.d.ts +0 -35
  215. package/dist/src/semantic/drawShape.d.ts +0 -14
  216. package/dist/src/semantic/index.d.ts +0 -8
  217. package/dist/src/semantic/types.d.ts +0 -298
  218. package/dist/src/semantic/validator.d.ts +0 -43
  219. package/dist/src/test-setup.d.ts +0 -6
  220. package/dist/src/types/kLine.d.ts +0 -3
  221. package/dist/src/types/price.d.ts +0 -31
  222. package/dist/src/types/volumePrice.d.ts +0 -26
  223. package/dist/src/utils/cache.d.ts +0 -33
  224. package/dist/src/utils/dateFormat.d.ts +0 -83
  225. package/dist/src/utils/http.d.ts +0 -14
  226. package/dist/src/utils/kLineDraw/MA.d.ts +0 -7
  227. package/dist/src/utils/kLineDraw/axis.d.ts +0 -150
  228. package/dist/src/utils/kLineDraw/grid.d.ts +0 -30
  229. package/dist/src/utils/kLineDraw/kLine.d.ts +0 -15
  230. package/dist/src/utils/kline/format.d.ts +0 -11
  231. package/dist/src/utils/kline/viewport.d.ts +0 -10
  232. package/dist/src/utils/logger.d.ts +0 -5
  233. package/dist/src/utils/mock/genRandomPriceData.d.ts +0 -3
  234. package/dist/src/utils/priceToY.d.ts +0 -7
  235. package/dist/src/utils/volumePrice.d.ts +0 -54
@@ -1,43 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- /**
3
- * RSI 渲染器状态(共享给渲染器、图例和 scale 渲染器)
4
- * 包含全量 RSI 数组、计算参数、固定 Y 轴范围以及视口极值
5
- */
6
- export interface RSIRenderState extends BaseIndicatorState {
7
- timestamp: number;
8
- /** 各周期 RSI 数组(稀疏:前 period+1 个为 undefined) */
9
- series: Record<number, (number | undefined)[]>;
10
- /** 当前启用的周期列表 */
11
- enabledPeriods: number[];
12
- /** 计算和渲染参数 */
13
- params: {
14
- period1: number;
15
- period2: number;
16
- period3: number;
17
- showRSI1: boolean;
18
- showRSI2: boolean;
19
- showRSI3: boolean;
20
- };
21
- /** 固定 Y 轴最小值(始终为 0) */
22
- valueMin: number;
23
- /** 固定 Y 轴最大值(始终为 100) */
24
- valueMax: number;
25
- /** 视口内所有 RSI 线的最小值 */
26
- visibleMin: number;
27
- /** 视口内所有 RSI 线的最大值 */
28
- visibleMax: number;
29
- }
30
- /**
31
- * RSI 状态的基础 StateStore 键名
32
- */
33
- export declare const RSI_STATE_KEY = "indicator:rsi";
34
- /**
35
- * 创建 RSI 状态的 StateStore 键名
36
- * 格式:indicator:rsi:{paneId}
37
- */
38
- export declare const createRSIStateKey: (paneId: string) => `indicator:${string}:${string}`;
39
- /**
40
- * 空数据占位状态
41
- * 消费者应检查 visibleMin > visibleMax 判断"无有效数据"
42
- */
43
- export declare const EMPTY_RSI_STATE: RSIRenderState;
@@ -1,26 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- /**
3
- * SAR 点:value 是 SAR 价格,trend = 'up' 表示 SAR 在 K 线下方(多头止损)
4
- * 'down' 表示 SAR 在 K 线上方(空头止损)。
5
- */
6
- export interface SARPoint {
7
- value: number;
8
- trend: 'up' | 'down';
9
- }
10
- export interface SARRenderState extends BaseIndicatorState {
11
- timestamp: number;
12
- series: (SARPoint | undefined)[];
13
- params: {
14
- step: number;
15
- maxStep: number;
16
- showSAR: boolean;
17
- };
18
- valueMin: number;
19
- valueMax: number;
20
- visibleMin: number;
21
- visibleMax: number;
22
- }
23
- export declare const createSARStateKey: (paneId: string) => `indicator:${string}:${string}`;
24
- export declare const DEFAULT_SAR_STEP = 0.02;
25
- export declare const DEFAULT_SAR_MAX_STEP = 0.2;
26
- export declare const EMPTY_SAR_STATE: SARRenderState;
@@ -1,262 +0,0 @@
1
- import { PluginHost } from '../../plugin';
2
- import { KLineData } from '../../types/price';
3
- import { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig, IchimokuSchedulerConfig, ROCSchedulerConfig, TRIXSchedulerConfig, HVSchedulerConfig, ParkinsonSchedulerConfig, ChaikinVolSchedulerConfig, VMASchedulerConfig, OBVSchedulerConfig, PVTSchedulerConfig, VWAPSchedulerConfig, CMFSchedulerConfig, MFISchedulerConfig, PivotSchedulerConfig, FibSchedulerConfig, StructureSchedulerConfig, ZonesSchedulerConfig, VolumeProfileSchedulerConfig } from './workerProtocol';
4
- import { MAFlags } from './calculators';
5
- import { IndicatorMetadata } from './indicatorMetadata';
6
- /**
7
- * 可见范围
8
- */
9
- interface VisibleRange {
10
- start: number;
11
- end: number;
12
- }
13
- export type { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig, IchimokuSchedulerConfig, ROCSchedulerConfig, TRIXSchedulerConfig, HVSchedulerConfig, ParkinsonSchedulerConfig, ChaikinVolSchedulerConfig, VMASchedulerConfig, OBVSchedulerConfig, PVTSchedulerConfig, VWAPSchedulerConfig, CMFSchedulerConfig, MFISchedulerConfig, PivotSchedulerConfig, FibSchedulerConfig, StructureSchedulerConfig, ZonesSchedulerConfig, VolumeProfileSchedulerConfig, } from './workerProtocol';
14
- /**
15
- * IndicatorScheduler - 主线程 facade
16
- */
17
- export declare class IndicatorScheduler {
18
- private pluginHost;
19
- private visibleRange;
20
- private activeMainIndicators;
21
- private dataVersion;
22
- private configVersion;
23
- private requestId;
24
- private lastAppliedRequestId;
25
- private currentData;
26
- private configSnapshot;
27
- private worker;
28
- private workerReady;
29
- private useWorker;
30
- private pendingRequest;
31
- private inlineRuntime;
32
- private latestResult;
33
- private invalidateCallback;
34
- /** 从 Chart 获取活跃副图 paneId 列表的回调 */
35
- private getActiveSubPaneIds;
36
- private registry;
37
- constructor();
38
- /**
39
- * 注册新指标(支持动态扩展)
40
- */
41
- registerIndicator<T>(meta: IndicatorMetadata<T>): void;
42
- /**
43
- * 注销指标
44
- */
45
- unregisterIndicator(name: string): boolean;
46
- /**
47
- * 获取指标元数据(供渲染器查询)
48
- */
49
- getIndicatorMetadata(name: string): IndicatorMetadata | undefined;
50
- /**
51
- * 获取所有已注册指标
52
- */
53
- getAllIndicators(): readonly IndicatorMetadata[];
54
- /**
55
- * 设置 PluginHost
56
- */
57
- setPluginHost(host: PluginHost): void;
58
- /**
59
- * 设置重绘回调
60
- */
61
- setInvalidateCallback(callback: () => void): void;
62
- /**
63
- * 副图增删后通知 scheduler 刷新 active mask
64
- */
65
- onSubPaneChanged(): void;
66
- /**
67
- * 设置活跃副图 paneId 提供者(来自 Chart.getSubPaneIndicators)
68
- */
69
- setActiveSubPaneProvider(provider: () => string[]): void;
70
- /**
71
- * 销毁调度器
72
- */
73
- destroy(): void;
74
- private getDefaultConfig;
75
- private initBackend;
76
- private tryInitWorker;
77
- private initInlineRuntime;
78
- private fallbackToInline;
79
- private terminateWorker;
80
- private handleWorkerMessage;
81
- private handleSeriesResult;
82
- /**
83
- * 检查 state 中的 visibleMin/visibleMax 是否为 Infinity,如果是则输出 warning
84
- */
85
- private checkVisibleExtremes;
86
- /** 遍历注册表中的所有指标,通过 applyResult 回调写入 StateStore */
87
- private applyResults;
88
- /** 仅副图:重算可见范围极值并回调 applyResult(视口变更时同步更新,不走 Worker) */
89
- private updateVisibleStatesOnly;
90
- /** 遍历注册表,标记当前可见副图,仅这些指标参与计算 */
91
- private buildActiveSubIndicatorMask;
92
- /** 遍历注册表,禁用非活跃副图指标的 show* 字段,后端只算活跃指标 */
93
- private buildActiveConfig;
94
- /**
95
- * 数据变更时调用
96
- */
97
- update(data: KLineData[], visibleRange: VisibleRange): void;
98
- /**
99
- * 视口变更时调用 - 同步处理,不走 Worker
100
- */
101
- updateVisibleRange(visibleRange: VisibleRange): void;
102
- /**
103
- * MA 配置变更
104
- */
105
- updateMAConfig(config: MAFlags): void;
106
- /**
107
- * BOLL 配置变更
108
- */
109
- updateBOLLConfig(config: Partial<BOLLSchedulerConfig>): void;
110
- /**
111
- * EXPMA 配置变更
112
- */
113
- updateEXPMAConfig(config: Partial<EXPMASchedulerConfig>): void;
114
- /**
115
- * ENE 配置变更
116
- */
117
- updateENEConfig(config: Partial<ENESchedulerConfig>): void;
118
- /**
119
- * RSI 配置变更
120
- */
121
- updateRSIConfig(config: Partial<RSISchedulerConfig>, paneId?: string): void;
122
- /**
123
- * CCI 配置变更
124
- */
125
- updateCCIConfig(config: Partial<CCISchedulerConfig>, paneId?: string): void;
126
- /**
127
- * STOCH 配置变更
128
- */
129
- updateSTOCHConfig(config: Partial<STOCHSchedulerConfig>, paneId?: string): void;
130
- /**
131
- * MOM 配置变更
132
- */
133
- updateMOMConfig(config: Partial<MOMSchedulerConfig>, paneId?: string): void;
134
- /**
135
- * WMSR 配置变更
136
- */
137
- updateWMSRConfig(config: Partial<WMSRSchedulerConfig>, paneId?: string): void;
138
- /**
139
- * KST 配置变更
140
- */
141
- updateKSTConfig(config: Partial<KSTSchedulerConfig>, paneId?: string): void;
142
- /**
143
- * FASTK 配置变更
144
- */
145
- updateFASTKConfig(config: Partial<FASTKSchedulerConfig>, paneId?: string): void;
146
- /**
147
- * MACD 配置变更
148
- */
149
- updateMACDConfig(config: Partial<MACDSchedulerConfig>, paneId?: string): void;
150
- /**
151
- * ATR 配置变更
152
- */
153
- updateATRConfig(config: Partial<ATRSchedulerConfig>, paneId?: string): void;
154
- /**
155
- * WMA 配置变更
156
- */
157
- updateWMAConfig(config: Partial<WMASchedulerConfig>, paneId?: string): void;
158
- /**
159
- * DEMA 配置变更
160
- */
161
- updateDEMAConfig(config: Partial<DEMASchedulerConfig>, paneId?: string): void;
162
- /**
163
- * TEMA 配置变更
164
- */
165
- updateTEMAConfig(config: Partial<TEMASchedulerConfig>, paneId?: string): void;
166
- /**
167
- * HMA 配置变更
168
- */
169
- updateHMAConfig(config: Partial<HMASchedulerConfig>, paneId?: string): void;
170
- /**
171
- * KAMA 配置变更
172
- */
173
- updateKAMAConfig(config: Partial<KAMASchedulerConfig>, paneId?: string): void;
174
- /**
175
- * SAR 配置变更
176
- */
177
- updateSARConfig(config: Partial<SARSchedulerConfig>, paneId?: string): void;
178
- /**
179
- * SuperTrend 配置变更
180
- */
181
- updateSuperTrendConfig(config: Partial<SuperTrendSchedulerConfig>, paneId?: string): void;
182
- /**
183
- * Keltner 配置变更
184
- */
185
- updateKeltnerConfig(config: Partial<KeltnerSchedulerConfig>, paneId?: string): void;
186
- /**
187
- * Donchian 配置变更
188
- */
189
- updateDonchianConfig(config: Partial<DonchianSchedulerConfig>, paneId?: string): void;
190
- /**
191
- * Ichimoku 配置变更
192
- */
193
- updateIchimokuConfig(config: Partial<IchimokuSchedulerConfig>, paneId?: string): void;
194
- /**
195
- * ROC 配置变更
196
- */
197
- updateROCConfig(config: Partial<ROCSchedulerConfig>, paneId?: string): void;
198
- /**
199
- * TRIX 配置变更
200
- */
201
- updateTRIXConfig(config: Partial<TRIXSchedulerConfig>, paneId?: string): void;
202
- /**
203
- * HV 配置变更
204
- */
205
- updateHVConfig(config: Partial<HVSchedulerConfig>, paneId?: string): void;
206
- /**
207
- * Parkinson 配置变更
208
- */
209
- updateParkinsonConfig(config: Partial<ParkinsonSchedulerConfig>, paneId?: string): void;
210
- /**
211
- * ChaikinVol 配置变更
212
- */
213
- updateChaikinVolConfig(config: Partial<ChaikinVolSchedulerConfig>, paneId?: string): void;
214
- /**
215
- * VMA 配置变更
216
- */
217
- updateVMAConfig(config: Partial<VMASchedulerConfig>, paneId?: string): void;
218
- /**
219
- * OBV 配置变更
220
- */
221
- updateOBVConfig(config: Partial<OBVSchedulerConfig>, paneId?: string): void;
222
- /**
223
- * PVT 配置变更
224
- */
225
- updatePVTConfig(config: Partial<PVTSchedulerConfig>, paneId?: string): void;
226
- /**
227
- * VWAP 配置变更
228
- */
229
- updateVWAPConfig(config: Partial<VWAPSchedulerConfig>, paneId?: string): void;
230
- /** CMF 配置变更 */
231
- updateCMFConfig(config: Partial<CMFSchedulerConfig>, paneId?: string): void;
232
- /** MFI 配置变更 */
233
- updateMFIConfig(config: Partial<MFISchedulerConfig>, paneId?: string): void;
234
- /** Pivot 配置变更 */
235
- updatePivotConfig(config: Partial<PivotSchedulerConfig>, paneId?: string): void;
236
- /** Fib 配置变更 */
237
- updateFibConfig(config: Partial<FibSchedulerConfig>, paneId?: string): void;
238
- /** Structure 配置变更 */
239
- updateStructureConfig(config: Partial<StructureSchedulerConfig>, paneId?: string): void;
240
- /** Zones 配置变更 */
241
- updateZonesConfig(config: Partial<ZonesSchedulerConfig>, paneId?: string): void;
242
- /** Volume Profile 配置变更 */
243
- updateVolumeProfileConfig(config: Partial<VolumeProfileSchedulerConfig>, paneId?: string): void;
244
- /**
245
- * 设置当前激活的主图指标
246
- */
247
- setActiveMainIndicators(indicators: string[]): void;
248
- /**
249
- * 获取主图指标价格范围
250
- */
251
- getMainIndicatorPriceRange(): {
252
- min: number;
253
- max: number;
254
- } | null;
255
- /**
256
- * 强制全部重算
257
- */
258
- recompute(): void;
259
- private triggerRecompute;
260
- private computeWithWorker;
261
- private computeWithInline;
262
- }
@@ -1,115 +0,0 @@
1
- import { KLineData } from '../../types/price';
2
- /**
3
- * KLineData 的 SoA (Structure of Arrays) 布局
4
- * 用于零拷贝传输到 Web Worker
5
- *
6
- * 内存布局:
7
- * | timestamps | opens | highs | lows | closes | volumes | turnovers |
8
- * | 8*N | 8*N | 8*N | 8*N | 8*N | 8*N | 8*N |
9
- *
10
- * 其中 N 为数据长度,每列 8 字节(Float64)
11
- */
12
- export interface KLineSoALayout {
13
- /** 底层缓冲区(SharedArrayBuffer 或 ArrayBuffer) */
14
- buffer: SharedArrayBuffer | ArrayBuffer;
15
- /** 数据长度 */
16
- length: number;
17
- /** 是否使用 SharedArrayBuffer */
18
- isShared: boolean;
19
- /** 是否有成交量数据 */
20
- hasVolume: boolean;
21
- /** 是否有成交额数据 */
22
- hasTurnover: boolean;
23
- /** 时间戳数组(毫秒) */
24
- timestamps: Float64Array;
25
- /** 开盘价数组 */
26
- opens: Float64Array;
27
- /** 最高价数组 */
28
- highs: Float64Array;
29
- /** 最低价数组 */
30
- lows: Float64Array;
31
- /** 收盘价数组 */
32
- closes: Float64Array;
33
- /** 成交量数组(无值时为 0) */
34
- volumes: Float64Array;
35
- /** 成交额数组(无值时为 0) */
36
- turnovers: Float64Array;
37
- }
38
- /**
39
- * SharedKLineBuffer - K线数据的 SoA 管理类
40
- *
41
- * 提供 AoS (KLineData[]) 与 SoA 布局之间的转换,
42
- * 支持 SharedArrayBuffer(零拷贝)和 ArrayBuffer(降级)
43
- */
44
- export declare class SharedKLineBuffer {
45
- /**
46
- * 检测 SharedArrayBuffer 是否可用
47
- * 需要页面有 COOP/COEP 头支持
48
- */
49
- static detectSupport(): boolean;
50
- /**
51
- * 计算 SoA 布局所需的总字节数
52
- */
53
- static calculateByteLength(length: number): number;
54
- /**
55
- * 将 KLineData[] 转换为 SoA 布局
56
- * @param data K线数据数组(AoS 格式)
57
- * @param preferShared 是否优先使用 SharedArrayBuffer(默认 true)
58
- * @returns SoA 布局对象
59
- */
60
- static fromKLineData(data: KLineData[], preferShared?: boolean): KLineSoALayout;
61
- /**
62
- * 更新现有 SoA 布局的数据(尽可能复用缓冲区)
63
- * 如果新数据长度超过原缓冲区,会创建新缓冲区
64
- *
65
- * @param layout 现有 SoA 布局
66
- * @param data 新的 K线数据
67
- * @returns 更新后的 SoA 布局(可能是新对象)
68
- */
69
- static updateExisting(layout: KLineSoALayout, data: KLineData[]): KLineSoALayout;
70
- /**
71
- * 将 SoA 布局转换回 KLineData[](用于测试和兼容性)
72
- * @param layout SoA 布局
73
- * @returns K线数据数组
74
- */
75
- static toKLineData(layout: KLineSoALayout): KLineData[];
76
- /**
77
- * 创建子视图(用于 Worker 中处理部分数据范围)
78
- * @param layout 原 SoA 布局
79
- * @param start 起始索引(包含)
80
- * @param end 结束索引(不包含)
81
- * @returns 子视图对象(共享同一缓冲区)
82
- */
83
- static createSubview(layout: KLineSoALayout, start: number, end: number): KLineSoALayout;
84
- /**
85
- * 获取缓冲区信息(用于调试和序列化)
86
- */
87
- static getBufferInfo(layout: KLineSoALayout): {
88
- byteLength: number;
89
- isShared: boolean;
90
- length: number;
91
- columns: string[];
92
- };
93
- }
94
- /**
95
- * 获取 SoA 布局中 closes 列的视图(最常用列)
96
- * 用于指标计算中快速访问收盘价
97
- */
98
- export declare function getClosesView(layout: KLineSoALayout): Float64Array;
99
- /**
100
- * 获取 SoA 布局中 highs/lows 列的视图
101
- * 用于需要高低价的指标(如 BOLL、STOCH、WMSR)
102
- */
103
- export declare function getHighsLowsViews(layout: KLineSoALayout): {
104
- highs: Float64Array;
105
- lows: Float64Array;
106
- };
107
- /**
108
- * 获取 SoA 布局中 OHLC 四价视图
109
- */
110
- export declare function getOHLCViews(layout: KLineSoALayout): {
111
- opens: Float64Array;
112
- highs: Float64Array;
113
- lows: Float64Array;
114
- closes: Float64Array;
115
- };
@@ -1,146 +0,0 @@
1
- import { MARenderState } from './maState';
2
- import { BOLLRenderState } from './bollState';
3
- import { EXPMARenderState } from './expmaState';
4
- import { ENERenderState } from './eneState';
5
- import { RSIRenderState } from './rsiState';
6
- import { CCIRenderState } from './cciState';
7
- import { STOCHRenderState } from './stochState';
8
- import { MOMRenderState } from './momState';
9
- import { WMSRRenderState } from './wmsrState';
10
- import { KSTRenderState } from './kstState';
11
- import { FASTKRenderState } from './fastkState';
12
- import { MACDRenderState } from './macdState';
13
- import { ATRRenderState } from './atrState';
14
- import { WMARenderState } from './wmaState';
15
- import { DEMARenderState } from './demaState';
16
- import { TEMARenderState } from './temaState';
17
- import { HMARenderState } from './hmaState';
18
- import { KAMARenderState } from './kamaState';
19
- import { SARRenderState } from './sarState';
20
- import { SuperTrendRenderState } from './supertrendState';
21
- import { KeltnerRenderState } from './keltnerState';
22
- import { DonchianRenderState } from './donchianState';
23
- import { IchimokuRenderState } from './ichimokuState';
24
- import { ROCRenderState } from './rocState';
25
- import { TRIXRenderState } from './trixState';
26
- import { HVRenderState } from './hvState';
27
- import { ParkinsonRenderState } from './parkinsonState';
28
- import { ChaikinVolRenderState } from './chaikinVolState';
29
- import { VMARenderState } from './vmaState';
30
- import { OBVRenderState } from './obvState';
31
- import { PVTRenderState } from './pvtState';
32
- import { VWAPRenderState } from './vwapState';
33
- import { CMFRenderState } from './cmfState';
34
- import { MFIRenderState } from './mfiState';
35
- import { PivotRenderState } from './pivotState';
36
- import { FibRenderState } from './fibState';
37
- import { StructureRenderState } from './structureState';
38
- import { ZonesRenderState } from './zonesState';
39
- import { VolumeProfileRenderState } from './volumeProfileState';
40
- import { IndicatorSeriesBundle } from './workerProtocol';
41
- /**
42
- * 可见范围
43
- */
44
- interface VisibleRange {
45
- start: number;
46
- end: number;
47
- }
48
- type VisibleSubIndicatorStates = {
49
- rsi: RSIRenderState;
50
- cci: CCIRenderState;
51
- stoch: STOCHRenderState;
52
- mom: MOMRenderState;
53
- wmsr: WMSRRenderState;
54
- kst: KSTRenderState;
55
- fastk: FASTKRenderState;
56
- macd: MACDRenderState;
57
- atr: ATRRenderState;
58
- wma: WMARenderState;
59
- dema: DEMARenderState;
60
- tema: TEMARenderState;
61
- hma: HMARenderState;
62
- kama: KAMARenderState;
63
- sar: SARRenderState;
64
- supertrend: SuperTrendRenderState;
65
- keltner: KeltnerRenderState;
66
- donchian: DonchianRenderState;
67
- ichimoku: IchimokuRenderState;
68
- roc: ROCRenderState;
69
- trix: TRIXRenderState;
70
- hv: HVRenderState;
71
- parkinson: ParkinsonRenderState;
72
- chaikinVol: ChaikinVolRenderState;
73
- vma: VMARenderState;
74
- obv: OBVRenderState;
75
- pvt: PVTRenderState;
76
- vwap: VWAPRenderState;
77
- cmf: CMFRenderState;
78
- mfi: MFIRenderState;
79
- pivot: PivotRenderState;
80
- fib: FibRenderState;
81
- structure: StructureRenderState;
82
- zones: ZonesRenderState;
83
- volumeProfile: VolumeProfileRenderState;
84
- };
85
- type VisibleSubIndicatorMask = {
86
- rsi?: boolean;
87
- cci?: boolean;
88
- stoch?: boolean;
89
- mom?: boolean;
90
- wmsr?: boolean;
91
- kst?: boolean;
92
- fastk?: boolean;
93
- macd?: boolean;
94
- atr?: boolean;
95
- wma?: boolean;
96
- dema?: boolean;
97
- tema?: boolean;
98
- hma?: boolean;
99
- kama?: boolean;
100
- sar?: boolean;
101
- supertrend?: boolean;
102
- keltner?: boolean;
103
- donchian?: boolean;
104
- ichimoku?: boolean;
105
- roc?: boolean;
106
- trix?: boolean;
107
- hv?: boolean;
108
- parkinson?: boolean;
109
- chaikinVol?: boolean;
110
- vma?: boolean;
111
- obv?: boolean;
112
- pvt?: boolean;
113
- vwap?: boolean;
114
- cmf?: boolean;
115
- mfi?: boolean;
116
- pivot?: boolean;
117
- fib?: boolean;
118
- structure?: boolean;
119
- zones?: boolean;
120
- volumeProfile?: boolean;
121
- };
122
- type ComposedRenderStates = VisibleSubIndicatorStates & {
123
- ma: MARenderState;
124
- boll: BOLLRenderState;
125
- expma: EXPMARenderState;
126
- ene: ENERenderState;
127
- };
128
- /**
129
- * 仅计算副图指标的 visible-only states
130
- * 用于滚动时的轻量更新,避免重复计算主图指标
131
- */
132
- export declare function composeVisibleSubIndicatorStates(bundle: IndicatorSeriesBundle, visibleRange: VisibleRange, timestamp: number, activeMask?: VisibleSubIndicatorMask): VisibleSubIndicatorStates;
133
- /**
134
- * 从 series bundle 组装所有 render states
135
- * 同时计算 visibleMin/visibleMax 等派生字段
136
- */
137
- export declare function composeRenderStates(bundle: IndicatorSeriesBundle, visibleRange: VisibleRange, timestamp: number): ComposedRenderStates;
138
- /**
139
- * 计算主图指标价格范围
140
- * 用于 Chart.draw() 中的 pane.updateRange
141
- */
142
- export declare function computeMainIndicatorPriceRange(bundle: IndicatorSeriesBundle, visibleRange: VisibleRange, activeMainIndicators: Set<string>): {
143
- min: number;
144
- max: number;
145
- } | null;
146
- export {};
@@ -1,18 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- import { STOCHPoint } from './calculators';
3
- export interface STOCHRenderState extends BaseIndicatorState {
4
- timestamp: number;
5
- series: STOCHPoint[];
6
- params: {
7
- n: number;
8
- m: number;
9
- showK: boolean;
10
- showD: boolean;
11
- };
12
- valueMin: number;
13
- valueMax: number;
14
- visibleMin: number;
15
- visibleMax: number;
16
- }
17
- export declare const createSTOCHStateKey: (paneId: string) => `indicator:${string}:${string}`;
18
- export declare const EMPTY_STOCH_STATE: STOCHRenderState;
@@ -1,43 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- export interface SwingPoint {
3
- index: number;
4
- price: number;
5
- kind: 'high' | 'low';
6
- label: 'HH' | 'HL' | 'LH' | 'LL';
7
- confirmed: boolean;
8
- }
9
- export type StructureEventKind = 'BOS' | 'CHOCH';
10
- export interface StructureEvent {
11
- kind: StructureEventKind;
12
- index: number;
13
- triggerPrice: number;
14
- brokenLevel: number;
15
- brokenSwingIndex: number;
16
- direction: 'up' | 'down';
17
- }
18
- export interface StructureSnapshot {
19
- swings: SwingPoint[];
20
- events: StructureEvent[];
21
- trend: 'up' | 'down' | 'range';
22
- }
23
- export interface StructureRenderState extends BaseIndicatorState {
24
- timestamp: number;
25
- series: StructureSnapshot;
26
- params: {
27
- leftWindow: number;
28
- rightWindow: number;
29
- breakoutSource: 'close' | 'wick';
30
- showSwingLabels: boolean;
31
- showBOS: boolean;
32
- showCHOCH: boolean;
33
- showProvisional: boolean;
34
- };
35
- valueMin: number;
36
- valueMax: number;
37
- visibleMin: number;
38
- visibleMax: number;
39
- }
40
- export declare const createStructureStateKey: (paneId: string) => `indicator:${string}:${string}`;
41
- export declare const DEFAULT_STRUCTURE_LEFT = 2;
42
- export declare const DEFAULT_STRUCTURE_RIGHT = 2;
43
- export declare const EMPTY_STRUCTURE_STATE: StructureRenderState;
@@ -1,22 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- export interface SuperTrendPoint {
3
- value: number;
4
- trend: 'up' | 'down';
5
- }
6
- export interface SuperTrendRenderState extends BaseIndicatorState {
7
- timestamp: number;
8
- series: (SuperTrendPoint | undefined)[];
9
- params: {
10
- atrPeriod: number;
11
- multiplier: number;
12
- showSuperTrend: boolean;
13
- };
14
- valueMin: number;
15
- valueMax: number;
16
- visibleMin: number;
17
- visibleMax: number;
18
- }
19
- export declare const createSuperTrendStateKey: (paneId: string) => `indicator:${string}:${string}`;
20
- export declare const DEFAULT_SUPERTREND_ATR_PERIOD = 10;
21
- export declare const DEFAULT_SUPERTREND_MULTIPLIER = 3;
22
- export declare const EMPTY_SUPERTREND_STATE: SuperTrendRenderState;