@amcharts/amcharts5 5.6.2 → 5.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.internal/charts/stock/StockChart.d.ts +22 -0
- package/.internal/charts/stock/StockChart.d.ts.map +1 -1
- package/.internal/charts/stock/StockChart.js +64 -12
- package/.internal/charts/stock/StockChart.js.map +1 -1
- package/.internal/charts/stock/StockChartDefaultTheme.d.ts.map +1 -1
- package/.internal/charts/stock/StockChartDefaultTheme.js +64 -2
- package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
- package/.internal/charts/stock/drawing/CalloutSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/CalloutSeries.js +36 -34
- package/.internal/charts/stock/drawing/CalloutSeries.js.map +1 -1
- package/.internal/charts/stock/drawing/DrawingSeries.d.ts +2 -0
- package/.internal/charts/stock/drawing/DrawingSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/DrawingSeries.js +3 -0
- package/.internal/charts/stock/drawing/DrawingSeries.js.map +1 -1
- package/.internal/charts/stock/drawing/IconSeries.d.ts +1 -1
- package/.internal/charts/stock/drawing/IconSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/IconSeries.js +35 -33
- package/.internal/charts/stock/drawing/IconSeries.js.map +1 -1
- package/.internal/charts/stock/drawing/LabelSeries.d.ts +1 -1
- package/.internal/charts/stock/drawing/LabelSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/LabelSeries.js +35 -29
- package/.internal/charts/stock/drawing/LabelSeries.js.map +1 -1
- package/.internal/charts/stock/indicators/AccumulationDistribution.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AccumulationDistribution.js +4 -3
- package/.internal/charts/stock/indicators/AccumulationDistribution.js.map +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.js +4 -3
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/Aroon.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Aroon.js +8 -6
- package/.internal/charts/stock/indicators/Aroon.js.map +1 -1
- package/.internal/charts/stock/indicators/AwesomeOscillator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AwesomeOscillator.js +6 -4
- package/.internal/charts/stock/indicators/AwesomeOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.js +9 -7
- package/.internal/charts/stock/indicators/BollingerBands.js.map +1 -1
- package/.internal/charts/stock/indicators/ChaikinMoneyFlow.d.ts +2 -3
- package/.internal/charts/stock/indicators/ChaikinMoneyFlow.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/ChaikinMoneyFlow.js +0 -6
- package/.internal/charts/stock/indicators/ChaikinMoneyFlow.js.map +1 -1
- package/.internal/charts/stock/indicators/ChaikinOscillator.js +2 -2
- package/.internal/charts/stock/indicators/ChaikinOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/ChartIndicator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/ChartIndicator.js.map +1 -1
- package/.internal/charts/stock/indicators/DisparityIndex.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/DisparityIndex.js +4 -3
- package/.internal/charts/stock/indicators/DisparityIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.d.ts +2 -1
- package/.internal/charts/stock/indicators/Indicator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.js +13 -8
- package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
- package/.internal/charts/stock/indicators/MACD.js +1 -1
- package/.internal/charts/stock/indicators/MACD.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js.map +1 -1
- package/.internal/charts/stock/indicators/OnBalanceVolume.d.ts +0 -1
- package/.internal/charts/stock/indicators/OnBalanceVolume.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/OnBalanceVolume.js +0 -6
- package/.internal/charts/stock/indicators/OnBalanceVolume.js.map +1 -1
- package/.internal/charts/stock/indicators/OverboughtOversold.d.ts +0 -1
- package/.internal/charts/stock/indicators/OverboughtOversold.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/OverboughtOversold.js +0 -8
- package/.internal/charts/stock/indicators/OverboughtOversold.js.map +1 -1
- package/.internal/charts/stock/indicators/RelativeStrengthIndex.js +1 -1
- package/.internal/charts/stock/indicators/RelativeStrengthIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/StochasticMomentumIndex.js +1 -1
- package/.internal/charts/stock/indicators/StochasticMomentumIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/StochasticOscillator.js +1 -1
- package/.internal/charts/stock/indicators/StochasticOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/Trix.js +1 -1
- package/.internal/charts/stock/indicators/Trix.js.map +1 -1
- package/.internal/charts/stock/indicators/VWAP.d.ts +0 -1
- package/.internal/charts/stock/indicators/VWAP.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/VWAP.js +18 -22
- package/.internal/charts/stock/indicators/VWAP.js.map +1 -1
- package/.internal/charts/stock/indicators/Volume.js +1 -1
- package/.internal/charts/stock/indicators/Volume.js.map +1 -1
- package/.internal/charts/stock/indicators/VolumeProfile.d.ts +80 -0
- package/.internal/charts/stock/indicators/VolumeProfile.d.ts.map +1 -0
- package/.internal/charts/stock/indicators/VolumeProfile.js +452 -0
- package/.internal/charts/stock/indicators/VolumeProfile.js.map +1 -0
- package/.internal/charts/stock/toolbar/DataSaveControl.d.ts +73 -0
- package/.internal/charts/stock/toolbar/DataSaveControl.d.ts.map +1 -0
- package/.internal/charts/stock/toolbar/DataSaveControl.js +188 -0
- package/.internal/charts/stock/toolbar/DataSaveControl.js.map +1 -0
- package/.internal/charts/stock/toolbar/DrawingControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js.map +1 -1
- package/.internal/charts/stock/toolbar/Dropdown.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/Dropdown.js +5 -1
- package/.internal/charts/stock/toolbar/Dropdown.js.map +1 -1
- package/.internal/charts/stock/toolbar/DropdownList.d.ts +29 -0
- package/.internal/charts/stock/toolbar/DropdownList.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DropdownList.js +19 -2
- package/.internal/charts/stock/toolbar/DropdownList.js.map +1 -1
- package/.internal/charts/stock/toolbar/DropdownListControl.d.ts +29 -0
- package/.internal/charts/stock/toolbar/DropdownListControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DropdownListControl.js +2 -1
- package/.internal/charts/stock/toolbar/DropdownListControl.js.map +1 -1
- package/.internal/charts/stock/toolbar/IndicatorControl.d.ts +1 -1
- package/.internal/charts/stock/toolbar/IndicatorControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/IndicatorControl.js +10 -1
- package/.internal/charts/stock/toolbar/IndicatorControl.js.map +1 -1
- package/.internal/charts/stock/toolbar/PeriodSelector.js +1 -1
- package/.internal/charts/stock/toolbar/PeriodSelector.js.map +1 -1
- package/.internal/charts/stock/toolbar/SettingsControl.d.ts +21 -0
- package/.internal/charts/stock/toolbar/SettingsControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/SettingsControl.js +31 -3
- package/.internal/charts/stock/toolbar/SettingsControl.js.map +1 -1
- package/.internal/charts/stock/toolbar/StockControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/StockControl.js +1 -0
- package/.internal/charts/stock/toolbar/StockControl.js.map +1 -1
- package/.internal/charts/stock/toolbar/StockIcons.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/StockIcons.js +1 -0
- package/.internal/charts/stock/toolbar/StockIcons.js.map +1 -1
- package/.internal/charts/xy/XYCursor.d.ts +2 -1
- package/.internal/charts/xy/XYCursor.d.ts.map +1 -1
- package/.internal/charts/xy/XYCursor.js.map +1 -1
- package/.internal/charts/xy/axes/Axis.d.ts +5 -0
- package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/Axis.js +111 -109
- package/.internal/charts/xy/axes/Axis.js.map +1 -1
- package/.internal/charts/xy/axes/AxisRendererX.d.ts.map +1 -1
- package/.internal/charts/xy/axes/AxisRendererX.js +4 -1
- package/.internal/charts/xy/axes/AxisRendererX.js.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.js +40 -35
- package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.d.ts +13 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.js +116 -75
- package/.internal/charts/xy/axes/GaplessDateAxis.js.map +1 -1
- package/.internal/charts/xy/series/XYSeries.d.ts +1 -0
- package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/XYSeries.js +4 -2
- package/.internal/charts/xy/series/XYSeries.js.map +1 -1
- package/.internal/core/Classes.d.ts +4 -0
- package/.internal/core/Classes.d.ts.map +1 -1
- package/.internal/core/Classes.js.map +1 -1
- package/.internal/core/Registry.js +1 -1
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/render/Series.d.ts.map +1 -1
- package/.internal/core/render/Series.js +3 -0
- package/.internal/core/render/Series.js.map +1 -1
- package/.internal/core/render/SpriteResizer.d.ts +1 -1
- package/.internal/core/render/SpriteResizer.d.ts.map +1 -1
- package/.internal/core/render/SpriteResizer.js.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.d.ts +1 -0
- package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.js +4 -0
- package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
- package/.internal/core/render/backend/Renderer.d.ts +1 -0
- package/.internal/core/render/backend/Renderer.d.ts.map +1 -1
- package/.internal/core/render/backend/Renderer.js.map +1 -1
- package/.internal/core/util/Time.d.ts +5 -0
- package/.internal/core/util/Time.d.ts.map +1 -1
- package/.internal/core/util/Time.js +10 -0
- package/.internal/core/util/Time.js.map +1 -1
- package/.internal/core/util/Utils.d.ts +0 -8
- package/.internal/core/util/Utils.d.ts.map +1 -1
- package/.internal/core/util/Utils.js +0 -24
- package/.internal/core/util/Utils.js.map +1 -1
- package/.internal/plugins/json/Classes-script.d.ts +4 -0
- package/.internal/plugins/json/Classes-script.d.ts.map +1 -1
- package/.internal/plugins/json/Classes-script.js +2 -0
- package/.internal/plugins/json/Classes-script.js.map +1 -1
- package/.internal/plugins/json/Classes.d.ts +4 -0
- package/.internal/plugins/json/Classes.d.ts.map +1 -1
- package/.internal/plugins/json/Classes.js +2 -0
- package/.internal/plugins/json/Classes.js.map +1 -1
- package/.internal/plugins/json/Serializer.d.ts +6 -0
- package/.internal/plugins/json/Serializer.d.ts.map +1 -1
- package/.internal/plugins/json/Serializer.js +3 -2
- package/.internal/plugins/json/Serializer.js.map +1 -1
- package/CHANGELOG.md +27 -0
- package/examples/javascript/flow-arc-horizontal/package.json +1 -1
- package/examples/javascript/flow-arc-vertical/package.json +1 -1
- package/examples/javascript/flow-chord/package.json +1 -1
- package/examples/javascript/flow-chord-directed/package.json +1 -1
- package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/javascript/flow-sankey/package.json +1 -1
- package/examples/javascript/gauge/package.json +1 -1
- package/examples/javascript/gauge-bands/package.json +1 -1
- package/examples/javascript/hierarchy-force-directed/package.json +1 -1
- package/examples/javascript/hierarchy-pack/package.json +1 -1
- package/examples/javascript/hierarchy-partition/package.json +1 -1
- package/examples/javascript/hierarchy-sunburst/package.json +1 -1
- package/examples/javascript/hierarchy-tree/package.json +1 -1
- package/examples/javascript/hierarchy-treemap/package.json +1 -1
- package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/javascript/jest/package.json +1 -1
- package/examples/javascript/json-pie/package.json +1 -1
- package/examples/javascript/json-xy/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/package.json +1 -1
- package/examples/javascript/map-clustered-points/package.json +1 -1
- package/examples/javascript/map-day-and-night/package.json +1 -1
- package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/javascript/map-with-bubbles/package.json +1 -1
- package/examples/javascript/map-zoom-to-country/package.json +1 -1
- package/examples/javascript/misc-40-charts/package.json +1 -1
- package/examples/javascript/misc-microchart-grid/package.json +1 -1
- package/examples/javascript/pie-chart/package.json +1 -1
- package/examples/javascript/pie-donut-chart/package.json +1 -1
- package/examples/javascript/pie-variable-radius/package.json +1 -1
- package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
- package/examples/javascript/radar-heat-map/package.json +1 -1
- package/examples/javascript/radar-line/package.json +1 -1
- package/examples/javascript/radar-time-line/package.json +1 -1
- package/examples/javascript/sliced-funnel/package.json +1 -1
- package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/javascript/sliced-pyramid/package.json +1 -1
- package/examples/javascript/stock-chart/package.json +1 -1
- package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
- package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
- package/examples/javascript/stock-chart-intraday/package.json +1 -1
- package/examples/javascript/stock-chart-live/package.json +1 -1
- package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/javascript/venn-diagram/package.json +1 -1
- package/examples/javascript/wordcloud-with-data/package.json +1 -1
- package/examples/javascript/wordcloud-with-text/package.json +1 -1
- package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/javascript/xy-bubble/package.json +1 -1
- package/examples/javascript/xy-candlestick/package.json +1 -1
- package/examples/javascript/xy-clustered-column/package.json +1 -1
- package/examples/javascript/xy-column/package.json +1 -1
- package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/javascript/xy-data-grouping/package.json +1 -1
- package/examples/javascript/xy-draggable-range/package.json +1 -1
- package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/javascript/xy-dumbbell plot/package.json +1 -1
- package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/javascript/xy-line/package.json +1 -1
- package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/javascript/xy-live-data/package.json +1 -1
- package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/javascript/xy-ohlc/package.json +1 -1
- package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/javascript/xy-smoothed-line/package.json +1 -1
- package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/javascript/xy-stacked-column/package.json +1 -1
- package/examples/javascript/xy-stacked-step/package.json +1 -1
- package/examples/javascript/xy-stock/package.json +1 -1
- package/examples/javascript/xy-stock-comparing/package.json +1 -1
- package/examples/typescript/flow-arc-horizontal/package.json +1 -1
- package/examples/typescript/flow-arc-vertical/package.json +1 -1
- package/examples/typescript/flow-chord/package.json +1 -1
- package/examples/typescript/flow-chord-directed/package.json +1 -1
- package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/typescript/flow-sankey/package.json +1 -1
- package/examples/typescript/gauge/package.json +1 -1
- package/examples/typescript/gauge-bands/package.json +1 -1
- package/examples/typescript/hierarchy-force-directed/package.json +1 -1
- package/examples/typescript/hierarchy-pack/package.json +1 -1
- package/examples/typescript/hierarchy-partition/package.json +1 -1
- package/examples/typescript/hierarchy-sunburst/package.json +1 -1
- package/examples/typescript/hierarchy-tree/package.json +1 -1
- package/examples/typescript/hierarchy-treemap/package.json +1 -1
- package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/typescript/jest/package.json +1 -1
- package/examples/typescript/json-pie/package.json +1 -1
- package/examples/typescript/json-xy/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/package.json +1 -1
- package/examples/typescript/map-clustered-points/package.json +1 -1
- package/examples/typescript/map-day-and-night/package.json +1 -1
- package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/typescript/map-with-bubbles/package.json +1 -1
- package/examples/typescript/map-zoom-to-country/package.json +1 -1
- package/examples/typescript/misc-40-charts/package.json +1 -1
- package/examples/typescript/misc-microchart-grid/package.json +1 -1
- package/examples/typescript/pie-chart/package.json +1 -1
- package/examples/typescript/pie-donut-chart/package.json +1 -1
- package/examples/typescript/pie-variable-radius/package.json +1 -1
- package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
- package/examples/typescript/radar-heat-map/package.json +1 -1
- package/examples/typescript/radar-line/package.json +1 -1
- package/examples/typescript/radar-time-line/package.json +1 -1
- package/examples/typescript/sliced-funnel/package.json +1 -1
- package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/typescript/sliced-pyramid/package.json +1 -1
- package/examples/typescript/stock-chart/package.json +1 -1
- package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
- package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
- package/examples/typescript/stock-chart-intraday/package.json +1 -1
- package/examples/typescript/stock-chart-live/package.json +1 -1
- package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/typescript/venn-diagram/package.json +1 -1
- package/examples/typescript/wordcloud-with-data/package.json +1 -1
- package/examples/typescript/wordcloud-with-text/package.json +1 -1
- package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/typescript/xy-bubble/package.json +1 -1
- package/examples/typescript/xy-candlestick/package.json +1 -1
- package/examples/typescript/xy-clustered-column/package.json +1 -1
- package/examples/typescript/xy-column/package.json +1 -1
- package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/typescript/xy-data-grouping/package.json +1 -1
- package/examples/typescript/xy-draggable-range/package.json +1 -1
- package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/typescript/xy-dumbbell plot/package.json +1 -1
- package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/typescript/xy-line/package.json +1 -1
- package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/typescript/xy-live-data/package.json +1 -1
- package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/typescript/xy-ohlc/package.json +1 -1
- package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/typescript/xy-smoothed-line/package.json +1 -1
- package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/typescript/xy-stacked-column/package.json +1 -1
- package/examples/typescript/xy-stacked-step/package.json +1 -1
- package/examples/typescript/xy-stock/package.json +1 -1
- package/examples/typescript/xy-stock-comparing/package.json +1 -1
- package/package.json +1 -1
- package/stock.d.ts +2 -0
- package/stock.d.ts.map +1 -1
- package/stock.js +2 -0
- package/stock.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverageDeviation.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageDeviation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAA0E,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAqCnD;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IAA1D;;QAaC;;;;mBAAwD;gBACvD;oBACC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;oBAC/C,IAAI,EAAE,QAAQ;iBACd,EAAE;oBACF,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC9C,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;iBAC9E,EAAE;oBACF,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC7C,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;iBAC9D,EAAE;oBACF,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC;oBACvD,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;iBAC9B;gBACD;oBACC,GAAG,EAAE,iBAAiB;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;oBACnD,IAAI,EAAE,OAAO;iBACb,EAAE;oBACF,GAAG,EAAE,iBAAiB;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;oBACnD,IAAI,EAAE,OAAO;iBACb;aAAC;WAAC;IAoGL,CAAC;IAlGO,SAAS;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC/C,KAAK,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,aAAa;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YAC1D,SAAS,EAAE,CAAC,WAAW,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,SAAS;SACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,eAAe;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/C,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YACrF,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;SACrF;IAEF,CAAC;IAEM,gBAAgB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACvB;QACD,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,WAAW;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC;YAEpD,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtF,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEtF,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9B,QAAQ,IAAI,EAAE;gBACb,KAAK,QAAQ;oBACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,MAAM;gBAEP,KAAK,UAAU;oBACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,MAAM;gBAEP,KAAK,aAAa;oBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,MAAM;gBAEP,KAAK,MAAM;oBACV,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC1C,MAAM;gBAEP,KAAK,MAAM;oBACV,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC1C,MAAM;aACP;YAGD,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9B,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,IAAI,MAAM,EAAE;oBAChB,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;oBAC/C,IAAI,IAAI,IAAI,SAAS,EAAE;wBACtB,SAAS,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;qBACvD;oBACD,IAAI,KAAK,GAAG,eAAe,CAAC;oBAE5B,IAAI,SAAS,GAAG,QAAQ,EAAE;wBACzB,KAAK,GAAG,eAAe,CAAC;qBACxB;oBAED,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;oBAChC,QAAQ,GAAG,SAAS,CAAC;iBACrB;YACF,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;IACF,CAAC;;AA5ID;;;;WAAkC,wBAAwB;GAAC;AAC3D;;;;WAA0C,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;GAAC","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\n\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { ColumnSeries } from \"../../xy/series/ColumnSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageDeviationSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * Increasing color.\r\n\t */\r\n\tincreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Decreasing color.\r\n\t */\r\n\tdecreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t *\r\n\t * @default \"simple\"\r\n\t */\r\n\ttype?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * How units are calculated.\r\n\t *\r\n\t * @default \"points\"\r\n\t */\r\n\tunit?: \"points\" | \"percent\"\r\n\r\n}\r\n\r\nexport interface IMovingAverageDeviationPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IMovingAverageDeviationEvents extends IChartIndicatorEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageDeviation extends ChartIndicator {\r\n\tpublic static className: string = \"MovingAverageDeviation\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([MovingAverageDeviation.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageDeviationSettings;\r\n\tdeclare public _privateSettings: IMovingAverageDeviationPrivate;\r\n\tdeclare public _events: IMovingAverageDeviationEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: ColumnSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [\r\n\t\t{\r\n\t\t\tkey: \"period\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"field\",\r\n\t\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t\t}, {\r\n\t\t\tkey: \"type\",\r\n\t\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t\t}, {\r\n\t\t\tkey: \"unit\",\r\n\t\t\tname: this.root.language.translateAny(\"Points/Percent\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"points\", \"percent\"]\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"increasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Increasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"decreasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Decreasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}];\r\n\r\n\tpublic _afterNew(){\r\n\t\tthis._themeTags.push(\"movingaveragedeviation\");\r\n\t\tsuper._afterNew();\r\n\t}\t\t\r\n\r\n\tpublic _createSeries(): ColumnSeries {\r\n\t\treturn this.panel.series.push(ColumnSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"deviation\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"increasingColor\") || this.isDirty(\"decreasingColor\")) {\r\n\t\t\tconst template = this.series.columns.template;\r\n\t\t\tconst increasing = this.get(\"increasingColor\");\r\n\t\t\tconst decreasing = this.get(\"decreasingColor\");\r\n\t\t\ttemplate.states.create(\"riseFromPrevious\", { fill: increasing, stroke: increasing });\r\n\t\t\ttemplate.states.create(\"dropFromPrevious\", { fill: decreasing, stroke: decreasing });\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"type\") || this.isDirty(\"unit\")) {\r\n\t\t\tthis._dataDirty = true;\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\r\n\t\t\tlet decreasingColor = this.get(\"decreasingColor\", Color.fromHex(0xff0000)).toCSSHex();\r\n\t\t\tlet increasingColor = this.get(\"increasingColor\", Color.fromHex(0x00ff00)).toCSSHex();\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 50);\r\n\t\t\tconst type = this.get(\"type\");\r\n\t\t\tconst unit = this.get(\"unit\");\r\n\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase \"simple\":\r\n\t\t\t\t\tthis._sma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"weighted\":\r\n\t\t\t\t\tthis._wma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"exponential\":\r\n\t\t\t\t\tthis._ema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dema\":\r\n\t\t\t\t\tthis._dema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tema\":\r\n\t\t\t\t\tthis._tema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet previous = -Infinity;\r\n\t\t\tlet i = 0;\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\ti++;\r\n\t\t\t\tif (i >= period) {\r\n\t\t\t\t\tlet deviation = dataItem.value_y - dataItem.ma;\r\n\t\t\t\t\tif (unit == \"percent\") {\r\n\t\t\t\t\t\tdeviation = (dataItem.value_y / dataItem.ma - 1) * 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet color = increasingColor;\r\n\r\n\t\t\t\t\tif (deviation < previous) {\r\n\t\t\t\t\t\tcolor = decreasingColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.deviation = deviation;\r\n\t\t\t\t\tdataItem.deviationColor = color;\r\n\t\t\t\t\tprevious = deviation;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"MovingAverageDeviation.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageDeviation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\n\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { ColumnSeries } from \"../../xy/series/ColumnSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageDeviationSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * Increasing color.\r\n\t */\r\n\tincreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Decreasing color.\r\n\t */\r\n\tdecreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t *\r\n\t * @default \"simple\"\r\n\t */\r\n\ttype?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * How units are calculated.\r\n\t *\r\n\t * @default \"points\"\r\n\t */\r\n\tunit?: \"points\" | \"percent\"\r\n\r\n}\r\n\r\nexport interface IMovingAverageDeviationPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IMovingAverageDeviationEvents extends IChartIndicatorEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageDeviation extends ChartIndicator {\r\n\tpublic static className: string = \"MovingAverageDeviation\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([MovingAverageDeviation.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageDeviationSettings;\r\n\tdeclare public _privateSettings: IMovingAverageDeviationPrivate;\r\n\tdeclare public _events: IMovingAverageDeviationEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: ColumnSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [\r\n\t\t{\r\n\t\t\tkey: \"period\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"field\",\r\n\t\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t\t}, {\r\n\t\t\tkey: \"type\",\r\n\t\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t\t}, {\r\n\t\t\tkey: \"unit\",\r\n\t\t\tname: this.root.language.translateAny(\"Points/Percent\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"points\", \"percent\"]\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"increasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Increasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"decreasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Decreasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}];\r\n\r\n\tpublic _afterNew(){\r\n\t\tthis._themeTags.push(\"movingaveragedeviation\");\r\n\t\tsuper._afterNew();\r\n\t}\t\t\r\n\r\n\tpublic _createSeries(): ColumnSeries {\r\n\t\treturn this.panel.series.push(ColumnSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"deviation\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"increasingColor\") || this.isDirty(\"decreasingColor\")) {\r\n\t\t\tconst template = this.series.columns.template;\r\n\t\t\tconst increasing = this.get(\"increasingColor\");\r\n\t\t\tconst decreasing = this.get(\"decreasingColor\");\r\n\t\t\ttemplate.states.create(\"riseFromPrevious\", { fill: increasing, stroke: increasing });\r\n\t\t\ttemplate.states.create(\"dropFromPrevious\", { fill: decreasing, stroke: decreasing });\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"type\") || this.isDirty(\"unit\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\r\n\t\t\tlet decreasingColor = this.get(\"decreasingColor\", Color.fromHex(0xff0000)).toCSSHex();\r\n\t\t\tlet increasingColor = this.get(\"increasingColor\", Color.fromHex(0x00ff00)).toCSSHex();\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 50);\r\n\t\t\tconst type = this.get(\"type\");\r\n\t\t\tconst unit = this.get(\"unit\");\r\n\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase \"simple\":\r\n\t\t\t\t\tthis._sma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"weighted\":\r\n\t\t\t\t\tthis._wma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"exponential\":\r\n\t\t\t\t\tthis._ema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dema\":\r\n\t\t\t\t\tthis._dema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tema\":\r\n\t\t\t\t\tthis._tema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet previous = -Infinity;\r\n\t\t\tlet i = 0;\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\ti++;\r\n\t\t\t\tif (i >= period) {\r\n\t\t\t\t\tlet deviation = dataItem.value_y - dataItem.ma;\r\n\t\t\t\t\tif (unit == \"percent\") {\r\n\t\t\t\t\t\tdeviation = (dataItem.value_y / dataItem.ma - 1) * 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet color = increasingColor;\r\n\r\n\t\t\t\t\tif (deviation < previous) {\r\n\t\t\t\t\t\tcolor = decreasingColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.deviation = deviation;\r\n\t\t\t\t\tdataItem.deviationColor = color;\r\n\t\t\t\t\tprevious = deviation;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -127,7 +127,7 @@ export class MovingAverageEnvelope extends MovingAverage {
|
|
|
127
127
|
}
|
|
128
128
|
_prepareChildren() {
|
|
129
129
|
if (this.isDirty("shiftType") || this.isDirty("shift")) {
|
|
130
|
-
this.
|
|
130
|
+
this.markDataDirty();
|
|
131
131
|
this.setCustomData("shift", this.get("shift"));
|
|
132
132
|
this.setCustomData("shiftType", this.get("shiftType"));
|
|
133
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverageEnvelope.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageEnvelope.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAverageEvents } from \"./MovingAverage\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageEnvelopeSettings extends IMovingAverageSettings {\r\n\r\n\t/**\r\n\t * Shift.\r\n\t *\r\n\t * @default 5\r\n\t */\r\n\tshift?: number;\r\n\r\n\t/**\r\n\t * Type of the shift.\r\n\t *\r\n\t * @default \"percent\"\r\n\t */\r\n\tshiftType?: \"percent\" | \"points\";\r\n\r\n\t/**\r\n\t * A color for upper section.\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * A color for lower section.\r\n\t */\r\n\tlowerColor?: Color;\r\n\r\n}\r\n\r\nexport interface IMovingAverageEnvelopePrivate extends IMovingAveragePrivate {\r\n}\r\n\r\nexport interface IMovingAverageEnvelopeEvents extends IMovingAverageEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageEnvelope extends MovingAverage {\r\n\tpublic static className: string = \"MovingAverageEnvelope\";\r\n\tpublic static classNames: Array<string> = MovingAverage.classNames.concat([MovingAverageEnvelope.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageEnvelopeSettings;\r\n\tdeclare public _privateSettings: IMovingAverageEnvelopePrivate;\r\n\tdeclare public _events: IMovingAverageEnvelopeEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"type\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"shiftType\",\r\n\t\tname: this.root.language.translateAny(\"Shift type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"percent\", \"points\"]\r\n\t}, {\r\n\t\tkey: \"shift\",\r\n\t\tname: this.root.language.translateAny(\"Shift\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"offset\",\r\n\t\tname: this.root.language.translateAny(\"Offset\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Top\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Median\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Bottom\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\t\t}\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis.series.addTag(\"movingaverageenvelope\");\r\n\t\tthis.series._applyThemes();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tif (this.isDirty(\"upperColor\")) {\r\n\t\t\tconst color = this.get(\"upperColor\");\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, \"upperColor\");\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"lowerColor\")) {\r\n\t\t\tconst color = this.get(\"lowerColor\");\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, \"lowerColor\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"shiftType\") || this.isDirty(\"shift\")) {\r\n\t\t\tthis._dataDirty = true;\r\n\t\t\tthis.setCustomData(\"shift\", this.get(\"shift\"));\r\n\t\t\tthis.setCustomData(\"shiftType\", this.get(\"shiftType\"));\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\t\t\tlet smaData = this.series.data.values as any;\r\n\t\t\tlet shift = Number(this.get(\"shift\", 5));\r\n\t\t\tlet shiftType = this.get(\"shiftType\");\r\n\r\n\t\t\t$array.each(smaData, (dataItem: any) => {\r\n\t\t\t\tlet value = dataItem.ma;\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tlet upper = value;\r\n\t\t\t\t\tlet lower = value;\r\n\t\t\t\t\tif (shiftType == \"points\") {\r\n\t\t\t\t\t\tupper += shift;\r\n\t\t\t\t\t\tlower -= shift;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tupper += upper * shift / 100;\r\n\t\t\t\t\t\tlower -= lower * shift / 100;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.upper = upper;\r\n\t\t\t\t\tdataItem.lower = lower;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.data.setAll(smaData);\r\n\t\t\tthis.lowerBandSeries.data.setAll(smaData);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"MovingAverageEnvelope.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageEnvelope.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAverageEvents } from \"./MovingAverage\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageEnvelopeSettings extends IMovingAverageSettings {\r\n\r\n\t/**\r\n\t * Shift.\r\n\t *\r\n\t * @default 5\r\n\t */\r\n\tshift?: number;\r\n\r\n\t/**\r\n\t * Type of the shift.\r\n\t *\r\n\t * @default \"percent\"\r\n\t */\r\n\tshiftType?: \"percent\" | \"points\";\r\n\r\n\t/**\r\n\t * A color for upper section.\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * A color for lower section.\r\n\t */\r\n\tlowerColor?: Color;\r\n\r\n}\r\n\r\nexport interface IMovingAverageEnvelopePrivate extends IMovingAveragePrivate {\r\n}\r\n\r\nexport interface IMovingAverageEnvelopeEvents extends IMovingAverageEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageEnvelope extends MovingAverage {\r\n\tpublic static className: string = \"MovingAverageEnvelope\";\r\n\tpublic static classNames: Array<string> = MovingAverage.classNames.concat([MovingAverageEnvelope.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageEnvelopeSettings;\r\n\tdeclare public _privateSettings: IMovingAverageEnvelopePrivate;\r\n\tdeclare public _events: IMovingAverageEnvelopeEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"type\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"shiftType\",\r\n\t\tname: this.root.language.translateAny(\"Shift type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"percent\", \"points\"]\r\n\t}, {\r\n\t\tkey: \"shift\",\r\n\t\tname: this.root.language.translateAny(\"Shift\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"offset\",\r\n\t\tname: this.root.language.translateAny(\"Offset\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Top\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Median\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Bottom\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\t\t}\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis.series.addTag(\"movingaverageenvelope\");\r\n\t\tthis.series._applyThemes();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tif (this.isDirty(\"upperColor\")) {\r\n\t\t\tconst color = this.get(\"upperColor\");\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, \"upperColor\");\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"lowerColor\")) {\r\n\t\t\tconst color = this.get(\"lowerColor\");\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, \"lowerColor\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"shiftType\") || this.isDirty(\"shift\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"shift\", this.get(\"shift\"));\r\n\t\t\tthis.setCustomData(\"shiftType\", this.get(\"shiftType\"));\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\t\t\tlet smaData = this.series.data.values as any;\r\n\t\t\tlet shift = Number(this.get(\"shift\", 5));\r\n\t\t\tlet shiftType = this.get(\"shiftType\");\r\n\r\n\t\t\t$array.each(smaData, (dataItem: any) => {\r\n\t\t\t\tlet value = dataItem.ma;\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tlet upper = value;\r\n\t\t\t\t\tlet lower = value;\r\n\t\t\t\t\tif (shiftType == \"points\") {\r\n\t\t\t\t\t\tupper += shift;\r\n\t\t\t\t\t\tlower -= shift;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tupper += upper * shift / 100;\r\n\t\t\t\t\t\tlower -= lower * shift / 100;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.upper = upper;\r\n\t\t\t\t\tdataItem.lower = lower;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.data.setAll(smaData);\r\n\t\t\tthis.lowerBandSeries.data.setAll(smaData);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnBalanceVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OnBalanceVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IAExE;;OAEG;IACH,YAAY,EAAE,QAAQ,CAAC;CAEvB;AAED,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;CACtE;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;CACpE;AAGD;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,cAAc;IAClD,OAAc,SAAS,EAAE,MAAM,CAAqB;IACpD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAiE;IAEzF,SAAS,EAAE,wBAAwB,CAAC;IACpC,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,OAAO,EAAE,sBAAsB,CAAC;IAE/C;;OAEG;IACY,MAAM,EAAE,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAIlD;IAEI,SAAS;IAMT,aAAa,IAAI,UAAU;
|
|
1
|
+
{"version":3,"file":"OnBalanceVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OnBalanceVolume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IAExE;;OAEG;IACH,YAAY,EAAE,QAAQ,CAAC;CAEvB;AAED,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;CACtE;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;CACpE;AAGD;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,cAAc;IAClD,OAAc,SAAS,EAAE,MAAM,CAAqB;IACpD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAiE;IAEzF,SAAS,EAAE,wBAAwB,CAAC;IACpC,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,OAAO,EAAE,sBAAsB,CAAC;IAE/C;;OAEG;IACY,MAAM,EAAE,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAIlD;IAEI,SAAS;IAMT,aAAa,IAAI,UAAU;IAYlC;;OAEG;IACI,WAAW;CA8ClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnBalanceVolume.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OnBalanceVolume.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAA0E,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAkBxD;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAAnD;;QAaC;;;;mBAAwD,CAAC;oBACxD,GAAG,EAAE,aAAa;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC9C,IAAI,EAAE,OAAO;iBACb,CAAC;WAAC;
|
|
1
|
+
{"version":3,"file":"OnBalanceVolume.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OnBalanceVolume.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { XYSeries } from \"../../xy/series/XYSeries\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nexport interface IOnBalanceVolumeSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * Chart's main volume series.\r\n\t */\r\n\tvolumeSeries: XYSeries;\r\n\r\n}\r\n\r\nexport interface IOnBalanceVolumePrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IOnBalanceVolumeEvents extends IChartIndicatorEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class OnBalanceVolume extends ChartIndicator {\r\n\tpublic static className: string = \"OnBalanceVolume\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([OnBalanceVolume.className]);\r\n\r\n\tdeclare public _settings: IOnBalanceVolumeSettings;\r\n\tdeclare public _privateSettings: IOnBalanceVolumePrivate;\r\n\tdeclare public _events: IOnBalanceVolumeEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Color\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tpublic _afterNew(){\r\n\t\tthis._themeTags.push(\"onbalancevolume\");\r\n\t\tsuper._afterNew();\r\n\t\tthis.yAxis.set(\"numberFormat\", \"#.###a\");\r\n\t}\t\t\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"obv\",\r\n\t\t\tstroke: this.get(\"seriesColor\"),\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\r\n\t\t\tthis.setRaw(\"field\", \"close\");\r\n\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tconst volumeSeries = this.get(\"volumeSeries\");\r\n\r\n\t\t\tlet data: Array<any> = this._getDataArray(dataItems);\r\n\t\t\tlet previous = 0;\r\n\t\t\tlet len = data.length;\r\n\r\n\t\t\tif (volumeSeries && len > 1) {\r\n\t\t\t\tlet cy = data[0].value_y as number;\r\n\r\n\t\t\t\tfor (let i = 1; i < len; i++) {\r\n\t\t\t\t\tconst dataItem = data[i];\r\n\r\n\t\t\t\t\tlet c = dataItem.value_y;\r\n\r\n\t\t\t\t\tif (c != null) {\r\n\t\t\t\t\t\tconst volumeDI = volumeSeries.dataItems[i];\r\n\t\t\t\t\t\tlet volume = 0;\r\n\t\t\t\t\t\tif (volumeDI) {\r\n\t\t\t\t\t\t\tvolume = volumeDI.get(\"valueY\", 1);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet obv = previous;\r\n\t\t\t\t\t\tif (c > cy) {\r\n\t\t\t\t\t\t\tobv += volume;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (c < cy) {\r\n\t\t\t\t\t\t\tobv -= volume;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdataItem.obv = obv;\r\n\r\n\t\t\t\t\t\tprevious = obv;\r\n\t\t\t\t\t\tcy = c;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -52,6 +52,5 @@ export declare class OverboughtOversold extends ChartIndicator {
|
|
|
52
52
|
protected _updateRange(button: Button, key: "overBought" | "overSold"): void;
|
|
53
53
|
_createSeries(): LineSeries;
|
|
54
54
|
_prepareChildren(): void;
|
|
55
|
-
_updateChildren(): void;
|
|
56
55
|
}
|
|
57
56
|
//# sourceMappingURL=OverboughtOversold.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverboughtOversold.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OverboughtOversold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAQrD,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;IAE3E;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;CAAI;AAE9E,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;CAAI;AAG5E;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IACrD,OAAc,SAAS,EAAE,MAAM,CAAwB;IACvD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoE;IAE5F,SAAS,EAAE,2BAA2B,CAAC;IACvC,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,OAAO,EAAE,yBAAyB,CAAC;IAE3C,UAAU,EAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC1C,MAAM,EAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtC,QAAQ,EAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAExC,aAAa,EAAG,oBAAoB,CAAC;IACrC,eAAe,EAAG,oBAAoB,CAAC;IAE9C;;OAEG;IACY,MAAM,EAAE,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAgBlD;IAEH,SAAS,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"OverboughtOversold.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OverboughtOversold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAQrD,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;IAE3E;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;CAAI;AAE9E,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;CAAI;AAG5E;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IACrD,OAAc,SAAS,EAAE,MAAM,CAAwB;IACvD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoE;IAE5F,SAAS,EAAE,2BAA2B,CAAC;IACvC,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,OAAO,EAAE,yBAAyB,CAAC;IAE3C,UAAU,EAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC1C,MAAM,EAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtC,QAAQ,EAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAExC,aAAa,EAAG,oBAAoB,CAAC;IACrC,eAAe,EAAG,oBAAoB,CAAC;IAE9C;;OAEG;IACY,MAAM,EAAE,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAgBlD;IAEH,SAAS,CAAC,SAAS;IA4HnB,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;IAS9D,aAAa,IAAI,UAAU;IAY3B,gBAAgB;CA2CvB"}
|
|
@@ -88,7 +88,6 @@ export class OverboughtOversold extends ChartIndicator {
|
|
|
88
88
|
const overBought = yAxis.makeDataItem({});
|
|
89
89
|
this.overBought = overBought;
|
|
90
90
|
overBought.set("endValue", 500);
|
|
91
|
-
overBought.set("affectsMinMax", false);
|
|
92
91
|
const overBoughtRB = Button.new(this._root, {
|
|
93
92
|
themeTags: ["rangegrip", "vertical", side],
|
|
94
93
|
icon: Graphics.new(this._root, {
|
|
@@ -129,7 +128,6 @@ export class OverboughtOversold extends ChartIndicator {
|
|
|
129
128
|
const overSold = yAxis.makeDataItem({});
|
|
130
129
|
this.overSold = overSold;
|
|
131
130
|
overSold.set("endValue", -500);
|
|
132
|
-
overSold.set("affectsMinMax", false);
|
|
133
131
|
const overSoldRB = Button.new(this._root, {
|
|
134
132
|
themeTags: ["rangegrip", "vertical", side],
|
|
135
133
|
icon: Graphics.new(this._root, {
|
|
@@ -218,12 +216,6 @@ export class OverboughtOversold extends ChartIndicator {
|
|
|
218
216
|
this.overBoughtRange.strokes.template.set("stroke", color);
|
|
219
217
|
}
|
|
220
218
|
}
|
|
221
|
-
_updateChildren() {
|
|
222
|
-
if (this.isDirty("period")) {
|
|
223
|
-
this._dataDirty = true;
|
|
224
|
-
}
|
|
225
|
-
super._updateChildren();
|
|
226
|
-
}
|
|
227
219
|
}
|
|
228
220
|
Object.defineProperty(OverboughtOversold, "className", {
|
|
229
221
|
enumerable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverboughtOversold.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OverboughtOversold.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { IValueAxisDataItem } from \"../../xy/axes/ValueAxis\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries, ILineSeriesAxisRange } from \"../../xy/series/LineSeries\";\r\nimport { Button } from \"../../../core/render/Button\";\r\nimport { Graphics } from \"../../../core/render/Graphics\";\r\nimport { AxisBullet } from \"../../xy/axes/AxisBullet\";\r\nimport type { AxisRendererY } from \"../../xy/axes/AxisRendererY\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $type from \"../../../core/util/Type\";\r\n\r\n\r\nexport interface IOverboughtOversoldSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * A value for \"overbought\" threshold.\r\n\t */\r\n\toverBought?: number;\r\n\r\n\t/**\r\n\t * A value for \"oversold\" threshold.\r\n\t */\r\n\toverSold?: number;\r\n\r\n\t/**\r\n\t * A color for \"overbought\" section.\r\n\t */\r\n\toverBoughtColor?: Color;\r\n\r\n\t/**\r\n\t * A color for \"oversold\" section.\r\n\t */\r\n\toverSoldColor?: Color;\r\n}\r\n\r\nexport interface IOverboughtOversoldPrivate extends IChartIndicatorPrivate { }\r\n\r\nexport interface IOverboughtOversoldEvents extends IChartIndicatorEvents { }\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class OverboughtOversold extends ChartIndicator {\r\n\tpublic static className: string = \"OverboughtOversold\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([OverboughtOversold.className]);\r\n\r\n\tdeclare public _settings: IOverboughtOversoldSettings;\r\n\tdeclare public _privateSettings: IOverboughtOversoldPrivate;\r\n\tdeclare public _events: IOverboughtOversoldEvents;\r\n\r\n\tpublic overBought!: DataItem<IValueAxisDataItem>;\r\n\tpublic middle!: DataItem<IValueAxisDataItem>;\r\n\tpublic overSold!: DataItem<IValueAxisDataItem>;\r\n\r\n\tpublic overSoldRange!: ILineSeriesAxisRange;\r\n\tpublic overBoughtRange!: ILineSeriesAxisRange;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"overBought\",\r\n\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"overBoughtColor\",\r\n\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"overSold\",\r\n\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"overSoldColor\",\r\n\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis._themeTags.push(\"overboughtoversold\");\r\n\r\n\t\tsuper._afterNew();\r\n\r\n\t\tconst chart = this.panel;\r\n\t\tconst yAxis = this.yAxis;\r\n\t\tyAxis.setAll({ strictMinMax: true, autoZoom: false });\r\n\r\n\t\t// middle grid\r\n\t\tthis.middle = this.yAxis.createAxisRange(this.yAxis.makeDataItem({}));\r\n\t\tconst middleGrid = this.middle.get(\"grid\")!;\r\n\t\tmiddleGrid.setAll({ themeTags: [\"middlegrid\"] });\r\n\t\tmiddleGrid._applyThemes();\r\n\r\n\t\tconst middleLabel = this.middle.get(\"label\")!;\r\n\t\tmiddleLabel.setAll({ visible: true, forceHidden: false });\r\n\r\n\t\tconst opposite = (yAxis.get(\"renderer\") as AxisRendererY).get(\"opposite\");\r\n\t\tlet side = \"left\";\r\n\t\tif (opposite) {\r\n\t\t\tside = \"right\"\r\n\t\t}\r\n\r\n\t\t// overbought range\r\n\t\tconst overBought = yAxis.makeDataItem({});\r\n\t\tthis.overBought = overBought;\r\n\t\toverBought.set(\"endValue\", 500);\r\n\t\toverBought.set(\"affectsMinMax\", false);\r\n\r\n\t\tconst overBoughtRB = Button.new(this._root, {\r\n\t\t\tthemeTags: [\"rangegrip\", \"vertical\", side],\r\n\t\t\ticon: Graphics.new(this._root, {\r\n\t\t\t\tthemeTags: [\"rangegrip\", \"icon\"]\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\t// restrict from being dragged vertically\r\n\t\toverBoughtRB.adapters.add(\"x\", function() {\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\t// restrict from being dragged outside of plot\r\n\t\toverBoughtRB.adapters.add(\"y\", function(y) {\r\n\t\t\tif ($type.isNumber(y)) {\r\n\t\t\t\treturn $math.fitToRange(y, 0, chart.plotContainer.height());\r\n\t\t\t}\r\n\t\t\treturn y;\r\n\t\t});\r\n\r\n\t\t// change range when y changes\r\n\t\toverBoughtRB.events.on(\"dragged\", () => {\r\n\t\t\tthis._updateRange(overBoughtRB, \"overBought\");\r\n\t\t});\r\n\r\n\t\toverBought.set(\"bullet\", AxisBullet.new(this._root, {\r\n\t\t\tlocation: 0,\r\n\t\t\tsprite: overBoughtRB\r\n\t\t}))\r\n\r\n\t\tconst overBoughtRange = this.series.createAxisRange(overBought);\r\n\t\tthis.overBoughtRange = overBoughtRange;\r\n\t\tconst overBoughtFills = overBoughtRange.fills;\r\n\t\tif (overBoughtFills) {\r\n\t\t\toverBoughtFills.template.set(\"themeTags\", [\"overbought\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overBoughtGrid = overBought.get(\"grid\")!;\r\n\t\toverBoughtGrid.setAll({ themeTags: [\"overbought\"], visible: true });\r\n\t\toverBoughtGrid._applyThemes();\r\n\r\n\t\tconst overBoughtLabel = overBought.get(\"label\")!;\r\n\t\toverBoughtLabel.setAll({ visible: true, forceHidden: false, location: 0 });\r\n\r\n\t\t// oversold range\r\n\t\tconst overSold = yAxis.makeDataItem({});\r\n\t\tthis.overSold = overSold;\r\n\t\toverSold.set(\"endValue\", -500);\r\n\t\toverSold.set(\"affectsMinMax\", false);\r\n\r\n\r\n\t\tconst overSoldRB = Button.new(this._root, {\r\n\t\t\tthemeTags: [\"rangegrip\", \"vertical\", side],\r\n\t\t\ticon: Graphics.new(this._root, {\r\n\t\t\t\tthemeTags: [\"rangegrip\", \"icon\"]\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\t// restrict from being dragged vertically\r\n\t\toverSoldRB.adapters.add(\"x\", function() {\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\t// restrict from being dragged outside of plot\r\n\t\toverSoldRB.adapters.add(\"y\", function(y) {\r\n\t\t\tif ($type.isNumber(y)) {\r\n\t\t\t\treturn $math.fitToRange(y, 0, chart.plotContainer.height());\r\n\t\t\t}\r\n\t\t\treturn y;\r\n\t\t});\r\n\r\n\t\t// change range when y changes\r\n\t\toverSoldRB.events.on(\"dragged\", () => {\r\n\t\t\tthis._updateRange(overSoldRB, \"overSold\");\r\n\t\t});\r\n\r\n\t\toverSold.set(\"bullet\", AxisBullet.new(this._root, {\r\n\t\t\tlocation: 0,\r\n\t\t\tsprite: overSoldRB\r\n\t\t}))\r\n\r\n\r\n\t\tconst overSoldRange = this.series.createAxisRange(overSold);\r\n\t\tthis.overSoldRange = overSoldRange;\r\n\t\tconst overSoldFills = overSoldRange.fills;\r\n\t\tif (overSoldFills) {\r\n\t\t\toverSoldFills.template.set(\"themeTags\", [\"oversold\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overSoldGrid = overSold.get(\"grid\")!;\r\n\t\toverSoldGrid.setAll({ themeTags: [\"oversold\"], visible: true });\r\n\t\toverSoldGrid._applyThemes();\r\n\r\n\t\tconst overSoldLabel = overSold.get(\"label\")!;\r\n\t\toverSoldLabel.setAll({ visible: true, forceHidden: false, location: 0 });\r\n\t}\r\n\r\n\tprotected _updateRange(button: Button, key: \"overBought\" | \"overSold\") {\r\n\t\tconst chart = this.yAxis.chart;\r\n\t\tif (chart) {\r\n\t\t\tconst position = this.yAxis.toAxisPosition(button.y() / chart.plotContainer.height());\r\n\t\t\tthis.set(key, Math.round(this.yAxis.positionToValue(position)));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"valueS\",\r\n\t\t\tstroke: this.get(\"seriesColor\"),\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tsuper._prepareChildren();\r\n\r\n\t\tconst overBoughtLabel = this.overBought.get(\"label\")!;\r\n\t\tconst overSoldLabel = this.overSold.get(\"label\")!;\r\n\t\tconst middleLabel = this.middle.get(\"label\")!;\r\n\r\n\t\tif (this.isDirty(\"overBought\") || this.isDirty(\"overSold\")) {\r\n\t\t\tconst numberFormatter = this.getNumberFormatter();\r\n\r\n\t\t\tconst overSoldValue = this.get(\"overSold\", 0);\r\n\t\t\tconst overBoughtValue = this.get(\"overBought\", 0);\r\n\t\t\tconst middleValue = overSoldValue + (overBoughtValue - overSoldValue) / 2;\r\n\r\n\t\t\toverBoughtLabel.set(\"text\", numberFormatter.format(overBoughtValue));\r\n\t\t\toverSoldLabel.set(\"text\", numberFormatter.format(overSoldValue));\r\n\t\t\tmiddleLabel.set(\"text\", numberFormatter.format(middleValue));\r\n\r\n\t\t\tthis.overBought.set(\"value\", overBoughtValue);\r\n\t\t\tthis.overSold.set(\"value\", overSoldValue);\r\n\r\n\t\t\tthis.middle.set(\"value\", middleValue);\r\n\t\t\tthis.yAxis.set(\"baseValue\", middleValue);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overSoldColor\")) {\r\n\t\t\tconst color = this.get(\"overSoldColor\");\r\n\t\t\toverSoldLabel.set(\"fill\", color);\r\n\r\n\t\t\tthis.overSold.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overSoldRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overSoldRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overBoughtColor\")) {\r\n\t\t\tconst color = this.get(\"overBoughtColor\");\r\n\t\t\toverBoughtLabel.set(\"fill\", color);\r\n\r\n\t\t\tthis.overBought.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overBoughtRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overBoughtRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\r\n\t\tif (this.isDirty(\"period\")) {\r\n\t\t\tthis._dataDirty = true;\r\n\t\t}\r\n\r\n\t\tsuper._updateChildren();\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"OverboughtOversold.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/OverboughtOversold.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { IValueAxisDataItem } from \"../../xy/axes/ValueAxis\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries, ILineSeriesAxisRange } from \"../../xy/series/LineSeries\";\r\nimport { Button } from \"../../../core/render/Button\";\r\nimport { Graphics } from \"../../../core/render/Graphics\";\r\nimport { AxisBullet } from \"../../xy/axes/AxisBullet\";\r\nimport type { AxisRendererY } from \"../../xy/axes/AxisRendererY\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $type from \"../../../core/util/Type\";\r\n\r\n\r\nexport interface IOverboughtOversoldSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * A value for \"overbought\" threshold.\r\n\t */\r\n\toverBought?: number;\r\n\r\n\t/**\r\n\t * A value for \"oversold\" threshold.\r\n\t */\r\n\toverSold?: number;\r\n\r\n\t/**\r\n\t * A color for \"overbought\" section.\r\n\t */\r\n\toverBoughtColor?: Color;\r\n\r\n\t/**\r\n\t * A color for \"oversold\" section.\r\n\t */\r\n\toverSoldColor?: Color;\r\n}\r\n\r\nexport interface IOverboughtOversoldPrivate extends IChartIndicatorPrivate { }\r\n\r\nexport interface IOverboughtOversoldEvents extends IChartIndicatorEvents { }\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class OverboughtOversold extends ChartIndicator {\r\n\tpublic static className: string = \"OverboughtOversold\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([OverboughtOversold.className]);\r\n\r\n\tdeclare public _settings: IOverboughtOversoldSettings;\r\n\tdeclare public _privateSettings: IOverboughtOversoldPrivate;\r\n\tdeclare public _events: IOverboughtOversoldEvents;\r\n\r\n\tpublic overBought!: DataItem<IValueAxisDataItem>;\r\n\tpublic middle!: DataItem<IValueAxisDataItem>;\r\n\tpublic overSold!: DataItem<IValueAxisDataItem>;\r\n\r\n\tpublic overSoldRange!: ILineSeriesAxisRange;\r\n\tpublic overBoughtRange!: ILineSeriesAxisRange;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"overBought\",\r\n\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"overBoughtColor\",\r\n\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"overSold\",\r\n\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"overSoldColor\",\r\n\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis._themeTags.push(\"overboughtoversold\");\r\n\r\n\t\tsuper._afterNew();\r\n\r\n\t\tconst chart = this.panel;\r\n\t\tconst yAxis = this.yAxis;\r\n\t\tyAxis.setAll({ strictMinMax: true, autoZoom: false });\r\n\r\n\t\t// middle grid\r\n\t\tthis.middle = this.yAxis.createAxisRange(this.yAxis.makeDataItem({}));\r\n\t\tconst middleGrid = this.middle.get(\"grid\")!;\r\n\t\tmiddleGrid.setAll({ themeTags: [\"middlegrid\"] });\r\n\t\tmiddleGrid._applyThemes();\r\n\r\n\t\tconst middleLabel = this.middle.get(\"label\")!;\r\n\t\tmiddleLabel.setAll({ visible: true, forceHidden: false });\r\n\r\n\t\tconst opposite = (yAxis.get(\"renderer\") as AxisRendererY).get(\"opposite\");\r\n\t\tlet side = \"left\";\r\n\t\tif (opposite) {\r\n\t\t\tside = \"right\"\r\n\t\t}\r\n\r\n\t\t// overbought range\r\n\t\tconst overBought = yAxis.makeDataItem({});\r\n\t\tthis.overBought = overBought;\r\n\t\toverBought.set(\"endValue\", 500);\r\n\r\n\t\tconst overBoughtRB = Button.new(this._root, {\r\n\t\t\tthemeTags: [\"rangegrip\", \"vertical\", side],\r\n\t\t\ticon: Graphics.new(this._root, {\r\n\t\t\t\tthemeTags: [\"rangegrip\", \"icon\"]\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\t// restrict from being dragged vertically\r\n\t\toverBoughtRB.adapters.add(\"x\", function() {\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\t// restrict from being dragged outside of plot\r\n\t\toverBoughtRB.adapters.add(\"y\", function(y) {\r\n\t\t\tif ($type.isNumber(y)) {\r\n\t\t\t\treturn $math.fitToRange(y, 0, chart.plotContainer.height());\r\n\t\t\t}\r\n\t\t\treturn y;\r\n\t\t});\r\n\r\n\t\t// change range when y changes\r\n\t\toverBoughtRB.events.on(\"dragged\", () => {\r\n\t\t\tthis._updateRange(overBoughtRB, \"overBought\");\r\n\t\t});\r\n\r\n\t\toverBought.set(\"bullet\", AxisBullet.new(this._root, {\r\n\t\t\tlocation: 0,\r\n\t\t\tsprite: overBoughtRB\r\n\t\t}))\r\n\r\n\t\tconst overBoughtRange = this.series.createAxisRange(overBought);\r\n\t\tthis.overBoughtRange = overBoughtRange;\r\n\t\tconst overBoughtFills = overBoughtRange.fills;\r\n\t\tif (overBoughtFills) {\r\n\t\t\toverBoughtFills.template.set(\"themeTags\", [\"overbought\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overBoughtGrid = overBought.get(\"grid\")!;\r\n\t\toverBoughtGrid.setAll({ themeTags: [\"overbought\"], visible: true });\r\n\t\toverBoughtGrid._applyThemes();\r\n\r\n\t\tconst overBoughtLabel = overBought.get(\"label\")!;\r\n\t\toverBoughtLabel.setAll({ visible: true, forceHidden: false, location: 0 });\r\n\r\n\t\t// oversold range\r\n\t\tconst overSold = yAxis.makeDataItem({});\r\n\t\tthis.overSold = overSold;\r\n\t\toverSold.set(\"endValue\", -500);\r\n\r\n\t\tconst overSoldRB = Button.new(this._root, {\r\n\t\t\tthemeTags: [\"rangegrip\", \"vertical\", side],\r\n\t\t\ticon: Graphics.new(this._root, {\r\n\t\t\t\tthemeTags: [\"rangegrip\", \"icon\"]\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\t// restrict from being dragged vertically\r\n\t\toverSoldRB.adapters.add(\"x\", function() {\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\t// restrict from being dragged outside of plot\r\n\t\toverSoldRB.adapters.add(\"y\", function(y) {\r\n\t\t\tif ($type.isNumber(y)) {\r\n\t\t\t\treturn $math.fitToRange(y, 0, chart.plotContainer.height());\r\n\t\t\t}\r\n\t\t\treturn y;\r\n\t\t});\r\n\r\n\t\t// change range when y changes\r\n\t\toverSoldRB.events.on(\"dragged\", () => {\r\n\t\t\tthis._updateRange(overSoldRB, \"overSold\");\r\n\t\t});\r\n\r\n\t\toverSold.set(\"bullet\", AxisBullet.new(this._root, {\r\n\t\t\tlocation: 0,\r\n\t\t\tsprite: overSoldRB\r\n\t\t}))\r\n\r\n\r\n\t\tconst overSoldRange = this.series.createAxisRange(overSold);\r\n\t\tthis.overSoldRange = overSoldRange;\r\n\t\tconst overSoldFills = overSoldRange.fills;\r\n\t\tif (overSoldFills) {\r\n\t\t\toverSoldFills.template.set(\"themeTags\", [\"oversold\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overSoldGrid = overSold.get(\"grid\")!;\r\n\t\toverSoldGrid.setAll({ themeTags: [\"oversold\"], visible: true });\r\n\t\toverSoldGrid._applyThemes();\r\n\r\n\t\tconst overSoldLabel = overSold.get(\"label\")!;\r\n\t\toverSoldLabel.setAll({ visible: true, forceHidden: false, location: 0 });\r\n\t}\r\n\r\n\tprotected _updateRange(button: Button, key: \"overBought\" | \"overSold\") {\r\n\t\tconst chart = this.yAxis.chart;\r\n\t\tif (chart) {\r\n\t\t\tconst position = this.yAxis.toAxisPosition(button.y() / chart.plotContainer.height());\r\n\t\t\tthis.set(key, Math.round(this.yAxis.positionToValue(position)));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"valueS\",\r\n\t\t\tstroke: this.get(\"seriesColor\"),\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tsuper._prepareChildren();\r\n\r\n\t\tconst overBoughtLabel = this.overBought.get(\"label\")!;\r\n\t\tconst overSoldLabel = this.overSold.get(\"label\")!;\r\n\t\tconst middleLabel = this.middle.get(\"label\")!;\r\n\r\n\t\tif (this.isDirty(\"overBought\") || this.isDirty(\"overSold\")) {\r\n\t\t\tconst numberFormatter = this.getNumberFormatter();\r\n\r\n\t\t\tconst overSoldValue = this.get(\"overSold\", 0);\r\n\t\t\tconst overBoughtValue = this.get(\"overBought\", 0);\r\n\t\t\tconst middleValue = overSoldValue + (overBoughtValue - overSoldValue) / 2;\r\n\r\n\t\t\toverBoughtLabel.set(\"text\", numberFormatter.format(overBoughtValue));\r\n\t\t\toverSoldLabel.set(\"text\", numberFormatter.format(overSoldValue));\r\n\t\t\tmiddleLabel.set(\"text\", numberFormatter.format(middleValue));\r\n\r\n\t\t\tthis.overBought.set(\"value\", overBoughtValue);\r\n\t\t\tthis.overSold.set(\"value\", overSoldValue);\r\n\r\n\t\t\tthis.middle.set(\"value\", middleValue);\r\n\t\t\tthis.yAxis.set(\"baseValue\", middleValue);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overSoldColor\")) {\r\n\t\t\tconst color = this.get(\"overSoldColor\");\r\n\t\t\toverSoldLabel.set(\"fill\", color);\r\n\r\n\t\t\tthis.overSold.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overSoldRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overSoldRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overBoughtColor\")) {\r\n\t\t\tconst color = this.get(\"overBoughtColor\");\r\n\t\t\toverBoughtLabel.set(\"fill\", color);\r\n\r\n\t\t\tthis.overBought.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overBoughtRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overBoughtRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -60,7 +60,7 @@ export class RelativeStrengthIndex extends OverboughtOversold {
|
|
|
60
60
|
this._updateSeriesColor(this.smaSeries, this.get("smaColor"), "smaColor");
|
|
61
61
|
}
|
|
62
62
|
if (this.isDirty("smaPeriod")) {
|
|
63
|
-
this.
|
|
63
|
+
this.markDataDirty();
|
|
64
64
|
this.setCustomData("smaPeriod", this.get("smaPeriod"));
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelativeStrengthIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/RelativeStrengthIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAsF,MAAM,sBAAsB,CAAC;AAC9I,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAkBnD;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IAA7D;;QAQC;;WAEG;QACH;;;;;WAA8B;IA8H/B,CAAC;IA5HU,SAAS;QAElB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9B,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/C,IAAI,EAAE,QAAQ;SACd,EAAE;YACF,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/C,IAAI,EAAE,OAAO;SACb,EAAE;YACF,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;YAC9C,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;SAC9E,EAAE;YACF,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;YACnD,IAAI,EAAE,QAAQ;SACd,EAAE;YACF,GAAG,EAAE,UAAU;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;YACnD,IAAI,EAAE,OAAO;SACb,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YACnE,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;SAC/B,CAAC,CAAC,CAAA;QAEH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,eAAe;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAA;SACzE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"RelativeStrengthIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/RelativeStrengthIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import { OverboughtOversold, IOverboughtOversoldSettings, IOverboughtOversoldPrivate, IOverboughtOversoldEvents } from \"./OverboughtOversold\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IRelativeStrengthIndexSettings extends IOverboughtOversoldSettings {\r\n\t/**\r\n\t * EMA period.\r\n\t */\r\n\tsmaPeriod?: number;\r\n\r\n\t/**\r\n\t * A color for \"ema\" line.\r\n\t */\r\n\tsmaColor?: Color;\r\n}\r\n\r\nexport interface IRelativeStrengthIndexPrivate extends IOverboughtOversoldPrivate { }\r\n\r\nexport interface IRelativeStrengthIndexEvents extends IOverboughtOversoldEvents { }\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class RelativeStrengthIndex extends OverboughtOversold {\r\n\tpublic static className: string = \"RelativeStrengthIndex\";\r\n\tpublic static classNames: Array<string> = OverboughtOversold.classNames.concat([RelativeStrengthIndex.className]);\r\n\r\n\tdeclare public _settings: IRelativeStrengthIndexSettings;\r\n\tdeclare public _privateSettings: IRelativeStrengthIndexPrivate;\r\n\tdeclare public _events: IRelativeStrengthIndexEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tpublic smaSeries!: LineSeries;\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tthis._themeTags.push(\"rsi\");\r\n\t\tsuper._afterNew();\r\n\t\tthis._editableSettings.unshift({\r\n\t\t\tkey: \"period\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"seriesColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"field\",\r\n\t\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t\t}, {\r\n\t\t\tkey: \"smaPeriod\",\r\n\t\t\tname: this.root.language.translateAny(\"SMA period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"smaColor\",\r\n\t\t\tname: this.root.language.translateAny(\"SMA period\"),\r\n\t\t\ttype: \"color\"\r\n\t\t})\r\n\r\n\t\tconst smaSeries = this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"sma\",\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tgroupDataDisabled: true,\r\n\t\t\tthemeTags: [\"indicator\", \"sma\"]\r\n\t\t}))\r\n\r\n\t\tthis.smaSeries = smaSeries;\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tif (this.isDirty(\"smaColor\")) {\r\n\t\t\tthis._updateSeriesColor(this.smaSeries, this.get(\"smaColor\"), \"smaColor\")\r\n\t\t}\r\n\t\tif (this.isDirty(\"smaPeriod\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"smaPeriod\", this.get(\"smaPeriod\"));\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tlet period = this.get(\"period\", 14);\r\n\t\t\tconst data: Array<any> = [];\r\n\t\t\tlet i = 0;\r\n\t\t\tlet averageGain = 0;\r\n\t\t\tlet averageLoss = 0;\r\n\t\t\tlet prevAverageGain = 0;\r\n\t\t\tlet prevAverageLoss = 0;\r\n\t\t\t$array.each(dataItems, (dataItem) => {\r\n\t\t\t\tlet rsi = null;\r\n\t\t\t\ti++;\r\n\r\n\t\t\t\tif (i == period + 1) {\r\n\t\t\t\t\tfor (let j = 1; j <= period; j++) {\r\n\t\t\t\t\t\tlet value = this._getValue(dataItems[j]);\r\n\t\t\t\t\t\tlet prevValue = this._getValue(dataItems[j - 1]);\r\n\t\t\t\t\t\tif (value != undefined && prevValue != undefined) {\r\n\t\t\t\t\t\t\tlet change = value - prevValue;\r\n\r\n\t\t\t\t\t\t\tif (change > 0) {\r\n\t\t\t\t\t\t\t\taverageGain += change / period;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\taverageLoss += Math.abs(change) / period;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trsi = 100 - (100 / (1 + averageGain / averageLoss));\r\n\t\t\t\t}\r\n\t\t\t\telse if (i > period) {\r\n\t\t\t\t\tlet value = this._getValue(dataItem);\r\n\t\t\t\t\tlet prevValue = this._getValue(dataItems[i - 2]);\r\n\t\t\t\t\tif (value != null && prevValue != null) {\r\n\t\t\t\t\t\tlet change = value - prevValue;\r\n\r\n\t\t\t\t\t\tlet gain = 0;\r\n\t\t\t\t\t\tlet loss = 0;\r\n\r\n\t\t\t\t\t\tif (change > 0) {\r\n\t\t\t\t\t\t\tgain = change;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tloss = -change;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\taverageGain = (prevAverageGain * (period - 1) + gain) / period;\r\n\t\t\t\t\t\taverageLoss = (prevAverageLoss * (period - 1) + loss) / period;\r\n\r\n\t\t\t\t\t\trsi = 100 - (100 / (1 + averageGain / averageLoss));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdata.push({ valueX: dataItem.get(\"valueX\"), valueS: rsi });\r\n\r\n\t\t\t\tprevAverageGain = averageGain;\r\n\t\t\t\tprevAverageLoss = averageLoss;\r\n\t\t\t})\r\n\t\t\tthis.series.data.setAll(data);\r\n\r\n\t\t\tperiod = this.get(\"smaPeriod\", 3);\r\n\t\t\tthis._sma(data, period, \"valueS\", \"sma\");\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t\tthis.smaSeries.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -56,7 +56,7 @@ export class StochasticMomentumIndex extends OverboughtOversold {
|
|
|
56
56
|
}
|
|
57
57
|
_updateChildren() {
|
|
58
58
|
if (this.isDirty("dPeriod") || this.isDirty("emaPeriod")) {
|
|
59
|
-
this.
|
|
59
|
+
this.markDataDirty();
|
|
60
60
|
this.setCustomData("dPeriod", this.get("dPeriod"));
|
|
61
61
|
this.setCustomData("emaPeriod", this.get("emaPeriod"));
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StochasticMomentumIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/StochasticMomentumIndex.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAsF,MAAM,sBAAsB,CAAC;AAC9I,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AA+BnD;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAA/D;;QAQC;;WAEG;QACH;;;;;WAA8B;IAkI/B,CAAC;IAhIU,SAAS;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE3C,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC7B;YACC,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;YACjD,IAAI,EAAE,QAAQ;SACd,EAAC;YACF,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;YACjD,IAAI,EAAE,OAAO;SACb,EAAE;YACF,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;YACjD,IAAI,EAAE,QAAQ;SACd,EAAE;YACF,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;YACnD,IAAI,EAAE,QAAQ;SACd,EAAG;YACH,GAAG,EAAE,UAAU;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;YACnD,IAAI,EAAE,OAAO;SACb,CACA,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YACnE,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;SAC/B,CAAC,CAAC,CAAA;QAEH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,eAAe;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACzD,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"StochasticMomentumIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/StochasticMomentumIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { OverboughtOversold, IOverboughtOversoldSettings, IOverboughtOversoldPrivate, IOverboughtOversoldEvents } from \"./OverboughtOversold\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IStochasticMomentumIndexSettings extends IOverboughtOversoldSettings {\r\n\t/**\r\n\t * A color for \"ema\" line.\r\n\t */\r\n\temaColor?: Color;\r\n\r\n\t/**\r\n\t * K period.\r\n\t */\r\n\tkPeriod?: number;\r\n\r\n\t/**\r\n\t * D period.\r\n\t */\r\n\tdPeriod?: number;\r\n\r\n\t/**\r\n\t * EMA period.\r\n\t */\r\n\temaPeriod?: number;\r\n}\r\n\r\nexport interface IStochasticMomentumIndexPrivate extends IOverboughtOversoldPrivate {\r\n}\r\n\r\nexport interface IStochasticMomentumIndexEvents extends IOverboughtOversoldEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @since 5.5.3\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class StochasticMomentumIndex extends OverboughtOversold {\r\n\tpublic static className: string = \"StochasticMomentumIndex\";\r\n\tpublic static classNames: Array<string> = OverboughtOversold.classNames.concat([StochasticMomentumIndex.className]);\r\n\r\n\tdeclare public _settings: IStochasticMomentumIndexSettings;\r\n\tdeclare public _privateSettings: IStochasticMomentumIndexPrivate;\r\n\tdeclare public _events: IStochasticMomentumIndexEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tpublic emaSeries!: LineSeries;\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis._themeTags.push(\"stochasticmomentum\");\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis._editableSettings.unshift(\r\n\t\t\t{\r\n\t\t\t\tkey: \"period\",\r\n\t\t\t\tname: this.root.language.translateAny(\"K period\"),\r\n\t\t\t\ttype: \"number\"\r\n\t\t\t},{\r\n\t\t\tkey: \"seriesColor\",\r\n\t\t\tname: this.root.language.translateAny(\"K period\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"dPeriod\",\r\n\t\t\tname: this.root.language.translateAny(\"D period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"emaPeriod\",\r\n\t\t\tname: this.root.language.translateAny(\"EMA period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"emaColor\",\r\n\t\t\tname: this.root.language.translateAny(\"EMA period\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}\r\n\t\t);\r\n\r\n\t\tconst emaSeries = this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"ema\",\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tgroupDataDisabled: true,\r\n\t\t\tthemeTags: [\"indicator\", \"ema\"]\r\n\t\t}))\r\n\r\n\t\tthis.emaSeries = emaSeries;\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tif (this.isDirty(\"dPeriod\") || this.isDirty(\"emaPeriod\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"dPeriod\", this.get(\"dPeriod\"));\r\n\t\t\tthis.setCustomData(\"emaPeriod\", this.get(\"emaPeriod\"));\r\n\t\t}\r\n\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"emaColor\")) {\r\n\t\t\tthis._updateSeriesColor(this.emaSeries, this.get(\"emaColor\"), \"emaColor\")\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * https://www.barchart.com/education/technical-indicators/stochastic_momentum_index\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tlet kPeriod = this.get(\"period\", 10);\r\n\t\t\tlet data: Array<any> = [];\r\n\t\t\tlet index = 0;\r\n\r\n\t\t\t$array.each(dataItems, (dataItem) => {\r\n\t\t\t\tconst valueX = dataItem.get(\"valueX\");\r\n\t\t\t\tlet lp = Infinity;\r\n\t\t\t\tlet hp = -lp;\r\n\t\t\t\tlet hhh;\r\n\t\t\t\tlet dhl;\r\n\r\n\t\t\t\tif (index >= kPeriod - 1) {\r\n\t\t\t\t\tlet value = this._getValue(dataItem);\r\n\r\n\t\t\t\t\tif (value != null) {\r\n\t\t\t\t\t\tfor (let j = index; j > index - kPeriod; j--) {\r\n\t\t\t\t\t\t\tlet h = dataItems[j].get(\"highValueY\");\r\n\t\t\t\t\t\t\tlet l = dataItems[j].get(\"lowValueY\");\r\n\r\n\t\t\t\t\t\t\tif (h != null && l != null) {\r\n\t\t\t\t\t\t\t\tif (l < lp) {\r\n\t\t\t\t\t\t\t\t\tlp = l;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (h > hp) {\r\n\t\t\t\t\t\t\t\t\thp = h;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet c = (hp + lp) / 2;\r\n\t\t\t\t\t\thhh = value - c;\r\n\t\t\t\t\t\tdhl = hp - lp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (hhh == null) {\r\n\t\t\t\t\tdata.push({ valueX: valueX });\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tdata.push({ valueX: valueX, hhh: hhh, dhl: dhl });\r\n\t\t\t\t}\r\n\t\t\t\tindex++;\r\n\t\t\t})\r\n\r\n\t\t\tlet dPeriod = this.get(\"dPeriod\", 3);\r\n\t\t\tthis._ema(data, dPeriod, \"hhh\", \"hhh_ema\");\r\n\t\t\tthis._ema(data, dPeriod, \"hhh_ema\", \"hhh_ema2\");\r\n\r\n\t\t\tthis._ema(data, dPeriod, \"dhl\", \"dhl_ema\");\r\n\t\t\tthis._ema(data, dPeriod, \"dhl_ema\", \"dhl_ema2\");\r\n\r\n\t\t\t$array.each(data, (d) => {\r\n\t\t\t\tlet hhh = d.hhh_ema2;\r\n\t\t\t\tlet dhl = d.dhl_ema2;\r\n\r\n\t\t\t\tif (hhh != null && dhl != null) {\r\n\t\t\t\t\td.valueS = d.hhh_ema2 / d.dhl_ema2 * 200;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tlet emaPeriod = this.get(\"emaPeriod\", 3);\r\n\t\t\tthis._sma(data, emaPeriod, \"valueS\", \"ema\");\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t\tthis.emaSeries.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -56,7 +56,7 @@ export class StochasticOscillator extends OverboughtOversold {
|
|
|
56
56
|
}
|
|
57
57
|
_updateChildren() {
|
|
58
58
|
if (this.isDirty("kSmoothing") || this.isDirty("dSmoothing")) {
|
|
59
|
-
this.
|
|
59
|
+
this.markDataDirty();
|
|
60
60
|
this.setCustomData("dSmoothing", this.get("dSmoothing"));
|
|
61
61
|
this.setCustomData("kSmoothing", this.get("kSmoothing"));
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StochasticOscillator.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/StochasticOscillator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAsF,MAAM,sBAAsB,CAAC;AAC9I,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AA0BnD;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAA5D;;QAQC;;WAEG;QACH;;;;;WAA+B;IAmHhC,CAAC;IAjHU,SAAS;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEnC,KAAK,CAAC,SAAS,EAAE,CAAC;QAElB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC7B;YACC,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/C,IAAI,EAAE,QAAQ;SACd,EAAE;YACH,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/C,IAAI,EAAE,OAAO;SACb,EAAE;YACF,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;YACjD,IAAI,EAAE,QAAQ;SACd,EAAC;YACD,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;YACnD,IAAI,EAAE,QAAQ;SACd,EAAG;YACH,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;YACnD,IAAI,EAAE,OAAO;SACb,CACA,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YACpE,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,CAAA;QAEH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAGM,eAAe;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC7D,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"StochasticOscillator.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/StochasticOscillator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { OverboughtOversold, IOverboughtOversoldSettings, IOverboughtOversoldPrivate, IOverboughtOversoldEvents } from \"./OverboughtOversold\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IStochasticOscillatorSettings extends IOverboughtOversoldSettings {\r\n\t/**\r\n\t * A color for \"slow\" section.\r\n\t */\r\n\tslowColor?: Color;\r\n\r\n\t/**\r\n\t * Smoothing \"k\" parameter.\r\n\t */\r\n\tkSmoothing?: number;\r\n\r\n\t/**\r\n\t * Smoothing \"d\" parameter.\r\n\t */\r\n\tdSmoothing?: number;\r\n}\r\n\r\nexport interface IStochasticOscillatorPrivate extends IOverboughtOversoldPrivate {\r\n}\r\n\r\nexport interface IStochasticOscillatorEvents extends IOverboughtOversoldEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class StochasticOscillator extends OverboughtOversold {\r\n\tpublic static className: string = \"StochasticOscillator\";\r\n\tpublic static classNames: Array<string> = OverboughtOversold.classNames.concat([StochasticOscillator.className]);\r\n\r\n\tdeclare public _settings: IStochasticOscillatorSettings;\r\n\tdeclare public _privateSettings: IStochasticOscillatorPrivate;\r\n\tdeclare public _events: IStochasticOscillatorEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tpublic slowSeries!: LineSeries;\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis._themeTags.push(\"stochastic\");\r\n\r\n\t\tsuper._afterNew();\r\n\r\n\t\tthis._editableSettings.unshift(\r\n\t\t\t{\r\n\t\t\t\tkey: \"period\",\r\n\t\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\t\ttype: \"number\"\r\n\t\t\t}, {\r\n\t\t\tkey: \"seriesColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"kSmoothing\",\r\n\t\t\tname: this.root.language.translateAny(\"K period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t},{\r\n\t\t\tkey: \"dSmoothing\",\r\n\t\t\tname: this.root.language.translateAny(\"SMA period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"slowColor\",\r\n\t\t\tname: this.root.language.translateAny(\"SMA period\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}\r\n\t\t)\r\n\r\n\t\tthis.yAxis.setAll({ min: 0, max: 100, strictMinMax: true });\r\n\r\n\t\tconst slowSeries = this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"slow\",\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tgroupDataDisabled: true,\r\n\t\t\tthemeTags: [\"indicator\", \"slow\"]\r\n\t\t}))\r\n\r\n\t\tthis.slowSeries = slowSeries;\r\n\t}\r\n\r\n\r\n\tpublic _updateChildren() {\r\n\t\tif (this.isDirty(\"kSmoothing\") || this.isDirty(\"dSmoothing\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"dSmoothing\", this.get(\"dSmoothing\"));\r\n\t\t\tthis.setCustomData(\"kSmoothing\", this.get(\"kSmoothing\"));\r\n\t\t}\r\n\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"slowColor\")) {\r\n\t\t\tthis._updateSeriesColor(this.slowSeries, this.get(\"slowColor\"), \"slowColor\")\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tlet period = this.get(\"period\", 14);\r\n\t\t\tlet data: Array<any> = [];\r\n\t\t\tlet index = 0;\r\n\r\n\t\t\t$array.each(dataItems, (dataItem) => {\r\n\t\t\t\tconst valueX = dataItem.get(\"valueX\");\r\n\t\t\t\tlet k;\r\n\t\t\t\tif (index >= period - 1) {\r\n\t\t\t\t\tlet value = this._getValue(dataItem);\r\n\r\n\t\t\t\t\tif (value != null) {\r\n\t\t\t\t\t\tlet lp = Infinity;\r\n\t\t\t\t\t\tlet hp = -lp;\r\n\t\t\t\t\t\tfor (let j = index; j > index - period; j--) {\r\n\t\t\t\t\t\t\tlet h = dataItems[j].get(\"highValueY\");\r\n\t\t\t\t\t\t\tlet l = dataItems[j].get(\"lowValueY\");\r\n\r\n\t\t\t\t\t\t\tif (h != null && l != null) {\r\n\t\t\t\t\t\t\t\tif (l < lp) {\r\n\t\t\t\t\t\t\t\t\tlp = l;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (h > hp) {\r\n\t\t\t\t\t\t\t\t\thp = h;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tk = (value - lp) / (hp - lp) * 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (k == null) {\r\n\t\t\t\t\tdata.push({ valueX: valueX });\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tdata.push({ valueX: valueX, value_y: k });\r\n\t\t\t\t}\r\n\t\t\t\tindex++;\r\n\t\t\t})\r\n\r\n\t\t\tperiod = this.get(\"kSmoothing\", 1);\r\n\t\t\tthis._sma(data, period, \"value_y\", \"valueS\");\r\n\r\n\t\t\tperiod = this.get(\"dSmoothing\", 3);\r\n\t\t\tthis._sma(data, period, \"valueS\", \"slow\");\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t\tthis.slowSeries.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -76,7 +76,7 @@ export class Trix extends ChartIndicator {
|
|
|
76
76
|
}
|
|
77
77
|
_prepareChildren() {
|
|
78
78
|
if (this.isDirty("signalPeriod")) {
|
|
79
|
-
this.
|
|
79
|
+
this.markDataDirty();
|
|
80
80
|
this.setCustomData("signalPeriod", this.get("signalPeriod"));
|
|
81
81
|
}
|
|
82
82
|
super._prepareChildren();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trix.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/Trix.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAA0E,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,KAAK,MAAM,yBAAyB,CAAC;AAsBjD;;;;GAIG;AACH,MAAM,OAAO,IAAK,SAAQ,cAAc;IAAxC;;QAaC;;WAEG;QACH;;;;;WAAiC;QAEjC;;;;mBAAwD,CAAC;oBACxD,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;oBAC/C,IAAI,EAAE,QAAQ;iBACd,EAAE;oBACF,GAAG,EAAE,aAAa;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC9C,IAAI,EAAE,OAAO;iBACb,EAAE;oBACF,GAAG,EAAE,cAAc;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC;oBACtD,IAAI,EAAE,QAAQ;iBACd,EAAE;oBACF,GAAG,EAAE,aAAa;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC;oBACrD,IAAI,EAAE,OAAO;iBACb,CAAC;WAAC;QAEH;;;;mBAA8B,MAAM;WAAC;IA2GtC,CAAC;IAzGO,aAAa;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YACxD,SAAS,EAAE,CAAC,WAAW,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,SAAS;SACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,SAAS;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7B,KAAK,CAAC,SAAS,EAAE,CAAC;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,EAAE;YAEV,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;gBACjE,WAAW,EAAE,QAAQ;gBACrB,WAAW,EAAE,QAAQ;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,iBAAiB,EAAE,IAAI;gBACvB,SAAS,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aAClC,CAAC,CAAC,CAAA;YAEH,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SACjC;IACF,CAAC;IAGM,gBAAgB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YACjC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"Trix.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/Trix.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nexport interface ITrixSettings extends IChartIndicatorSettings {\r\n\t/**\r\n\t * Signal color.\r\n\t */\r\n\tsignalColor?: Color;\r\n\r\n\t/**\r\n\t * A value for \"signal\" period.\r\n\t */\r\n\tsignalPeriod?: number;\r\n}\r\n\r\nexport interface ITrixPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface ITrixEvents extends IChartIndicatorEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class Trix extends ChartIndicator {\r\n\tpublic static className: string = \"Trix\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([Trix.className]);\r\n\r\n\tdeclare public _settings: ITrixSettings;\r\n\tdeclare public _privateSettings: ITrixPrivate;\r\n\tdeclare public _events: ITrixEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the signal.\r\n\t */\r\n\tpublic signalSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"signalPeriod\",\r\n\t\tname: this.root.language.translateAny(\"Signal period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"signalColor\",\r\n\t\tname: this.root.language.translateAny(\"Signal color\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _themeTag: string = \"trix\";\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"trix\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tprotected _afterNew() {\r\n\t\tthis._themeTags.push(\"trix\");\r\n\r\n\t\tsuper._afterNew();\r\n\r\n\t\tconst chart = this.panel;\r\n\r\n\t\tif (chart) {\r\n\r\n\t\t\tconst signalSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"signal\",\r\n\t\t\t\txAxis: this.xAxis,\r\n\t\t\t\tyAxis: this.yAxis,\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"signal\"]\r\n\t\t\t}))\r\n\r\n\t\t\tthis.signalSeries = signalSeries;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"signalPeriod\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"signalPeriod\", this.get(\"signalPeriod\"));\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"signalColor\")) {\r\n\t\t\tthis._updateSeriesColor(this.signalSeries, this.get(\"signalColor\"), \"signalColor\");\r\n\t\t}\r\n\r\n\t\tconst dataItem = this.series.dataItem;\r\n\t\tif (dataItem) {\r\n\t\t\tconst dataContext = dataItem.dataContext as any;\r\n\t\t\tif (dataContext) {\r\n\t\t\t\tdataContext.signalPeriod = this.get(\"signalPeriod\");\r\n\t\t\t\tconst signalColor = this.get(\"signalColor\");\r\n\t\t\t\tif (signalColor) {\r\n\t\t\t\t\tdataContext.signalColor = signalColor.toCSSHex();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\r\n\t\t\tlet period = this.get(\"period\", 14);\r\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\t\tconst dataItems = stockSeries.dataItems;\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\r\n\t\t\tthis._ema(data, period, \"value_y\", \"ema\");\r\n\t\t\tthis._ema(data, period, \"ema\", \"ema2\");\r\n\t\t\tthis._ema(data, period, \"ema2\", \"ema3\");\r\n\r\n\t\t\tlet previousDataItem: any;\r\n\t\t\tlet previousValue: number;\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\tlet value = dataItem.ema3;\r\n\t\t\t\tif (previousDataItem) {\r\n\t\t\t\t\tpreviousValue = previousDataItem.ema3;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($type.isNumber(value) && $type.isNumber(previousValue)) {\r\n\t\t\t\t\tdataItem.trix = 100 * (value - previousValue) / previousValue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpreviousDataItem = dataItem;\r\n\t\t\t})\r\n\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\r\n\r\n\t\t\tperiod = this.get(\"signalPeriod\", 9);\r\n\t\t\tthis._sma(data, period, \"trix\", \"signal\");\r\n\r\n\t\t\tthis.signalSeries.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|