@363045841yyt/klinechart-core 0.7.11 → 0.7.12

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 (191) hide show
  1. package/dist/engine/indicators/indicator.worker.js +32 -4
  2. package/dist/engine/indicators/indicator.worker.js.map +1 -1
  3. package/dist/engine/indicators/indicatorDefinitionRegistry.d.ts +3 -2
  4. package/dist/engine/indicators/indicatorDefinitionRegistry.d.ts.map +1 -1
  5. package/dist/engine/indicators/indicatorDefinitionRegistry.js.map +1 -1
  6. package/dist/engine/indicators/indicatorMetadata.d.ts +27 -1
  7. package/dist/engine/indicators/indicatorMetadata.d.ts.map +1 -1
  8. package/dist/engine/indicators/indicatorMetadata.js.map +1 -1
  9. package/dist/engine/indicators/indicatorRuntime.d.ts +12 -117
  10. package/dist/engine/indicators/indicatorRuntime.d.ts.map +1 -1
  11. package/dist/engine/indicators/indicatorRuntime.js +123 -1308
  12. package/dist/engine/indicators/indicatorRuntime.js.map +1 -1
  13. package/dist/engine/indicators/scheduler.d.ts +3 -142
  14. package/dist/engine/indicators/scheduler.d.ts.map +1 -1
  15. package/dist/engine/indicators/scheduler.js +59 -431
  16. package/dist/engine/indicators/scheduler.js.map +1 -1
  17. package/dist/engine/indicators/stateComposer.d.ts.map +1 -1
  18. package/dist/engine/indicators/stateComposer.js +15 -47
  19. package/dist/engine/indicators/stateComposer.js.map +1 -1
  20. package/dist/engine/indicators/workerProtocol.d.ts +12 -36
  21. package/dist/engine/indicators/workerProtocol.d.ts.map +1 -1
  22. package/dist/engine/indicators/workerProtocol.js.map +1 -1
  23. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
  24. package/dist/engine/renderers/Indicator/atr.js +9 -3
  25. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  26. package/dist/engine/renderers/Indicator/boll.d.ts.map +1 -1
  27. package/dist/engine/renderers/Indicator/boll.js +4 -2
  28. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  29. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
  30. package/dist/engine/renderers/Indicator/cci.js +9 -3
  31. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  32. package/dist/engine/renderers/Indicator/chaikinVol.d.ts.map +1 -1
  33. package/dist/engine/renderers/Indicator/chaikinVol.js +8 -2
  34. package/dist/engine/renderers/Indicator/chaikinVol.js.map +1 -1
  35. package/dist/engine/renderers/Indicator/cmf.d.ts.map +1 -1
  36. package/dist/engine/renderers/Indicator/cmf.js +8 -2
  37. package/dist/engine/renderers/Indicator/cmf.js.map +1 -1
  38. package/dist/engine/renderers/Indicator/dema.d.ts.map +1 -1
  39. package/dist/engine/renderers/Indicator/dema.js +3 -2
  40. package/dist/engine/renderers/Indicator/dema.js.map +1 -1
  41. package/dist/engine/renderers/Indicator/donchian.d.ts.map +1 -1
  42. package/dist/engine/renderers/Indicator/donchian.js +3 -2
  43. package/dist/engine/renderers/Indicator/donchian.js.map +1 -1
  44. package/dist/engine/renderers/Indicator/ene.d.ts.map +1 -1
  45. package/dist/engine/renderers/Indicator/ene.js +5 -3
  46. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  47. package/dist/engine/renderers/Indicator/expma.d.ts.map +1 -1
  48. package/dist/engine/renderers/Indicator/expma.js +3 -1
  49. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  50. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
  51. package/dist/engine/renderers/Indicator/fastk.js +9 -3
  52. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  53. package/dist/engine/renderers/Indicator/fib.d.ts.map +1 -1
  54. package/dist/engine/renderers/Indicator/fib.js +3 -2
  55. package/dist/engine/renderers/Indicator/fib.js.map +1 -1
  56. package/dist/engine/renderers/Indicator/hma.d.ts.map +1 -1
  57. package/dist/engine/renderers/Indicator/hma.js +3 -2
  58. package/dist/engine/renderers/Indicator/hma.js.map +1 -1
  59. package/dist/engine/renderers/Indicator/hv.d.ts.map +1 -1
  60. package/dist/engine/renderers/Indicator/hv.js +3 -2
  61. package/dist/engine/renderers/Indicator/hv.js.map +1 -1
  62. package/dist/engine/renderers/Indicator/ichimoku.d.ts.map +1 -1
  63. package/dist/engine/renderers/Indicator/ichimoku.js +3 -2
  64. package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -1
  65. package/dist/engine/renderers/Indicator/kama.d.ts.map +1 -1
  66. package/dist/engine/renderers/Indicator/kama.js +3 -2
  67. package/dist/engine/renderers/Indicator/kama.js.map +1 -1
  68. package/dist/engine/renderers/Indicator/keltner.d.ts.map +1 -1
  69. package/dist/engine/renderers/Indicator/keltner.js +3 -2
  70. package/dist/engine/renderers/Indicator/keltner.js.map +1 -1
  71. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
  72. package/dist/engine/renderers/Indicator/kst.js +4 -3
  73. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  74. package/dist/engine/renderers/Indicator/ma.d.ts.map +1 -1
  75. package/dist/engine/renderers/Indicator/ma.js +6 -1
  76. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  77. package/dist/engine/renderers/Indicator/macd.js +2 -2
  78. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  79. package/dist/engine/renderers/Indicator/mfi.d.ts.map +1 -1
  80. package/dist/engine/renderers/Indicator/mfi.js +8 -2
  81. package/dist/engine/renderers/Indicator/mfi.js.map +1 -1
  82. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
  83. package/dist/engine/renderers/Indicator/mom.js +9 -3
  84. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  85. package/dist/engine/renderers/Indicator/obv.d.ts.map +1 -1
  86. package/dist/engine/renderers/Indicator/obv.js +8 -2
  87. package/dist/engine/renderers/Indicator/obv.js.map +1 -1
  88. package/dist/engine/renderers/Indicator/parkinson.d.ts.map +1 -1
  89. package/dist/engine/renderers/Indicator/parkinson.js +3 -2
  90. package/dist/engine/renderers/Indicator/parkinson.js.map +1 -1
  91. package/dist/engine/renderers/Indicator/pivot.d.ts.map +1 -1
  92. package/dist/engine/renderers/Indicator/pivot.js +3 -2
  93. package/dist/engine/renderers/Indicator/pivot.js.map +1 -1
  94. package/dist/engine/renderers/Indicator/pvt.d.ts.map +1 -1
  95. package/dist/engine/renderers/Indicator/pvt.js +8 -2
  96. package/dist/engine/renderers/Indicator/pvt.js.map +1 -1
  97. package/dist/engine/renderers/Indicator/roc.d.ts.map +1 -1
  98. package/dist/engine/renderers/Indicator/roc.js +8 -2
  99. package/dist/engine/renderers/Indicator/roc.js.map +1 -1
  100. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
  101. package/dist/engine/renderers/Indicator/rsi.js +7 -3
  102. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  103. package/dist/engine/renderers/Indicator/sar.d.ts.map +1 -1
  104. package/dist/engine/renderers/Indicator/sar.js +3 -2
  105. package/dist/engine/renderers/Indicator/sar.js.map +1 -1
  106. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
  107. package/dist/engine/renderers/Indicator/stoch.js +4 -3
  108. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  109. package/dist/engine/renderers/Indicator/structure.d.ts.map +1 -1
  110. package/dist/engine/renderers/Indicator/structure.js +3 -2
  111. package/dist/engine/renderers/Indicator/structure.js.map +1 -1
  112. package/dist/engine/renderers/Indicator/supertrend.d.ts.map +1 -1
  113. package/dist/engine/renderers/Indicator/supertrend.js +3 -2
  114. package/dist/engine/renderers/Indicator/supertrend.js.map +1 -1
  115. package/dist/engine/renderers/Indicator/tema.d.ts.map +1 -1
  116. package/dist/engine/renderers/Indicator/tema.js +3 -2
  117. package/dist/engine/renderers/Indicator/tema.js.map +1 -1
  118. package/dist/engine/renderers/Indicator/trix.d.ts.map +1 -1
  119. package/dist/engine/renderers/Indicator/trix.js +3 -2
  120. package/dist/engine/renderers/Indicator/trix.js.map +1 -1
  121. package/dist/engine/renderers/Indicator/vma.d.ts.map +1 -1
  122. package/dist/engine/renderers/Indicator/vma.js +8 -2
  123. package/dist/engine/renderers/Indicator/vma.js.map +1 -1
  124. package/dist/engine/renderers/Indicator/volumeProfile.d.ts.map +1 -1
  125. package/dist/engine/renderers/Indicator/volumeProfile.js +3 -2
  126. package/dist/engine/renderers/Indicator/volumeProfile.js.map +1 -1
  127. package/dist/engine/renderers/Indicator/vwap.d.ts.map +1 -1
  128. package/dist/engine/renderers/Indicator/vwap.js +8 -2
  129. package/dist/engine/renderers/Indicator/vwap.js.map +1 -1
  130. package/dist/engine/renderers/Indicator/wma.d.ts.map +1 -1
  131. package/dist/engine/renderers/Indicator/wma.js +3 -2
  132. package/dist/engine/renderers/Indicator/wma.js.map +1 -1
  133. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
  134. package/dist/engine/renderers/Indicator/wmsr.js +9 -3
  135. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  136. package/dist/engine/renderers/Indicator/zones.d.ts.map +1 -1
  137. package/dist/engine/renderers/Indicator/zones.js +3 -2
  138. package/dist/engine/renderers/Indicator/zones.js.map +1 -1
  139. package/dist/version.d.ts +1 -1
  140. package/dist/version.js +1 -1
  141. package/package.json +6 -2
  142. package/src/engine/indicators/__tests__/registerBuiltins.test.ts +14 -22
  143. package/src/engine/indicators/__tests__/scheduler.test.ts +14 -14
  144. package/src/engine/indicators/__tests__/stateComposer.test.ts +7 -4
  145. package/src/engine/indicators/indicator.worker.ts +36 -4
  146. package/src/engine/indicators/indicatorDefinitionRegistry.ts +3 -1
  147. package/src/engine/indicators/indicatorMetadata.ts +29 -1
  148. package/src/engine/indicators/indicatorRuntime.ts +120 -1447
  149. package/src/engine/indicators/scheduler.ts +57 -485
  150. package/src/engine/indicators/stateComposer.ts +16 -60
  151. package/src/engine/indicators/workerProtocol.ts +14 -36
  152. package/src/engine/renderers/Indicator/atr.ts +9 -3
  153. package/src/engine/renderers/Indicator/boll.ts +4 -2
  154. package/src/engine/renderers/Indicator/cci.ts +9 -3
  155. package/src/engine/renderers/Indicator/chaikinVol.ts +8 -2
  156. package/src/engine/renderers/Indicator/cmf.ts +8 -2
  157. package/src/engine/renderers/Indicator/dema.ts +3 -2
  158. package/src/engine/renderers/Indicator/donchian.ts +3 -2
  159. package/src/engine/renderers/Indicator/ene.ts +5 -3
  160. package/src/engine/renderers/Indicator/expma.ts +3 -1
  161. package/src/engine/renderers/Indicator/fastk.ts +9 -3
  162. package/src/engine/renderers/Indicator/fib.ts +3 -2
  163. package/src/engine/renderers/Indicator/hma.ts +3 -2
  164. package/src/engine/renderers/Indicator/hv.ts +3 -2
  165. package/src/engine/renderers/Indicator/ichimoku.ts +3 -2
  166. package/src/engine/renderers/Indicator/kama.ts +3 -2
  167. package/src/engine/renderers/Indicator/keltner.ts +3 -2
  168. package/src/engine/renderers/Indicator/kst.ts +4 -3
  169. package/src/engine/renderers/Indicator/ma.ts +3 -2
  170. package/src/engine/renderers/Indicator/macd.ts +9 -9
  171. package/src/engine/renderers/Indicator/mfi.ts +8 -2
  172. package/src/engine/renderers/Indicator/mom.ts +9 -3
  173. package/src/engine/renderers/Indicator/obv.ts +8 -2
  174. package/src/engine/renderers/Indicator/parkinson.ts +3 -2
  175. package/src/engine/renderers/Indicator/pivot.ts +3 -2
  176. package/src/engine/renderers/Indicator/pvt.ts +8 -2
  177. package/src/engine/renderers/Indicator/roc.ts +8 -2
  178. package/src/engine/renderers/Indicator/rsi.ts +4 -3
  179. package/src/engine/renderers/Indicator/sar.ts +3 -2
  180. package/src/engine/renderers/Indicator/stoch.ts +4 -3
  181. package/src/engine/renderers/Indicator/structure.ts +3 -2
  182. package/src/engine/renderers/Indicator/supertrend.ts +3 -2
  183. package/src/engine/renderers/Indicator/tema.ts +3 -2
  184. package/src/engine/renderers/Indicator/trix.ts +3 -2
  185. package/src/engine/renderers/Indicator/vma.ts +8 -2
  186. package/src/engine/renderers/Indicator/volumeProfile.ts +3 -2
  187. package/src/engine/renderers/Indicator/vwap.ts +8 -2
  188. package/src/engine/renderers/Indicator/wma.ts +3 -2
  189. package/src/engine/renderers/Indicator/wmsr.ts +9 -3
  190. package/src/engine/renderers/Indicator/zones.ts +3 -2
  191. package/src/version.ts +1 -1
@@ -7,6 +7,7 @@ import { createNonNegativeSparseVisibleStateComposer } from '../../indicators/vi
7
7
  import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
8
8
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
9
9
  import type { IndicatorScheduler, VMASchedulerConfig } from '../../indicators/scheduler'
10
+ import { calcVMAData } from '../../indicators/calculators'
10
11
 
11
12
  const VMA_COLOR = '#0ea5e9'
12
13
 
@@ -116,15 +117,20 @@ export function createVMARendererPlugin(options: { paneId?: string } = {}): Rend
116
117
  category: 'volume',
117
118
  stateKey: createVMAStateKey,
118
119
  defaultPaneId: 'sub_VMA',
119
- paneIdField: 'vmaPaneId',
120
120
  scale: { indicatorKey: 'vma', label: 'VMA', decimals: 0 },
121
121
  updateConfig: (scheduler, params, paneId) => {
122
- (scheduler as IndicatorScheduler).updateVMAConfig(params as Partial<VMASchedulerConfig>, paneId)
122
+ (scheduler as IndicatorScheduler).updateIndicatorConfig('vma', params, paneId)
123
123
  },
124
124
  visibleState: { compose: createNonNegativeSparseVisibleStateComposer('vma', EMPTY_VMA_STATE) },
125
125
  applyResult: (host, state, paneId) => {
126
126
  host.setSharedState(createVMAStateKey(paneId), state as any, 'indicator_scheduler')
127
127
  },
128
+ runtime: {
129
+ configKey: 'vma',
130
+ defaultConfig: { period: 5, showVMA: true },
131
+ computeKey: 'calcVMAData',
132
+ compute: (data, c) => calcVMAData(data, c.period),
133
+ },
128
134
  })
129
135
  class VMAIndicatorDefinition {
130
136
  static rendererFactory = createVMARendererPlugin
@@ -6,6 +6,7 @@ import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
6
6
  import { createVolumeProfileVisibleStateComposer } from '../../indicators/visibleStateComposers'
7
7
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
8
8
  import type { IndicatorScheduler, VolumeProfileSchedulerConfig } from '../../indicators/scheduler'
9
+ import { calcVolumeProfileData } from '../../indicators/calculators'
9
10
 
10
11
  const BAR_FILL = 'rgba(99, 102, 241, 0.35)'
11
12
  const POC_COLOR = '#f59e0b'
@@ -116,15 +117,15 @@ export function createVolumeProfileRendererPlugin(options: { paneId?: string } =
116
117
  category: 'volume',
117
118
  stateKey: createVolumeProfileStateKey,
118
119
  defaultPaneId: 'sub_VolumeProfile',
119
- paneIdField: 'volumeProfilePaneId',
120
120
  scale: { indicatorKey: 'volumeProfile', label: 'VP', decimals: 0 },
121
121
  visibleState: { compose: createVolumeProfileVisibleStateComposer('volumeProfile', EMPTY_VOLUME_PROFILE_STATE) },
122
122
  updateConfig: (scheduler, params, paneId) => {
123
- (scheduler as IndicatorScheduler).updateVolumeProfileConfig(params as Partial<VolumeProfileSchedulerConfig>, paneId)
123
+ (scheduler as IndicatorScheduler).updateIndicatorConfig('volumeProfile', params, paneId)
124
124
  },
125
125
  applyResult: (host, state, paneId) => {
126
126
  host.setSharedState(createVolumeProfileStateKey(paneId), state as any, 'indicator_scheduler')
127
127
  },
128
+ runtime: { configKey:'volumeProfile', defaultConfig:{bins:24,lookback:100,valueAreaPercent:70,showPOC:true,showValueArea:true}, computeKey:'calcVolumeProfileData', compute:(data,c)=>calcVolumeProfileData(data,c.bins,c.lookback,c.valueAreaPercent) },
128
129
  })
129
130
  class VolumeProfileIndicatorDefinition {
130
131
  static rendererFactory = createVolumeProfileRendererPlugin
@@ -6,6 +6,7 @@ import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
6
6
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
7
7
  import { createSparseVisibleStateComposer } from '../../indicators/visibleStateComposers'
8
8
  import type { IndicatorScheduler, VWAPSchedulerConfig } from '../../indicators/scheduler'
9
+ import { calcVWAPData } from '../../indicators/calculators'
9
10
 
10
11
  const VWAP_COLOR = '#ec4899'
11
12
 
@@ -114,15 +115,20 @@ export function createVWAPRendererPlugin(options: { paneId?: string } = {}): Ren
114
115
  category: 'volume',
115
116
  stateKey: createVWAPStateKey,
116
117
  defaultPaneId: 'sub_VWAP',
117
- paneIdField: 'vwapPaneId',
118
118
  visibleState: { compose: createSparseVisibleStateComposer('vwap', EMPTY_VWAP_STATE) },
119
119
  scale: { indicatorKey: 'vwap', label: 'VWAP', decimals: 2 },
120
120
  updateConfig: (scheduler, params, paneId) => {
121
- (scheduler as IndicatorScheduler).updateVWAPConfig(params as Partial<VWAPSchedulerConfig>, paneId)
121
+ (scheduler as IndicatorScheduler).updateIndicatorConfig('vwap', params, paneId)
122
122
  },
123
123
  applyResult: (host, state, paneId) => {
124
124
  host.setSharedState(createVWAPStateKey(paneId), state as any, 'indicator_scheduler')
125
125
  },
126
+ runtime: {
127
+ configKey: 'vwap',
128
+ defaultConfig: { sessionResetGapMs: 0, showVWAP: true },
129
+ computeKey: 'calcVWAPData',
130
+ compute: (data, c) => calcVWAPData(data, c.sessionResetGapMs),
131
+ },
126
132
  })
127
133
  class VWAPIndicatorDefinition {
128
134
  static rendererFactory = createVWAPRendererPlugin
@@ -6,6 +6,7 @@ import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
6
6
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
7
7
  import { createSparseVisibleStateComposer } from '../../indicators/visibleStateComposers'
8
8
  import type { IndicatorScheduler, WMASchedulerConfig } from '../../indicators/scheduler'
9
+ import { calcWMAData } from '../../indicators/calculators'
9
10
 
10
11
  const WMA_COLOR = '#10b981'
11
12
 
@@ -126,17 +127,17 @@ export function createWMARendererPlugin(options: WMARendererOptions = {}): Rende
126
127
  category: 'main',
127
128
  stateKey: createWMAStateKey,
128
129
  defaultPaneId: 'main',
129
- paneIdField: 'wmaPaneId',
130
130
  allowMainPane: true,
131
131
  mainPane: { rendererName: 'wma_main', toActiveConfig: (params, active) => ({ ...params, showWMA: active }) },
132
132
  visibleState: { compose: createSparseVisibleStateComposer('wma', EMPTY_WMA_STATE) },
133
133
  scale: { indicatorKey: 'wma', label: 'WMA', decimals: 2 },
134
134
  updateConfig: (scheduler, params, paneId) => {
135
- (scheduler as IndicatorScheduler).updateWMAConfig(params as Partial<WMASchedulerConfig>, paneId)
135
+ (scheduler as IndicatorScheduler).updateIndicatorConfig('wma', params, paneId)
136
136
  },
137
137
  applyResult: (host, state, paneId) => {
138
138
  host.setSharedState(createWMAStateKey(paneId), state as any, 'indicator_scheduler')
139
139
  },
140
+ runtime: { configKey:'wma', defaultConfig:{period:10,showWMA:true}, computeKey:'calcWMAData', compute:(data,c)=>calcWMAData(data,c.period) },
140
141
  })
141
142
  class WMADefinition {
142
143
  static rendererFactory = createWMARendererPlugin
@@ -9,6 +9,7 @@ import { createFixedRangeSparseVisibleStateComposer } from '../../indicators/vis
9
9
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
10
10
  import type { IndicatorScheduler, WMSRSchedulerConfig } from '../../indicators/scheduler'
11
11
  import { createWmsrScaleRendererPlugin } from './scale/wmsr_scale'
12
+ import { calcWMSRData } from '../../indicators/calculators'
12
13
 
13
14
  type LinePoint = { x: number; y: number }
14
15
 
@@ -255,7 +256,7 @@ const { ctx, pane, range, scrollLeft, dpr, kLineCenters, lineWebGLSurface } = co
255
256
  },
256
257
 
257
258
  setConfig() {
258
- // no-op: 配置通过 scheduler.updateWMSRConfig() 更新
259
+ // no-op: 配置通过 scheduler.updateIndicatorConfig() 更新
259
260
  },
260
261
  }
261
262
  }
@@ -321,15 +322,20 @@ export function getWMSRTitleInfo(
321
322
  category: 'oscillator',
322
323
  stateKey: createWMSRStateKey,
323
324
  defaultPaneId: 'sub_WMSR',
324
- paneIdField: 'wmsrPaneId',
325
325
  visibleState: { compose: createFixedRangeSparseVisibleStateComposer('wmsr', EMPTY_WMSR_STATE) },
326
326
  scaleRendererFactory: createWmsrScaleRendererPlugin,
327
327
  updateConfig: (scheduler, params, paneId) => {
328
- (scheduler as IndicatorScheduler).updateWMSRConfig(params as Partial<WMSRSchedulerConfig>, paneId)
328
+ (scheduler as IndicatorScheduler).updateIndicatorConfig('wmsr', params, paneId)
329
329
  },
330
330
  applyResult: (host, state, paneId) => {
331
331
  host.setSharedState(createWMSRStateKey(paneId), state as any, 'indicator_scheduler')
332
332
  },
333
+ runtime: {
334
+ configKey: 'wmsr',
335
+ defaultConfig: { period: 14, showWMSR: true },
336
+ computeKey: 'calcWMSRData',
337
+ compute: (data, c) => calcWMSRData(data, c.period),
338
+ },
333
339
  })
334
340
  class WMSRIndicatorDefinition {
335
341
  static rendererFactory = createWMSRRendererPlugin
@@ -7,6 +7,7 @@ import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
7
7
  import { createFixedUnitVisibleStateComposer } from '../../indicators/visibleStateComposers'
8
8
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
9
9
  import type { IndicatorScheduler, ZonesSchedulerConfig } from '../../indicators/scheduler'
10
+ import { calcZonesData } from '../../indicators/calculators'
10
11
 
11
12
  function getZonesStateKey(host: PluginHost | null, paneId: string): string | null {
12
13
  const scheduler = host?.getService<IndicatorScheduler>('indicatorScheduler')
@@ -95,17 +96,17 @@ export function createZonesRendererPlugin(options: { paneId?: string } = {}): Re
95
96
  category: 'main',
96
97
  stateKey: createZonesStateKey,
97
98
  defaultPaneId: 'main',
98
- paneIdField: 'zonesPaneId',
99
99
  allowMainPane: true,
100
100
  mainPane: { rendererName: 'zones_main', toActiveConfig: (params, active) => ({ ...params, showFVG: active, showOB: active, showFilledZones: active }) },
101
101
  scale: { indicatorKey: 'zones', label: 'Zones', decimals: 2 },
102
102
  visibleState: { compose: createFixedUnitVisibleStateComposer('zones', EMPTY_ZONES_STATE) },
103
103
  updateConfig: (scheduler, params, paneId) => {
104
- (scheduler as IndicatorScheduler).updateZonesConfig(params as Partial<ZonesSchedulerConfig>, paneId)
104
+ (scheduler as IndicatorScheduler).updateIndicatorConfig('zones', params, paneId)
105
105
  },
106
106
  applyResult: (host, state, paneId) => {
107
107
  host.setSharedState(createZonesStateKey(paneId), state as any, 'indicator_scheduler')
108
108
  },
109
+ runtime: { configKey:'zones', defaultConfig:{showFVG:true,showOB:true,showFilledZones:true,obLookback:20}, computeKey:'calcZonesData', compute:(data,c)=>calcZonesData(data,c.obLookback,5,2,'close') },
109
110
  })
110
111
  class ZonesDefinition {
111
112
  static rendererFactory = createZonesRendererPlugin
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.7.11"
1
+ export const VERSION = "0.7.12"