@363045841yyt/klinechart-core 0.7.3

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 (919) hide show
  1. package/README.md +201 -0
  2. package/README.zh-CN.md +201 -0
  3. package/dist/config/chartSettings.d.ts +70 -0
  4. package/dist/config/chartSettings.d.ts.map +1 -0
  5. package/dist/config/chartSettings.js +50 -0
  6. package/dist/config/chartSettings.js.map +1 -0
  7. package/dist/controllers/createChartController.d.ts +16 -0
  8. package/dist/controllers/createChartController.d.ts.map +1 -0
  9. package/dist/controllers/createChartController.js +525 -0
  10. package/dist/controllers/createChartController.js.map +1 -0
  11. package/dist/controllers/createDrawingController.d.ts +25 -0
  12. package/dist/controllers/createDrawingController.d.ts.map +1 -0
  13. package/dist/controllers/createDrawingController.js +77 -0
  14. package/dist/controllers/createDrawingController.js.map +1 -0
  15. package/dist/controllers/createIndicatorSelectorController.d.ts +19 -0
  16. package/dist/controllers/createIndicatorSelectorController.d.ts.map +1 -0
  17. package/dist/controllers/createIndicatorSelectorController.js +256 -0
  18. package/dist/controllers/createIndicatorSelectorController.js.map +1 -0
  19. package/dist/controllers/createToolbarController.d.ts +28 -0
  20. package/dist/controllers/createToolbarController.d.ts.map +1 -0
  21. package/dist/controllers/createToolbarController.js +121 -0
  22. package/dist/controllers/createToolbarController.js.map +1 -0
  23. package/dist/controllers/index.d.ts +3 -0
  24. package/dist/controllers/index.d.ts.map +1 -0
  25. package/dist/controllers/index.js +2 -0
  26. package/dist/controllers/index.js.map +1 -0
  27. package/dist/controllers/types.d.ts +218 -0
  28. package/dist/controllers/types.d.ts.map +1 -0
  29. package/dist/controllers/types.js +11 -0
  30. package/dist/controllers/types.js.map +1 -0
  31. package/dist/engine/chart-store.d.ts +75 -0
  32. package/dist/engine/chart-store.d.ts.map +1 -0
  33. package/dist/engine/chart-store.js +88 -0
  34. package/dist/engine/chart-store.js.map +1 -0
  35. package/dist/engine/chart.d.ts +618 -0
  36. package/dist/engine/chart.d.ts.map +1 -0
  37. package/dist/engine/chart.js +2285 -0
  38. package/dist/engine/chart.js.map +1 -0
  39. package/dist/engine/controller/interaction.d.ts +168 -0
  40. package/dist/engine/controller/interaction.d.ts.map +1 -0
  41. package/dist/engine/controller/interaction.js +612 -0
  42. package/dist/engine/controller/interaction.js.map +1 -0
  43. package/dist/engine/controller/markerInteraction.d.ts +29 -0
  44. package/dist/engine/controller/markerInteraction.d.ts.map +1 -0
  45. package/dist/engine/controller/markerInteraction.js +111 -0
  46. package/dist/engine/controller/markerInteraction.js.map +1 -0
  47. package/dist/engine/controller/pinchTracker.d.ts +19 -0
  48. package/dist/engine/controller/pinchTracker.d.ts.map +1 -0
  49. package/dist/engine/controller/pinchTracker.js +72 -0
  50. package/dist/engine/controller/pinchTracker.js.map +1 -0
  51. package/dist/engine/controller/tooltipPosition.d.ts +22 -0
  52. package/dist/engine/controller/tooltipPosition.d.ts.map +1 -0
  53. package/dist/engine/controller/tooltipPosition.js +31 -0
  54. package/dist/engine/controller/tooltipPosition.js.map +1 -0
  55. package/dist/engine/draw/pixelAlign.d.ts +115 -0
  56. package/dist/engine/draw/pixelAlign.d.ts.map +1 -0
  57. package/dist/engine/draw/pixelAlign.js +185 -0
  58. package/dist/engine/draw/pixelAlign.js.map +1 -0
  59. package/dist/engine/drawing/index.d.ts +48 -0
  60. package/dist/engine/drawing/index.d.ts.map +1 -0
  61. package/dist/engine/drawing/index.js +561 -0
  62. package/dist/engine/drawing/index.js.map +1 -0
  63. package/dist/engine/drawing/interaction.d.ts +76 -0
  64. package/dist/engine/drawing/interaction.d.ts.map +1 -0
  65. package/dist/engine/drawing/interaction.js +702 -0
  66. package/dist/engine/drawing/interaction.js.map +1 -0
  67. package/dist/engine/drawing/plugin.d.ts +29 -0
  68. package/dist/engine/drawing/plugin.d.ts.map +1 -0
  69. package/dist/engine/drawing/plugin.js +292 -0
  70. package/dist/engine/drawing/plugin.js.map +1 -0
  71. package/dist/engine/indicators/atrState.d.ts +17 -0
  72. package/dist/engine/indicators/atrState.d.ts.map +1 -0
  73. package/dist/engine/indicators/atrState.js +13 -0
  74. package/dist/engine/indicators/atrState.js.map +1 -0
  75. package/dist/engine/indicators/bollState.d.ts +35 -0
  76. package/dist/engine/indicators/bollState.d.ts.map +1 -0
  77. package/dist/engine/indicators/bollState.js +25 -0
  78. package/dist/engine/indicators/bollState.js.map +1 -0
  79. package/dist/engine/indicators/calculators.d.ts +466 -0
  80. package/dist/engine/indicators/calculators.d.ts.map +1 -0
  81. package/dist/engine/indicators/calculators.js +1882 -0
  82. package/dist/engine/indicators/calculators.js.map +1 -0
  83. package/dist/engine/indicators/cciState.d.ts +16 -0
  84. package/dist/engine/indicators/cciState.d.ts.map +1 -0
  85. package/dist/engine/indicators/cciState.js +12 -0
  86. package/dist/engine/indicators/cciState.js.map +1 -0
  87. package/dist/engine/indicators/chaikinVolState.d.ts +19 -0
  88. package/dist/engine/indicators/chaikinVolState.d.ts.map +1 -0
  89. package/dist/engine/indicators/chaikinVolState.js +18 -0
  90. package/dist/engine/indicators/chaikinVolState.js.map +1 -0
  91. package/dist/engine/indicators/cmfState.d.ts +17 -0
  92. package/dist/engine/indicators/cmfState.d.ts.map +1 -0
  93. package/dist/engine/indicators/cmfState.js +13 -0
  94. package/dist/engine/indicators/cmfState.js.map +1 -0
  95. package/dist/engine/indicators/demaState.d.ts +17 -0
  96. package/dist/engine/indicators/demaState.d.ts.map +1 -0
  97. package/dist/engine/indicators/demaState.js +13 -0
  98. package/dist/engine/indicators/demaState.js.map +1 -0
  99. package/dist/engine/indicators/donchianState.d.ts +24 -0
  100. package/dist/engine/indicators/donchianState.d.ts.map +1 -0
  101. package/dist/engine/indicators/donchianState.js +18 -0
  102. package/dist/engine/indicators/donchianState.js.map +1 -0
  103. package/dist/engine/indicators/eneState.d.ts +31 -0
  104. package/dist/engine/indicators/eneState.d.ts.map +1 -0
  105. package/dist/engine/indicators/eneState.js +21 -0
  106. package/dist/engine/indicators/eneState.js.map +1 -0
  107. package/dist/engine/indicators/expmaState.d.ts +31 -0
  108. package/dist/engine/indicators/expmaState.d.ts.map +1 -0
  109. package/dist/engine/indicators/expmaState.js +21 -0
  110. package/dist/engine/indicators/expmaState.js.map +1 -0
  111. package/dist/engine/indicators/fastkState.d.ts +16 -0
  112. package/dist/engine/indicators/fastkState.d.ts.map +1 -0
  113. package/dist/engine/indicators/fastkState.js +12 -0
  114. package/dist/engine/indicators/fastkState.js.map +1 -0
  115. package/dist/engine/indicators/fibState.d.ts +27 -0
  116. package/dist/engine/indicators/fibState.d.ts.map +1 -0
  117. package/dist/engine/indicators/fibState.js +13 -0
  118. package/dist/engine/indicators/fibState.js.map +1 -0
  119. package/dist/engine/indicators/hmaState.d.ts +17 -0
  120. package/dist/engine/indicators/hmaState.d.ts.map +1 -0
  121. package/dist/engine/indicators/hmaState.js +13 -0
  122. package/dist/engine/indicators/hmaState.js.map +1 -0
  123. package/dist/engine/indicators/hvState.d.ts +19 -0
  124. package/dist/engine/indicators/hvState.d.ts.map +1 -0
  125. package/dist/engine/indicators/hvState.js +14 -0
  126. package/dist/engine/indicators/hvState.js.map +1 -0
  127. package/dist/engine/indicators/ichimokuState.d.ts +45 -0
  128. package/dist/engine/indicators/ichimokuState.d.ts.map +1 -0
  129. package/dist/engine/indicators/ichimokuState.js +27 -0
  130. package/dist/engine/indicators/ichimokuState.js.map +1 -0
  131. package/dist/engine/indicators/indicator.worker.d.ts +6 -0
  132. package/dist/engine/indicators/indicator.worker.d.ts.map +1 -0
  133. package/dist/engine/indicators/indicator.worker.js +144 -0
  134. package/dist/engine/indicators/indicator.worker.js.map +1 -0
  135. package/dist/engine/indicators/indicatorDefinitionRegistry.d.ts +31 -0
  136. package/dist/engine/indicators/indicatorDefinitionRegistry.d.ts.map +1 -0
  137. package/dist/engine/indicators/indicatorDefinitionRegistry.js +38 -0
  138. package/dist/engine/indicators/indicatorDefinitionRegistry.js.map +1 -0
  139. package/dist/engine/indicators/indicatorMetadata.d.ts +88 -0
  140. package/dist/engine/indicators/indicatorMetadata.d.ts.map +1 -0
  141. package/dist/engine/indicators/indicatorMetadata.js +22 -0
  142. package/dist/engine/indicators/indicatorMetadata.js.map +1 -0
  143. package/dist/engine/indicators/indicatorRegistry.d.ts +58 -0
  144. package/dist/engine/indicators/indicatorRegistry.d.ts.map +1 -0
  145. package/dist/engine/indicators/indicatorRegistry.js +91 -0
  146. package/dist/engine/indicators/indicatorRegistry.js.map +1 -0
  147. package/dist/engine/indicators/indicatorRuntime.d.ts +132 -0
  148. package/dist/engine/indicators/indicatorRuntime.d.ts.map +1 -0
  149. package/dist/engine/indicators/indicatorRuntime.js +1354 -0
  150. package/dist/engine/indicators/indicatorRuntime.js.map +1 -0
  151. package/dist/engine/indicators/kamaState.d.ts +21 -0
  152. package/dist/engine/indicators/kamaState.d.ts.map +1 -0
  153. package/dist/engine/indicators/kamaState.js +20 -0
  154. package/dist/engine/indicators/kamaState.js.map +1 -0
  155. package/dist/engine/indicators/keltnerState.d.ts +28 -0
  156. package/dist/engine/indicators/keltnerState.d.ts.map +1 -0
  157. package/dist/engine/indicators/keltnerState.js +22 -0
  158. package/dist/engine/indicators/keltnerState.js.map +1 -0
  159. package/dist/engine/indicators/kstState.d.ts +22 -0
  160. package/dist/engine/indicators/kstState.d.ts.map +1 -0
  161. package/dist/engine/indicators/kstState.js +20 -0
  162. package/dist/engine/indicators/kstState.js.map +1 -0
  163. package/dist/engine/indicators/maState.d.ts +27 -0
  164. package/dist/engine/indicators/maState.d.ts.map +1 -0
  165. package/dist/engine/indicators/maState.js +18 -0
  166. package/dist/engine/indicators/maState.js.map +1 -0
  167. package/dist/engine/indicators/macdState.d.ts +59 -0
  168. package/dist/engine/indicators/macdState.d.ts.map +1 -0
  169. package/dist/engine/indicators/macdState.js +33 -0
  170. package/dist/engine/indicators/macdState.js.map +1 -0
  171. package/dist/engine/indicators/mfiState.d.ts +17 -0
  172. package/dist/engine/indicators/mfiState.d.ts.map +1 -0
  173. package/dist/engine/indicators/mfiState.js +13 -0
  174. package/dist/engine/indicators/mfiState.js.map +1 -0
  175. package/dist/engine/indicators/momState.d.ts +16 -0
  176. package/dist/engine/indicators/momState.d.ts.map +1 -0
  177. package/dist/engine/indicators/momState.js +12 -0
  178. package/dist/engine/indicators/momState.js.map +1 -0
  179. package/dist/engine/indicators/obvState.d.ts +15 -0
  180. package/dist/engine/indicators/obvState.d.ts.map +1 -0
  181. package/dist/engine/indicators/obvState.js +12 -0
  182. package/dist/engine/indicators/obvState.js.map +1 -0
  183. package/dist/engine/indicators/parkinsonState.d.ts +19 -0
  184. package/dist/engine/indicators/parkinsonState.d.ts.map +1 -0
  185. package/dist/engine/indicators/parkinsonState.js +14 -0
  186. package/dist/engine/indicators/parkinsonState.js.map +1 -0
  187. package/dist/engine/indicators/pivotState.d.ts +30 -0
  188. package/dist/engine/indicators/pivotState.d.ts.map +1 -0
  189. package/dist/engine/indicators/pivotState.js +20 -0
  190. package/dist/engine/indicators/pivotState.js.map +1 -0
  191. package/dist/engine/indicators/pvtState.d.ts +15 -0
  192. package/dist/engine/indicators/pvtState.d.ts.map +1 -0
  193. package/dist/engine/indicators/pvtState.js +12 -0
  194. package/dist/engine/indicators/pvtState.js.map +1 -0
  195. package/dist/engine/indicators/rocState.d.ts +17 -0
  196. package/dist/engine/indicators/rocState.d.ts.map +1 -0
  197. package/dist/engine/indicators/rocState.js +13 -0
  198. package/dist/engine/indicators/rocState.js.map +1 -0
  199. package/dist/engine/indicators/rsiState.d.ts +44 -0
  200. package/dist/engine/indicators/rsiState.d.ts.map +1 -0
  201. package/dist/engine/indicators/rsiState.js +32 -0
  202. package/dist/engine/indicators/rsiState.js.map +1 -0
  203. package/dist/engine/indicators/sarState.d.ts +27 -0
  204. package/dist/engine/indicators/sarState.d.ts.map +1 -0
  205. package/dist/engine/indicators/sarState.js +18 -0
  206. package/dist/engine/indicators/sarState.js.map +1 -0
  207. package/dist/engine/indicators/scheduler.d.ts +277 -0
  208. package/dist/engine/indicators/scheduler.d.ts.map +1 -0
  209. package/dist/engine/indicators/scheduler.js +1012 -0
  210. package/dist/engine/indicators/scheduler.js.map +1 -0
  211. package/dist/engine/indicators/soa.d.ts +116 -0
  212. package/dist/engine/indicators/soa.d.ts.map +1 -0
  213. package/dist/engine/indicators/soa.js +242 -0
  214. package/dist/engine/indicators/soa.js.map +1 -0
  215. package/dist/engine/indicators/stateComposer.d.ts +151 -0
  216. package/dist/engine/indicators/stateComposer.d.ts.map +1 -0
  217. package/dist/engine/indicators/stateComposer.js +1018 -0
  218. package/dist/engine/indicators/stateComposer.js.map +1 -0
  219. package/dist/engine/indicators/stochState.d.ts +19 -0
  220. package/dist/engine/indicators/stochState.d.ts.map +1 -0
  221. package/dist/engine/indicators/stochState.js +12 -0
  222. package/dist/engine/indicators/stochState.js.map +1 -0
  223. package/dist/engine/indicators/structureState.d.ts +44 -0
  224. package/dist/engine/indicators/structureState.d.ts.map +1 -0
  225. package/dist/engine/indicators/structureState.js +22 -0
  226. package/dist/engine/indicators/structureState.js.map +1 -0
  227. package/dist/engine/indicators/supertrendState.d.ts +23 -0
  228. package/dist/engine/indicators/supertrendState.d.ts.map +1 -0
  229. package/dist/engine/indicators/supertrendState.js +18 -0
  230. package/dist/engine/indicators/supertrendState.js.map +1 -0
  231. package/dist/engine/indicators/temaState.d.ts +17 -0
  232. package/dist/engine/indicators/temaState.d.ts.map +1 -0
  233. package/dist/engine/indicators/temaState.js +13 -0
  234. package/dist/engine/indicators/temaState.js.map +1 -0
  235. package/dist/engine/indicators/trixState.d.ts +21 -0
  236. package/dist/engine/indicators/trixState.d.ts.map +1 -0
  237. package/dist/engine/indicators/trixState.js +20 -0
  238. package/dist/engine/indicators/trixState.js.map +1 -0
  239. package/dist/engine/indicators/vmaState.d.ts +17 -0
  240. package/dist/engine/indicators/vmaState.d.ts.map +1 -0
  241. package/dist/engine/indicators/vmaState.js +13 -0
  242. package/dist/engine/indicators/vmaState.js.map +1 -0
  243. package/dist/engine/indicators/volumeProfileState.d.ts +35 -0
  244. package/dist/engine/indicators/volumeProfileState.d.ts.map +1 -0
  245. package/dist/engine/indicators/volumeProfileState.js +28 -0
  246. package/dist/engine/indicators/volumeProfileState.js.map +1 -0
  247. package/dist/engine/indicators/vwapState.d.ts +17 -0
  248. package/dist/engine/indicators/vwapState.d.ts.map +1 -0
  249. package/dist/engine/indicators/vwapState.js +15 -0
  250. package/dist/engine/indicators/vwapState.js.map +1 -0
  251. package/dist/engine/indicators/wmaState.d.ts +17 -0
  252. package/dist/engine/indicators/wmaState.d.ts.map +1 -0
  253. package/dist/engine/indicators/wmaState.js +13 -0
  254. package/dist/engine/indicators/wmaState.js.map +1 -0
  255. package/dist/engine/indicators/wmsrState.d.ts +16 -0
  256. package/dist/engine/indicators/wmsrState.d.ts.map +1 -0
  257. package/dist/engine/indicators/wmsrState.js +12 -0
  258. package/dist/engine/indicators/wmsrState.js.map +1 -0
  259. package/dist/engine/indicators/workerProtocol.d.ts +501 -0
  260. package/dist/engine/indicators/workerProtocol.d.ts.map +1 -0
  261. package/dist/engine/indicators/workerProtocol.js +20 -0
  262. package/dist/engine/indicators/workerProtocol.js.map +1 -0
  263. package/dist/engine/indicators/zonesState.d.ts +27 -0
  264. package/dist/engine/indicators/zonesState.d.ts.map +1 -0
  265. package/dist/engine/indicators/zonesState.js +18 -0
  266. package/dist/engine/indicators/zonesState.js.map +1 -0
  267. package/dist/engine/layout/pane.d.ts +104 -0
  268. package/dist/engine/layout/pane.d.ts.map +1 -0
  269. package/dist/engine/layout/pane.js +107 -0
  270. package/dist/engine/layout/pane.js.map +1 -0
  271. package/dist/engine/marker/registry.d.ts +175 -0
  272. package/dist/engine/marker/registry.d.ts.map +1 -0
  273. package/dist/engine/marker/registry.js +171 -0
  274. package/dist/engine/marker/registry.js.map +1 -0
  275. package/dist/engine/paneRenderer.d.ts +46 -0
  276. package/dist/engine/paneRenderer.d.ts.map +1 -0
  277. package/dist/engine/paneRenderer.js +121 -0
  278. package/dist/engine/paneRenderer.js.map +1 -0
  279. package/dist/engine/renderers/Indicator/atr.d.ts +18 -0
  280. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -0
  281. package/dist/engine/renderers/Indicator/atr.js +237 -0
  282. package/dist/engine/renderers/Indicator/atr.js.map +1 -0
  283. package/dist/engine/renderers/Indicator/boll.d.ts +3 -0
  284. package/dist/engine/renderers/Indicator/boll.d.ts.map +1 -0
  285. package/dist/engine/renderers/Indicator/boll.js +312 -0
  286. package/dist/engine/renderers/Indicator/boll.js.map +1 -0
  287. package/dist/engine/renderers/Indicator/cci.d.ts +23 -0
  288. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -0
  289. package/dist/engine/renderers/Indicator/cci.js +266 -0
  290. package/dist/engine/renderers/Indicator/cci.js.map +1 -0
  291. package/dist/engine/renderers/Indicator/chaikinVol.d.ts +5 -0
  292. package/dist/engine/renderers/Indicator/chaikinVol.d.ts.map +1 -0
  293. package/dist/engine/renderers/Indicator/chaikinVol.js +175 -0
  294. package/dist/engine/renderers/Indicator/chaikinVol.js.map +1 -0
  295. package/dist/engine/renderers/Indicator/cmf.d.ts +5 -0
  296. package/dist/engine/renderers/Indicator/cmf.d.ts.map +1 -0
  297. package/dist/engine/renderers/Indicator/cmf.js +175 -0
  298. package/dist/engine/renderers/Indicator/cmf.js.map +1 -0
  299. package/dist/engine/renderers/Indicator/dema.d.ts +6 -0
  300. package/dist/engine/renderers/Indicator/dema.d.ts.map +1 -0
  301. package/dist/engine/renderers/Indicator/dema.js +164 -0
  302. package/dist/engine/renderers/Indicator/dema.js.map +1 -0
  303. package/dist/engine/renderers/Indicator/donchian.d.ts +6 -0
  304. package/dist/engine/renderers/Indicator/donchian.d.ts.map +1 -0
  305. package/dist/engine/renderers/Indicator/donchian.js +181 -0
  306. package/dist/engine/renderers/Indicator/donchian.js.map +1 -0
  307. package/dist/engine/renderers/Indicator/ene.d.ts +3 -0
  308. package/dist/engine/renderers/Indicator/ene.d.ts.map +1 -0
  309. package/dist/engine/renderers/Indicator/ene.js +280 -0
  310. package/dist/engine/renderers/Indicator/ene.js.map +1 -0
  311. package/dist/engine/renderers/Indicator/expma.d.ts +3 -0
  312. package/dist/engine/renderers/Indicator/expma.d.ts.map +1 -0
  313. package/dist/engine/renderers/Indicator/expma.js +216 -0
  314. package/dist/engine/renderers/Indicator/expma.js.map +1 -0
  315. package/dist/engine/renderers/Indicator/fastk.d.ts +23 -0
  316. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -0
  317. package/dist/engine/renderers/Indicator/fastk.js +289 -0
  318. package/dist/engine/renderers/Indicator/fastk.js.map +1 -0
  319. package/dist/engine/renderers/Indicator/fib.d.ts +5 -0
  320. package/dist/engine/renderers/Indicator/fib.d.ts.map +1 -0
  321. package/dist/engine/renderers/Indicator/fib.js +182 -0
  322. package/dist/engine/renderers/Indicator/fib.js.map +1 -0
  323. package/dist/engine/renderers/Indicator/hma.d.ts +6 -0
  324. package/dist/engine/renderers/Indicator/hma.d.ts.map +1 -0
  325. package/dist/engine/renderers/Indicator/hma.js +164 -0
  326. package/dist/engine/renderers/Indicator/hma.js.map +1 -0
  327. package/dist/engine/renderers/Indicator/hv.d.ts +5 -0
  328. package/dist/engine/renderers/Indicator/hv.d.ts.map +1 -0
  329. package/dist/engine/renderers/Indicator/hv.js +162 -0
  330. package/dist/engine/renderers/Indicator/hv.js.map +1 -0
  331. package/dist/engine/renderers/Indicator/ichimoku.d.ts +6 -0
  332. package/dist/engine/renderers/Indicator/ichimoku.d.ts.map +1 -0
  333. package/dist/engine/renderers/Indicator/ichimoku.js +220 -0
  334. package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -0
  335. package/dist/engine/renderers/Indicator/index.d.ts +63 -0
  336. package/dist/engine/renderers/Indicator/index.d.ts.map +1 -0
  337. package/dist/engine/renderers/Indicator/index.js +204 -0
  338. package/dist/engine/renderers/Indicator/index.js.map +1 -0
  339. package/dist/engine/renderers/Indicator/indicatorData.d.ts +23 -0
  340. package/dist/engine/renderers/Indicator/indicatorData.d.ts.map +1 -0
  341. package/dist/engine/renderers/Indicator/indicatorData.js +617 -0
  342. package/dist/engine/renderers/Indicator/indicatorData.js.map +1 -0
  343. package/dist/engine/renderers/Indicator/kama.d.ts +6 -0
  344. package/dist/engine/renderers/Indicator/kama.d.ts.map +1 -0
  345. package/dist/engine/renderers/Indicator/kama.js +164 -0
  346. package/dist/engine/renderers/Indicator/kama.js.map +1 -0
  347. package/dist/engine/renderers/Indicator/keltner.d.ts +6 -0
  348. package/dist/engine/renderers/Indicator/keltner.d.ts.map +1 -0
  349. package/dist/engine/renderers/Indicator/keltner.js +181 -0
  350. package/dist/engine/renderers/Indicator/keltner.js.map +1 -0
  351. package/dist/engine/renderers/Indicator/kst.d.ts +23 -0
  352. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -0
  353. package/dist/engine/renderers/Indicator/kst.js +290 -0
  354. package/dist/engine/renderers/Indicator/kst.js.map +1 -0
  355. package/dist/engine/renderers/Indicator/ma.d.ts +4 -0
  356. package/dist/engine/renderers/Indicator/ma.d.ts.map +1 -0
  357. package/dist/engine/renderers/Indicator/ma.js +218 -0
  358. package/dist/engine/renderers/Indicator/ma.js.map +1 -0
  359. package/dist/engine/renderers/Indicator/macd.d.ts +51 -0
  360. package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -0
  361. package/dist/engine/renderers/Indicator/macd.js +432 -0
  362. package/dist/engine/renderers/Indicator/macd.js.map +1 -0
  363. package/dist/engine/renderers/Indicator/macdLegend.d.ts +13 -0
  364. package/dist/engine/renderers/Indicator/macdLegend.d.ts.map +1 -0
  365. package/dist/engine/renderers/Indicator/macdLegend.js +116 -0
  366. package/dist/engine/renderers/Indicator/macdLegend.js.map +1 -0
  367. package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts +11 -0
  368. package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts.map +1 -0
  369. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +220 -0
  370. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -0
  371. package/dist/engine/renderers/Indicator/mfi.d.ts +5 -0
  372. package/dist/engine/renderers/Indicator/mfi.d.ts.map +1 -0
  373. package/dist/engine/renderers/Indicator/mfi.js +180 -0
  374. package/dist/engine/renderers/Indicator/mfi.js.map +1 -0
  375. package/dist/engine/renderers/Indicator/mom.d.ts +23 -0
  376. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -0
  377. package/dist/engine/renderers/Indicator/mom.js +285 -0
  378. package/dist/engine/renderers/Indicator/mom.js.map +1 -0
  379. package/dist/engine/renderers/Indicator/obv.d.ts +5 -0
  380. package/dist/engine/renderers/Indicator/obv.d.ts.map +1 -0
  381. package/dist/engine/renderers/Indicator/obv.js +162 -0
  382. package/dist/engine/renderers/Indicator/obv.js.map +1 -0
  383. package/dist/engine/renderers/Indicator/parkinson.d.ts +5 -0
  384. package/dist/engine/renderers/Indicator/parkinson.d.ts.map +1 -0
  385. package/dist/engine/renderers/Indicator/parkinson.js +162 -0
  386. package/dist/engine/renderers/Indicator/parkinson.js.map +1 -0
  387. package/dist/engine/renderers/Indicator/pivot.d.ts +5 -0
  388. package/dist/engine/renderers/Indicator/pivot.d.ts.map +1 -0
  389. package/dist/engine/renderers/Indicator/pivot.js +181 -0
  390. package/dist/engine/renderers/Indicator/pivot.js.map +1 -0
  391. package/dist/engine/renderers/Indicator/pvt.d.ts +5 -0
  392. package/dist/engine/renderers/Indicator/pvt.d.ts.map +1 -0
  393. package/dist/engine/renderers/Indicator/pvt.js +162 -0
  394. package/dist/engine/renderers/Indicator/pvt.js.map +1 -0
  395. package/dist/engine/renderers/Indicator/roc.d.ts +6 -0
  396. package/dist/engine/renderers/Indicator/roc.d.ts.map +1 -0
  397. package/dist/engine/renderers/Indicator/roc.js +175 -0
  398. package/dist/engine/renderers/Indicator/roc.js.map +1 -0
  399. package/dist/engine/renderers/Indicator/rsi.d.ts +34 -0
  400. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -0
  401. package/dist/engine/renderers/Indicator/rsi.js +351 -0
  402. package/dist/engine/renderers/Indicator/rsi.js.map +1 -0
  403. package/dist/engine/renderers/Indicator/sar.d.ts +6 -0
  404. package/dist/engine/renderers/Indicator/sar.d.ts.map +1 -0
  405. package/dist/engine/renderers/Indicator/sar.js +146 -0
  406. package/dist/engine/renderers/Indicator/sar.js.map +1 -0
  407. package/dist/engine/renderers/Indicator/scale/atr_scale.d.ts +12 -0
  408. package/dist/engine/renderers/Indicator/scale/atr_scale.d.ts.map +1 -0
  409. package/dist/engine/renderers/Indicator/scale/atr_scale.js +13 -0
  410. package/dist/engine/renderers/Indicator/scale/atr_scale.js.map +1 -0
  411. package/dist/engine/renderers/Indicator/scale/cci_scale.d.ts +12 -0
  412. package/dist/engine/renderers/Indicator/scale/cci_scale.d.ts.map +1 -0
  413. package/dist/engine/renderers/Indicator/scale/cci_scale.js +13 -0
  414. package/dist/engine/renderers/Indicator/scale/cci_scale.js.map +1 -0
  415. package/dist/engine/renderers/Indicator/scale/fastk_scale.d.ts +12 -0
  416. package/dist/engine/renderers/Indicator/scale/fastk_scale.d.ts.map +1 -0
  417. package/dist/engine/renderers/Indicator/scale/fastk_scale.js +13 -0
  418. package/dist/engine/renderers/Indicator/scale/fastk_scale.js.map +1 -0
  419. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +39 -0
  420. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -0
  421. package/dist/engine/renderers/Indicator/scale/indicator_scale.js +120 -0
  422. package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -0
  423. package/dist/engine/renderers/Indicator/scale/kst_scale.d.ts +12 -0
  424. package/dist/engine/renderers/Indicator/scale/kst_scale.d.ts.map +1 -0
  425. package/dist/engine/renderers/Indicator/scale/kst_scale.js +13 -0
  426. package/dist/engine/renderers/Indicator/scale/kst_scale.js.map +1 -0
  427. package/dist/engine/renderers/Indicator/scale/macd_scale.d.ts +15 -0
  428. package/dist/engine/renderers/Indicator/scale/macd_scale.d.ts.map +1 -0
  429. package/dist/engine/renderers/Indicator/scale/macd_scale.js +16 -0
  430. package/dist/engine/renderers/Indicator/scale/macd_scale.js.map +1 -0
  431. package/dist/engine/renderers/Indicator/scale/mom_scale.d.ts +12 -0
  432. package/dist/engine/renderers/Indicator/scale/mom_scale.d.ts.map +1 -0
  433. package/dist/engine/renderers/Indicator/scale/mom_scale.js +13 -0
  434. package/dist/engine/renderers/Indicator/scale/mom_scale.js.map +1 -0
  435. package/dist/engine/renderers/Indicator/scale/rsi_scale.d.ts +12 -0
  436. package/dist/engine/renderers/Indicator/scale/rsi_scale.d.ts.map +1 -0
  437. package/dist/engine/renderers/Indicator/scale/rsi_scale.js +13 -0
  438. package/dist/engine/renderers/Indicator/scale/rsi_scale.js.map +1 -0
  439. package/dist/engine/renderers/Indicator/scale/stoch_scale.d.ts +12 -0
  440. package/dist/engine/renderers/Indicator/scale/stoch_scale.d.ts.map +1 -0
  441. package/dist/engine/renderers/Indicator/scale/stoch_scale.js +13 -0
  442. package/dist/engine/renderers/Indicator/scale/stoch_scale.js.map +1 -0
  443. package/dist/engine/renderers/Indicator/scale/volume_scale.d.ts +15 -0
  444. package/dist/engine/renderers/Indicator/scale/volume_scale.d.ts.map +1 -0
  445. package/dist/engine/renderers/Indicator/scale/volume_scale.js +19 -0
  446. package/dist/engine/renderers/Indicator/scale/volume_scale.js.map +1 -0
  447. package/dist/engine/renderers/Indicator/scale/wmsr_scale.d.ts +12 -0
  448. package/dist/engine/renderers/Indicator/scale/wmsr_scale.d.ts.map +1 -0
  449. package/dist/engine/renderers/Indicator/scale/wmsr_scale.js +13 -0
  450. package/dist/engine/renderers/Indicator/scale/wmsr_scale.js.map +1 -0
  451. package/dist/engine/renderers/Indicator/stoch.d.ts +23 -0
  452. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -0
  453. package/dist/engine/renderers/Indicator/stoch.js +329 -0
  454. package/dist/engine/renderers/Indicator/stoch.js.map +1 -0
  455. package/dist/engine/renderers/Indicator/structure.d.ts +5 -0
  456. package/dist/engine/renderers/Indicator/structure.d.ts.map +1 -0
  457. package/dist/engine/renderers/Indicator/structure.js +176 -0
  458. package/dist/engine/renderers/Indicator/structure.js.map +1 -0
  459. package/dist/engine/renderers/Indicator/subPaneConfig.d.ts +16 -0
  460. package/dist/engine/renderers/Indicator/subPaneConfig.d.ts.map +1 -0
  461. package/dist/engine/renderers/Indicator/subPaneConfig.js +194 -0
  462. package/dist/engine/renderers/Indicator/subPaneConfig.js.map +1 -0
  463. package/dist/engine/renderers/Indicator/supertrend.d.ts +6 -0
  464. package/dist/engine/renderers/Indicator/supertrend.d.ts.map +1 -0
  465. package/dist/engine/renderers/Indicator/supertrend.js +149 -0
  466. package/dist/engine/renderers/Indicator/supertrend.js.map +1 -0
  467. package/dist/engine/renderers/Indicator/tema.d.ts +6 -0
  468. package/dist/engine/renderers/Indicator/tema.d.ts.map +1 -0
  469. package/dist/engine/renderers/Indicator/tema.js +164 -0
  470. package/dist/engine/renderers/Indicator/tema.js.map +1 -0
  471. package/dist/engine/renderers/Indicator/trix.d.ts +6 -0
  472. package/dist/engine/renderers/Indicator/trix.d.ts.map +1 -0
  473. package/dist/engine/renderers/Indicator/trix.js +197 -0
  474. package/dist/engine/renderers/Indicator/trix.js.map +1 -0
  475. package/dist/engine/renderers/Indicator/vma.d.ts +5 -0
  476. package/dist/engine/renderers/Indicator/vma.d.ts.map +1 -0
  477. package/dist/engine/renderers/Indicator/vma.js +162 -0
  478. package/dist/engine/renderers/Indicator/vma.js.map +1 -0
  479. package/dist/engine/renderers/Indicator/volumeProfile.d.ts +5 -0
  480. package/dist/engine/renderers/Indicator/volumeProfile.d.ts.map +1 -0
  481. package/dist/engine/renderers/Indicator/volumeProfile.js +165 -0
  482. package/dist/engine/renderers/Indicator/volumeProfile.js.map +1 -0
  483. package/dist/engine/renderers/Indicator/vwap.d.ts +5 -0
  484. package/dist/engine/renderers/Indicator/vwap.d.ts.map +1 -0
  485. package/dist/engine/renderers/Indicator/vwap.js +162 -0
  486. package/dist/engine/renderers/Indicator/vwap.js.map +1 -0
  487. package/dist/engine/renderers/Indicator/wma.d.ts +6 -0
  488. package/dist/engine/renderers/Indicator/wma.d.ts.map +1 -0
  489. package/dist/engine/renderers/Indicator/wma.js +164 -0
  490. package/dist/engine/renderers/Indicator/wma.js.map +1 -0
  491. package/dist/engine/renderers/Indicator/wmsr.d.ts +23 -0
  492. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -0
  493. package/dist/engine/renderers/Indicator/wmsr.js +298 -0
  494. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -0
  495. package/dist/engine/renderers/Indicator/zones.d.ts +5 -0
  496. package/dist/engine/renderers/Indicator/zones.d.ts.map +1 -0
  497. package/dist/engine/renderers/Indicator/zones.js +151 -0
  498. package/dist/engine/renderers/Indicator/zones.js.map +1 -0
  499. package/dist/engine/renderers/candle.d.ts +22 -0
  500. package/dist/engine/renderers/candle.d.ts.map +1 -0
  501. package/dist/engine/renderers/candle.js +356 -0
  502. package/dist/engine/renderers/candle.js.map +1 -0
  503. package/dist/engine/renderers/crosshair.d.ts +18 -0
  504. package/dist/engine/renderers/crosshair.d.ts.map +1 -0
  505. package/dist/engine/renderers/crosshair.js +54 -0
  506. package/dist/engine/renderers/crosshair.js.map +1 -0
  507. package/dist/engine/renderers/customMarkers.d.ts +7 -0
  508. package/dist/engine/renderers/customMarkers.d.ts.map +1 -0
  509. package/dist/engine/renderers/customMarkers.js +145 -0
  510. package/dist/engine/renderers/customMarkers.js.map +1 -0
  511. package/dist/engine/renderers/extremaMarkers.d.ts +6 -0
  512. package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -0
  513. package/dist/engine/renderers/extremaMarkers.js +181 -0
  514. package/dist/engine/renderers/extremaMarkers.js.map +1 -0
  515. package/dist/engine/renderers/gridLines.d.ts +8 -0
  516. package/dist/engine/renderers/gridLines.d.ts.map +1 -0
  517. package/dist/engine/renderers/gridLines.js +84 -0
  518. package/dist/engine/renderers/gridLines.js.map +1 -0
  519. package/dist/engine/renderers/lastPrice.d.ts +10 -0
  520. package/dist/engine/renderers/lastPrice.d.ts.map +1 -0
  521. package/dist/engine/renderers/lastPrice.js +87 -0
  522. package/dist/engine/renderers/lastPrice.js.map +1 -0
  523. package/dist/engine/renderers/paneTitle.d.ts +41 -0
  524. package/dist/engine/renderers/paneTitle.d.ts.map +1 -0
  525. package/dist/engine/renderers/paneTitle.js +86 -0
  526. package/dist/engine/renderers/paneTitle.js.map +1 -0
  527. package/dist/engine/renderers/subVolume.d.ts +14 -0
  528. package/dist/engine/renderers/subVolume.d.ts.map +1 -0
  529. package/dist/engine/renderers/subVolume.js +247 -0
  530. package/dist/engine/renderers/subVolume.js.map +1 -0
  531. package/dist/engine/renderers/timeAxis.d.ts +15 -0
  532. package/dist/engine/renderers/timeAxis.d.ts.map +1 -0
  533. package/dist/engine/renderers/timeAxis.js +107 -0
  534. package/dist/engine/renderers/timeAxis.js.map +1 -0
  535. package/dist/engine/renderers/webgl/candleSurface.d.ts +81 -0
  536. package/dist/engine/renderers/webgl/candleSurface.d.ts.map +1 -0
  537. package/dist/engine/renderers/webgl/candleSurface.js +811 -0
  538. package/dist/engine/renderers/webgl/candleSurface.js.map +1 -0
  539. package/dist/engine/renderers/webgl/sharedWebGLSurface.d.ts +34 -0
  540. package/dist/engine/renderers/webgl/sharedWebGLSurface.d.ts.map +1 -0
  541. package/dist/engine/renderers/webgl/sharedWebGLSurface.js +102 -0
  542. package/dist/engine/renderers/webgl/sharedWebGLSurface.js.map +1 -0
  543. package/dist/engine/renderers/yAxis.d.ts +15 -0
  544. package/dist/engine/renderers/yAxis.d.ts.map +1 -0
  545. package/dist/engine/renderers/yAxis.js +93 -0
  546. package/dist/engine/renderers/yAxis.js.map +1 -0
  547. package/dist/engine/scale/logFormula.d.ts +67 -0
  548. package/dist/engine/scale/logFormula.d.ts.map +1 -0
  549. package/dist/engine/scale/logFormula.js +107 -0
  550. package/dist/engine/scale/logFormula.js.map +1 -0
  551. package/dist/engine/scale/price.d.ts +12 -0
  552. package/dist/engine/scale/price.d.ts.map +1 -0
  553. package/dist/engine/scale/price.js +20 -0
  554. package/dist/engine/scale/price.js.map +1 -0
  555. package/dist/engine/scale/priceScale.d.ts +88 -0
  556. package/dist/engine/scale/priceScale.d.ts.map +1 -0
  557. package/dist/engine/scale/priceScale.js +227 -0
  558. package/dist/engine/scale/priceScale.js.map +1 -0
  559. package/dist/engine/subPaneManager.d.ts +23 -0
  560. package/dist/engine/subPaneManager.d.ts.map +1 -0
  561. package/dist/engine/subPaneManager.js +342 -0
  562. package/dist/engine/subPaneManager.js.map +1 -0
  563. package/dist/engine/theme/colors.d.ts +223 -0
  564. package/dist/engine/theme/colors.d.ts.map +1 -0
  565. package/dist/engine/theme/colors.js +375 -0
  566. package/dist/engine/theme/colors.js.map +1 -0
  567. package/dist/engine/theme/fonts.d.ts +13 -0
  568. package/dist/engine/theme/fonts.d.ts.map +1 -0
  569. package/dist/engine/theme/fonts.js +18 -0
  570. package/dist/engine/theme/fonts.js.map +1 -0
  571. package/dist/engine/utils/klineConfig.d.ts +29 -0
  572. package/dist/engine/utils/klineConfig.d.ts.map +1 -0
  573. package/dist/engine/utils/klineConfig.js +46 -0
  574. package/dist/engine/utils/klineConfig.js.map +1 -0
  575. package/dist/engine/utils/tickCount.d.ts +9 -0
  576. package/dist/engine/utils/tickCount.d.ts.map +1 -0
  577. package/dist/engine/utils/tickCount.js +12 -0
  578. package/dist/engine/utils/tickCount.js.map +1 -0
  579. package/dist/engine/utils/tickPosition.d.ts +25 -0
  580. package/dist/engine/utils/tickPosition.d.ts.map +1 -0
  581. package/dist/engine/utils/tickPosition.js +141 -0
  582. package/dist/engine/utils/tickPosition.js.map +1 -0
  583. package/dist/engine/utils/zoom.d.ts +31 -0
  584. package/dist/engine/utils/zoom.d.ts.map +1 -0
  585. package/dist/engine/utils/zoom.js +43 -0
  586. package/dist/engine/utils/zoom.js.map +1 -0
  587. package/dist/engine/viewport/viewport.d.ts +32 -0
  588. package/dist/engine/viewport/viewport.d.ts.map +1 -0
  589. package/dist/engine/viewport/viewport.js +54 -0
  590. package/dist/engine/viewport/viewport.js.map +1 -0
  591. package/dist/index.d.ts +4 -0
  592. package/dist/index.d.ts.map +1 -0
  593. package/dist/index.js +4 -0
  594. package/dist/index.js.map +1 -0
  595. package/dist/plugin/ConfigManager.d.ts +32 -0
  596. package/dist/plugin/ConfigManager.d.ts.map +1 -0
  597. package/dist/plugin/ConfigManager.js +81 -0
  598. package/dist/plugin/ConfigManager.js.map +1 -0
  599. package/dist/plugin/EventBus.d.ts +38 -0
  600. package/dist/plugin/EventBus.d.ts.map +1 -0
  601. package/dist/plugin/EventBus.js +66 -0
  602. package/dist/plugin/EventBus.js.map +1 -0
  603. package/dist/plugin/HookSystem.d.ts +32 -0
  604. package/dist/plugin/HookSystem.d.ts.map +1 -0
  605. package/dist/plugin/HookSystem.js +86 -0
  606. package/dist/plugin/HookSystem.js.map +1 -0
  607. package/dist/plugin/PluginHost.d.ts +61 -0
  608. package/dist/plugin/PluginHost.d.ts.map +1 -0
  609. package/dist/plugin/PluginHost.js +196 -0
  610. package/dist/plugin/PluginHost.js.map +1 -0
  611. package/dist/plugin/PluginRegistry.d.ts +44 -0
  612. package/dist/plugin/PluginRegistry.d.ts.map +1 -0
  613. package/dist/plugin/PluginRegistry.js +77 -0
  614. package/dist/plugin/PluginRegistry.js.map +1 -0
  615. package/dist/plugin/StateStore.d.ts +42 -0
  616. package/dist/plugin/StateStore.d.ts.map +1 -0
  617. package/dist/plugin/StateStore.js +63 -0
  618. package/dist/plugin/StateStore.js.map +1 -0
  619. package/dist/plugin/index.d.ts +12 -0
  620. package/dist/plugin/index.d.ts.map +1 -0
  621. package/dist/plugin/index.js +15 -0
  622. package/dist/plugin/index.js.map +1 -0
  623. package/dist/plugin/rendererPluginManager.d.ts +81 -0
  624. package/dist/plugin/rendererPluginManager.d.ts.map +1 -0
  625. package/dist/plugin/rendererPluginManager.js +309 -0
  626. package/dist/plugin/rendererPluginManager.js.map +1 -0
  627. package/dist/plugin/stateKeys.d.ts +7 -0
  628. package/dist/plugin/stateKeys.d.ts.map +1 -0
  629. package/dist/plugin/stateKeys.js +7 -0
  630. package/dist/plugin/stateKeys.js.map +1 -0
  631. package/dist/plugin/types.d.ts +449 -0
  632. package/dist/plugin/types.d.ts.map +1 -0
  633. package/dist/plugin/types.js +63 -0
  634. package/dist/plugin/types.js.map +1 -0
  635. package/dist/reactivity/index.d.ts +3 -0
  636. package/dist/reactivity/index.d.ts.map +1 -0
  637. package/dist/reactivity/index.js +2 -0
  638. package/dist/reactivity/index.js.map +1 -0
  639. package/dist/reactivity/signal.d.ts +40 -0
  640. package/dist/reactivity/signal.d.ts.map +1 -0
  641. package/dist/reactivity/signal.js +92 -0
  642. package/dist/reactivity/signal.js.map +1 -0
  643. package/dist/semantic/controller.d.ts +41 -0
  644. package/dist/semantic/controller.d.ts.map +1 -0
  645. package/dist/semantic/controller.js +189 -0
  646. package/dist/semantic/controller.js.map +1 -0
  647. package/dist/semantic/drawShape.d.ts +19 -0
  648. package/dist/semantic/drawShape.d.ts.map +1 -0
  649. package/dist/semantic/drawShape.js +209 -0
  650. package/dist/semantic/drawShape.js.map +1 -0
  651. package/dist/semantic/index.d.ts +6 -0
  652. package/dist/semantic/index.d.ts.map +1 -0
  653. package/dist/semantic/index.js +4 -0
  654. package/dist/semantic/index.js.map +1 -0
  655. package/dist/semantic/schema.json +256 -0
  656. package/dist/semantic/types.d.ts +299 -0
  657. package/dist/semantic/types.d.ts.map +1 -0
  658. package/dist/semantic/types.js +6 -0
  659. package/dist/semantic/types.js.map +1 -0
  660. package/dist/semantic/validator.d.ts +48 -0
  661. package/dist/semantic/validator.d.ts.map +1 -0
  662. package/dist/semantic/validator.js +288 -0
  663. package/dist/semantic/validator.js.map +1 -0
  664. package/dist/types/kLine.d.ts +4 -0
  665. package/dist/types/kLine.d.ts.map +1 -0
  666. package/dist/types/kLine.js +12 -0
  667. package/dist/types/kLine.js.map +1 -0
  668. package/dist/types/price.d.ts +32 -0
  669. package/dist/types/price.d.ts.map +1 -0
  670. package/dist/types/price.js +19 -0
  671. package/dist/types/price.js.map +1 -0
  672. package/dist/types/volumePrice.d.ts +27 -0
  673. package/dist/types/volumePrice.d.ts.map +1 -0
  674. package/dist/types/volumePrice.js +23 -0
  675. package/dist/types/volumePrice.js.map +1 -0
  676. package/dist/utils/dateFormat.d.ts +84 -0
  677. package/dist/utils/dateFormat.d.ts.map +1 -0
  678. package/dist/utils/dateFormat.js +193 -0
  679. package/dist/utils/dateFormat.js.map +1 -0
  680. package/dist/utils/kLineDraw/axis.d.ts +151 -0
  681. package/dist/utils/kLineDraw/axis.d.ts.map +1 -0
  682. package/dist/utils/kLineDraw/axis.js +243 -0
  683. package/dist/utils/kLineDraw/axis.js.map +1 -0
  684. package/dist/utils/priceToY.d.ts +8 -0
  685. package/dist/utils/priceToY.d.ts.map +1 -0
  686. package/dist/utils/priceToY.js +19 -0
  687. package/dist/utils/priceToY.js.map +1 -0
  688. package/dist/utils/volumePrice.d.ts +55 -0
  689. package/dist/utils/volumePrice.d.ts.map +1 -0
  690. package/dist/utils/volumePrice.js +170 -0
  691. package/dist/utils/volumePrice.js.map +1 -0
  692. package/dist/version.d.ts +2 -0
  693. package/dist/version.d.ts.map +1 -0
  694. package/dist/version.js +3 -0
  695. package/dist/version.js.map +1 -0
  696. package/package.json +122 -0
  697. package/src/__tests__/signal.test.ts +124 -0
  698. package/src/config/chartSettings.ts +66 -0
  699. package/src/controllers/__tests__/drawing.test.ts +214 -0
  700. package/src/controllers/__tests__/indicatorSelector.test.ts +481 -0
  701. package/src/controllers/__tests__/toolbar.test.ts +225 -0
  702. package/src/controllers/createChartController.ts +665 -0
  703. package/src/controllers/createDrawingController.ts +96 -0
  704. package/src/controllers/createIndicatorSelectorController.ts +307 -0
  705. package/src/controllers/createToolbarController.ts +146 -0
  706. package/src/controllers/index.ts +19 -0
  707. package/src/controllers/types.ts +284 -0
  708. package/src/engine/__tests__/chart.dpr.test.ts +401 -0
  709. package/src/engine/__tests__/paneRenderer.resize.test.ts +92 -0
  710. package/src/engine/chart-store.ts +121 -0
  711. package/src/engine/chart.d.ts +618 -0
  712. package/src/engine/chart.ts +2815 -0
  713. package/src/engine/controller/__tests__/interaction.dpr.test.ts +259 -0
  714. package/src/engine/controller/interaction.ts +722 -0
  715. package/src/engine/controller/markerInteraction.ts +130 -0
  716. package/src/engine/controller/pinchTracker.ts +82 -0
  717. package/src/engine/controller/tooltipPosition.ts +48 -0
  718. package/src/engine/draw/__tests__/pixelAlign.spec.ts +177 -0
  719. package/src/engine/draw/pixelAlign.ts +260 -0
  720. package/src/engine/drawing/index.ts +655 -0
  721. package/src/engine/drawing/interaction.ts +842 -0
  722. package/src/engine/drawing/plugin.ts +343 -0
  723. package/src/engine/indicators/__tests__/__fixtures__/golden/atr.json +38 -0
  724. package/src/engine/indicators/__tests__/__fixtures__/golden/dema.json +14 -0
  725. package/src/engine/indicators/__tests__/__fixtures__/golden/hma.json +14 -0
  726. package/src/engine/indicators/__tests__/__fixtures__/golden/index.ts +55 -0
  727. package/src/engine/indicators/__tests__/__fixtures__/golden/kama.json +14 -0
  728. package/src/engine/indicators/__tests__/__fixtures__/golden/tema.json +14 -0
  729. package/src/engine/indicators/__tests__/__fixtures__/golden/wma.json +40 -0
  730. package/src/engine/indicators/__tests__/__fixtures__/synthetic.ts +65 -0
  731. package/src/engine/indicators/__tests__/_propertyAssertions.ts +76 -0
  732. package/src/engine/indicators/__tests__/atr.test.ts +153 -0
  733. package/src/engine/indicators/__tests__/calculators.test.ts +614 -0
  734. package/src/engine/indicators/__tests__/cmf-mfi.test.ts +100 -0
  735. package/src/engine/indicators/__tests__/dema.test.ts +73 -0
  736. package/src/engine/indicators/__tests__/donchian.test.ts +70 -0
  737. package/src/engine/indicators/__tests__/hma.test.ts +73 -0
  738. package/src/engine/indicators/__tests__/ichimoku.test.ts +105 -0
  739. package/src/engine/indicators/__tests__/kama.test.ts +80 -0
  740. package/src/engine/indicators/__tests__/keltner.test.ts +65 -0
  741. package/src/engine/indicators/__tests__/pivot-fib.test.ts +110 -0
  742. package/src/engine/indicators/__tests__/roc.test.ts +68 -0
  743. package/src/engine/indicators/__tests__/sar.test.ts +86 -0
  744. package/src/engine/indicators/__tests__/scheduler.test.ts +831 -0
  745. package/src/engine/indicators/__tests__/soa.test.ts +533 -0
  746. package/src/engine/indicators/__tests__/structure.test.ts +110 -0
  747. package/src/engine/indicators/__tests__/supertrend.test.ts +65 -0
  748. package/src/engine/indicators/__tests__/tema.test.ts +68 -0
  749. package/src/engine/indicators/__tests__/trix.test.ts +70 -0
  750. package/src/engine/indicators/__tests__/volatility.test.ts +117 -0
  751. package/src/engine/indicators/__tests__/volume.test.ts +115 -0
  752. package/src/engine/indicators/__tests__/volumeProfile.test.ts +74 -0
  753. package/src/engine/indicators/__tests__/vwap.test.ts +69 -0
  754. package/src/engine/indicators/__tests__/wma.test.ts +112 -0
  755. package/src/engine/indicators/__tests__/zones.test.ts +95 -0
  756. package/src/engine/indicators/atrState.ts +27 -0
  757. package/src/engine/indicators/bollState.ts +51 -0
  758. package/src/engine/indicators/calculators.ts +2593 -0
  759. package/src/engine/indicators/cciState.ts +25 -0
  760. package/src/engine/indicators/chaikinVolState.ts +32 -0
  761. package/src/engine/indicators/cmfState.ts +27 -0
  762. package/src/engine/indicators/demaState.ts +27 -0
  763. package/src/engine/indicators/donchianState.ts +43 -0
  764. package/src/engine/indicators/eneState.ts +43 -0
  765. package/src/engine/indicators/expmaState.ts +43 -0
  766. package/src/engine/indicators/fastkState.ts +25 -0
  767. package/src/engine/indicators/fibState.ts +41 -0
  768. package/src/engine/indicators/hmaState.ts +27 -0
  769. package/src/engine/indicators/hvState.ts +28 -0
  770. package/src/engine/indicators/ichimokuState.ts +70 -0
  771. package/src/engine/indicators/indicator.worker.ts +169 -0
  772. package/src/engine/indicators/indicatorDefinitionRegistry.ts +62 -0
  773. package/src/engine/indicators/indicatorMetadata.ts +110 -0
  774. package/src/engine/indicators/indicatorRegistry.ts +106 -0
  775. package/src/engine/indicators/indicatorRuntime.ts +1548 -0
  776. package/src/engine/indicators/kamaState.ts +34 -0
  777. package/src/engine/indicators/keltnerState.ts +49 -0
  778. package/src/engine/indicators/kstState.ts +42 -0
  779. package/src/engine/indicators/maState.ts +36 -0
  780. package/src/engine/indicators/macdState.ts +76 -0
  781. package/src/engine/indicators/mfiState.ts +27 -0
  782. package/src/engine/indicators/momState.ts +25 -0
  783. package/src/engine/indicators/obvState.ts +25 -0
  784. package/src/engine/indicators/parkinsonState.ts +28 -0
  785. package/src/engine/indicators/pivotState.ts +51 -0
  786. package/src/engine/indicators/pvtState.ts +25 -0
  787. package/src/engine/indicators/rocState.ts +27 -0
  788. package/src/engine/indicators/rsiState.ts +65 -0
  789. package/src/engine/indicators/sarState.ts +41 -0
  790. package/src/engine/indicators/scheduler.ts +1205 -0
  791. package/src/engine/indicators/soa.ts +352 -0
  792. package/src/engine/indicators/stateComposer.ts +1262 -0
  793. package/src/engine/indicators/stochState.ts +26 -0
  794. package/src/engine/indicators/structureState.ts +69 -0
  795. package/src/engine/indicators/supertrendState.ts +37 -0
  796. package/src/engine/indicators/temaState.ts +27 -0
  797. package/src/engine/indicators/trixState.ts +35 -0
  798. package/src/engine/indicators/vmaState.ts +27 -0
  799. package/src/engine/indicators/volumeProfileState.ts +63 -0
  800. package/src/engine/indicators/vwapState.ts +29 -0
  801. package/src/engine/indicators/wmaState.ts +27 -0
  802. package/src/engine/indicators/wmsrState.ts +25 -0
  803. package/src/engine/indicators/workerProtocol.ts +613 -0
  804. package/src/engine/indicators/zonesState.ts +47 -0
  805. package/src/engine/layout/pane.ts +161 -0
  806. package/src/engine/marker/registry.ts +266 -0
  807. package/src/engine/paneRenderer.ts +169 -0
  808. package/src/engine/renderers/Indicator/atr.ts +237 -0
  809. package/src/engine/renderers/Indicator/boll.ts +317 -0
  810. package/src/engine/renderers/Indicator/cci.ts +275 -0
  811. package/src/engine/renderers/Indicator/chaikinVol.ts +138 -0
  812. package/src/engine/renderers/Indicator/cmf.ts +137 -0
  813. package/src/engine/renderers/Indicator/dema.ts +136 -0
  814. package/src/engine/renderers/Indicator/donchian.ts +138 -0
  815. package/src/engine/renderers/Indicator/ene.ts +271 -0
  816. package/src/engine/renderers/Indicator/expma.ts +197 -0
  817. package/src/engine/renderers/Indicator/fastk.ts +316 -0
  818. package/src/engine/renderers/Indicator/fib.ts +141 -0
  819. package/src/engine/renderers/Indicator/hma.ts +136 -0
  820. package/src/engine/renderers/Indicator/hv.ts +124 -0
  821. package/src/engine/renderers/Indicator/ichimoku.ts +182 -0
  822. package/src/engine/renderers/Indicator/index.ts +241 -0
  823. package/src/engine/renderers/Indicator/indicatorData.ts +650 -0
  824. package/src/engine/renderers/Indicator/kama.ts +136 -0
  825. package/src/engine/renderers/Indicator/keltner.ts +138 -0
  826. package/src/engine/renderers/Indicator/kst.ts +302 -0
  827. package/src/engine/renderers/Indicator/ma.ts +200 -0
  828. package/src/engine/renderers/Indicator/macd.ts +477 -0
  829. package/src/engine/renderers/Indicator/macdLegend.ts +141 -0
  830. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +272 -0
  831. package/src/engine/renderers/Indicator/mfi.ts +142 -0
  832. package/src/engine/renderers/Indicator/mom.ts +311 -0
  833. package/src/engine/renderers/Indicator/obv.ts +123 -0
  834. package/src/engine/renderers/Indicator/parkinson.ts +124 -0
  835. package/src/engine/renderers/Indicator/pivot.ts +131 -0
  836. package/src/engine/renderers/Indicator/pvt.ts +123 -0
  837. package/src/engine/renderers/Indicator/roc.ts +143 -0
  838. package/src/engine/renderers/Indicator/rsi.ts +390 -0
  839. package/src/engine/renderers/Indicator/sar.ts +113 -0
  840. package/src/engine/renderers/Indicator/scale/atr_scale.ts +19 -0
  841. package/src/engine/renderers/Indicator/scale/cci_scale.ts +19 -0
  842. package/src/engine/renderers/Indicator/scale/fastk_scale.ts +19 -0
  843. package/src/engine/renderers/Indicator/scale/indicator_scale.ts +204 -0
  844. package/src/engine/renderers/Indicator/scale/kst_scale.ts +19 -0
  845. package/src/engine/renderers/Indicator/scale/macd_scale.ts +22 -0
  846. package/src/engine/renderers/Indicator/scale/mom_scale.ts +19 -0
  847. package/src/engine/renderers/Indicator/scale/rsi_scale.ts +19 -0
  848. package/src/engine/renderers/Indicator/scale/stoch_scale.ts +19 -0
  849. package/src/engine/renderers/Indicator/scale/volume_scale.ts +26 -0
  850. package/src/engine/renderers/Indicator/scale/wmsr_scale.ts +19 -0
  851. package/src/engine/renderers/Indicator/stoch.ts +359 -0
  852. package/src/engine/renderers/Indicator/structure.ts +126 -0
  853. package/src/engine/renderers/Indicator/subPaneConfig.ts +265 -0
  854. package/src/engine/renderers/Indicator/supertrend.ts +115 -0
  855. package/src/engine/renderers/Indicator/tema.ts +136 -0
  856. package/src/engine/renderers/Indicator/trix.ts +158 -0
  857. package/src/engine/renderers/Indicator/vma.ts +124 -0
  858. package/src/engine/renderers/Indicator/volumeProfile.ts +125 -0
  859. package/src/engine/renderers/Indicator/vwap.ts +123 -0
  860. package/src/engine/renderers/Indicator/wma.ts +136 -0
  861. package/src/engine/renderers/Indicator/wmsr.ts +328 -0
  862. package/src/engine/renderers/Indicator/zones.ts +105 -0
  863. package/src/engine/renderers/__tests__/boll.renderer.test.ts +314 -0
  864. package/src/engine/renderers/__tests__/ene.renderer.test.ts +305 -0
  865. package/src/engine/renderers/__tests__/expma.renderer.test.ts +279 -0
  866. package/src/engine/renderers/__tests__/ma.renderer.test.ts +426 -0
  867. package/src/engine/renderers/__tests__/mainIndicatorLegend.renderer.test.ts +502 -0
  868. package/src/engine/renderers/__tests__/yAxis.renderer.test.ts +173 -0
  869. package/src/engine/renderers/candle.ts +459 -0
  870. package/src/engine/renderers/crosshair.ts +69 -0
  871. package/src/engine/renderers/customMarkers.ts +162 -0
  872. package/src/engine/renderers/extremaMarkers.ts +246 -0
  873. package/src/engine/renderers/gridLines.ts +90 -0
  874. package/src/engine/renderers/lastPrice.ts +97 -0
  875. package/src/engine/renderers/paneTitle.ts +136 -0
  876. package/src/engine/renderers/subVolume.ts +236 -0
  877. package/src/engine/renderers/timeAxis.ts +121 -0
  878. package/src/engine/renderers/webgl/candleSurface.ts +955 -0
  879. package/src/engine/renderers/webgl/sharedWebGLSurface.ts +146 -0
  880. package/src/engine/renderers/yAxis.ts +105 -0
  881. package/src/engine/scale/__tests__/logFormula.spec.ts +148 -0
  882. package/src/engine/scale/logFormula.ts +130 -0
  883. package/src/engine/scale/price.ts +39 -0
  884. package/src/engine/scale/priceScale.ts +264 -0
  885. package/src/engine/subPaneManager.ts +427 -0
  886. package/src/engine/theme/colors.ts +642 -0
  887. package/src/engine/theme/fonts.ts +20 -0
  888. package/src/engine/utils/klineConfig.ts +49 -0
  889. package/src/engine/utils/tickCount.ts +11 -0
  890. package/src/engine/utils/tickPosition.ts +214 -0
  891. package/src/engine/utils/zoom.ts +83 -0
  892. package/src/engine/viewport/viewport.ts +67 -0
  893. package/src/index.ts +3 -0
  894. package/src/plugin/ConfigManager.ts +93 -0
  895. package/src/plugin/EventBus.ts +77 -0
  896. package/src/plugin/HookSystem.ts +106 -0
  897. package/src/plugin/PluginHost.ts +243 -0
  898. package/src/plugin/PluginRegistry.ts +92 -0
  899. package/src/plugin/StateStore.ts +73 -0
  900. package/src/plugin/index.ts +19 -0
  901. package/src/plugin/rendererPluginManager.ts +368 -0
  902. package/src/plugin/stateKeys.ts +8 -0
  903. package/src/plugin/types.ts +526 -0
  904. package/src/reactivity/index.ts +2 -0
  905. package/src/reactivity/signal.ts +119 -0
  906. package/src/semantic/controller.ts +251 -0
  907. package/src/semantic/drawShape.ts +260 -0
  908. package/src/semantic/index.ts +28 -0
  909. package/src/semantic/schema.json +256 -0
  910. package/src/semantic/types.ts +251 -0
  911. package/src/semantic/validator.ts +349 -0
  912. package/src/types/kLine.ts +13 -0
  913. package/src/types/price.ts +56 -0
  914. package/src/types/volumePrice.ts +33 -0
  915. package/src/utils/dateFormat.ts +208 -0
  916. package/src/utils/kLineDraw/axis.ts +562 -0
  917. package/src/utils/priceToY.ts +34 -0
  918. package/src/utils/volumePrice.ts +203 -0
  919. package/src/version.ts +1 -0
@@ -0,0 +1,533 @@
1
+ import { describe, it, expect, beforeAll } from 'vitest'
2
+ import type { KLineData } from '@/types/price'
3
+ import {
4
+ SharedKLineBuffer,
5
+ getClosesView,
6
+ getHighsLowsViews,
7
+ getOHLCViews,
8
+ type KLineSoALayout,
9
+ } from '../soa'
10
+ import {
11
+ calcBOLLData,
12
+ calcBOLLDataSoA,
13
+ calcEXPMAData,
14
+ calcEXPMADataSoA,
15
+ calcENEData,
16
+ calcENEDataSoA,
17
+ calcMAData,
18
+ calcMADataSoA,
19
+ calcRSIData,
20
+ calcRSIDataSoA,
21
+ calcCCIData,
22
+ calcCCIDataSoA,
23
+ calcSTOCHData,
24
+ calcSTOCHDataSoA,
25
+ calcMOMData,
26
+ calcMOMDataSoA,
27
+ calcWMSRData,
28
+ calcWMSRDataSoA,
29
+ calcKSTData,
30
+ calcKSTDataSoA,
31
+ calcFASTKData,
32
+ calcFASTKDataSoA,
33
+ calcMACDData,
34
+ calcMACDDataSoA,
35
+ } from '../calculators'
36
+
37
+ /**
38
+ * 生成测试用的 K线数据
39
+ */
40
+ function generateTestData(length: number): KLineData[] {
41
+ const data: KLineData[] = []
42
+ let price = 100
43
+ const now = Date.now()
44
+
45
+ for (let i = 0; i < length; i++) {
46
+ const change = (Math.random() - 0.5) * 5
47
+ const open = price
48
+ const close = price + change
49
+ const high = Math.max(open, close) + Math.random() * 2
50
+ const low = Math.min(open, close) - Math.random() * 2
51
+
52
+ data.push({
53
+ timestamp: now + i * 60000, // 每分钟
54
+ open,
55
+ high,
56
+ low,
57
+ close,
58
+ volume: Math.floor(Math.random() * 1000000),
59
+ turnover: Math.floor(Math.random() * 100000000),
60
+ })
61
+
62
+ price = close
63
+ }
64
+
65
+ return data
66
+ }
67
+
68
+ /**
69
+ * 比较两个数字数组,考虑浮点精度误差
70
+ */
71
+ function compareNumberArrays(
72
+ a: (number | undefined)[],
73
+ b: (number | undefined)[],
74
+ epsilon: number = 1e-10
75
+ ): boolean {
76
+ if (a.length !== b.length) return false
77
+
78
+ for (let i = 0; i < a.length; i++) {
79
+ const va = a[i]
80
+ const vb = b[i]
81
+
82
+ if (va === undefined && vb === undefined) continue
83
+ if (va === undefined || vb === undefined) return false
84
+ if (Math.abs(va - vb) > epsilon) return false
85
+ }
86
+
87
+ return true
88
+ }
89
+
90
+ describe('SharedKLineBuffer', () => {
91
+ const testDataLength = 100
92
+ let testData: KLineData[]
93
+
94
+ beforeAll(() => {
95
+ testData = generateTestData(testDataLength)
96
+ })
97
+
98
+ describe('detectSupport', () => {
99
+ it('应该返回布尔值', () => {
100
+ const result = SharedKLineBuffer.detectSupport()
101
+ expect(typeof result).toBe('boolean')
102
+ })
103
+ })
104
+
105
+ describe('fromKLineData', () => {
106
+ it('应该正确转换 KLineData[] 到 SoA 布局', () => {
107
+ const layout = SharedKLineBuffer.fromKLineData(testData)
108
+
109
+ expect(layout.length).toBe(testDataLength)
110
+ expect(layout.timestamps.length).toBe(testDataLength)
111
+ expect(layout.opens.length).toBe(testDataLength)
112
+ expect(layout.highs.length).toBe(testDataLength)
113
+ expect(layout.lows.length).toBe(testDataLength)
114
+ expect(layout.closes.length).toBe(testDataLength)
115
+ expect(layout.volumes.length).toBe(testDataLength)
116
+ expect(layout.turnovers.length).toBe(testDataLength)
117
+ })
118
+
119
+ it('应该正确填充数据', () => {
120
+ const layout = SharedKLineBuffer.fromKLineData(testData)
121
+
122
+ for (let i = 0; i < testDataLength; i++) {
123
+ const original = testData[i]!
124
+ expect(layout.timestamps[i]).toBe(original.timestamp)
125
+ expect(layout.opens[i]).toBe(original.open)
126
+ expect(layout.highs[i]).toBe(original.high)
127
+ expect(layout.lows[i]).toBe(original.low)
128
+ expect(layout.closes[i]).toBe(original.close)
129
+ expect(layout.volumes[i]).toBe(original.volume ?? 0)
130
+ expect(layout.turnovers[i]).toBe(original.turnover ?? 0)
131
+ }
132
+ })
133
+
134
+ it('应该正确检测 hasVolume 和 hasTurnover', () => {
135
+ const dataWithVolume = generateTestData(10)
136
+ const layoutWithVolume = SharedKLineBuffer.fromKLineData(dataWithVolume)
137
+ expect(layoutWithVolume.hasVolume).toBe(true)
138
+ expect(layoutWithVolume.hasTurnover).toBe(true)
139
+
140
+ const dataWithoutVolume: KLineData[] = dataWithVolume.map(d => ({
141
+ timestamp: d.timestamp,
142
+ open: d.open,
143
+ high: d.high,
144
+ low: d.low,
145
+ close: d.close,
146
+ }))
147
+ const layoutWithoutVolume = SharedKLineBuffer.fromKLineData(dataWithoutVolume)
148
+ expect(layoutWithoutVolume.hasVolume).toBe(false)
149
+ expect(layoutWithoutVolume.hasTurnover).toBe(false)
150
+ })
151
+
152
+ it('应该正确计算缓冲区大小', () => {
153
+ const layout = SharedKLineBuffer.fromKLineData(testData)
154
+ const expectedByteLength = testDataLength * 8 * 7 // 7 列 x 8 字节
155
+ expect(layout.buffer.byteLength).toBe(expectedByteLength)
156
+ })
157
+
158
+ it('isShared 应该与 detectSupport 一致', () => {
159
+ const layout = SharedKLineBuffer.fromKLineData(testData, true)
160
+ expect(layout.isShared).toBe(SharedKLineBuffer.detectSupport())
161
+
162
+ const layoutArrayBuffer = SharedKLineBuffer.fromKLineData(testData, false)
163
+ expect(layoutArrayBuffer.isShared).toBe(false)
164
+ })
165
+ })
166
+
167
+ describe('toKLineData', () => {
168
+ it('应该正确将 SoA 转换回 AoS', () => {
169
+ const layout = SharedKLineBuffer.fromKLineData(testData)
170
+ const restored = SharedKLineBuffer.toKLineData(layout)
171
+
172
+ expect(restored.length).toBe(testData.length)
173
+
174
+ for (let i = 0; i < testData.length; i++) {
175
+ const original = testData[i]!
176
+ const recovered = restored[i]!
177
+
178
+ expect(recovered.timestamp).toBe(original.timestamp)
179
+ expect(recovered.open).toBe(original.open)
180
+ expect(recovered.high).toBe(original.high)
181
+ expect(recovered.low).toBe(original.low)
182
+ expect(recovered.close).toBe(original.close)
183
+ expect(recovered.volume).toBe(original.volume)
184
+ expect(recovered.turnover).toBe(original.turnover)
185
+ }
186
+ })
187
+
188
+ it('应该正确处理缺失的 volume 和 turnover', () => {
189
+ const dataWithoutVolume: KLineData[] = testData.slice(0, 10).map(d => ({
190
+ timestamp: d.timestamp,
191
+ open: d.open,
192
+ high: d.high,
193
+ low: d.low,
194
+ close: d.close,
195
+ }))
196
+ const layout = SharedKLineBuffer.fromKLineData(dataWithoutVolume)
197
+ const restored = SharedKLineBuffer.toKLineData(layout)
198
+
199
+ for (const item of restored) {
200
+ expect(item.volume).toBeUndefined()
201
+ expect(item.turnover).toBeUndefined()
202
+ }
203
+ })
204
+ })
205
+
206
+ describe('roundtrip conversion', () => {
207
+ it('AoS -> SoA -> AoS 应该保持数据一致性', () => {
208
+ const layout = SharedKLineBuffer.fromKLineData(testData)
209
+ const restored = SharedKLineBuffer.toKLineData(layout)
210
+
211
+ expect(restored).toEqual(testData)
212
+ })
213
+ })
214
+
215
+ describe('updateExisting', () => {
216
+ it('相同长度数据应该复用缓冲区', () => {
217
+ const layout = SharedKLineBuffer.fromKLineData(testData)
218
+ const originalBuffer = layout.buffer
219
+
220
+ // 修改数据但保持相同长度
221
+ const newData = generateTestData(testDataLength)
222
+ const updated = SharedKLineBuffer.updateExisting(layout, newData)
223
+
224
+ expect(updated.buffer).toBe(originalBuffer)
225
+ expect(updated.length).toBe(testDataLength)
226
+ })
227
+
228
+ it('不同长度数据应该创建新缓冲区', () => {
229
+ const layout = SharedKLineBuffer.fromKLineData(testData)
230
+ const originalBuffer = layout.buffer
231
+
232
+ const newData = generateTestData(testDataLength + 10)
233
+ const updated = SharedKLineBuffer.updateExisting(layout, newData)
234
+
235
+ expect(updated.buffer).not.toBe(originalBuffer)
236
+ expect(updated.length).toBe(testDataLength + 10)
237
+ })
238
+
239
+ it('应该正确更新数据内容', () => {
240
+ const layout = SharedKLineBuffer.fromKLineData(testData)
241
+ const newData = generateTestData(testDataLength)
242
+
243
+ SharedKLineBuffer.updateExisting(layout, newData)
244
+
245
+ for (let i = 0; i < testDataLength; i++) {
246
+ expect(layout.timestamps[i]).toBe(newData[i]!.timestamp)
247
+ expect(layout.closes[i]).toBe(newData[i]!.close)
248
+ }
249
+ })
250
+ })
251
+
252
+ describe('createSubview', () => {
253
+ it('应该创建正确的子视图', () => {
254
+ const layout = SharedKLineBuffer.fromKLineData(testData)
255
+ const subview = SharedKLineBuffer.createSubview(layout, 10, 30)
256
+
257
+ expect(subview.length).toBe(20)
258
+ expect(subview.buffer).toBe(layout.buffer)
259
+ })
260
+
261
+ it('子视图应该共享同一缓冲区', () => {
262
+ const layout = SharedKLineBuffer.fromKLineData(testData)
263
+ const subview = SharedKLineBuffer.createSubview(layout, 10, 30)
264
+
265
+ // 修改子视图应该影响原视图
266
+ subview.closes[0] = 999.99
267
+ expect(layout.closes[10]).toBe(999.99)
268
+ })
269
+
270
+ it('越界范围应该自动截断', () => {
271
+ const layout = SharedKLineBuffer.fromKLineData(testData)
272
+ const subview = SharedKLineBuffer.createSubview(layout, testDataLength - 5, testDataLength + 10)
273
+
274
+ expect(subview.length).toBe(5)
275
+ })
276
+
277
+ it('无效范围应该抛出错误', () => {
278
+ const layout = SharedKLineBuffer.fromKLineData(testData)
279
+ expect(() => SharedKLineBuffer.createSubview(layout, 50, 50)).toThrow()
280
+ expect(() => SharedKLineBuffer.createSubview(layout, 50, 40)).toThrow()
281
+ })
282
+ })
283
+
284
+ describe('getBufferInfo', () => {
285
+ it('应该返回正确的缓冲区信息', () => {
286
+ const layout = SharedKLineBuffer.fromKLineData(testData)
287
+ const info = SharedKLineBuffer.getBufferInfo(layout)
288
+
289
+ expect(info.byteLength).toBe(layout.buffer.byteLength)
290
+ expect(info.isShared).toBe(layout.isShared)
291
+ expect(info.length).toBe(layout.length)
292
+ expect(info.columns).toHaveLength(7)
293
+ })
294
+ })
295
+
296
+ describe('helper functions', () => {
297
+ it('getClosesView 应该返回 closes 数组', () => {
298
+ const layout = SharedKLineBuffer.fromKLineData(testData)
299
+ const closes = getClosesView(layout)
300
+ expect(closes).toBe(layout.closes)
301
+ })
302
+
303
+ it('getHighsLowsViews 应该返回 highs 和 lows', () => {
304
+ const layout = SharedKLineBuffer.fromKLineData(testData)
305
+ const { highs, lows } = getHighsLowsViews(layout)
306
+ expect(highs).toBe(layout.highs)
307
+ expect(lows).toBe(layout.lows)
308
+ })
309
+
310
+ it('getOHLCViews 应该返回全部价格视图', () => {
311
+ const layout = SharedKLineBuffer.fromKLineData(testData)
312
+ const views = getOHLCViews(layout)
313
+ expect(views.opens).toBe(layout.opens)
314
+ expect(views.highs).toBe(layout.highs)
315
+ expect(views.lows).toBe(layout.lows)
316
+ expect(views.closes).toBe(layout.closes)
317
+ })
318
+ })
319
+ })
320
+
321
+ describe('SoA Calculator Wrappers', () => {
322
+ const testDataLength = 200
323
+ let testData: KLineData[]
324
+ let layout: KLineSoALayout
325
+
326
+ beforeAll(() => {
327
+ testData = generateTestData(testDataLength)
328
+ layout = SharedKLineBuffer.fromKLineData(testData)
329
+ })
330
+
331
+ describe('calcBOLLDataSoA', () => {
332
+ it('SoA 结果应该与 AoS 结果一致', () => {
333
+ const aosResult = calcBOLLData(testData, 20, 2)
334
+ const soaResult = calcBOLLDataSoA(layout, 20, 2)
335
+
336
+ expect(soaResult.length).toBe(aosResult.length)
337
+
338
+ for (let i = 0; i < aosResult.length; i++) {
339
+ const a = aosResult[i]
340
+ const s = soaResult[i]
341
+
342
+ if (a === undefined) {
343
+ expect(s).toBeUndefined()
344
+ } else {
345
+ expect(s).toBeDefined()
346
+ expect(s!.upper).toBeCloseTo(a.upper, 10)
347
+ expect(s!.middle).toBeCloseTo(a.middle, 10)
348
+ expect(s!.lower).toBeCloseTo(a.lower, 10)
349
+ }
350
+ }
351
+ })
352
+ })
353
+
354
+ describe('calcEXPMADataSoA', () => {
355
+ it('SoA 结果应该与 AoS 结果一致', () => {
356
+ const aosResult = calcEXPMAData(testData, 12, 50)
357
+ const soaResult = calcEXPMADataSoA(layout, 12, 50)
358
+
359
+ for (let i = 0; i < aosResult.length; i++) {
360
+ const a = aosResult[i]
361
+ const s = soaResult[i]
362
+
363
+ if (a === undefined) {
364
+ expect(s).toBeUndefined()
365
+ } else {
366
+ expect(s!.fast).toBeCloseTo(a.fast, 10)
367
+ expect(s!.slow).toBeCloseTo(a.slow, 10)
368
+ }
369
+ }
370
+ })
371
+ })
372
+
373
+ describe('calcENEDataSoA', () => {
374
+ it('SoA 结果应该与 AoS 结果一致', () => {
375
+ const aosResult = calcENEData(testData, 10, 11)
376
+ const soaResult = calcENEDataSoA(layout, 10, 11)
377
+
378
+ for (let i = 0; i < aosResult.length; i++) {
379
+ const a = aosResult[i]
380
+ const s = soaResult[i]
381
+
382
+ if (a === undefined) {
383
+ expect(s).toBeUndefined()
384
+ } else {
385
+ expect(s!.upper).toBeCloseTo(a.upper, 10)
386
+ expect(s!.middle).toBeCloseTo(a.middle, 10)
387
+ expect(s!.lower).toBeCloseTo(a.lower, 10)
388
+ }
389
+ }
390
+ })
391
+ })
392
+
393
+ describe('calcMADataSoA', () => {
394
+ it('SoA 结果应该与 AoS 结果一致', () => {
395
+ const aosResult = calcMAData(testData, 20)
396
+ const soaResult = calcMADataSoA(layout, 20)
397
+
398
+ expect(compareNumberArrays(aosResult, soaResult)).toBe(true)
399
+ })
400
+ })
401
+
402
+ describe('calcRSIDataSoA', () => {
403
+ it('SoA 结果应该与 AoS 结果一致', () => {
404
+ const aosResult = calcRSIData(testData, 14)
405
+ const soaResult = calcRSIDataSoA(layout, 14)
406
+
407
+ expect(compareNumberArrays(aosResult, soaResult)).toBe(true)
408
+ })
409
+ })
410
+
411
+ describe('calcCCIDataSoA', () => {
412
+ it('SoA 结果应该与 AoS 结果一致', () => {
413
+ const aosResult = calcCCIData(testData, 14)
414
+ const soaResult = calcCCIDataSoA(layout, 14)
415
+
416
+ expect(compareNumberArrays(aosResult, soaResult)).toBe(true)
417
+ })
418
+ })
419
+
420
+ describe('calcSTOCHDataSoA', () => {
421
+ it('SoA 结果应该与 AoS 结果一致', () => {
422
+ const aosResult = calcSTOCHData(testData, 9, 3)
423
+ const soaResult = calcSTOCHDataSoA(layout, 9, 3)
424
+
425
+ for (let i = 0; i < aosResult.length; i++) {
426
+ const a = aosResult[i]
427
+ const s = soaResult[i]
428
+
429
+ if (a === undefined) {
430
+ expect(s).toBeUndefined()
431
+ } else {
432
+ expect(s!.k).toBeCloseTo(a.k, 10)
433
+ expect(s!.d).toBeCloseTo(a.d, 10)
434
+ }
435
+ }
436
+ })
437
+ })
438
+
439
+ describe('calcMOMDataSoA', () => {
440
+ it('SoA 结果应该与 AoS 结果一致', () => {
441
+ const aosResult = calcMOMData(testData, 10)
442
+ const soaResult = calcMOMDataSoA(layout, 10)
443
+
444
+ expect(compareNumberArrays(aosResult, soaResult)).toBe(true)
445
+ })
446
+ })
447
+
448
+ describe('calcWMSRDataSoA', () => {
449
+ it('SoA 结果应该与 AoS 结果一致', () => {
450
+ const aosResult = calcWMSRData(testData, 14)
451
+ const soaResult = calcWMSRDataSoA(layout, 14)
452
+
453
+ expect(compareNumberArrays(aosResult, soaResult)).toBe(true)
454
+ })
455
+ })
456
+
457
+ describe('calcKSTDataSoA', () => {
458
+ it('SoA 结果应该与 AoS 结果一致', () => {
459
+ const aosResult = calcKSTData(testData, 10, 15, 20, 30, 9)
460
+ const soaResult = calcKSTDataSoA(layout, 10, 15, 20, 30, 9)
461
+
462
+ for (let i = 0; i < aosResult.length; i++) {
463
+ const a = aosResult[i]
464
+ const s = soaResult[i]
465
+
466
+ if (a === undefined) {
467
+ expect(s).toBeUndefined()
468
+ } else {
469
+ expect(s!.kst).toBeCloseTo(a.kst, 10)
470
+ expect(s!.signal).toBeCloseTo(a.signal, 10)
471
+ }
472
+ }
473
+ })
474
+ })
475
+
476
+ describe('calcFASTKDataSoA', () => {
477
+ it('SoA 结果应该与 AoS 结果一致', () => {
478
+ const aosResult = calcFASTKData(testData, 9)
479
+ const soaResult = calcFASTKDataSoA(layout, 9)
480
+
481
+ expect(compareNumberArrays(aosResult, soaResult)).toBe(true)
482
+ })
483
+ })
484
+
485
+ describe('calcMACDDataSoA', () => {
486
+ it('SoA 结果应该与 AoS 结果一致', () => {
487
+ const aosResult = calcMACDData(testData, 12, 26, 9)
488
+ const soaResult = calcMACDDataSoA(layout, 12, 26, 9)
489
+
490
+ for (let i = 0; i < aosResult.length; i++) {
491
+ const a = aosResult[i]
492
+ const s = soaResult[i]
493
+
494
+ if (a === undefined) {
495
+ expect(s).toBeUndefined()
496
+ } else {
497
+ expect(s!.dif).toBeCloseTo(a.dif, 10)
498
+ expect(s!.dea).toBeCloseTo(a.dea, 10)
499
+ expect(s!.macd).toBeCloseTo(a.macd, 10)
500
+ }
501
+ }
502
+ })
503
+ })
504
+ })
505
+
506
+ describe('SoA Performance', () => {
507
+ it('大容量数据转换应该高效', () => {
508
+ const largeData = generateTestData(10000)
509
+
510
+ const start = performance.now()
511
+ const layout = SharedKLineBuffer.fromKLineData(largeData)
512
+ const layoutTime = performance.now() - start
513
+
514
+ const start2 = performance.now()
515
+ const restored = SharedKLineBuffer.toKLineData(layout)
516
+ const restoreTime = performance.now() - start2
517
+
518
+ // 转换应该在合理时间内完成(10K 数据 < 100ms)
519
+ expect(layoutTime).toBeLessThan(100)
520
+ expect(restoreTime).toBeLessThan(100)
521
+ expect(restored.length).toBe(10000)
522
+ })
523
+
524
+ it('SoA 计算器应该与 AoS 产生相同结果', () => {
525
+ const data = generateTestData(1000)
526
+ const layout = SharedKLineBuffer.fromKLineData(data)
527
+
528
+ const aosResult = calcBOLLData(data, 20, 2)
529
+ const soaResult = calcBOLLDataSoA(layout, 20, 2)
530
+
531
+ expect(soaResult.length).toBe(aosResult.length)
532
+ })
533
+ })
@@ -0,0 +1,110 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { calcStructureData } from '../calculators'
3
+ import type { KLineData } from '@/types/price'
4
+ import {
5
+ empty,
6
+ pureUptrend,
7
+ pureDowntrend,
8
+ sideways,
9
+ } from './__fixtures__/synthetic'
10
+
11
+ // Build a fixture with a clear swing high, swing low, and breakout
12
+ function buildPyramidFixture(): KLineData[] {
13
+ const result: KLineData[] = []
14
+ let close = 100
15
+ const T0 = 1_700_000_000_000
16
+ // Up 0..9
17
+ for (let i = 0; i < 10; i++) {
18
+ close += 1
19
+ result.push({ timestamp: T0 + i * 60000, open: close, high: close + 0.5, low: close - 0.5, close, volume: 100 })
20
+ }
21
+ // Down 10..19 (creates swing high at ~bar 9)
22
+ for (let i = 10; i < 20; i++) {
23
+ close -= 1
24
+ result.push({ timestamp: T0 + i * 60000, open: close, high: close + 0.5, low: close - 0.5, close, volume: 100 })
25
+ }
26
+ // Up again to break swing high (creates BOS at the breakout bar)
27
+ for (let i = 20; i < 35; i++) {
28
+ close += 1
29
+ result.push({ timestamp: T0 + i * 60000, open: close, high: close + 0.5, low: close - 0.5, close, volume: 100 })
30
+ }
31
+ return result
32
+ }
33
+
34
+ describe('calcStructureData', () => {
35
+ it('empty data → empty snapshot', () => {
36
+ const snap = calcStructureData(empty, 2, 2, 'close')
37
+ expect(snap.swings).toEqual([])
38
+ expect(snap.events).toEqual([])
39
+ expect(snap.trend).toBe('range')
40
+ })
41
+
42
+ it('on pureUptrend (monotonic): no internal swings, no events', () => {
43
+ const snap = calcStructureData(pureUptrend, 2, 2, 'close')
44
+ // Monotonic uptrend has no local extrema inside the window
45
+ expect(snap.swings.length).toBe(0)
46
+ expect(snap.events.length).toBe(0)
47
+ })
48
+
49
+ it('on pureDowntrend (monotonic): no internal swings', () => {
50
+ const snap = calcStructureData(pureDowntrend, 2, 2, 'close')
51
+ expect(snap.swings.length).toBe(0)
52
+ })
53
+
54
+ it('on pyramid fixture: produces alternating swing highs and lows with valid labels', () => {
55
+ const data = buildPyramidFixture()
56
+ const snap = calcStructureData(data, 2, 2, 'close')
57
+ expect(snap.swings.length).toBeGreaterThan(0)
58
+ for (const s of snap.swings) {
59
+ expect(['HH', 'HL', 'LH', 'LL']).toContain(s.label)
60
+ }
61
+ })
62
+
63
+ it('pyramid fixture: detects a BOS when uptrend breaks prior swing high', () => {
64
+ const data = buildPyramidFixture()
65
+ const snap = calcStructureData(data, 2, 2, 'close')
66
+ // Should have at least one swing
67
+ expect(snap.swings.length).toBeGreaterThan(0)
68
+ // Should detect a BOS or CHOCH event during the second uptrend
69
+ const upEvents = snap.events.filter((e) => e.direction === 'up')
70
+ expect(upEvents.length).toBeGreaterThanOrEqual(1)
71
+ })
72
+
73
+ it('breakoutSource = wick vs close produces (possibly) different event timing', () => {
74
+ const data = buildPyramidFixture()
75
+ const closeSnap = calcStructureData(data, 2, 2, 'close')
76
+ const wickSnap = calcStructureData(data, 2, 2, 'wick')
77
+ // Both should produce at least one event; their indices may differ
78
+ expect(closeSnap.events.length).toBeGreaterThanOrEqual(0)
79
+ expect(wickSnap.events.length).toBeGreaterThanOrEqual(0)
80
+ })
81
+
82
+ it('swing.confirmed is false within rightWindow of latest bar', () => {
83
+ const data = buildPyramidFixture()
84
+ const right = 2
85
+ const snap = calcStructureData(data, 2, right, 'close')
86
+ for (const s of snap.swings) {
87
+ if (s.index + right >= data.length) {
88
+ expect(s.confirmed).toBe(false)
89
+ } else {
90
+ expect(s.confirmed).toBe(true)
91
+ }
92
+ }
93
+ })
94
+
95
+ it('extensional consistency on pyramid fixture', () => {
96
+ const data = buildPyramidFixture()
97
+ const full = calcStructureData(data, 2, 2, 'close')
98
+ for (let n = 15; n < data.length; n++) {
99
+ const partial = calcStructureData(data.slice(0, n), 2, 2, 'close')
100
+ // Confirmed swings in the prefix should match the full version
101
+ const fullConfirmedInPrefix = full.swings.filter((s) => s.confirmed && s.index + 2 < n)
102
+ const partialConfirmed = partial.swings.filter((s) => s.confirmed)
103
+ for (const fs of fullConfirmedInPrefix) {
104
+ const match = partialConfirmed.find((s) => s.index === fs.index && s.kind === fs.kind)
105
+ expect(match).toBeDefined()
106
+ if (match) expect(match.price).toBeCloseTo(fs.price, 9)
107
+ }
108
+ }
109
+ })
110
+ })
@@ -0,0 +1,65 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { calcSuperTrendData } from '../calculators'
3
+ import {
4
+ empty,
5
+ pureUptrend,
6
+ pureDowntrend,
7
+ spikeAtBar19,
8
+ gapUp,
9
+ } from './__fixtures__/synthetic'
10
+
11
+ describe('calcSuperTrendData', () => {
12
+ it('empty returns empty', () => {
13
+ expect(calcSuperTrendData(empty, 10, 3)).toEqual([])
14
+ })
15
+
16
+ it('atrPeriod <= 0 returns all undefined', () => {
17
+ const out = calcSuperTrendData(pureUptrend, 0, 3)
18
+ for (const v of out) expect(v).toBeUndefined()
19
+ })
20
+
21
+ it('multiplier <= 0 returns all undefined', () => {
22
+ const out = calcSuperTrendData(pureUptrend, 10, 0)
23
+ for (const v of out) expect(v).toBeUndefined()
24
+ })
25
+
26
+ it('on pureUptrend SuperTrend trend stays up after warm-up', () => {
27
+ const out = calcSuperTrendData(pureUptrend, 10, 3)
28
+ const valid = out.filter((p): p is { value: number; trend: 'up' | 'down' } => p !== undefined)
29
+ expect(valid.length).toBeGreaterThan(5)
30
+ // All trends should be up since price keeps rising
31
+ for (const p of valid) {
32
+ expect(p.trend).toBe('up')
33
+ }
34
+ })
35
+
36
+ it('on pureDowntrend SuperTrend trend stays down', () => {
37
+ const out = calcSuperTrendData(pureDowntrend, 10, 3)
38
+ const valid = out.filter((p): p is { value: number; trend: 'up' | 'down' } => p !== undefined)
39
+ // Most of post-warm-up should be down
40
+ const downCount = valid.filter((p) => p.trend === 'down').length
41
+ expect(downCount).toBeGreaterThan(valid.length / 2)
42
+ })
43
+
44
+ it('extensional consistency', () => {
45
+ const full = calcSuperTrendData(gapUp, 10, 3)
46
+ for (let n = 12; n < gapUp.length; n++) {
47
+ const partial = calcSuperTrendData(gapUp.slice(0, n), 10, 3)
48
+ for (let i = 0; i < n; i++) {
49
+ const f = full[i]
50
+ const p = partial[i]
51
+ if (f && p) {
52
+ expect(p.value).toBeCloseTo(f.value, 9)
53
+ expect(p.trend).toBe(f.trend)
54
+ }
55
+ }
56
+ }
57
+ })
58
+
59
+ it('trend flips on spike fixture', () => {
60
+ const out = calcSuperTrendData(spikeAtBar19, 10, 3)
61
+ const valid = out.filter((p): p is { value: number; trend: 'up' | 'down' } => p !== undefined)
62
+ const trends = new Set(valid.map((p) => p.trend))
63
+ expect(trends.size).toBeGreaterThanOrEqual(1)
64
+ })
65
+ })