@363045841yyt/klinechart-core 0.8.5 → 0.8.7
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.
- package/dist/config/chartSettings.d.ts +21 -2
- package/dist/config/chartSettings.d.ts.map +1 -1
- package/dist/config/chartSettings.js +9 -1
- package/dist/config/chartSettings.js.map +1 -1
- package/dist/controllers/createChartController.d.ts.map +1 -1
- package/dist/controllers/createChartController.js +50 -3
- package/dist/controllers/createChartController.js.map +1 -1
- package/dist/controllers/types.d.ts +34 -23
- package/dist/controllers/types.d.ts.map +1 -1
- package/dist/data-fetchers/baostock.d.ts +0 -3
- package/dist/data-fetchers/baostock.d.ts.map +1 -1
- package/dist/data-fetchers/baostock.js +0 -1
- package/dist/data-fetchers/baostock.js.map +1 -1
- package/dist/data-fetchers/dataBuffer.d.ts +13 -2
- package/dist/data-fetchers/dataBuffer.d.ts.map +1 -1
- package/dist/data-fetchers/dataBuffer.js +41 -7
- package/dist/data-fetchers/dataBuffer.js.map +1 -1
- package/dist/data-fetchers/dataBufferTypes.d.ts +11 -0
- package/dist/data-fetchers/dataBufferTypes.d.ts.map +1 -0
- package/dist/data-fetchers/dataBufferTypes.js +2 -0
- package/dist/data-fetchers/dataBufferTypes.js.map +1 -0
- package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts +4 -3
- package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts.map +1 -1
- package/dist/data-fetchers/fetcherDefinitionRegistry.js +9 -2
- package/dist/data-fetchers/fetcherDefinitionRegistry.js.map +1 -1
- package/dist/data-fetchers/gotdx/gotdx.d.ts +7 -0
- package/dist/data-fetchers/gotdx/gotdx.d.ts.map +1 -0
- package/dist/data-fetchers/gotdx/gotdx.js +7 -0
- package/dist/data-fetchers/gotdx/gotdx.js.map +1 -0
- package/dist/data-fetchers/gotdx.d.ts +0 -8
- package/dist/data-fetchers/gotdx.d.ts.map +1 -1
- package/dist/data-fetchers/gotdx.js +40 -3
- package/dist/data-fetchers/gotdx.js.map +1 -1
- package/dist/data-fetchers/hundred-mock.d.ts +0 -3
- package/dist/data-fetchers/hundred-mock.d.ts.map +1 -1
- package/dist/data-fetchers/hundred-mock.js +0 -1
- package/dist/data-fetchers/hundred-mock.js.map +1 -1
- package/dist/data-fetchers/index.d.ts +10 -8
- package/dist/data-fetchers/index.d.ts.map +1 -1
- package/dist/data-fetchers/index.js +8 -7
- package/dist/data-fetchers/index.js.map +1 -1
- package/dist/data-fetchers/router.d.ts +2 -0
- package/dist/data-fetchers/router.d.ts.map +1 -1
- package/dist/data-fetchers/router.js +8 -1
- package/dist/data-fetchers/router.js.map +1 -1
- package/dist/data-fetchers/thousand-mock.d.ts +0 -3
- package/dist/data-fetchers/thousand-mock.d.ts.map +1 -1
- package/dist/data-fetchers/thousand-mock.js +0 -1
- package/dist/data-fetchers/thousand-mock.js.map +1 -1
- package/dist/data-fetchers/timeShareBuffer.d.ts +27 -0
- package/dist/data-fetchers/timeShareBuffer.d.ts.map +1 -0
- package/dist/data-fetchers/timeShareBuffer.js +79 -0
- package/dist/data-fetchers/timeShareBuffer.js.map +1 -0
- package/dist/data-fetchers/tradingview.d.ts +0 -8
- package/dist/data-fetchers/tradingview.d.ts.map +1 -1
- package/dist/data-fetchers/tradingview.js +1 -2
- package/dist/data-fetchers/tradingview.js.map +1 -1
- package/dist/data-fetchers/types.d.ts +9 -1
- package/dist/data-fetchers/types.d.ts.map +1 -1
- package/dist/engine/chart.d.ts +29 -1
- package/dist/engine/chart.d.ts.map +1 -1
- package/dist/engine/chart.js +140 -5
- package/dist/engine/chart.js.map +1 -1
- package/dist/engine/chartTypes.d.ts +3 -0
- package/dist/engine/chartTypes.d.ts.map +1 -1
- package/dist/engine/controller/interaction.d.ts +12 -1
- package/dist/engine/controller/interaction.d.ts.map +1 -1
- package/dist/engine/controller/interaction.js +105 -14
- package/dist/engine/controller/interaction.js.map +1 -1
- package/dist/engine/data/chartDataManager.d.ts +38 -11
- package/dist/engine/data/chartDataManager.d.ts.map +1 -1
- package/dist/engine/data/chartDataManager.js +491 -188
- package/dist/engine/data/chartDataManager.js.map +1 -1
- package/dist/engine/draw/pixelAlign.d.ts +0 -27
- package/dist/engine/draw/pixelAlign.d.ts.map +1 -1
- package/dist/engine/draw/pixelAlign.js +1 -1
- package/dist/engine/draw/pixelAlign.js.map +1 -1
- package/dist/engine/indicators/calculators.d.ts +0 -104
- package/dist/engine/indicators/calculators.d.ts.map +1 -1
- package/dist/engine/indicators/calculators.js +77 -171
- package/dist/engine/indicators/calculators.js.map +1 -1
- package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -1
- package/dist/engine/indicators/chartIndicatorManager.js +3 -2
- package/dist/engine/indicators/chartIndicatorManager.js.map +1 -1
- package/dist/engine/indicators/ichimokuState.d.ts +2 -0
- package/dist/engine/indicators/ichimokuState.d.ts.map +1 -1
- package/dist/engine/indicators/ichimokuState.js.map +1 -1
- package/dist/engine/indicators/macdState.d.ts +0 -5
- package/dist/engine/indicators/macdState.d.ts.map +1 -1
- package/dist/engine/indicators/macdState.js +1 -1
- package/dist/engine/indicators/macdState.js.map +1 -1
- package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
- package/dist/engine/indicators/registerBuiltins.js +1 -0
- package/dist/engine/indicators/registerBuiltins.js.map +1 -1
- package/dist/engine/indicators/rsiState.d.ts +0 -4
- package/dist/engine/indicators/rsiState.d.ts.map +1 -1
- package/dist/engine/indicators/rsiState.js +1 -1
- package/dist/engine/indicators/rsiState.js.map +1 -1
- package/dist/engine/indicators/scheduler.d.ts.map +1 -1
- package/dist/engine/indicators/scheduler.js +1 -7
- package/dist/engine/indicators/scheduler.js.map +1 -1
- package/dist/engine/indicators/visibleStateComposers.d.ts +14 -0
- package/dist/engine/indicators/visibleStateComposers.d.ts.map +1 -1
- package/dist/engine/indicators/visibleStateComposers.js +34 -0
- package/dist/engine/indicators/visibleStateComposers.js.map +1 -1
- package/dist/engine/layout/chartPaneLayout.d.ts +2 -0
- package/dist/engine/layout/chartPaneLayout.d.ts.map +1 -1
- package/dist/engine/layout/chartPaneLayout.js +24 -6
- package/dist/engine/layout/chartPaneLayout.js.map +1 -1
- package/dist/engine/modes/kLineMode.d.ts +37 -0
- package/dist/engine/modes/kLineMode.d.ts.map +1 -0
- package/dist/engine/modes/kLineMode.js +22 -0
- package/dist/engine/modes/kLineMode.js.map +1 -0
- package/dist/engine/modes/timeShareMode.d.ts +37 -0
- package/dist/engine/modes/timeShareMode.d.ts.map +1 -0
- package/dist/engine/modes/timeShareMode.js +59 -0
- package/dist/engine/modes/timeShareMode.js.map +1 -0
- package/dist/engine/modes/types.d.ts +47 -0
- package/dist/engine/modes/types.d.ts.map +1 -0
- package/dist/engine/modes/types.js +2 -0
- package/dist/engine/modes/types.js.map +1 -0
- package/dist/engine/paneRenderer.d.ts +4 -0
- package/dist/engine/paneRenderer.d.ts.map +1 -1
- package/dist/engine/paneRenderer.js +27 -40
- package/dist/engine/paneRenderer.js.map +1 -1
- package/dist/engine/render/chartRenderer.d.ts +4 -23
- package/dist/engine/render/chartRenderer.d.ts.map +1 -1
- package/dist/engine/render/chartRenderer.js +87 -17
- package/dist/engine/render/chartRenderer.js.map +1 -1
- package/dist/engine/renderers/Indicator/atr.d.ts +1 -18
- package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/atr.js +3 -22
- package/dist/engine/renderers/Indicator/atr.js.map +1 -1
- package/dist/engine/renderers/Indicator/boll.d.ts +1 -4
- package/dist/engine/renderers/Indicator/boll.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/boll.js +3 -18
- package/dist/engine/renderers/Indicator/boll.js.map +1 -1
- package/dist/engine/renderers/Indicator/cci.d.ts +1 -22
- package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/cci.js +8 -20
- package/dist/engine/renderers/Indicator/cci.js.map +1 -1
- package/dist/engine/renderers/Indicator/chaikinVol.d.ts +1 -7
- package/dist/engine/renderers/Indicator/chaikinVol.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/chaikinVol.js +3 -16
- package/dist/engine/renderers/Indicator/chaikinVol.js.map +1 -1
- package/dist/engine/renderers/Indicator/cmf.d.ts +1 -7
- package/dist/engine/renderers/Indicator/cmf.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/cmf.js +3 -15
- package/dist/engine/renderers/Indicator/cmf.js.map +1 -1
- package/dist/engine/renderers/Indicator/dema.d.ts +1 -7
- package/dist/engine/renderers/Indicator/dema.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/dema.js +3 -17
- package/dist/engine/renderers/Indicator/dema.js.map +1 -1
- package/dist/engine/renderers/Indicator/donchian.d.ts +1 -8
- package/dist/engine/renderers/Indicator/donchian.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/donchian.js +2 -2
- package/dist/engine/renderers/Indicator/donchian.js.map +1 -1
- package/dist/engine/renderers/Indicator/ene.d.ts +1 -12
- package/dist/engine/renderers/Indicator/ene.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/ene.js +3 -18
- package/dist/engine/renderers/Indicator/ene.js.map +1 -1
- package/dist/engine/renderers/Indicator/expma.d.ts +1 -4
- package/dist/engine/renderers/Indicator/expma.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/expma.js +2 -2
- package/dist/engine/renderers/Indicator/expma.js.map +1 -1
- package/dist/engine/renderers/Indicator/fastk.d.ts +1 -22
- package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/fastk.js +11 -64
- package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
- package/dist/engine/renderers/Indicator/fib.d.ts +1 -6
- package/dist/engine/renderers/Indicator/fib.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/fib.js +2 -2
- package/dist/engine/renderers/Indicator/fib.js.map +1 -1
- package/dist/engine/renderers/Indicator/hma.d.ts +1 -7
- package/dist/engine/renderers/Indicator/hma.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/hma.js +3 -17
- package/dist/engine/renderers/Indicator/hma.js.map +1 -1
- package/dist/engine/renderers/Indicator/hv.d.ts +1 -7
- package/dist/engine/renderers/Indicator/hv.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/hv.js +3 -16
- package/dist/engine/renderers/Indicator/hv.js.map +1 -1
- package/dist/engine/renderers/Indicator/ichimoku.d.ts +1 -8
- package/dist/engine/renderers/Indicator/ichimoku.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/ichimoku.js +27 -5
- package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -1
- package/dist/engine/renderers/Indicator/kama.d.ts +1 -7
- package/dist/engine/renderers/Indicator/kama.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/kama.js +3 -17
- package/dist/engine/renderers/Indicator/kama.js.map +1 -1
- package/dist/engine/renderers/Indicator/keltner.d.ts +1 -8
- package/dist/engine/renderers/Indicator/keltner.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/keltner.js +2 -2
- package/dist/engine/renderers/Indicator/keltner.js.map +1 -1
- package/dist/engine/renderers/Indicator/kst.d.ts +1 -22
- package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/kst.js +2 -2
- package/dist/engine/renderers/Indicator/kst.js.map +1 -1
- package/dist/engine/renderers/Indicator/ma.d.ts +1 -4
- package/dist/engine/renderers/Indicator/ma.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/ma.js +1 -1
- package/dist/engine/renderers/Indicator/ma.js.map +1 -1
- package/dist/engine/renderers/Indicator/macd.d.ts +1 -49
- package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/macd.js +2 -12
- package/dist/engine/renderers/Indicator/macd.js.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +205 -0
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
- package/dist/engine/renderers/Indicator/mfi.d.ts +1 -7
- package/dist/engine/renderers/Indicator/mfi.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/mfi.js +3 -15
- package/dist/engine/renderers/Indicator/mfi.js.map +1 -1
- package/dist/engine/renderers/Indicator/mom.d.ts +1 -22
- package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/mom.js +8 -23
- package/dist/engine/renderers/Indicator/mom.js.map +1 -1
- package/dist/engine/renderers/Indicator/obv.d.ts +1 -7
- package/dist/engine/renderers/Indicator/obv.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/obv.js +3 -14
- package/dist/engine/renderers/Indicator/obv.js.map +1 -1
- package/dist/engine/renderers/Indicator/parkinson.d.ts +1 -7
- package/dist/engine/renderers/Indicator/parkinson.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/parkinson.js +3 -16
- package/dist/engine/renderers/Indicator/parkinson.js.map +1 -1
- package/dist/engine/renderers/Indicator/pivot.d.ts +1 -6
- package/dist/engine/renderers/Indicator/pivot.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/pivot.js +2 -2
- package/dist/engine/renderers/Indicator/pivot.js.map +1 -1
- package/dist/engine/renderers/Indicator/pvt.d.ts +1 -7
- package/dist/engine/renderers/Indicator/pvt.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/pvt.js +3 -14
- package/dist/engine/renderers/Indicator/pvt.js.map +1 -1
- package/dist/engine/renderers/Indicator/roc.d.ts +1 -8
- package/dist/engine/renderers/Indicator/roc.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/roc.js +3 -15
- package/dist/engine/renderers/Indicator/roc.js.map +1 -1
- package/dist/engine/renderers/Indicator/rsi.d.ts +0 -32
- package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/rsi.js +3 -3
- package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
- package/dist/engine/renderers/Indicator/sar.d.ts +1 -8
- package/dist/engine/renderers/Indicator/sar.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/sar.js +2 -2
- package/dist/engine/renderers/Indicator/sar.js.map +1 -1
- package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +2 -0
- package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/scale/indicator_scale.js +10 -6
- package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
- package/dist/engine/renderers/Indicator/shared/dashedLines.d.ts +4 -0
- package/dist/engine/renderers/Indicator/shared/dashedLines.d.ts.map +1 -0
- package/dist/engine/renderers/Indicator/shared/dashedLines.js +50 -0
- package/dist/engine/renderers/Indicator/shared/dashedLines.js.map +1 -0
- package/dist/engine/renderers/Indicator/shared/titleInfo.d.ts +14 -0
- package/dist/engine/renderers/Indicator/shared/titleInfo.d.ts.map +1 -0
- package/dist/engine/renderers/Indicator/shared/titleInfo.js +25 -0
- package/dist/engine/renderers/Indicator/shared/titleInfo.js.map +1 -0
- package/dist/engine/renderers/Indicator/shared/webglBand.d.ts +5 -0
- package/dist/engine/renderers/Indicator/shared/webglBand.d.ts.map +1 -0
- package/dist/engine/renderers/Indicator/shared/webglBand.js +17 -0
- package/dist/engine/renderers/Indicator/shared/webglBand.js.map +1 -0
- package/dist/engine/renderers/Indicator/stoch.d.ts +1 -22
- package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/stoch.js +5 -46
- package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
- package/dist/engine/renderers/Indicator/structure.d.ts +1 -7
- package/dist/engine/renderers/Indicator/structure.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/structure.js +2 -2
- package/dist/engine/renderers/Indicator/structure.js.map +1 -1
- package/dist/engine/renderers/Indicator/supertrend.d.ts +1 -8
- package/dist/engine/renderers/Indicator/supertrend.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/supertrend.js +2 -2
- package/dist/engine/renderers/Indicator/supertrend.js.map +1 -1
- package/dist/engine/renderers/Indicator/tema.d.ts +1 -7
- package/dist/engine/renderers/Indicator/tema.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/tema.js +3 -17
- package/dist/engine/renderers/Indicator/tema.js.map +1 -1
- package/dist/engine/renderers/Indicator/trix.d.ts +1 -8
- package/dist/engine/renderers/Indicator/trix.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/trix.js +2 -2
- package/dist/engine/renderers/Indicator/trix.js.map +1 -1
- package/dist/engine/renderers/Indicator/vma.d.ts +1 -7
- package/dist/engine/renderers/Indicator/vma.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/vma.js +3 -15
- package/dist/engine/renderers/Indicator/vma.js.map +1 -1
- package/dist/engine/renderers/Indicator/volumeProfile.d.ts +1 -7
- package/dist/engine/renderers/Indicator/volumeProfile.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/volumeProfile.js +2 -2
- package/dist/engine/renderers/Indicator/volumeProfile.js.map +1 -1
- package/dist/engine/renderers/Indicator/vwap.d.ts +1 -7
- package/dist/engine/renderers/Indicator/vwap.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/vwap.js +3 -14
- package/dist/engine/renderers/Indicator/vwap.js.map +1 -1
- package/dist/engine/renderers/Indicator/wma.d.ts +1 -7
- package/dist/engine/renderers/Indicator/wma.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/wma.js +3 -17
- package/dist/engine/renderers/Indicator/wma.js.map +1 -1
- package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -22
- package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/wmsr.js +8 -23
- package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
- package/dist/engine/renderers/Indicator/zones.d.ts +1 -6
- package/dist/engine/renderers/Indicator/zones.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/zones.js +2 -2
- package/dist/engine/renderers/Indicator/zones.js.map +1 -1
- package/dist/engine/renderers/candle.d.ts +0 -16
- package/dist/engine/renderers/candle.d.ts.map +1 -1
- package/dist/engine/renderers/candle.js +1 -1
- package/dist/engine/renderers/candle.js.map +1 -1
- package/dist/engine/renderers/comparisonLine.d.ts.map +1 -1
- package/dist/engine/renderers/comparisonLine.js +2 -0
- package/dist/engine/renderers/comparisonLine.js.map +1 -1
- package/dist/engine/renderers/crosshair.js +1 -1
- package/dist/engine/renderers/crosshair.js.map +1 -1
- package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
- package/dist/engine/renderers/extremaMarkers.js +2 -0
- package/dist/engine/renderers/extremaMarkers.js.map +1 -1
- package/dist/engine/renderers/lastPrice.d.ts.map +1 -1
- package/dist/engine/renderers/lastPrice.js +7 -2
- package/dist/engine/renderers/lastPrice.js.map +1 -1
- package/dist/engine/renderers/leftYAxis.d.ts +11 -0
- package/dist/engine/renderers/leftYAxis.d.ts.map +1 -0
- package/dist/engine/renderers/leftYAxis.js +67 -0
- package/dist/engine/renderers/leftYAxis.js.map +1 -0
- package/dist/engine/renderers/subVolume.d.ts +1 -13
- package/dist/engine/renderers/subVolume.d.ts.map +1 -1
- package/dist/engine/renderers/subVolume.js +1 -1
- package/dist/engine/renderers/subVolume.js.map +1 -1
- package/dist/engine/renderers/timeAxis.d.ts +0 -2
- package/dist/engine/renderers/timeAxis.d.ts.map +1 -1
- package/dist/engine/renderers/timeAxis.js +4 -1
- package/dist/engine/renderers/timeAxis.js.map +1 -1
- package/dist/engine/renderers/timeShare.d.ts +3 -0
- package/dist/engine/renderers/timeShare.d.ts.map +1 -0
- package/dist/engine/renderers/timeShare.js +260 -0
- package/dist/engine/renderers/timeShare.js.map +1 -0
- package/dist/engine/renderers/yAxis.d.ts.map +1 -1
- package/dist/engine/renderers/yAxis.js +9 -1
- package/dist/engine/renderers/yAxis.js.map +1 -1
- package/dist/engine/scale/price.d.ts +0 -7
- package/dist/engine/scale/price.d.ts.map +1 -1
- package/dist/engine/scale/price.js +3 -2
- package/dist/engine/scale/price.js.map +1 -1
- package/dist/engine/theme/fonts.d.ts +0 -2
- package/dist/engine/theme/fonts.d.ts.map +1 -1
- package/dist/engine/theme/fonts.js +1 -1
- package/dist/engine/theme/fonts.js.map +1 -1
- package/dist/engine/utils/klineConfig.d.ts.map +1 -1
- package/dist/engine/utils/klineConfig.js +1 -5
- package/dist/engine/utils/klineConfig.js.map +1 -1
- package/dist/engine/viewport/chartViewportManager.d.ts.map +1 -1
- package/dist/engine/viewport/chartViewportManager.js +6 -5
- package/dist/engine/viewport/chartViewportManager.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/chartBridge.d.ts.map +1 -1
- package/dist/mcp/chartBridge.js +2 -1
- package/dist/mcp/chartBridge.js.map +1 -1
- package/dist/plugin/types.d.ts +1 -0
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/types.js.map +1 -1
- package/dist/semantic/types.d.ts +1 -1
- package/dist/semantic/types.d.ts.map +1 -1
- package/dist/tokens/theme-base.d.ts +5 -0
- package/dist/tokens/theme-base.d.ts.map +1 -0
- package/dist/tokens/theme-base.js +31 -0
- package/dist/tokens/theme-base.js.map +1 -0
- package/dist/tokens/theme-china.d.ts.map +1 -1
- package/dist/tokens/theme-china.js +3 -0
- package/dist/tokens/theme-china.js.map +1 -1
- package/dist/tokens/theme-dark.d.ts.map +1 -1
- package/dist/tokens/theme-dark.js +12 -31
- package/dist/tokens/theme-dark.js.map +1 -1
- package/dist/tokens/theme-light.d.ts.map +1 -1
- package/dist/tokens/theme-light.js +11 -30
- package/dist/tokens/theme-light.js.map +1 -1
- package/dist/tokens/types.d.ts +7 -0
- package/dist/tokens/types.d.ts.map +1 -1
- package/dist/types/price.d.ts +8 -0
- package/dist/types/price.d.ts.map +1 -1
- package/dist/types/price.js +4 -0
- package/dist/types/price.js.map +1 -1
- package/dist/utils/dateFormat.d.ts +5 -42
- package/dist/utils/dateFormat.d.ts.map +1 -1
- package/dist/utils/dateFormat.js +24 -4
- package/dist/utils/dateFormat.js.map +1 -1
- package/dist/utils/kLineDraw/axis.d.ts +9 -28
- package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
- package/dist/utils/kLineDraw/axis.js +33 -58
- package/dist/utils/kLineDraw/axis.js.map +1 -1
- package/dist/utils/uuid.d.ts +2 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +10 -0
- package/dist/utils/uuid.js.map +1 -0
- package/dist/utils/volumePrice.d.ts +0 -40
- package/dist/utils/volumePrice.d.ts.map +1 -1
- package/dist/utils/volumePrice.js +2 -2
- package/dist/utils/volumePrice.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/config/chartSettings.ts +9 -1
- package/src/controllers/createChartController.ts +53 -3
- package/src/controllers/types.ts +36 -17
- package/src/data-fetchers/__tests__/dataBuffer.test.ts +39 -5
- package/src/data-fetchers/baostock.ts +1 -1
- package/src/data-fetchers/dataBuffer.ts +48 -11
- package/src/data-fetchers/dataBufferTypes.ts +11 -0
- package/src/data-fetchers/fetcherDefinitionRegistry.ts +14 -4
- package/src/data-fetchers/gotdx/gotdx.ts +6 -0
- package/src/data-fetchers/gotdx.ts +45 -7
- package/src/data-fetchers/hundred-mock.ts +1 -1
- package/src/data-fetchers/index.ts +10 -20
- package/src/data-fetchers/router.ts +12 -1
- package/src/data-fetchers/thousand-mock.ts +1 -1
- package/src/data-fetchers/timeShareBuffer.ts +92 -0
- package/src/data-fetchers/tradingview.ts +2 -2
- package/src/data-fetchers/types.ts +15 -2
- package/src/engine/__tests__/chart.dpr.test.ts +1 -0
- package/src/engine/chart.ts +157 -7
- package/src/engine/chartTypes.ts +3 -0
- package/src/engine/controller/__tests__/interaction.dpr.test.ts +2 -0
- package/src/engine/controller/interaction.ts +115 -16
- package/src/engine/data/chartDataManager.ts +557 -214
- package/src/engine/draw/pixelAlign.ts +1 -1
- package/src/engine/indicators/__tests__/_propertyAssertions.ts +2 -2
- package/src/engine/indicators/__tests__/ichimoku.test.ts +3 -3
- package/src/engine/indicators/__tests__/registerBuiltins.test.ts +1 -1
- package/src/engine/indicators/calculators.ts +105 -236
- package/src/engine/indicators/chartIndicatorManager.ts +3 -2
- package/src/engine/indicators/ichimokuState.ts +2 -0
- package/src/engine/indicators/macdState.ts +1 -1
- package/src/engine/indicators/registerBuiltins.ts +1 -0
- package/src/engine/indicators/rsiState.ts +1 -1
- package/src/engine/indicators/scheduler.ts +1 -7
- package/src/engine/indicators/visibleStateComposers.ts +51 -0
- package/src/engine/layout/chartPaneLayout.ts +26 -6
- package/src/engine/modes/kLineMode.ts +57 -0
- package/src/engine/modes/timeShareMode.ts +95 -0
- package/src/engine/modes/types.ts +63 -0
- package/src/engine/paneRenderer.ts +37 -46
- package/src/engine/render/chartRenderer.ts +93 -20
- package/src/engine/renderers/Indicator/atr.ts +4 -29
- package/src/engine/renderers/Indicator/boll.ts +3 -24
- package/src/engine/renderers/Indicator/cci.ts +9 -27
- package/src/engine/renderers/Indicator/chaikinVol.ts +3 -23
- package/src/engine/renderers/Indicator/cmf.ts +3 -22
- package/src/engine/renderers/Indicator/dema.ts +5 -26
- package/src/engine/renderers/Indicator/donchian.ts +3 -3
- package/src/engine/renderers/Indicator/ene.ts +3 -24
- package/src/engine/renderers/Indicator/expma.ts +2 -2
- package/src/engine/renderers/Indicator/fastk.ts +12 -95
- package/src/engine/renderers/Indicator/fib.ts +2 -2
- package/src/engine/renderers/Indicator/hma.ts +5 -26
- package/src/engine/renderers/Indicator/hv.ts +3 -23
- package/src/engine/renderers/Indicator/ichimoku.ts +26 -6
- package/src/engine/renderers/Indicator/kama.ts +5 -26
- package/src/engine/renderers/Indicator/keltner.ts +3 -3
- package/src/engine/renderers/Indicator/kst.ts +3 -3
- package/src/engine/renderers/Indicator/ma.ts +1 -1
- package/src/engine/renderers/Indicator/macd.ts +4 -21
- package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +228 -1
- package/src/engine/renderers/Indicator/mfi.ts +3 -22
- package/src/engine/renderers/Indicator/mom.ts +9 -30
- package/src/engine/renderers/Indicator/obv.ts +3 -21
- package/src/engine/renderers/Indicator/parkinson.ts +3 -23
- package/src/engine/renderers/Indicator/pivot.ts +2 -2
- package/src/engine/renderers/Indicator/pvt.ts +3 -21
- package/src/engine/renderers/Indicator/roc.ts +4 -23
- package/src/engine/renderers/Indicator/rsi.ts +4 -4
- package/src/engine/renderers/Indicator/sar.ts +3 -3
- package/src/engine/renderers/Indicator/scale/indicator_scale.ts +11 -4
- package/src/engine/renderers/Indicator/shared/dashedLines.ts +81 -0
- package/src/engine/renderers/Indicator/shared/titleInfo.ts +52 -0
- package/src/engine/renderers/Indicator/shared/webglBand.ts +23 -0
- package/src/engine/renderers/Indicator/stoch.ts +6 -71
- package/src/engine/renderers/Indicator/structure.ts +2 -2
- package/src/engine/renderers/Indicator/supertrend.ts +3 -3
- package/src/engine/renderers/Indicator/tema.ts +5 -26
- package/src/engine/renderers/Indicator/trix.ts +3 -3
- package/src/engine/renderers/Indicator/vma.ts +3 -22
- package/src/engine/renderers/Indicator/volumeProfile.ts +2 -2
- package/src/engine/renderers/Indicator/vwap.ts +3 -21
- package/src/engine/renderers/Indicator/wma.ts +5 -26
- package/src/engine/renderers/Indicator/wmsr.ts +9 -30
- package/src/engine/renderers/Indicator/zones.ts +2 -2
- package/src/engine/renderers/candle.ts +1 -1
- package/src/engine/renderers/comparisonLine.ts +1 -0
- package/src/engine/renderers/crosshair.ts +1 -1
- package/src/engine/renderers/extremaMarkers.ts +1 -0
- package/src/engine/renderers/lastPrice.ts +5 -2
- package/src/engine/renderers/leftYAxis.ts +77 -0
- package/src/engine/renderers/subVolume.ts +3 -3
- package/src/engine/renderers/timeAxis.ts +16 -13
- package/src/engine/renderers/timeShare.ts +271 -0
- package/src/engine/renderers/yAxis.ts +9 -1
- package/src/engine/scale/price.ts +2 -2
- package/src/engine/theme/fonts.ts +1 -1
- package/src/engine/utils/klineConfig.ts +1 -5
- package/src/engine/viewport/chartViewportManager.ts +6 -5
- package/src/index.ts +1 -0
- package/src/mcp/chartBridge.ts +2 -1
- package/src/plugin/types.ts +1 -0
- package/src/semantic/types.ts +1 -1
- package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +15 -1
- package/src/tokens/theme-base.ts +36 -0
- package/src/tokens/theme-china.ts +4 -0
- package/src/tokens/theme-dark.ts +13 -33
- package/src/tokens/theme-light.ts +13 -33
- package/src/tokens/types.ts +9 -0
- package/src/types/price.ts +13 -0
- package/src/utils/dateFormat.ts +27 -4
- package/src/utils/kLineDraw/axis.ts +40 -107
- package/src/utils/uuid.ts +8 -0
- package/src/utils/volumePrice.ts +2 -2
- package/src/version.ts +1 -1
|
@@ -279,7 +279,7 @@ export function calcMAData(data: KLineData[], period: number): (number | undefin
|
|
|
279
279
|
export const DEFAULT_RSI_PERIOD1 = 6
|
|
280
280
|
export const DEFAULT_RSI_PERIOD2 = 12
|
|
281
281
|
export const DEFAULT_RSI_PERIOD3 = 24
|
|
282
|
-
|
|
282
|
+
const DEFAULT_RSI_PERIODS = [6, 12, 24] as const
|
|
283
283
|
|
|
284
284
|
/**
|
|
285
285
|
* 计算 RSI 数据
|
|
@@ -351,7 +351,7 @@ export function calcRSIData(data: KLineData[], period: number): (number | undefi
|
|
|
351
351
|
// CCI 顺势指标
|
|
352
352
|
// ============================================================================
|
|
353
353
|
|
|
354
|
-
|
|
354
|
+
const DEFAULT_CCI_PERIOD = 14
|
|
355
355
|
|
|
356
356
|
export function calcCCIData(data: KLineData[], period: number): (number | undefined)[] {
|
|
357
357
|
const result: (number | undefined)[] = new Array(data.length)
|
|
@@ -397,8 +397,8 @@ export function calcCCIData(data: KLineData[], period: number): (number | undefi
|
|
|
397
397
|
// STOCH 随机指标
|
|
398
398
|
// ============================================================================
|
|
399
399
|
|
|
400
|
-
|
|
401
|
-
|
|
400
|
+
const DEFAULT_STOCH_N = 9
|
|
401
|
+
const DEFAULT_STOCH_M = 3
|
|
402
402
|
|
|
403
403
|
export interface STOCHPoint {
|
|
404
404
|
k: number
|
|
@@ -459,7 +459,7 @@ export function calcSTOCHData(data: KLineData[], n: number, m: number): STOCHPoi
|
|
|
459
459
|
// MOM 动量指标
|
|
460
460
|
// ============================================================================
|
|
461
461
|
|
|
462
|
-
|
|
462
|
+
const DEFAULT_MOM_PERIOD = 10
|
|
463
463
|
|
|
464
464
|
export function calcMOMData(data: KLineData[], period: number): (number | undefined)[] {
|
|
465
465
|
const result: (number | undefined)[] = new Array(data.length)
|
|
@@ -482,7 +482,7 @@ export function calcMOMData(data: KLineData[], period: number): (number | undefi
|
|
|
482
482
|
// WMSR 威廉指标
|
|
483
483
|
// ============================================================================
|
|
484
484
|
|
|
485
|
-
|
|
485
|
+
const DEFAULT_WMSR_PERIOD = 14
|
|
486
486
|
|
|
487
487
|
export function calcWMSRData(data: KLineData[], period: number): (number | undefined)[] {
|
|
488
488
|
const result: (number | undefined)[] = new Array(data.length)
|
|
@@ -515,11 +515,11 @@ export function calcWMSRData(data: KLineData[], period: number): (number | undef
|
|
|
515
515
|
// KST 确知指标
|
|
516
516
|
// ============================================================================
|
|
517
517
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
518
|
+
const DEFAULT_KST_ROC1 = 10
|
|
519
|
+
const DEFAULT_KST_ROC2 = 15
|
|
520
|
+
const DEFAULT_KST_ROC3 = 20
|
|
521
|
+
const DEFAULT_KST_ROC4 = 30
|
|
522
|
+
const DEFAULT_KST_SIGNAL = 9
|
|
523
523
|
|
|
524
524
|
export interface KSTPoint {
|
|
525
525
|
kst: number
|
|
@@ -624,7 +624,7 @@ export function calcKSTData(
|
|
|
624
624
|
// FASTK 快速随机指标
|
|
625
625
|
// ============================================================================
|
|
626
626
|
|
|
627
|
-
|
|
627
|
+
const DEFAULT_FASTK_PERIOD = 9
|
|
628
628
|
|
|
629
629
|
export function calcFASTKData(data: KLineData[], period: number): (number | undefined)[] {
|
|
630
630
|
const result: (number | undefined)[] = new Array(data.length)
|
|
@@ -672,9 +672,9 @@ export interface MACDPoint {
|
|
|
672
672
|
/**
|
|
673
673
|
* 默认 MACD 参数
|
|
674
674
|
*/
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
675
|
+
const DEFAULT_MACD_FAST_PERIOD = 12
|
|
676
|
+
const DEFAULT_MACD_SLOW_PERIOD = 26
|
|
677
|
+
const DEFAULT_MACD_SIGNAL_PERIOD = 9
|
|
678
678
|
|
|
679
679
|
/**
|
|
680
680
|
* 计算 EMA(指数移动平均)值
|
|
@@ -684,7 +684,7 @@ export const DEFAULT_MACD_SIGNAL_PERIOD = 9
|
|
|
684
684
|
* @param period 周期
|
|
685
685
|
* @returns EMA 值数组,第一个值使用第一个收盘价
|
|
686
686
|
*/
|
|
687
|
-
|
|
687
|
+
function calcEMA(data: KLineData[], period: number): number[] {
|
|
688
688
|
const result: number[] = new Array(data.length)
|
|
689
689
|
const k = 2 / (period + 1)
|
|
690
690
|
|
|
@@ -708,7 +708,7 @@ export function calcEMA(data: KLineData[], period: number): number[] {
|
|
|
708
708
|
* @param period 周期
|
|
709
709
|
* @returns EMA 值数组
|
|
710
710
|
*/
|
|
711
|
-
|
|
711
|
+
function calcEMAFromArray(values: (number | undefined)[], period: number): (number | undefined)[] {
|
|
712
712
|
const result: (number | undefined)[] = new Array(values.length)
|
|
713
713
|
const k = 2 / (period + 1)
|
|
714
714
|
|
|
@@ -981,7 +981,7 @@ export function calcMACDDataSoA(
|
|
|
981
981
|
// ATR — Wilder's Average True Range
|
|
982
982
|
// ============================================================================
|
|
983
983
|
|
|
984
|
-
|
|
984
|
+
const DEFAULT_ATR_PERIOD = 14
|
|
985
985
|
|
|
986
986
|
/**
|
|
987
987
|
* 计算 Wilder ATR。
|
|
@@ -1050,16 +1050,6 @@ export function calcATRData(data: KLineData[], period: number): (number | undefi
|
|
|
1050
1050
|
return result
|
|
1051
1051
|
}
|
|
1052
1052
|
|
|
1053
|
-
/**
|
|
1054
|
-
* 从 SoA 布局计算 ATR(包装函数,对齐其他指标的 SoA 入口)
|
|
1055
|
-
*/
|
|
1056
|
-
export function calcATRDataSoA(
|
|
1057
|
-
layout: KLineSoALayout,
|
|
1058
|
-
period: number,
|
|
1059
|
-
): (number | undefined)[] {
|
|
1060
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1061
|
-
return calcATRData(data, period)
|
|
1062
|
-
}
|
|
1063
1053
|
|
|
1064
1054
|
// ============================================================================
|
|
1065
1055
|
// WMA — Weighted Moving Average (linear weights)
|
|
@@ -1067,7 +1057,7 @@ export function calcATRDataSoA(
|
|
|
1067
1057
|
// 滞后 = (period-1)/3 (相比 SMA 更快响应)
|
|
1068
1058
|
// ============================================================================
|
|
1069
1059
|
|
|
1070
|
-
|
|
1060
|
+
const DEFAULT_WMA_PERIOD = 9
|
|
1071
1061
|
|
|
1072
1062
|
function _computeWMAOnNumbers(values: (number | undefined)[], period: number): (number | undefined)[] {
|
|
1073
1063
|
const n = values.length
|
|
@@ -1101,10 +1091,7 @@ export function calcWMAData(data: KLineData[], period: number): (number | undefi
|
|
|
1101
1091
|
return _computeWMAOnNumbers(closes, period)
|
|
1102
1092
|
}
|
|
1103
1093
|
|
|
1104
|
-
|
|
1105
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1106
|
-
return calcWMAData(data, period)
|
|
1107
|
-
}
|
|
1094
|
+
|
|
1108
1095
|
|
|
1109
1096
|
// ============================================================================
|
|
1110
1097
|
// EMA helper(DEMA / TEMA 复用,沿用 EXPMA 的 first-close seed 习惯)
|
|
@@ -1139,7 +1126,7 @@ function _computeEMASeries(values: (number | undefined)[], period: number): (num
|
|
|
1139
1126
|
// 性质: 对线性输入零滞后(稳态),warmup ~ 2*(period-1)
|
|
1140
1127
|
// ============================================================================
|
|
1141
1128
|
|
|
1142
|
-
|
|
1129
|
+
const DEFAULT_DEMA_PERIOD = 20
|
|
1143
1130
|
|
|
1144
1131
|
export function calcDEMAData(data: KLineData[], period: number): (number | undefined)[] {
|
|
1145
1132
|
const n = data.length
|
|
@@ -1161,10 +1148,7 @@ export function calcDEMAData(data: KLineData[], period: number): (number | undef
|
|
|
1161
1148
|
return result
|
|
1162
1149
|
}
|
|
1163
1150
|
|
|
1164
|
-
|
|
1165
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1166
|
-
return calcDEMAData(data, period)
|
|
1167
|
-
}
|
|
1151
|
+
|
|
1168
1152
|
|
|
1169
1153
|
// ============================================================================
|
|
1170
1154
|
// TEMA — Triple Exponential Moving Average
|
|
@@ -1172,7 +1156,7 @@ export function calcDEMADataSoA(layout: KLineSoALayout, period: number): (number
|
|
|
1172
1156
|
// 性质: 对二次多项式输入零滞后(稳态),warmup ~ 3*(period-1)
|
|
1173
1157
|
// ============================================================================
|
|
1174
1158
|
|
|
1175
|
-
|
|
1159
|
+
const DEFAULT_TEMA_PERIOD = 20
|
|
1176
1160
|
|
|
1177
1161
|
export function calcTEMAData(data: KLineData[], period: number): (number | undefined)[] {
|
|
1178
1162
|
const n = data.length
|
|
@@ -1196,10 +1180,7 @@ export function calcTEMAData(data: KLineData[], period: number): (number | undef
|
|
|
1196
1180
|
return result
|
|
1197
1181
|
}
|
|
1198
1182
|
|
|
1199
|
-
|
|
1200
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1201
|
-
return calcTEMAData(data, period)
|
|
1202
|
-
}
|
|
1183
|
+
|
|
1203
1184
|
|
|
1204
1185
|
// ============================================================================
|
|
1205
1186
|
// HMA — Hull Moving Average
|
|
@@ -1208,7 +1189,7 @@ export function calcTEMADataSoA(layout: KLineSoALayout, period: number): (number
|
|
|
1208
1189
|
// warmup ≈ period - 1 + round(sqrt(period)) - 1
|
|
1209
1190
|
// ============================================================================
|
|
1210
1191
|
|
|
1211
|
-
|
|
1192
|
+
const DEFAULT_HMA_PERIOD = 9
|
|
1212
1193
|
|
|
1213
1194
|
export function calcHMAData(data: KLineData[], period: number): (number | undefined)[] {
|
|
1214
1195
|
const n = data.length
|
|
@@ -1234,10 +1215,7 @@ export function calcHMAData(data: KLineData[], period: number): (number | undefi
|
|
|
1234
1215
|
return _computeWMAOnNumbers(raw, sqrtPeriod)
|
|
1235
1216
|
}
|
|
1236
1217
|
|
|
1237
|
-
|
|
1238
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1239
|
-
return calcHMAData(data, period)
|
|
1240
|
-
}
|
|
1218
|
+
|
|
1241
1219
|
|
|
1242
1220
|
// ============================================================================
|
|
1243
1221
|
// KAMA — Kaufman's Adaptive Moving Average
|
|
@@ -1248,9 +1226,9 @@ export function calcHMADataSoA(layout: KLineSoALayout, period: number): (number
|
|
|
1248
1226
|
// 种子 KAMA(n-1) = close[n-1](或 SMA(n);这里采用 close 种子以保持与项目内 EMA 系列一致)
|
|
1249
1227
|
// ============================================================================
|
|
1250
1228
|
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1229
|
+
const DEFAULT_KAMA_PERIOD = 10
|
|
1230
|
+
const DEFAULT_KAMA_FAST_PERIOD = 2
|
|
1231
|
+
const DEFAULT_KAMA_SLOW_PERIOD = 30
|
|
1254
1232
|
|
|
1255
1233
|
export function calcKAMAData(
|
|
1256
1234
|
data: KLineData[],
|
|
@@ -1296,15 +1274,7 @@ export function calcKAMAData(
|
|
|
1296
1274
|
return result
|
|
1297
1275
|
}
|
|
1298
1276
|
|
|
1299
|
-
|
|
1300
|
-
layout: KLineSoALayout,
|
|
1301
|
-
period: number,
|
|
1302
|
-
fastPeriod: number,
|
|
1303
|
-
slowPeriod: number,
|
|
1304
|
-
): (number | undefined)[] {
|
|
1305
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1306
|
-
return calcKAMAData(data, period, fastPeriod, slowPeriod)
|
|
1307
|
-
}
|
|
1277
|
+
|
|
1308
1278
|
|
|
1309
1279
|
// ============================================================================
|
|
1310
1280
|
// SAR — Parabolic Stop and Reverse
|
|
@@ -1319,8 +1289,8 @@ export interface SARPoint {
|
|
|
1319
1289
|
trend: 'up' | 'down'
|
|
1320
1290
|
}
|
|
1321
1291
|
|
|
1322
|
-
|
|
1323
|
-
|
|
1292
|
+
const DEFAULT_SAR_STEP = 0.02
|
|
1293
|
+
const DEFAULT_SAR_MAX_STEP = 0.2
|
|
1324
1294
|
|
|
1325
1295
|
export function calcSARData(
|
|
1326
1296
|
data: KLineData[],
|
|
@@ -1382,14 +1352,7 @@ export function calcSARData(
|
|
|
1382
1352
|
return result
|
|
1383
1353
|
}
|
|
1384
1354
|
|
|
1385
|
-
|
|
1386
|
-
layout: KLineSoALayout,
|
|
1387
|
-
step: number,
|
|
1388
|
-
maxStep: number,
|
|
1389
|
-
): (SARPoint | undefined)[] {
|
|
1390
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1391
|
-
return calcSARData(data, step, maxStep)
|
|
1392
|
-
}
|
|
1355
|
+
|
|
1393
1356
|
|
|
1394
1357
|
// ============================================================================
|
|
1395
1358
|
// SuperTrend — ATR-based trend-following stop/band
|
|
@@ -1400,8 +1363,8 @@ export interface SuperTrendPoint {
|
|
|
1400
1363
|
trend: 'up' | 'down'
|
|
1401
1364
|
}
|
|
1402
1365
|
|
|
1403
|
-
|
|
1404
|
-
|
|
1366
|
+
const DEFAULT_SUPERTREND_ATR_PERIOD = 10
|
|
1367
|
+
const DEFAULT_SUPERTREND_MULTIPLIER = 3
|
|
1405
1368
|
|
|
1406
1369
|
export function calcSuperTrendData(
|
|
1407
1370
|
data: KLineData[],
|
|
@@ -1448,14 +1411,7 @@ export function calcSuperTrendData(
|
|
|
1448
1411
|
return result
|
|
1449
1412
|
}
|
|
1450
1413
|
|
|
1451
|
-
|
|
1452
|
-
layout: KLineSoALayout,
|
|
1453
|
-
atrPeriod: number,
|
|
1454
|
-
multiplier: number,
|
|
1455
|
-
): (SuperTrendPoint | undefined)[] {
|
|
1456
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1457
|
-
return calcSuperTrendData(data, atrPeriod, multiplier)
|
|
1458
|
-
}
|
|
1414
|
+
|
|
1459
1415
|
|
|
1460
1416
|
// ============================================================================
|
|
1461
1417
|
// Keltner Channel — EMA ± multiplier × ATR
|
|
@@ -1467,9 +1423,9 @@ export interface KeltnerPoint {
|
|
|
1467
1423
|
lower: number
|
|
1468
1424
|
}
|
|
1469
1425
|
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1426
|
+
const DEFAULT_KELTNER_EMA_PERIOD = 20
|
|
1427
|
+
const DEFAULT_KELTNER_ATR_PERIOD = 10
|
|
1428
|
+
const DEFAULT_KELTNER_MULTIPLIER = 2
|
|
1473
1429
|
|
|
1474
1430
|
export function calcKeltnerData(
|
|
1475
1431
|
data: KLineData[],
|
|
@@ -1500,15 +1456,7 @@ export function calcKeltnerData(
|
|
|
1500
1456
|
return result
|
|
1501
1457
|
}
|
|
1502
1458
|
|
|
1503
|
-
|
|
1504
|
-
layout: KLineSoALayout,
|
|
1505
|
-
emaPeriod: number,
|
|
1506
|
-
atrPeriod: number,
|
|
1507
|
-
multiplier: number,
|
|
1508
|
-
): (KeltnerPoint | undefined)[] {
|
|
1509
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1510
|
-
return calcKeltnerData(data, emaPeriod, atrPeriod, multiplier)
|
|
1511
|
-
}
|
|
1459
|
+
|
|
1512
1460
|
|
|
1513
1461
|
// ============================================================================
|
|
1514
1462
|
// Donchian Channel — rolling max(high) / min(low) over period
|
|
@@ -1520,7 +1468,7 @@ export interface DonchianPoint {
|
|
|
1520
1468
|
lower: number
|
|
1521
1469
|
}
|
|
1522
1470
|
|
|
1523
|
-
|
|
1471
|
+
const DEFAULT_DONCHIAN_PERIOD = 20
|
|
1524
1472
|
|
|
1525
1473
|
export function calcDonchianData(
|
|
1526
1474
|
data: KLineData[],
|
|
@@ -1543,13 +1491,7 @@ export function calcDonchianData(
|
|
|
1543
1491
|
return result
|
|
1544
1492
|
}
|
|
1545
1493
|
|
|
1546
|
-
|
|
1547
|
-
layout: KLineSoALayout,
|
|
1548
|
-
period: number,
|
|
1549
|
-
): (DonchianPoint | undefined)[] {
|
|
1550
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1551
|
-
return calcDonchianData(data, period)
|
|
1552
|
-
}
|
|
1494
|
+
|
|
1553
1495
|
|
|
1554
1496
|
// ============================================================================
|
|
1555
1497
|
// Ichimoku Kinko Hyo — 一目均衡表
|
|
@@ -1559,7 +1501,7 @@ export function calcDonchianDataSoA(
|
|
|
1559
1501
|
// spanA(t) = (tenkan(t-displacement) + kijun(t-displacement)) / 2 ← 前置 displacement
|
|
1560
1502
|
// spanB(t) = 用 spanBPeriod 计算后再前置 displacement
|
|
1561
1503
|
// chikou(t) = close(t+displacement) ← 后置 displacement
|
|
1562
|
-
//
|
|
1504
|
+
// 输出长度 = data.length + displacement,末尾 displacement 根为未来云(仅 spanA/spanB)
|
|
1563
1505
|
// ============================================================================
|
|
1564
1506
|
|
|
1565
1507
|
export interface IchimokuPoint {
|
|
@@ -1570,10 +1512,10 @@ export interface IchimokuPoint {
|
|
|
1570
1512
|
chikou?: number
|
|
1571
1513
|
}
|
|
1572
1514
|
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1515
|
+
const DEFAULT_ICHIMOKU_TENKAN = 9
|
|
1516
|
+
const DEFAULT_ICHIMOKU_KIJUN = 26
|
|
1517
|
+
const DEFAULT_ICHIMOKU_SPAN_B = 52
|
|
1518
|
+
const DEFAULT_ICHIMOKU_DISPLACEMENT = 26
|
|
1577
1519
|
|
|
1578
1520
|
function _rollingMidline(data: KLineData[], period: number): (number | undefined)[] {
|
|
1579
1521
|
const n = data.length
|
|
@@ -1600,8 +1542,11 @@ export function calcIchimokuData(
|
|
|
1600
1542
|
displacement: number,
|
|
1601
1543
|
): (IchimokuPoint | undefined)[] {
|
|
1602
1544
|
const n = data.length
|
|
1603
|
-
const
|
|
1604
|
-
|
|
1545
|
+
const totalLen = n + displacement
|
|
1546
|
+
const result: (IchimokuPoint | undefined)[] = new Array(totalLen).fill(undefined)
|
|
1547
|
+
if (n === 0 || tenkanPeriod <= 0 || kijunPeriod <= 0 || spanBPeriod <= 0) {
|
|
1548
|
+
return result.slice(0, n)
|
|
1549
|
+
}
|
|
1605
1550
|
|
|
1606
1551
|
const tenkan = _rollingMidline(data, tenkanPeriod)
|
|
1607
1552
|
const kijun = _rollingMidline(data, kijunPeriod)
|
|
@@ -1631,26 +1576,33 @@ export function calcIchimokuData(
|
|
|
1631
1576
|
result[t] = point
|
|
1632
1577
|
}
|
|
1633
1578
|
|
|
1579
|
+
// 未来云:在 data 末尾延伸 displacement 根,仅含 spanA/spanB
|
|
1580
|
+
for (let f = 0; f < displacement; f++) {
|
|
1581
|
+
const t = n + f
|
|
1582
|
+
const src = t - displacement
|
|
1583
|
+
const point: IchimokuPoint = {}
|
|
1584
|
+
if (src >= 0 && src < n) {
|
|
1585
|
+
if (tenkan[src] !== undefined && kijun[src] !== undefined) {
|
|
1586
|
+
point.spanA = (tenkan[src]! + kijun[src]!) / 2
|
|
1587
|
+
}
|
|
1588
|
+
if (spanBSource[src] !== undefined) {
|
|
1589
|
+
point.spanB = spanBSource[src]
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
result[t] = point
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1634
1595
|
return result
|
|
1635
1596
|
}
|
|
1636
1597
|
|
|
1637
|
-
|
|
1638
|
-
layout: KLineSoALayout,
|
|
1639
|
-
tenkanPeriod: number,
|
|
1640
|
-
kijunPeriod: number,
|
|
1641
|
-
spanBPeriod: number,
|
|
1642
|
-
displacement: number,
|
|
1643
|
-
): (IchimokuPoint | undefined)[] {
|
|
1644
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1645
|
-
return calcIchimokuData(data, tenkanPeriod, kijunPeriod, spanBPeriod, displacement)
|
|
1646
|
-
}
|
|
1598
|
+
|
|
1647
1599
|
|
|
1648
1600
|
// ============================================================================
|
|
1649
1601
|
// ROC — Rate of Change
|
|
1650
1602
|
// ROC(t) = (close[t] - close[t-period]) / close[t-period] * 100
|
|
1651
1603
|
// ============================================================================
|
|
1652
1604
|
|
|
1653
|
-
|
|
1605
|
+
const DEFAULT_ROC_PERIOD = 12
|
|
1654
1606
|
|
|
1655
1607
|
export function calcROCData(data: KLineData[], period: number): (number | undefined)[] {
|
|
1656
1608
|
const n = data.length
|
|
@@ -1664,10 +1616,7 @@ export function calcROCData(data: KLineData[], period: number): (number | undefi
|
|
|
1664
1616
|
return result
|
|
1665
1617
|
}
|
|
1666
1618
|
|
|
1667
|
-
|
|
1668
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1669
|
-
return calcROCData(data, period)
|
|
1670
|
-
}
|
|
1619
|
+
|
|
1671
1620
|
|
|
1672
1621
|
// ============================================================================
|
|
1673
1622
|
// TRIX — Triple Exponential Smoothing Oscillator
|
|
@@ -1681,8 +1630,8 @@ export interface TRIXResult {
|
|
|
1681
1630
|
signalSeries: (number | undefined)[]
|
|
1682
1631
|
}
|
|
1683
1632
|
|
|
1684
|
-
|
|
1685
|
-
|
|
1633
|
+
const DEFAULT_TRIX_PERIOD = 15
|
|
1634
|
+
const DEFAULT_TRIX_SIGNAL_PERIOD = 9
|
|
1686
1635
|
|
|
1687
1636
|
export function calcTRIXData(
|
|
1688
1637
|
data: KLineData[],
|
|
@@ -1716,14 +1665,7 @@ export function calcTRIXData(
|
|
|
1716
1665
|
return { series, signalSeries }
|
|
1717
1666
|
}
|
|
1718
1667
|
|
|
1719
|
-
|
|
1720
|
-
layout: KLineSoALayout,
|
|
1721
|
-
period: number,
|
|
1722
|
-
signalPeriod: number,
|
|
1723
|
-
): TRIXResult {
|
|
1724
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1725
|
-
return calcTRIXData(data, period, signalPeriod)
|
|
1726
|
-
}
|
|
1668
|
+
|
|
1727
1669
|
|
|
1728
1670
|
// ============================================================================
|
|
1729
1671
|
// HV — Historical Volatility (close-to-close log returns)
|
|
@@ -1731,8 +1673,8 @@ export function calcTRIXDataSoA(
|
|
|
1731
1673
|
// 输出年化波动率(百分比形式 × 100)
|
|
1732
1674
|
// ============================================================================
|
|
1733
1675
|
|
|
1734
|
-
|
|
1735
|
-
|
|
1676
|
+
const DEFAULT_HV_PERIOD = 20
|
|
1677
|
+
const DEFAULT_HV_ANNUALIZATION = 252
|
|
1736
1678
|
|
|
1737
1679
|
export function calcHVData(
|
|
1738
1680
|
data: KLineData[],
|
|
@@ -1768,22 +1710,15 @@ export function calcHVData(
|
|
|
1768
1710
|
return result
|
|
1769
1711
|
}
|
|
1770
1712
|
|
|
1771
|
-
|
|
1772
|
-
layout: KLineSoALayout,
|
|
1773
|
-
period: number,
|
|
1774
|
-
annualizationFactor: number,
|
|
1775
|
-
): (number | undefined)[] {
|
|
1776
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1777
|
-
return calcHVData(data, period, annualizationFactor)
|
|
1778
|
-
}
|
|
1713
|
+
|
|
1779
1714
|
|
|
1780
1715
|
// ============================================================================
|
|
1781
1716
|
// Parkinson Volatility — high-low range volatility
|
|
1782
1717
|
// PV(t) = sqrt( (1/(4*ln(2))) * mean(ln(high[i]/low[i])^2) * annualization ) * 100
|
|
1783
1718
|
// ============================================================================
|
|
1784
1719
|
|
|
1785
|
-
|
|
1786
|
-
|
|
1720
|
+
const DEFAULT_PARKINSON_PERIOD = 20
|
|
1721
|
+
const DEFAULT_PARKINSON_ANNUALIZATION = 252
|
|
1787
1722
|
|
|
1788
1723
|
export function calcParkinsonData(
|
|
1789
1724
|
data: KLineData[],
|
|
@@ -1818,22 +1753,15 @@ export function calcParkinsonData(
|
|
|
1818
1753
|
return result
|
|
1819
1754
|
}
|
|
1820
1755
|
|
|
1821
|
-
|
|
1822
|
-
layout: KLineSoALayout,
|
|
1823
|
-
period: number,
|
|
1824
|
-
annualizationFactor: number,
|
|
1825
|
-
): (number | undefined)[] {
|
|
1826
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1827
|
-
return calcParkinsonData(data, period, annualizationFactor)
|
|
1828
|
-
}
|
|
1756
|
+
|
|
1829
1757
|
|
|
1830
1758
|
// ============================================================================
|
|
1831
1759
|
// Chaikin Volatility — EMA(high-low) 的 ROC
|
|
1832
1760
|
// ChaikinVol(t) = (EMA(H-L, p)[t] - EMA(H-L, p)[t-rocPeriod]) / EMA(H-L, p)[t-rocPeriod] * 100
|
|
1833
1761
|
// ============================================================================
|
|
1834
1762
|
|
|
1835
|
-
|
|
1836
|
-
|
|
1763
|
+
const DEFAULT_CHAIKIN_VOL_EMA_PERIOD = 10
|
|
1764
|
+
const DEFAULT_CHAIKIN_VOL_ROC_PERIOD = 10
|
|
1837
1765
|
|
|
1838
1766
|
export function calcChaikinVolData(
|
|
1839
1767
|
data: KLineData[],
|
|
@@ -1859,20 +1787,13 @@ export function calcChaikinVolData(
|
|
|
1859
1787
|
return result
|
|
1860
1788
|
}
|
|
1861
1789
|
|
|
1862
|
-
|
|
1863
|
-
layout: KLineSoALayout,
|
|
1864
|
-
emaPeriod: number,
|
|
1865
|
-
rocPeriod: number,
|
|
1866
|
-
): (number | undefined)[] {
|
|
1867
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1868
|
-
return calcChaikinVolData(data, emaPeriod, rocPeriod)
|
|
1869
|
-
}
|
|
1790
|
+
|
|
1870
1791
|
|
|
1871
1792
|
// ============================================================================
|
|
1872
1793
|
// VMA — Volume Moving Average (SMA of volume)
|
|
1873
1794
|
// ============================================================================
|
|
1874
1795
|
|
|
1875
|
-
|
|
1796
|
+
const DEFAULT_VMA_PERIOD = 5
|
|
1876
1797
|
|
|
1877
1798
|
export function calcVMAData(data: KLineData[], period: number): (number | undefined)[] {
|
|
1878
1799
|
const n = data.length
|
|
@@ -1888,10 +1809,7 @@ export function calcVMAData(data: KLineData[], period: number): (number | undefi
|
|
|
1888
1809
|
return result
|
|
1889
1810
|
}
|
|
1890
1811
|
|
|
1891
|
-
|
|
1892
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1893
|
-
return calcVMAData(data, period)
|
|
1894
|
-
}
|
|
1812
|
+
|
|
1895
1813
|
|
|
1896
1814
|
// ============================================================================
|
|
1897
1815
|
// OBV — On Balance Volume (cumulative)
|
|
@@ -1916,10 +1834,7 @@ export function calcOBVData(data: KLineData[]): (number | undefined)[] {
|
|
|
1916
1834
|
return result
|
|
1917
1835
|
}
|
|
1918
1836
|
|
|
1919
|
-
|
|
1920
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1921
|
-
return calcOBVData(data)
|
|
1922
|
-
}
|
|
1837
|
+
|
|
1923
1838
|
|
|
1924
1839
|
// ============================================================================
|
|
1925
1840
|
// PVT — Price Volume Trend (cumulative)
|
|
@@ -1944,10 +1859,7 @@ export function calcPVTData(data: KLineData[]): (number | undefined)[] {
|
|
|
1944
1859
|
return result
|
|
1945
1860
|
}
|
|
1946
1861
|
|
|
1947
|
-
|
|
1948
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1949
|
-
return calcPVTData(data)
|
|
1950
|
-
}
|
|
1862
|
+
|
|
1951
1863
|
|
|
1952
1864
|
// ============================================================================
|
|
1953
1865
|
// VWAP — Volume-Weighted Average Price
|
|
@@ -1957,7 +1869,7 @@ export function calcPVTDataSoA(layout: KLineSoALayout): (number | undefined)[] {
|
|
|
1957
1869
|
// between consecutive bar timestamps exceeds this value (e.g., overnight)
|
|
1958
1870
|
// ============================================================================
|
|
1959
1871
|
|
|
1960
|
-
|
|
1872
|
+
const DEFAULT_VWAP_SESSION_GAP_MS = 0
|
|
1961
1873
|
|
|
1962
1874
|
export function calcVWAPData(
|
|
1963
1875
|
data: KLineData[],
|
|
@@ -1987,13 +1899,7 @@ export function calcVWAPData(
|
|
|
1987
1899
|
return result
|
|
1988
1900
|
}
|
|
1989
1901
|
|
|
1990
|
-
|
|
1991
|
-
layout: KLineSoALayout,
|
|
1992
|
-
sessionResetGapMs: number,
|
|
1993
|
-
): (number | undefined)[] {
|
|
1994
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
1995
|
-
return calcVWAPData(data, sessionResetGapMs)
|
|
1996
|
-
}
|
|
1902
|
+
|
|
1997
1903
|
|
|
1998
1904
|
// ============================================================================
|
|
1999
1905
|
// CMF — Chaikin Money Flow
|
|
@@ -2002,7 +1908,7 @@ export function calcVWAPDataSoA(
|
|
|
2002
1908
|
// CMF(t) = sum(MFV[t-period+1..t]) / sum(Volume[t-period+1..t]) ∈ [-1, 1]
|
|
2003
1909
|
// ============================================================================
|
|
2004
1910
|
|
|
2005
|
-
|
|
1911
|
+
const DEFAULT_CMF_PERIOD = 20
|
|
2006
1912
|
|
|
2007
1913
|
export function calcCMFData(data: KLineData[], period: number): (number | undefined)[] {
|
|
2008
1914
|
const n = data.length
|
|
@@ -2033,10 +1939,7 @@ export function calcCMFData(data: KLineData[], period: number): (number | undefi
|
|
|
2033
1939
|
return result
|
|
2034
1940
|
}
|
|
2035
1941
|
|
|
2036
|
-
|
|
2037
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2038
|
-
return calcCMFData(data, period)
|
|
2039
|
-
}
|
|
1942
|
+
|
|
2040
1943
|
|
|
2041
1944
|
// ============================================================================
|
|
2042
1945
|
// MFI — Money Flow Index
|
|
@@ -2045,7 +1948,7 @@ export function calcCMFDataSoA(layout: KLineSoALayout, period: number): (number
|
|
|
2045
1948
|
// MFR = PMF / NMF; MFI = 100 - 100 / (1 + MFR) ∈ [0, 100]
|
|
2046
1949
|
// ============================================================================
|
|
2047
1950
|
|
|
2048
|
-
|
|
1951
|
+
const DEFAULT_MFI_PERIOD = 14
|
|
2049
1952
|
|
|
2050
1953
|
export function calcMFIData(data: KLineData[], period: number): (number | undefined)[] {
|
|
2051
1954
|
const n = data.length
|
|
@@ -2090,10 +1993,7 @@ export function calcMFIData(data: KLineData[], period: number): (number | undefi
|
|
|
2090
1993
|
return result
|
|
2091
1994
|
}
|
|
2092
1995
|
|
|
2093
|
-
|
|
2094
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2095
|
-
return calcMFIData(data, period)
|
|
2096
|
-
}
|
|
1996
|
+
|
|
2097
1997
|
|
|
2098
1998
|
// ============================================================================
|
|
2099
1999
|
// Pivot Points — Classic floor-trader pivots from prior bar's HLC
|
|
@@ -2135,10 +2035,7 @@ export function calcPivotData(data: KLineData[]): (PivotPoint | undefined)[] {
|
|
|
2135
2035
|
return result
|
|
2136
2036
|
}
|
|
2137
2037
|
|
|
2138
|
-
|
|
2139
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2140
|
-
return calcPivotData(data)
|
|
2141
|
-
}
|
|
2038
|
+
|
|
2142
2039
|
|
|
2143
2040
|
// ============================================================================
|
|
2144
2041
|
// Fibonacci Retracement — anchored to rolling-window high/low
|
|
@@ -2158,7 +2055,7 @@ export interface FibPoint {
|
|
|
2158
2055
|
level786: number
|
|
2159
2056
|
}
|
|
2160
2057
|
|
|
2161
|
-
|
|
2058
|
+
const DEFAULT_FIB_PERIOD = 50
|
|
2162
2059
|
|
|
2163
2060
|
export function calcFibData(data: KLineData[], period: number): (FibPoint | undefined)[] {
|
|
2164
2061
|
const n = data.length
|
|
@@ -2195,10 +2092,7 @@ export function calcFibData(data: KLineData[], period: number): (FibPoint | unde
|
|
|
2195
2092
|
return result
|
|
2196
2093
|
}
|
|
2197
2094
|
|
|
2198
|
-
|
|
2199
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2200
|
-
return calcFibData(data, period)
|
|
2201
|
-
}
|
|
2095
|
+
|
|
2202
2096
|
|
|
2203
2097
|
// ============================================================================
|
|
2204
2098
|
// SMC Structure — Swing detection + BOS / CHOCH events
|
|
@@ -2234,8 +2128,8 @@ export interface StructureSnapshot {
|
|
|
2234
2128
|
trend: 'up' | 'down' | 'range'
|
|
2235
2129
|
}
|
|
2236
2130
|
|
|
2237
|
-
|
|
2238
|
-
|
|
2131
|
+
const DEFAULT_STRUCTURE_LEFT = 2
|
|
2132
|
+
const DEFAULT_STRUCTURE_RIGHT = 2
|
|
2239
2133
|
|
|
2240
2134
|
export function calcStructureData(
|
|
2241
2135
|
data: KLineData[],
|
|
@@ -2345,15 +2239,7 @@ function isExtremum(
|
|
|
2345
2239
|
return true
|
|
2346
2240
|
}
|
|
2347
2241
|
|
|
2348
|
-
|
|
2349
|
-
layout: KLineSoALayout,
|
|
2350
|
-
leftWindow: number,
|
|
2351
|
-
rightWindow: number,
|
|
2352
|
-
breakoutSource: 'close' | 'wick',
|
|
2353
|
-
): StructureSnapshot {
|
|
2354
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2355
|
-
return calcStructureData(data, leftWindow, rightWindow, breakoutSource)
|
|
2356
|
-
}
|
|
2242
|
+
|
|
2357
2243
|
|
|
2358
2244
|
// ============================================================================
|
|
2359
2245
|
// SMC Zones — FVG (Fair Value Gap) + Order Blocks
|
|
@@ -2378,7 +2264,7 @@ export interface Zone {
|
|
|
2378
2264
|
low: number
|
|
2379
2265
|
}
|
|
2380
2266
|
|
|
2381
|
-
|
|
2267
|
+
const DEFAULT_ZONES_OB_LOOKBACK = 5
|
|
2382
2268
|
|
|
2383
2269
|
export function calcZonesData(
|
|
2384
2270
|
data: KLineData[],
|
|
@@ -2457,16 +2343,7 @@ export function calcZonesData(
|
|
|
2457
2343
|
return zones
|
|
2458
2344
|
}
|
|
2459
2345
|
|
|
2460
|
-
|
|
2461
|
-
layout: KLineSoALayout,
|
|
2462
|
-
obLookback: number,
|
|
2463
|
-
structureLeftWindow: number,
|
|
2464
|
-
structureRightWindow: number,
|
|
2465
|
-
breakoutSource: 'close' | 'wick',
|
|
2466
|
-
): Zone[] {
|
|
2467
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2468
|
-
return calcZonesData(data, obLookback, structureLeftWindow, structureRightWindow, breakoutSource)
|
|
2469
|
-
}
|
|
2346
|
+
|
|
2470
2347
|
|
|
2471
2348
|
// ============================================================================
|
|
2472
2349
|
// Volume Profile — price-bin volume distribution
|
|
@@ -2489,9 +2366,9 @@ export interface VolumeProfileResult {
|
|
|
2489
2366
|
totalVolume: number
|
|
2490
2367
|
}
|
|
2491
2368
|
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2369
|
+
const DEFAULT_VP_BINS = 24
|
|
2370
|
+
const DEFAULT_VP_LOOKBACK = 0
|
|
2371
|
+
const DEFAULT_VP_VALUE_AREA = 0.7
|
|
2495
2372
|
|
|
2496
2373
|
export function calcVolumeProfileData(
|
|
2497
2374
|
data: KLineData[],
|
|
@@ -2582,12 +2459,4 @@ export function calcVolumeProfileData(
|
|
|
2582
2459
|
return { bins: binsArr, poc, vah, val, totalVolume }
|
|
2583
2460
|
}
|
|
2584
2461
|
|
|
2585
|
-
|
|
2586
|
-
layout: KLineSoALayout,
|
|
2587
|
-
bins: number,
|
|
2588
|
-
lookback: number,
|
|
2589
|
-
valueAreaPercent: number,
|
|
2590
|
-
): VolumeProfileResult {
|
|
2591
|
-
const data = SharedKLineBuffer.toKLineData(layout)
|
|
2592
|
-
return calcVolumeProfileData(data, bins, lookback, valueAreaPercent)
|
|
2593
|
-
}
|
|
2462
|
+
|