aw-highstock_rails 7.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +7 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +22 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +53 -0
  9. data/Rakefile +10 -0
  10. data/aw-highstock_rails.gemspec +28 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/lib/aw/highstock_rails.rb +9 -0
  14. data/lib/aw/highstock_rails/version.rb +5 -0
  15. data/vendor/assets/javascripts/highstock/css/annotations/popup.css +229 -0
  16. data/vendor/assets/javascripts/highstock/css/annotations/popup.scss +235 -0
  17. data/vendor/assets/javascripts/highstock/css/highcharts.css +890 -0
  18. data/vendor/assets/javascripts/highstock/css/highcharts.scss +788 -0
  19. data/vendor/assets/javascripts/highstock/css/stocktools/gui.css +268 -0
  20. data/vendor/assets/javascripts/highstock/css/stocktools/gui.scss +270 -0
  21. data/vendor/assets/javascripts/highstock/css/themes/dark-unica.css +951 -0
  22. data/vendor/assets/javascripts/highstock/css/themes/dark-unica.scss +122 -0
  23. data/vendor/assets/javascripts/highstock/css/themes/grid-light.css +904 -0
  24. data/vendor/assets/javascripts/highstock/css/themes/grid-light.scss +33 -0
  25. data/vendor/assets/javascripts/highstock/css/themes/sand-signika.css +920 -0
  26. data/vendor/assets/javascripts/highstock/css/themes/sand-signika.scss +74 -0
  27. data/vendor/assets/javascripts/highstock/es-modules/annotations/ControlPoint.js +130 -0
  28. data/vendor/assets/javascripts/highstock/es-modules/annotations/MockPoint.js +415 -0
  29. data/vendor/assets/javascripts/highstock/es-modules/annotations/annotations.src.js +1231 -0
  30. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableCircle.js +92 -0
  31. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableImage.js +101 -0
  32. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableLabel.js +452 -0
  33. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllablePath.js +175 -0
  34. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableRect.js +93 -0
  35. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/controllableMixin.js +411 -0
  36. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/markerMixin.js +214 -0
  37. data/vendor/assets/javascripts/highstock/es-modules/annotations/eventEmitterMixin.js +271 -0
  38. data/vendor/assets/javascripts/highstock/es-modules/annotations/navigationBindings.js +1283 -0
  39. data/vendor/assets/javascripts/highstock/es-modules/annotations/popup.js +1069 -0
  40. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/CrookedLine.js +191 -0
  41. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/ElliottWave.js +76 -0
  42. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Fibonacci.js +247 -0
  43. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/InfinityLine.js +185 -0
  44. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Measure.js +928 -0
  45. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Pitchfork.js +203 -0
  46. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Tunnel.js +242 -0
  47. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/VerticalLine.js +157 -0
  48. data/vendor/assets/javascripts/highstock/es-modules/error-messages.js +128 -0
  49. data/vendor/assets/javascripts/highstock/es-modules/error.js +1 -0
  50. data/vendor/assets/javascripts/highstock/es-modules/indicators/acceleration-bands.src.js +199 -0
  51. data/vendor/assets/javascripts/highstock/es-modules/indicators/accumulation-distribution.src.js +129 -0
  52. data/vendor/assets/javascripts/highstock/es-modules/indicators/ao.src.js +206 -0
  53. data/vendor/assets/javascripts/highstock/es-modules/indicators/apo.src.js +148 -0
  54. data/vendor/assets/javascripts/highstock/es-modules/indicators/aroon-oscillator.src.js +128 -0
  55. data/vendor/assets/javascripts/highstock/es-modules/indicators/aroon.src.js +173 -0
  56. data/vendor/assets/javascripts/highstock/es-modules/indicators/atr.src.js +151 -0
  57. data/vendor/assets/javascripts/highstock/es-modules/indicators/bollinger-bands.src.js +209 -0
  58. data/vendor/assets/javascripts/highstock/es-modules/indicators/cci.src.js +131 -0
  59. data/vendor/assets/javascripts/highstock/es-modules/indicators/chaikin.src.js +167 -0
  60. data/vendor/assets/javascripts/highstock/es-modules/indicators/cmf.src.js +246 -0
  61. data/vendor/assets/javascripts/highstock/es-modules/indicators/dema.src.js +191 -0
  62. data/vendor/assets/javascripts/highstock/es-modules/indicators/dpo.src.js +138 -0
  63. data/vendor/assets/javascripts/highstock/es-modules/indicators/ema.src.js +166 -0
  64. data/vendor/assets/javascripts/highstock/es-modules/indicators/ichimoku-kinko-hyo.src.js +850 -0
  65. data/vendor/assets/javascripts/highstock/es-modules/indicators/indicators.src.js +425 -0
  66. data/vendor/assets/javascripts/highstock/es-modules/indicators/keltner-channels.src.js +193 -0
  67. data/vendor/assets/javascripts/highstock/es-modules/indicators/macd.src.js +417 -0
  68. data/vendor/assets/javascripts/highstock/es-modules/indicators/mfi.src.js +198 -0
  69. data/vendor/assets/javascripts/highstock/es-modules/indicators/momentum.src.js +119 -0
  70. data/vendor/assets/javascripts/highstock/es-modules/indicators/natr.src.js +74 -0
  71. data/vendor/assets/javascripts/highstock/es-modules/indicators/pivot-points.src.js +360 -0
  72. data/vendor/assets/javascripts/highstock/es-modules/indicators/ppo.src.js +152 -0
  73. data/vendor/assets/javascripts/highstock/es-modules/indicators/price-channel.src.js +149 -0
  74. data/vendor/assets/javascripts/highstock/es-modules/indicators/price-envelopes.src.js +251 -0
  75. data/vendor/assets/javascripts/highstock/es-modules/indicators/psar.src.js +307 -0
  76. data/vendor/assets/javascripts/highstock/es-modules/indicators/regressions.src.js +427 -0
  77. data/vendor/assets/javascripts/highstock/es-modules/indicators/roc.src.js +149 -0
  78. data/vendor/assets/javascripts/highstock/es-modules/indicators/rsi.src.js +163 -0
  79. data/vendor/assets/javascripts/highstock/es-modules/indicators/stochastic.src.js +193 -0
  80. data/vendor/assets/javascripts/highstock/es-modules/indicators/supertrend.src.js +544 -0
  81. data/vendor/assets/javascripts/highstock/es-modules/indicators/tema.src.js +247 -0
  82. data/vendor/assets/javascripts/highstock/es-modules/indicators/trix.src.js +96 -0
  83. data/vendor/assets/javascripts/highstock/es-modules/indicators/volume-by-price.src.js +671 -0
  84. data/vendor/assets/javascripts/highstock/es-modules/indicators/vwap.src.js +189 -0
  85. data/vendor/assets/javascripts/highstock/es-modules/indicators/williams-r.src.js +128 -0
  86. data/vendor/assets/javascripts/highstock/es-modules/indicators/wma.src.js +146 -0
  87. data/vendor/assets/javascripts/highstock/es-modules/indicators/zigzag.src.js +221 -0
  88. data/vendor/assets/javascripts/highstock/es-modules/masters/highcharts-3d.src.js +17 -0
  89. data/vendor/assets/javascripts/highstock/es-modules/masters/highcharts-more.src.js +22 -0
  90. data/vendor/assets/javascripts/highstock/es-modules/masters/highstock.src.js +11 -0
  91. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/acceleration-bands.src.js +11 -0
  92. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/accumulation-distribution.src.js +11 -0
  93. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ao.src.js +11 -0
  94. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/apo.src.js +11 -0
  95. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/aroon-oscillator.src.js +11 -0
  96. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/aroon.src.js +11 -0
  97. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/atr.src.js +11 -0
  98. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/bollinger-bands.src.js +11 -0
  99. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/cci.src.js +11 -0
  100. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/chaikin.src.js +11 -0
  101. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/cmf.src.js +10 -0
  102. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/dema.src.js +11 -0
  103. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/dpo.src.js +11 -0
  104. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ema.src.js +11 -0
  105. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +11 -0
  106. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/indicators-all.src.js +49 -0
  107. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/indicators.src.js +11 -0
  108. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/keltner-channels.src.js +11 -0
  109. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/macd.src.js +11 -0
  110. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/mfi.src.js +11 -0
  111. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/momentum.src.js +11 -0
  112. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/natr.src.js +11 -0
  113. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/pivot-points.src.js +11 -0
  114. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ppo.src.js +11 -0
  115. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/price-channel.src.js +11 -0
  116. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/price-envelopes.src.js +11 -0
  117. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/psar.src.js +11 -0
  118. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/regressions.src.js +11 -0
  119. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/roc.src.js +11 -0
  120. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/rsi.src.js +11 -0
  121. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/stochastic.src.js +11 -0
  122. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/supertrend.src.js +11 -0
  123. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/tema.src.js +11 -0
  124. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/trix.src.js +11 -0
  125. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/volume-by-price.src.js +11 -0
  126. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/vwap.src.js +11 -0
  127. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/williams-r.src.js +11 -0
  128. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/wma.src.js +11 -0
  129. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/zigzag.src.js +11 -0
  130. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/accessibility.src.js +13 -0
  131. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/annotations-advanced.src.js +20 -0
  132. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/annotations.src.js +12 -0
  133. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/arrow-symbols.src.js +10 -0
  134. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/boost-canvas.src.js +11 -0
  135. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/boost.src.js +11 -0
  136. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/bullet.src.js +11 -0
  137. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/current-date-indicator.src.js +10 -0
  138. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/cylinder.src.js +10 -0
  139. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/data.src.js +10 -0
  140. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/datagrouping.src.js +12 -0
  141. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/debugger.src.js +13 -0
  142. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/dependency-wheel.src.js +10 -0
  143. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/drag-panes.src.js +11 -0
  144. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/draggable-points.src.js +9 -0
  145. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/drilldown.src.js +10 -0
  146. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/export-data.src.js +10 -0
  147. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/exporting.src.js +10 -0
  148. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/full-screen.src.js +11 -0
  149. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/funnel.src.js +10 -0
  150. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/grid-axis.src.js +10 -0
  151. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/heatmap.src.js +11 -0
  152. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/histogram-bellcurve.src.js +11 -0
  153. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/item-series.src.js +11 -0
  154. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/networkgraph.src.js +10 -0
  155. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/no-data-to-display.src.js +11 -0
  156. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/offline-exporting.src.js +10 -0
  157. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/oldie-polyfills.src.js +11 -0
  158. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/oldie.src.js +11 -0
  159. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/overlapping-datalabels.src.js +9 -0
  160. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/parallel-coordinates.src.js +11 -0
  161. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pareto.src.js +11 -0
  162. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pathfinder.src.js +10 -0
  163. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pattern-fill.src.js +11 -0
  164. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/price-indicator.src.js +11 -0
  165. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sankey.src.js +10 -0
  166. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/series-label.src.js +9 -0
  167. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/solid-gauge.src.js +10 -0
  168. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sonification.src.js +12 -0
  169. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/static-scale.src.js +10 -0
  170. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/stock-tools.src.js +12 -0
  171. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/stock.src.js +19 -0
  172. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/streamgraph.src.js +10 -0
  173. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sunburst.src.js +10 -0
  174. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/tilemap.src.js +10 -0
  175. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/timeline.src.js +11 -0
  176. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/treegrid.src.js +10 -0
  177. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/treemap.src.js +10 -0
  178. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/variable-pie.src.js +11 -0
  179. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/variwide.src.js +10 -0
  180. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/vector.src.js +10 -0
  181. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/venn.src.js +10 -0
  182. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/windbarb.src.js +10 -0
  183. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/wordcloud.src.js +10 -0
  184. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/xrange.src.js +10 -0
  185. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/avocado.js +9 -0
  186. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/avocado.src.js +9 -0
  187. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-blue.src.js +9 -0
  188. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-green.src.js +9 -0
  189. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-unica.src.js +9 -0
  190. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/gray.src.js +9 -0
  191. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/grid-light.src.js +9 -0
  192. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/grid.src.js +9 -0
  193. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sand-signika.src.js +9 -0
  194. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/skies.src.js +9 -0
  195. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sunset.js +9 -0
  196. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sunset.src.js +9 -0
  197. data/vendor/assets/javascripts/highstock/es-modules/mixins/ajax.js +123 -0
  198. data/vendor/assets/javascripts/highstock/es-modules/mixins/centered-series.js +116 -0
  199. data/vendor/assets/javascripts/highstock/es-modules/mixins/derived-series.js +150 -0
  200. data/vendor/assets/javascripts/highstock/es-modules/mixins/download-url.js +103 -0
  201. data/vendor/assets/javascripts/highstock/es-modules/mixins/draw-point.js +51 -0
  202. data/vendor/assets/javascripts/highstock/es-modules/mixins/geometry-circles.js +300 -0
  203. data/vendor/assets/javascripts/highstock/es-modules/mixins/geometry.js +50 -0
  204. data/vendor/assets/javascripts/highstock/es-modules/mixins/indicator-required.js +49 -0
  205. data/vendor/assets/javascripts/highstock/es-modules/mixins/multipe-lines.js +223 -0
  206. data/vendor/assets/javascripts/highstock/es-modules/mixins/navigation.js +59 -0
  207. data/vendor/assets/javascripts/highstock/es-modules/mixins/nodes.js +76 -0
  208. data/vendor/assets/javascripts/highstock/es-modules/mixins/on-series.js +167 -0
  209. data/vendor/assets/javascripts/highstock/es-modules/mixins/polygon.js +293 -0
  210. data/vendor/assets/javascripts/highstock/es-modules/mixins/reduce-array.js +53 -0
  211. data/vendor/assets/javascripts/highstock/es-modules/mixins/tree-series.js +256 -0
  212. data/vendor/assets/javascripts/highstock/es-modules/modules/a11y-i18n.src.js +524 -0
  213. data/vendor/assets/javascripts/highstock/es-modules/modules/annotations-legacy.src.js +1951 -0
  214. data/vendor/assets/javascripts/highstock/es-modules/modules/bellcurve.src.js +173 -0
  215. data/vendor/assets/javascripts/highstock/es-modules/modules/boost-canvas.src.js +732 -0
  216. data/vendor/assets/javascripts/highstock/es-modules/modules/boost.src.js +3730 -0
  217. data/vendor/assets/javascripts/highstock/es-modules/modules/bullet.src.js +361 -0
  218. data/vendor/assets/javascripts/highstock/es-modules/modules/cylinder.src.js +389 -0
  219. data/vendor/assets/javascripts/highstock/es-modules/modules/data.src.js +2417 -0
  220. data/vendor/assets/javascripts/highstock/es-modules/modules/debugger.src.js +109 -0
  221. data/vendor/assets/javascripts/highstock/es-modules/modules/dependency-wheel.src.js +199 -0
  222. data/vendor/assets/javascripts/highstock/es-modules/modules/drag-panes.src.js +624 -0
  223. data/vendor/assets/javascripts/highstock/es-modules/modules/draggable-points.src.js +2625 -0
  224. data/vendor/assets/javascripts/highstock/es-modules/modules/drilldown.src.js +1300 -0
  225. data/vendor/assets/javascripts/highstock/es-modules/modules/export-data.src.js +983 -0
  226. data/vendor/assets/javascripts/highstock/es-modules/modules/exporting.src.js +2149 -0
  227. data/vendor/assets/javascripts/highstock/es-modules/modules/full-screen.src.js +40 -0
  228. data/vendor/assets/javascripts/highstock/es-modules/modules/funnel.src.js +552 -0
  229. data/vendor/assets/javascripts/highstock/es-modules/modules/histogram.src.js +229 -0
  230. data/vendor/assets/javascripts/highstock/es-modules/modules/item-series.src.js +150 -0
  231. data/vendor/assets/javascripts/highstock/es-modules/modules/keyboard-navigation.src.js +1606 -0
  232. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/QuadTree.js +175 -0
  233. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/layouts.js +506 -0
  234. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/networkgraph.src.js +740 -0
  235. data/vendor/assets/javascripts/highstock/es-modules/modules/no-data-to-display.src.js +260 -0
  236. data/vendor/assets/javascripts/highstock/es-modules/modules/offline-exporting.src.js +710 -0
  237. data/vendor/assets/javascripts/highstock/es-modules/modules/oldie-polyfills.src.js +121 -0
  238. data/vendor/assets/javascripts/highstock/es-modules/modules/oldie.src.js +1556 -0
  239. data/vendor/assets/javascripts/highstock/es-modules/modules/overlapping-datalabels.src.js +250 -0
  240. data/vendor/assets/javascripts/highstock/es-modules/modules/parallel-coordinates.src.js +492 -0
  241. data/vendor/assets/javascripts/highstock/es-modules/modules/pareto.src.js +152 -0
  242. data/vendor/assets/javascripts/highstock/es-modules/modules/pattern-fill.src.js +607 -0
  243. data/vendor/assets/javascripts/highstock/es-modules/modules/price-indicator.src.js +149 -0
  244. data/vendor/assets/javascripts/highstock/es-modules/modules/sankey.src.js +809 -0
  245. data/vendor/assets/javascripts/highstock/es-modules/modules/screen-reader.src.js +954 -0
  246. data/vendor/assets/javascripts/highstock/es-modules/modules/series-label.src.js +1042 -0
  247. data/vendor/assets/javascripts/highstock/es-modules/modules/solid-gauge.src.js +486 -0
  248. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Earcon.js +184 -0
  249. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Instrument.js +582 -0
  250. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Timeline.js +702 -0
  251. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/chartSonify.js +1026 -0
  252. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/instrumentDefinitions.js +37 -0
  253. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/musicalFrequencies.js +113 -0
  254. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/pointSonify.js +385 -0
  255. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/sonification.js +107 -0
  256. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/utilities.js +178 -0
  257. data/vendor/assets/javascripts/highstock/es-modules/modules/static-scale.src.js +88 -0
  258. data/vendor/assets/javascripts/highstock/es-modules/modules/stock-tools-bindings.js +1950 -0
  259. data/vendor/assets/javascripts/highstock/es-modules/modules/stock-tools-gui.js +1458 -0
  260. data/vendor/assets/javascripts/highstock/es-modules/modules/streamgraph.src.js +132 -0
  261. data/vendor/assets/javascripts/highstock/es-modules/modules/sunburst.src.js +1041 -0
  262. data/vendor/assets/javascripts/highstock/es-modules/modules/tilemap.src.js +769 -0
  263. data/vendor/assets/javascripts/highstock/es-modules/modules/timeline.src.js +750 -0
  264. data/vendor/assets/javascripts/highstock/es-modules/modules/treemap.src.js +1803 -0
  265. data/vendor/assets/javascripts/highstock/es-modules/modules/variable-pie.src.js +459 -0
  266. data/vendor/assets/javascripts/highstock/es-modules/modules/variwide.src.js +350 -0
  267. data/vendor/assets/javascripts/highstock/es-modules/modules/vector.src.js +354 -0
  268. data/vendor/assets/javascripts/highstock/es-modules/modules/venn.src.js +1192 -0
  269. data/vendor/assets/javascripts/highstock/es-modules/modules/windbarb.src.js +380 -0
  270. data/vendor/assets/javascripts/highstock/es-modules/modules/wordcloud.src.js +1103 -0
  271. data/vendor/assets/javascripts/highstock/es-modules/modules/xrange.src.js +761 -0
  272. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Axis.js +669 -0
  273. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Chart.js +1753 -0
  274. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Column.js +437 -0
  275. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Math.js +206 -0
  276. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Pie.js +207 -0
  277. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/SVGRenderer.js +1002 -0
  278. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Scatter.js +154 -0
  279. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Series.js +73 -0
  280. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/VMLRenderer.js +62 -0
  281. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/ArrowSymbols.js +198 -0
  282. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/CurrentDateIndicator.js +100 -0
  283. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GanttChart.js +140 -0
  284. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GanttSeries.js +415 -0
  285. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GridAxis.js +961 -0
  286. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/Pathfinder.js +1298 -0
  287. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/PathfinderAlgorithms.js +816 -0
  288. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/Tree.js +158 -0
  289. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/TreeGrid.js +1003 -0
  290. data/vendor/assets/javascripts/highstock/es-modules/parts-map/ColorAxis.js +1103 -0
  291. data/vendor/assets/javascripts/highstock/es-modules/parts-map/ColorSeriesMixin.js +138 -0
  292. data/vendor/assets/javascripts/highstock/es-modules/parts-map/GeoJSON.js +435 -0
  293. data/vendor/assets/javascripts/highstock/es-modules/parts-map/HeatmapSeries.js +474 -0
  294. data/vendor/assets/javascripts/highstock/es-modules/parts-map/Map.js +477 -0
  295. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapAxis.js +124 -0
  296. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapBubbleSeries.js +274 -0
  297. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapLineSeries.js +143 -0
  298. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapNavigation.js +357 -0
  299. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapPointSeries.js +187 -0
  300. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapPointer.js +132 -0
  301. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapSeries.js +1294 -0
  302. data/vendor/assets/javascripts/highstock/es-modules/parts-more/AreaRangeSeries.js +725 -0
  303. data/vendor/assets/javascripts/highstock/es-modules/parts-more/AreaSplineRangeSeries.js +98 -0
  304. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BoxPlotSeries.js +617 -0
  305. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BubbleLegend.js +1167 -0
  306. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BubbleSeries.js +661 -0
  307. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ColumnPyramidSeries.js +288 -0
  308. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ColumnRangeSeries.js +278 -0
  309. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ErrorBarSeries.js +172 -0
  310. data/vendor/assets/javascripts/highstock/es-modules/parts-more/GaugeSeries.js +618 -0
  311. data/vendor/assets/javascripts/highstock/es-modules/parts-more/PackedBubbleSeries.js +567 -0
  312. data/vendor/assets/javascripts/highstock/es-modules/parts-more/Pane.js +399 -0
  313. data/vendor/assets/javascripts/highstock/es-modules/parts-more/Polar.js +634 -0
  314. data/vendor/assets/javascripts/highstock/es-modules/parts-more/PolygonSeries.js +151 -0
  315. data/vendor/assets/javascripts/highstock/es-modules/parts-more/RadialAxis.js +685 -0
  316. data/vendor/assets/javascripts/highstock/es-modules/parts-more/WaterfallSeries.js +765 -0
  317. data/vendor/assets/javascripts/highstock/es-modules/parts.js +684 -0
  318. data/vendor/assets/javascripts/highstock/es-modules/parts/AreaSeries.js +578 -0
  319. data/vendor/assets/javascripts/highstock/es-modules/parts/AreaSplineSeries.js +122 -0
  320. data/vendor/assets/javascripts/highstock/es-modules/parts/Axis.js +6453 -0
  321. data/vendor/assets/javascripts/highstock/es-modules/parts/BarSeries.js +153 -0
  322. data/vendor/assets/javascripts/highstock/es-modules/parts/CandlestickSeries.js +358 -0
  323. data/vendor/assets/javascripts/highstock/es-modules/parts/Chart.js +2307 -0
  324. data/vendor/assets/javascripts/highstock/es-modules/parts/Color.js +301 -0
  325. data/vendor/assets/javascripts/highstock/es-modules/parts/ColumnSeries.js +1125 -0
  326. data/vendor/assets/javascripts/highstock/es-modules/parts/DataGrouping.js +1115 -0
  327. data/vendor/assets/javascripts/highstock/es-modules/parts/DataLabels.js +1431 -0
  328. data/vendor/assets/javascripts/highstock/es-modules/parts/DateTimeAxis.js +134 -0
  329. data/vendor/assets/javascripts/highstock/es-modules/parts/Dynamics.js +1301 -0
  330. data/vendor/assets/javascripts/highstock/es-modules/parts/FlagsSeries.js +739 -0
  331. data/vendor/assets/javascripts/highstock/es-modules/parts/Globals.js +75 -0
  332. data/vendor/assets/javascripts/highstock/es-modules/parts/Html.js +539 -0
  333. data/vendor/assets/javascripts/highstock/es-modules/parts/Interaction.js +1299 -0
  334. data/vendor/assets/javascripts/highstock/es-modules/parts/Legend.js +1411 -0
  335. data/vendor/assets/javascripts/highstock/es-modules/parts/LogarithmicAxis.js +168 -0
  336. data/vendor/assets/javascripts/highstock/es-modules/parts/MSPointer.js +176 -0
  337. data/vendor/assets/javascripts/highstock/es-modules/parts/Navigator.js +2486 -0
  338. data/vendor/assets/javascripts/highstock/es-modules/parts/OHLCSeries.js +412 -0
  339. data/vendor/assets/javascripts/highstock/es-modules/parts/Options.js +3732 -0
  340. data/vendor/assets/javascripts/highstock/es-modules/parts/OrdinalAxis.js +962 -0
  341. data/vendor/assets/javascripts/highstock/es-modules/parts/PieSeries.js +1328 -0
  342. data/vendor/assets/javascripts/highstock/es-modules/parts/PlotBandSeries.experimental.js +74 -0
  343. data/vendor/assets/javascripts/highstock/es-modules/parts/PlotLineOrBand.js +1061 -0
  344. data/vendor/assets/javascripts/highstock/es-modules/parts/Point.js +681 -0
  345. data/vendor/assets/javascripts/highstock/es-modules/parts/Pointer.js +1332 -0
  346. data/vendor/assets/javascripts/highstock/es-modules/parts/RangeSelector.js +2063 -0
  347. data/vendor/assets/javascripts/highstock/es-modules/parts/Responsive.js +295 -0
  348. data/vendor/assets/javascripts/highstock/es-modules/parts/ScatterSeries.js +278 -0
  349. data/vendor/assets/javascripts/highstock/es-modules/parts/ScrollablePlotArea.js +266 -0
  350. data/vendor/assets/javascripts/highstock/es-modules/parts/Scrollbar.js +1134 -0
  351. data/vendor/assets/javascripts/highstock/es-modules/parts/Series.js +5864 -0
  352. data/vendor/assets/javascripts/highstock/es-modules/parts/SplineSeries.js +267 -0
  353. data/vendor/assets/javascripts/highstock/es-modules/parts/Stacking.js +604 -0
  354. data/vendor/assets/javascripts/highstock/es-modules/parts/StockChart.js +951 -0
  355. data/vendor/assets/javascripts/highstock/es-modules/parts/SvgRenderer.js +5109 -0
  356. data/vendor/assets/javascripts/highstock/es-modules/parts/Tick.js +746 -0
  357. data/vendor/assets/javascripts/highstock/es-modules/parts/Time.js +881 -0
  358. data/vendor/assets/javascripts/highstock/es-modules/parts/Tooltip.js +1318 -0
  359. data/vendor/assets/javascripts/highstock/es-modules/parts/TouchPointer.js +404 -0
  360. data/vendor/assets/javascripts/highstock/es-modules/parts/Utilities.js +2751 -0
  361. data/vendor/assets/javascripts/highstock/es-modules/themes/avocado.js +37 -0
  362. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-blue.js +259 -0
  363. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-green.js +261 -0
  364. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-unica.js +220 -0
  365. data/vendor/assets/javascripts/highstock/es-modules/themes/gray.js +267 -0
  366. data/vendor/assets/javascripts/highstock/es-modules/themes/grid-light.js +81 -0
  367. data/vendor/assets/javascripts/highstock/es-modules/themes/grid.js +110 -0
  368. data/vendor/assets/javascripts/highstock/es-modules/themes/sand-signika.js +111 -0
  369. data/vendor/assets/javascripts/highstock/es-modules/themes/skies.js +100 -0
  370. data/vendor/assets/javascripts/highstock/es-modules/themes/sunset.js +36 -0
  371. data/vendor/assets/javascripts/highstock/highcharts-3d.js +85 -0
  372. data/vendor/assets/javascripts/highstock/highcharts-3d.js.map +1 -0
  373. data/vendor/assets/javascripts/highstock/highcharts-more.js +101 -0
  374. data/vendor/assets/javascripts/highstock/highcharts-more.js.map +1 -0
  375. data/vendor/assets/javascripts/highstock/highstock.js +583 -0
  376. data/vendor/assets/javascripts/highstock/highstock.js.map +1 -0
  377. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.js +16 -0
  378. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.js.map +1 -0
  379. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.src.js +448 -0
  380. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.js +12 -0
  381. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.js.map +1 -0
  382. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.src.js +156 -0
  383. data/vendor/assets/javascripts/highstock/indicators/ao.js +13 -0
  384. data/vendor/assets/javascripts/highstock/indicators/ao.js.map +1 -0
  385. data/vendor/assets/javascripts/highstock/indicators/ao.src.js +233 -0
  386. data/vendor/assets/javascripts/highstock/indicators/apo.js +13 -0
  387. data/vendor/assets/javascripts/highstock/indicators/apo.js.map +1 -0
  388. data/vendor/assets/javascripts/highstock/indicators/apo.src.js +223 -0
  389. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.js +15 -0
  390. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.js.map +1 -0
  391. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.src.js +426 -0
  392. data/vendor/assets/javascripts/highstock/indicators/aroon.js +16 -0
  393. data/vendor/assets/javascripts/highstock/indicators/aroon.js.map +1 -0
  394. data/vendor/assets/javascripts/highstock/indicators/aroon.src.js +423 -0
  395. data/vendor/assets/javascripts/highstock/indicators/atr.js +12 -0
  396. data/vendor/assets/javascripts/highstock/indicators/atr.js.map +1 -0
  397. data/vendor/assets/javascripts/highstock/indicators/atr.src.js +178 -0
  398. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.js +16 -0
  399. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.js.map +1 -0
  400. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.src.js +458 -0
  401. data/vendor/assets/javascripts/highstock/indicators/cci.js +12 -0
  402. data/vendor/assets/javascripts/highstock/indicators/cci.js.map +1 -0
  403. data/vendor/assets/javascripts/highstock/indicators/cci.src.js +158 -0
  404. data/vendor/assets/javascripts/highstock/indicators/chaikin.js +15 -0
  405. data/vendor/assets/javascripts/highstock/indicators/chaikin.js.map +1 -0
  406. data/vendor/assets/javascripts/highstock/indicators/chaikin.src.js +370 -0
  407. data/vendor/assets/javascripts/highstock/indicators/cmf.js +12 -0
  408. data/vendor/assets/javascripts/highstock/indicators/cmf.js.map +1 -0
  409. data/vendor/assets/javascripts/highstock/indicators/cmf.src.js +273 -0
  410. data/vendor/assets/javascripts/highstock/indicators/dema.js +13 -0
  411. data/vendor/assets/javascripts/highstock/indicators/dema.js.map +1 -0
  412. data/vendor/assets/javascripts/highstock/indicators/dema.src.js +266 -0
  413. data/vendor/assets/javascripts/highstock/indicators/dpo.js +12 -0
  414. data/vendor/assets/javascripts/highstock/indicators/dpo.js.map +1 -0
  415. data/vendor/assets/javascripts/highstock/indicators/dpo.src.js +166 -0
  416. data/vendor/assets/javascripts/highstock/indicators/ema.js +12 -0
  417. data/vendor/assets/javascripts/highstock/indicators/ema.js.map +1 -0
  418. data/vendor/assets/javascripts/highstock/indicators/ema.src.js +193 -0
  419. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.js +22 -0
  420. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.js.map +1 -0
  421. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.src.js +877 -0
  422. data/vendor/assets/javascripts/highstock/indicators/indicators-all.js +117 -0
  423. data/vendor/assets/javascripts/highstock/indicators/indicators-all.js.map +1 -0
  424. data/vendor/assets/javascripts/highstock/indicators/indicators-all.src.js +9389 -0
  425. data/vendor/assets/javascripts/highstock/indicators/indicators.js +17 -0
  426. data/vendor/assets/javascripts/highstock/indicators/indicators.js.map +1 -0
  427. data/vendor/assets/javascripts/highstock/indicators/indicators.src.js +500 -0
  428. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.js +16 -0
  429. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.js.map +1 -0
  430. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.src.js +442 -0
  431. data/vendor/assets/javascripts/highstock/indicators/macd.js +18 -0
  432. data/vendor/assets/javascripts/highstock/indicators/macd.js.map +1 -0
  433. data/vendor/assets/javascripts/highstock/indicators/macd.src.js +444 -0
  434. data/vendor/assets/javascripts/highstock/indicators/mfi.js +13 -0
  435. data/vendor/assets/javascripts/highstock/indicators/mfi.js.map +1 -0
  436. data/vendor/assets/javascripts/highstock/indicators/mfi.src.js +225 -0
  437. data/vendor/assets/javascripts/highstock/indicators/momentum.js +12 -0
  438. data/vendor/assets/javascripts/highstock/indicators/momentum.js.map +1 -0
  439. data/vendor/assets/javascripts/highstock/indicators/momentum.src.js +146 -0
  440. data/vendor/assets/javascripts/highstock/indicators/natr.js +12 -0
  441. data/vendor/assets/javascripts/highstock/indicators/natr.js.map +1 -0
  442. data/vendor/assets/javascripts/highstock/indicators/natr.src.js +101 -0
  443. data/vendor/assets/javascripts/highstock/indicators/pivot-points.js +16 -0
  444. data/vendor/assets/javascripts/highstock/indicators/pivot-points.js.map +1 -0
  445. data/vendor/assets/javascripts/highstock/indicators/pivot-points.src.js +387 -0
  446. data/vendor/assets/javascripts/highstock/indicators/ppo.js +13 -0
  447. data/vendor/assets/javascripts/highstock/indicators/ppo.js.map +1 -0
  448. data/vendor/assets/javascripts/highstock/indicators/ppo.src.js +227 -0
  449. data/vendor/assets/javascripts/highstock/indicators/price-channel.js +16 -0
  450. data/vendor/assets/javascripts/highstock/indicators/price-channel.js.map +1 -0
  451. data/vendor/assets/javascripts/highstock/indicators/price-channel.src.js +450 -0
  452. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.js +15 -0
  453. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.js.map +1 -0
  454. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.src.js +278 -0
  455. data/vendor/assets/javascripts/highstock/indicators/psar.js +13 -0
  456. data/vendor/assets/javascripts/highstock/indicators/psar.js.map +1 -0
  457. data/vendor/assets/javascripts/highstock/indicators/psar.src.js +334 -0
  458. data/vendor/assets/javascripts/highstock/indicators/regressions.js +14 -0
  459. data/vendor/assets/javascripts/highstock/indicators/regressions.js.map +1 -0
  460. data/vendor/assets/javascripts/highstock/indicators/regressions.src.js +454 -0
  461. data/vendor/assets/javascripts/highstock/indicators/roc.js +12 -0
  462. data/vendor/assets/javascripts/highstock/indicators/roc.js.map +1 -0
  463. data/vendor/assets/javascripts/highstock/indicators/roc.src.js +176 -0
  464. data/vendor/assets/javascripts/highstock/indicators/rsi.js +12 -0
  465. data/vendor/assets/javascripts/highstock/indicators/rsi.js.map +1 -0
  466. data/vendor/assets/javascripts/highstock/indicators/rsi.src.js +190 -0
  467. data/vendor/assets/javascripts/highstock/indicators/stochastic.js +17 -0
  468. data/vendor/assets/javascripts/highstock/indicators/stochastic.js.map +1 -0
  469. data/vendor/assets/javascripts/highstock/indicators/stochastic.src.js +494 -0
  470. data/vendor/assets/javascripts/highstock/indicators/supertrend.js +17 -0
  471. data/vendor/assets/javascripts/highstock/indicators/supertrend.js.map +1 -0
  472. data/vendor/assets/javascripts/highstock/indicators/supertrend.src.js +571 -0
  473. data/vendor/assets/javascripts/highstock/indicators/tema.js +14 -0
  474. data/vendor/assets/javascripts/highstock/indicators/tema.js.map +1 -0
  475. data/vendor/assets/javascripts/highstock/indicators/tema.src.js +322 -0
  476. data/vendor/assets/javascripts/highstock/indicators/trix.js +12 -0
  477. data/vendor/assets/javascripts/highstock/indicators/trix.js.map +1 -0
  478. data/vendor/assets/javascripts/highstock/indicators/trix.src.js +171 -0
  479. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.js +21 -0
  480. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.js.map +1 -0
  481. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.src.js +698 -0
  482. data/vendor/assets/javascripts/highstock/indicators/vwap.js +12 -0
  483. data/vendor/assets/javascripts/highstock/indicators/vwap.js.map +1 -0
  484. data/vendor/assets/javascripts/highstock/indicators/vwap.src.js +216 -0
  485. data/vendor/assets/javascripts/highstock/indicators/williams-r.js +13 -0
  486. data/vendor/assets/javascripts/highstock/indicators/williams-r.js.map +1 -0
  487. data/vendor/assets/javascripts/highstock/indicators/williams-r.src.js +207 -0
  488. data/vendor/assets/javascripts/highstock/indicators/wma.js +12 -0
  489. data/vendor/assets/javascripts/highstock/indicators/wma.js.map +1 -0
  490. data/vendor/assets/javascripts/highstock/indicators/wma.src.js +173 -0
  491. data/vendor/assets/javascripts/highstock/indicators/zigzag.js +13 -0
  492. data/vendor/assets/javascripts/highstock/indicators/zigzag.js.map +1 -0
  493. data/vendor/assets/javascripts/highstock/indicators/zigzag.src.js +248 -0
  494. data/vendor/assets/javascripts/highstock/lib/canvg.js +130 -0
  495. data/vendor/assets/javascripts/highstock/lib/canvg.src.js +3073 -0
  496. data/vendor/assets/javascripts/highstock/lib/jspdf.js +283 -0
  497. data/vendor/assets/javascripts/highstock/lib/jspdf.src.js +21627 -0
  498. data/vendor/assets/javascripts/highstock/lib/rgbcolor.js +17 -0
  499. data/vendor/assets/javascripts/highstock/lib/rgbcolor.src.js +299 -0
  500. data/vendor/assets/javascripts/highstock/lib/svg2pdf.js +38 -0
  501. data/vendor/assets/javascripts/highstock/lib/svg2pdf.src.js +4390 -0
  502. data/vendor/assets/javascripts/highstock/modules/accessibility.js +73 -0
  503. data/vendor/assets/javascripts/highstock/modules/accessibility.js.map +1 -0
  504. data/vendor/assets/javascripts/highstock/modules/accessibility.src.js +3103 -0
  505. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.js +132 -0
  506. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.js.map +1 -0
  507. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.src.js +8230 -0
  508. data/vendor/assets/javascripts/highstock/modules/annotations.js +94 -0
  509. data/vendor/assets/javascripts/highstock/modules/annotations.js.map +1 -0
  510. data/vendor/assets/javascripts/highstock/modules/annotations.src.js +6001 -0
  511. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.js +11 -0
  512. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.js.map +1 -0
  513. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.src.js +225 -0
  514. data/vendor/assets/javascripts/highstock/modules/boost-canvas.js +23 -0
  515. data/vendor/assets/javascripts/highstock/modules/boost-canvas.js.map +1 -0
  516. data/vendor/assets/javascripts/highstock/modules/boost-canvas.src.js +756 -0
  517. data/vendor/assets/javascripts/highstock/modules/boost.js +65 -0
  518. data/vendor/assets/javascripts/highstock/modules/boost.js.map +1 -0
  519. data/vendor/assets/javascripts/highstock/modules/boost.src.js +3752 -0
  520. data/vendor/assets/javascripts/highstock/modules/bullet.js +14 -0
  521. data/vendor/assets/javascripts/highstock/modules/bullet.js.map +1 -0
  522. data/vendor/assets/javascripts/highstock/modules/bullet.src.js +388 -0
  523. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.js +11 -0
  524. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.js.map +1 -0
  525. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.src.js +127 -0
  526. data/vendor/assets/javascripts/highstock/modules/cylinder.js +14 -0
  527. data/vendor/assets/javascripts/highstock/modules/cylinder.js.map +1 -0
  528. data/vendor/assets/javascripts/highstock/modules/cylinder.src.js +413 -0
  529. data/vendor/assets/javascripts/highstock/modules/data.js +37 -0
  530. data/vendor/assets/javascripts/highstock/modules/data.js.map +1 -0
  531. data/vendor/assets/javascripts/highstock/modules/data.src.js +2565 -0
  532. data/vendor/assets/javascripts/highstock/modules/datagrouping.js +25 -0
  533. data/vendor/assets/javascripts/highstock/modules/datagrouping.js.map +1 -0
  534. data/vendor/assets/javascripts/highstock/modules/datagrouping.src.js +1140 -0
  535. data/vendor/assets/javascripts/highstock/modules/debugger.js +28 -0
  536. data/vendor/assets/javascripts/highstock/modules/debugger.js.map +1 -0
  537. data/vendor/assets/javascripts/highstock/modules/debugger.src.js +267 -0
  538. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.js +15 -0
  539. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.js.map +1 -0
  540. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.src.js +301 -0
  541. data/vendor/assets/javascripts/highstock/modules/drag-panes.js +18 -0
  542. data/vendor/assets/javascripts/highstock/modules/drag-panes.js.map +1 -0
  543. data/vendor/assets/javascripts/highstock/modules/drag-panes.src.js +649 -0
  544. data/vendor/assets/javascripts/highstock/modules/draggable-points.js +40 -0
  545. data/vendor/assets/javascripts/highstock/modules/draggable-points.js.map +1 -0
  546. data/vendor/assets/javascripts/highstock/modules/draggable-points.src.js +2650 -0
  547. data/vendor/assets/javascripts/highstock/modules/drilldown.js +29 -0
  548. data/vendor/assets/javascripts/highstock/modules/drilldown.js.map +1 -0
  549. data/vendor/assets/javascripts/highstock/modules/drilldown.src.js +1321 -0
  550. data/vendor/assets/javascripts/highstock/modules/export-data.js +27 -0
  551. data/vendor/assets/javascripts/highstock/modules/export-data.js.map +1 -0
  552. data/vendor/assets/javascripts/highstock/modules/export-data.src.js +1234 -0
  553. data/vendor/assets/javascripts/highstock/modules/exporting.js +35 -0
  554. data/vendor/assets/javascripts/highstock/modules/exporting.js.map +1 -0
  555. data/vendor/assets/javascripts/highstock/modules/exporting.src.js +2233 -0
  556. data/vendor/assets/javascripts/highstock/modules/full-screen.js +11 -0
  557. data/vendor/assets/javascripts/highstock/modules/full-screen.js.map +1 -0
  558. data/vendor/assets/javascripts/highstock/modules/full-screen.src.js +68 -0
  559. data/vendor/assets/javascripts/highstock/modules/funnel.js +14 -0
  560. data/vendor/assets/javascripts/highstock/modules/funnel.js.map +1 -0
  561. data/vendor/assets/javascripts/highstock/modules/funnel.src.js +576 -0
  562. data/vendor/assets/javascripts/highstock/modules/grid-axis.js +23 -0
  563. data/vendor/assets/javascripts/highstock/modules/grid-axis.js.map +1 -0
  564. data/vendor/assets/javascripts/highstock/modules/grid-axis.src.js +988 -0
  565. data/vendor/assets/javascripts/highstock/modules/heatmap.js +28 -0
  566. data/vendor/assets/javascripts/highstock/modules/heatmap.js.map +1 -0
  567. data/vendor/assets/javascripts/highstock/modules/heatmap.src.js +1731 -0
  568. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.js +16 -0
  569. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.js.map +1 -0
  570. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.src.js +570 -0
  571. data/vendor/assets/javascripts/highstock/modules/item-series.js +13 -0
  572. data/vendor/assets/javascripts/highstock/modules/item-series.js.map +1 -0
  573. data/vendor/assets/javascripts/highstock/modules/item-series.src.js +176 -0
  574. data/vendor/assets/javascripts/highstock/modules/networkgraph.js +31 -0
  575. data/vendor/assets/javascripts/highstock/modules/networkgraph.js.map +1 -0
  576. data/vendor/assets/javascripts/highstock/modules/networkgraph.src.js +1348 -0
  577. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.js +13 -0
  578. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.js.map +1 -0
  579. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.src.js +285 -0
  580. data/vendor/assets/javascripts/highstock/modules/offline-exporting.js +22 -0
  581. data/vendor/assets/javascripts/highstock/modules/offline-exporting.js.map +1 -0
  582. data/vendor/assets/javascripts/highstock/modules/offline-exporting.src.js +838 -0
  583. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.js +13 -0
  584. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.js.map +1 -0
  585. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.src.js +150 -0
  586. data/vendor/assets/javascripts/highstock/modules/oldie.js +35 -0
  587. data/vendor/assets/javascripts/highstock/modules/oldie.js.map +1 -0
  588. data/vendor/assets/javascripts/highstock/modules/oldie.src.js +1582 -0
  589. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.js +9 -0
  590. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.js.map +1 -0
  591. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.src.js +22 -0
  592. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.js +18 -0
  593. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.js.map +1 -0
  594. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.src.js +517 -0
  595. data/vendor/assets/javascripts/highstock/modules/pareto.js +14 -0
  596. data/vendor/assets/javascripts/highstock/modules/pareto.js.map +1 -0
  597. data/vendor/assets/javascripts/highstock/modules/pareto.src.js +327 -0
  598. data/vendor/assets/javascripts/highstock/modules/pathfinder.js +34 -0
  599. data/vendor/assets/javascripts/highstock/modules/pathfinder.js.map +1 -0
  600. data/vendor/assets/javascripts/highstock/modules/pathfinder.src.js +2336 -0
  601. data/vendor/assets/javascripts/highstock/modules/pattern-fill.js +21 -0
  602. data/vendor/assets/javascripts/highstock/modules/pattern-fill.js.map +1 -0
  603. data/vendor/assets/javascripts/highstock/modules/pattern-fill.src.js +634 -0
  604. data/vendor/assets/javascripts/highstock/modules/price-indicator.js +13 -0
  605. data/vendor/assets/javascripts/highstock/modules/price-indicator.js.map +1 -0
  606. data/vendor/assets/javascripts/highstock/modules/price-indicator.src.js +176 -0
  607. data/vendor/assets/javascripts/highstock/modules/sankey.js +22 -0
  608. data/vendor/assets/javascripts/highstock/modules/sankey.js.map +1 -0
  609. data/vendor/assets/javascripts/highstock/modules/sankey.src.js +911 -0
  610. data/vendor/assets/javascripts/highstock/modules/series-label.js +23 -0
  611. data/vendor/assets/javascripts/highstock/modules/series-label.js.map +1 -0
  612. data/vendor/assets/javascripts/highstock/modules/series-label.src.js +1065 -0
  613. data/vendor/assets/javascripts/highstock/modules/solid-gauge.js +15 -0
  614. data/vendor/assets/javascripts/highstock/modules/solid-gauge.js.map +1 -0
  615. data/vendor/assets/javascripts/highstock/modules/solid-gauge.src.js +510 -0
  616. data/vendor/assets/javascripts/highstock/modules/sonification.js +53 -0
  617. data/vendor/assets/javascripts/highstock/modules/sonification.js.map +1 -0
  618. data/vendor/assets/javascripts/highstock/modules/sonification.src.js +3341 -0
  619. data/vendor/assets/javascripts/highstock/modules/static-scale.js +12 -0
  620. data/vendor/assets/javascripts/highstock/modules/static-scale.js.map +1 -0
  621. data/vendor/assets/javascripts/highstock/modules/static-scale.src.js +114 -0
  622. data/vendor/assets/javascripts/highstock/modules/stock-tools.js +65 -0
  623. data/vendor/assets/javascripts/highstock/modules/stock-tools.js.map +1 -0
  624. data/vendor/assets/javascripts/highstock/modules/stock-tools.src.js +3437 -0
  625. data/vendor/assets/javascripts/highstock/modules/stock.js +151 -0
  626. data/vendor/assets/javascripts/highstock/modules/stock.js.map +1 -0
  627. data/vendor/assets/javascripts/highstock/modules/stock.src.js +10907 -0
  628. data/vendor/assets/javascripts/highstock/modules/streamgraph.js +10 -0
  629. data/vendor/assets/javascripts/highstock/modules/streamgraph.js.map +1 -0
  630. data/vendor/assets/javascripts/highstock/modules/streamgraph.src.js +158 -0
  631. data/vendor/assets/javascripts/highstock/modules/sunburst.js +52 -0
  632. data/vendor/assets/javascripts/highstock/modules/sunburst.js.map +1 -0
  633. data/vendor/assets/javascripts/highstock/modules/sunburst.src.js +3174 -0
  634. data/vendor/assets/javascripts/highstock/modules/tilemap.js +26 -0
  635. data/vendor/assets/javascripts/highstock/modules/tilemap.js.map +1 -0
  636. data/vendor/assets/javascripts/highstock/modules/tilemap.src.js +1402 -0
  637. data/vendor/assets/javascripts/highstock/modules/timeline.js +23 -0
  638. data/vendor/assets/javascripts/highstock/modules/timeline.js.map +1 -0
  639. data/vendor/assets/javascripts/highstock/modules/timeline.src.js +778 -0
  640. data/vendor/assets/javascripts/highstock/modules/treegrid.js +50 -0
  641. data/vendor/assets/javascripts/highstock/modules/treegrid.js.map +1 -0
  642. data/vendor/assets/javascripts/highstock/modules/treegrid.src.js +2917 -0
  643. data/vendor/assets/javascripts/highstock/modules/treemap.js +39 -0
  644. data/vendor/assets/javascripts/highstock/modules/treemap.js.map +1 -0
  645. data/vendor/assets/javascripts/highstock/modules/treemap.src.js +2083 -0
  646. data/vendor/assets/javascripts/highstock/modules/variable-pie.js +16 -0
  647. data/vendor/assets/javascripts/highstock/modules/variable-pie.js.map +1 -0
  648. data/vendor/assets/javascripts/highstock/modules/variable-pie.src.js +485 -0
  649. data/vendor/assets/javascripts/highstock/modules/variwide.js +15 -0
  650. data/vendor/assets/javascripts/highstock/modules/variwide.js.map +1 -0
  651. data/vendor/assets/javascripts/highstock/modules/variwide.src.js +376 -0
  652. data/vendor/assets/javascripts/highstock/modules/vector.js +13 -0
  653. data/vendor/assets/javascripts/highstock/modules/vector.js.map +1 -0
  654. data/vendor/assets/javascripts/highstock/modules/vector.src.js +381 -0
  655. data/vendor/assets/javascripts/highstock/modules/venn.js +30 -0
  656. data/vendor/assets/javascripts/highstock/modules/venn.js.map +1 -0
  657. data/vendor/assets/javascripts/highstock/modules/venn.src.js +1624 -0
  658. data/vendor/assets/javascripts/highstock/modules/windbarb.js +17 -0
  659. data/vendor/assets/javascripts/highstock/modules/windbarb.js.map +1 -0
  660. data/vendor/assets/javascripts/highstock/modules/windbarb.src.js +574 -0
  661. data/vendor/assets/javascripts/highstock/modules/wordcloud.js +25 -0
  662. data/vendor/assets/javascripts/highstock/modules/wordcloud.js.map +1 -0
  663. data/vendor/assets/javascripts/highstock/modules/wordcloud.src.js +1475 -0
  664. data/vendor/assets/javascripts/highstock/modules/xrange.js +20 -0
  665. data/vendor/assets/javascripts/highstock/modules/xrange.js.map +1 -0
  666. data/vendor/assets/javascripts/highstock/modules/xrange.src.js +788 -0
  667. data/vendor/assets/javascripts/highstock/themes/avocado.js +9 -0
  668. data/vendor/assets/javascripts/highstock/themes/avocado.js.map +1 -0
  669. data/vendor/assets/javascripts/highstock/themes/avocado.src.js +63 -0
  670. data/vendor/assets/javascripts/highstock/themes/dark-blue.js +15 -0
  671. data/vendor/assets/javascripts/highstock/themes/dark-blue.js.map +1 -0
  672. data/vendor/assets/javascripts/highstock/themes/dark-blue.src.js +285 -0
  673. data/vendor/assets/javascripts/highstock/themes/dark-green.js +15 -0
  674. data/vendor/assets/javascripts/highstock/themes/dark-green.js.map +1 -0
  675. data/vendor/assets/javascripts/highstock/themes/dark-green.src.js +287 -0
  676. data/vendor/assets/javascripts/highstock/themes/dark-unica.js +14 -0
  677. data/vendor/assets/javascripts/highstock/themes/dark-unica.js.map +1 -0
  678. data/vendor/assets/javascripts/highstock/themes/dark-unica.src.js +246 -0
  679. data/vendor/assets/javascripts/highstock/themes/gray.js +15 -0
  680. data/vendor/assets/javascripts/highstock/themes/gray.js.map +1 -0
  681. data/vendor/assets/javascripts/highstock/themes/gray.src.js +293 -0
  682. data/vendor/assets/javascripts/highstock/themes/grid-light.js +11 -0
  683. data/vendor/assets/javascripts/highstock/themes/grid-light.js.map +1 -0
  684. data/vendor/assets/javascripts/highstock/themes/grid-light.src.js +107 -0
  685. data/vendor/assets/javascripts/highstock/themes/grid.js +11 -0
  686. data/vendor/assets/javascripts/highstock/themes/grid.js.map +1 -0
  687. data/vendor/assets/javascripts/highstock/themes/grid.src.js +136 -0
  688. data/vendor/assets/javascripts/highstock/themes/sand-signika.js +11 -0
  689. data/vendor/assets/javascripts/highstock/themes/sand-signika.js.map +1 -0
  690. data/vendor/assets/javascripts/highstock/themes/sand-signika.src.js +137 -0
  691. data/vendor/assets/javascripts/highstock/themes/skies.js +11 -0
  692. data/vendor/assets/javascripts/highstock/themes/skies.js.map +1 -0
  693. data/vendor/assets/javascripts/highstock/themes/skies.src.js +126 -0
  694. data/vendor/assets/javascripts/highstock/themes/sunset.js +9 -0
  695. data/vendor/assets/javascripts/highstock/themes/sunset.js.map +1 -0
  696. data/vendor/assets/javascripts/highstock/themes/sunset.src.js +62 -0
  697. metadata +781 -0
@@ -0,0 +1,247 @@
1
+ /* *
2
+ *
3
+ * License: www.highcharts.com/license
4
+ *
5
+ * */
6
+
7
+ 'use strict';
8
+
9
+ import H from '../parts/Globals.js';
10
+ import '../parts/Utilities.js';
11
+ import requiredIndicatorMixin from '../mixins/indicator-required.js';
12
+
13
+ var isArray = H.isArray,
14
+ EMAindicator = H.seriesTypes.ema,
15
+ requiredIndicator = requiredIndicatorMixin,
16
+ correctFloat = H.correctFloat;
17
+
18
+ /**
19
+ * The TEMA series type.
20
+ *
21
+ * @private
22
+ * @class
23
+ * @name Highcharts.seriesTypes.tema
24
+ *
25
+ * @augments Highcharts.Series
26
+ */
27
+ H.seriesType(
28
+ 'tema',
29
+ 'ema',
30
+ /**
31
+ * Normalized average true range indicator (NATR). This series requires
32
+ * `linkedTo` option to be set and should be loaded after the
33
+ * `stock/indicators/indicators.js` and `stock/indicators/ema.js`.
34
+ *
35
+ * Requires `https://code.highcharts.com/stock/indicators/ema.js`.
36
+ *
37
+ * @sample {highstock} stock/indicators/tema
38
+ * TEMA indicator
39
+ *
40
+ * @extends plotOptions.ema
41
+ * @since 7.0.0
42
+ * @product highstock
43
+ * @excluding allAreas, colorAxis, compare, compareBase, joinBy, keys,
44
+ * navigatorOptions, pointInterval, pointIntervalUnit,
45
+ * pointPlacement, pointRange, pointStart, showInNavigator,
46
+ * stacking
47
+ * @optionparent plotOptions.tema
48
+ */
49
+ {},
50
+ /**
51
+ * @lends Highcharts.Series#
52
+ */
53
+ {
54
+ init: function () {
55
+ var args = arguments,
56
+ ctx = this;
57
+
58
+ requiredIndicator.isParentLoaded(
59
+ EMAindicator,
60
+ 'ema',
61
+ ctx.type,
62
+ function (indicator) {
63
+ indicator.prototype.init.apply(ctx, args);
64
+ }
65
+ );
66
+ },
67
+ getEMA: function (
68
+ yVal,
69
+ prevEMA,
70
+ SMA,
71
+ index,
72
+ i,
73
+ xVal
74
+ ) {
75
+ return EMAindicator.prototype.calculateEma(
76
+ xVal || [],
77
+ yVal,
78
+ i === undefined ? 1 : i,
79
+ this.chart.series[0].EMApercent,
80
+ prevEMA,
81
+ index === undefined ? -1 : index,
82
+ SMA
83
+ );
84
+ },
85
+ getPoint: function (
86
+ xVal,
87
+ tripledPeriod,
88
+ EMAlevels,
89
+ i
90
+ ) {
91
+ var TEMAPoint = [
92
+ xVal[i - 3],
93
+ correctFloat(
94
+ 3 * EMAlevels.level1 -
95
+ 3 * EMAlevels.level2 + EMAlevels.level3
96
+ )
97
+ ];
98
+
99
+ return TEMAPoint;
100
+ },
101
+ getValues: function (series, params) {
102
+ var period = params.period,
103
+ doubledPeriod = 2 * period,
104
+ tripledPeriod = 3 * period,
105
+ xVal = series.xData,
106
+ yVal = series.yData,
107
+ yValLen = yVal ? yVal.length : 0,
108
+ index = -1,
109
+ accumulatePeriodPoints = 0,
110
+ SMA = 0,
111
+ TEMA = [],
112
+ xDataTema = [],
113
+ yDataTema = [],
114
+ // EMA of previous point
115
+ prevEMA,
116
+ prevEMAlevel2,
117
+ // EMA values array
118
+ EMAvalues = [],
119
+ EMAlevel2values = [],
120
+ i,
121
+ TEMAPoint,
122
+ // This object contains all EMA EMAlevels calculated like below
123
+ // EMA = level1
124
+ // EMA(EMA) = level2,
125
+ // EMA(EMA(EMA)) = level3,
126
+ EMAlevels = {};
127
+
128
+ series.EMApercent = (2 / (period + 1));
129
+
130
+ // Check period, if bigger than EMA points length, skip
131
+ if (yValLen < 3 * period - 2) {
132
+ return false;
133
+ }
134
+
135
+ // Switch index for OHLC / Candlestick / Arearange
136
+ if (isArray(yVal[0])) {
137
+ index = params.index ? params.index : 0;
138
+ }
139
+
140
+ // Accumulate first N-points
141
+ accumulatePeriodPoints =
142
+ EMAindicator.prototype.accumulatePeriodPoints(
143
+ period,
144
+ index,
145
+ yVal
146
+ );
147
+
148
+ // first point
149
+ SMA = accumulatePeriodPoints / period;
150
+ accumulatePeriodPoints = 0;
151
+
152
+ // Calculate value one-by-one for each period in visible data
153
+ for (i = period; i < yValLen + 3; i++) {
154
+ if (i < yValLen + 1) {
155
+ EMAlevels.level1 = this.getEMA(
156
+ yVal,
157
+ prevEMA,
158
+ SMA,
159
+ index,
160
+ i
161
+ )[1];
162
+ EMAvalues.push(EMAlevels.level1);
163
+ }
164
+ prevEMA = EMAlevels.level1;
165
+
166
+ // Summing first period points for ema(ema)
167
+ if (i < doubledPeriod) {
168
+ accumulatePeriodPoints += EMAlevels.level1;
169
+ } else {
170
+ // Calculate dema
171
+ // First dema point
172
+ if (i === doubledPeriod) {
173
+ SMA = accumulatePeriodPoints / period;
174
+ accumulatePeriodPoints = 0;
175
+ }
176
+ EMAlevels.level1 = EMAvalues[i - period - 1];
177
+ EMAlevels.level2 = this.getEMA(
178
+ [EMAlevels.level1],
179
+ prevEMAlevel2,
180
+ SMA
181
+ )[1];
182
+ EMAlevel2values.push(EMAlevels.level2);
183
+ prevEMAlevel2 = EMAlevels.level2;
184
+ // Summing first period points for ema(ema(ema))
185
+ if (i < tripledPeriod) {
186
+ accumulatePeriodPoints += EMAlevels.level2;
187
+ } else {
188
+ // Calculate tema
189
+ // First tema point
190
+ if (i === tripledPeriod) {
191
+ SMA = accumulatePeriodPoints / period;
192
+ }
193
+ if (i === yValLen + 1) {
194
+ // Calculate the last ema and emaEMA points
195
+ EMAlevels.level1 = EMAvalues[i - period - 1];
196
+ EMAlevels.level2 = this.getEMA(
197
+ [EMAlevels.level1],
198
+ prevEMAlevel2,
199
+ SMA
200
+ )[1];
201
+ EMAlevel2values.push(EMAlevels.level2);
202
+ }
203
+ EMAlevels.level1 = EMAvalues[i - period - 2];
204
+ EMAlevels.level2 = EMAlevel2values[i - 2 * period - 1];
205
+ EMAlevels.level3 = this.getEMA(
206
+ [EMAlevels.level2],
207
+ EMAlevels.prevLevel3,
208
+ SMA
209
+ )[1];
210
+ TEMAPoint = this.getPoint(
211
+ xVal,
212
+ tripledPeriod,
213
+ EMAlevels,
214
+ i
215
+ );
216
+ // Make sure that point exists (for TRIX oscillator)
217
+ if (TEMAPoint) {
218
+ TEMA.push(TEMAPoint);
219
+ xDataTema.push(TEMAPoint[0]);
220
+ yDataTema.push(TEMAPoint[1]);
221
+ }
222
+ EMAlevels.prevLevel3 = EMAlevels.level3;
223
+ }
224
+ }
225
+ }
226
+
227
+ return {
228
+ values: TEMA,
229
+ xData: xDataTema,
230
+ yData: yDataTema
231
+ };
232
+ }
233
+ }
234
+ );
235
+
236
+ /**
237
+ * A `TEMA` series. If the [type](#series.ema.type) option is not
238
+ * specified, it is inherited from [chart.type](#chart.type).
239
+ *
240
+ * @extends series,plotOptions.ema
241
+ * @since 7.0.0
242
+ * @product highstock
243
+ * @excluding allAreas, colorAxis, compare, compareBase, dataParser, dataURL,
244
+ * joinBy, keys, navigatorOptions, pointInterval, pointIntervalUnit,
245
+ * pointPlacement, pointRange, pointStart, showInNavigator, stacking
246
+ * @apioption series.tema
247
+ */
@@ -0,0 +1,96 @@
1
+ /* *
2
+ *
3
+ * License: www.highcharts.com/license
4
+ *
5
+ * */
6
+
7
+ 'use strict';
8
+
9
+ import H from '../parts/Globals.js';
10
+ import '../parts/Utilities.js';
11
+ import requiredIndicator from '../mixins/indicator-required.js';
12
+
13
+ var correctFloat = H.correctFloat,
14
+ TEMA = H.seriesTypes.tema;
15
+
16
+ /**
17
+ * The TRIX series type.
18
+ *
19
+ * @private
20
+ * @class
21
+ * @name Highcharts.seriesTypes.trix
22
+ *
23
+ * @augments Highcharts.Series
24
+ */
25
+ H.seriesType(
26
+ 'trix',
27
+ 'tema',
28
+ /**
29
+ * Normalized average true range indicator (NATR). This series requires
30
+ * `linkedTo` option to be set.
31
+ *
32
+ * Requires https://code.highcharts.com/stock/indicators/ema.js
33
+ * and https://code.highcharts.com/stock/indicators/tema.js.
34
+ *
35
+ * @sample {highstock} stock/indicators/trix
36
+ * TRIX indicator
37
+ *
38
+ * @extends plotOptions.tema
39
+ * @since 7.0.0
40
+ * @product highstock
41
+ * @excluding allAreas, colorAxis, compare, compareBase, joinBy, keys,
42
+ * navigatorOptions, pointInterval, pointIntervalUnit,
43
+ * pointPlacement, pointRange, pointStart, showInNavigator,
44
+ * stacking
45
+ * @optionparent plotOptions.trix
46
+ */
47
+ {},
48
+ /**
49
+ * @lends Highcharts.Series#
50
+ */
51
+ {
52
+ init: function () {
53
+ var args = arguments,
54
+ ctx = this;
55
+
56
+ requiredIndicator.isParentLoaded(
57
+ TEMA,
58
+ 'tema',
59
+ ctx.type,
60
+ function (indicator) {
61
+ indicator.prototype.init.apply(ctx, args);
62
+ }
63
+ );
64
+ },
65
+ getPoint: function (
66
+ xVal,
67
+ tripledPeriod,
68
+ EMAlevels,
69
+ i
70
+ ) {
71
+ if (i > tripledPeriod) {
72
+ var TRIXPoint = [
73
+ xVal[i - 3],
74
+ EMAlevels.prevLevel3 !== 0 ?
75
+ correctFloat(EMAlevels.level3 - EMAlevels.prevLevel3) /
76
+ EMAlevels.prevLevel3 * 100 : null
77
+ ];
78
+ }
79
+
80
+ return TRIXPoint;
81
+ }
82
+ }
83
+ );
84
+
85
+ /**
86
+ * A `TRIX` series. If the [type](#series.tema.type) option is not specified, it
87
+ * is inherited from [chart.type](#chart.type).
88
+ *
89
+ * @extends series,plotOptions.tema
90
+ * @since 7.0.0
91
+ * @product highstock
92
+ * @excluding allAreas, colorAxis, compare, compareBase, dataParser, dataURL,
93
+ * joinBy, keys, navigatorOptions, pointInterval, pointIntervalUnit,
94
+ * pointPlacement, pointRange, pointStart, showInNavigator, stacking
95
+ * @apioption series.trix
96
+ */
@@ -0,0 +1,671 @@
1
+ /* *
2
+ *
3
+ * (c) 2010-2019 Paweł Dalek
4
+ *
5
+ * Volume By Price (VBP) indicator for Highstock
6
+ *
7
+ * License: www.highcharts.com/license
8
+ *
9
+ * */
10
+
11
+ 'use strict';
12
+
13
+ import H from '../parts/Globals.js';
14
+ import '../parts/Utilities.js';
15
+
16
+ // Utils
17
+ function arrayExtremesOHLC(data) {
18
+ var dataLength = data.length,
19
+ min = data[0][3],
20
+ max = min,
21
+ i = 1,
22
+ currentPoint;
23
+
24
+ for (; i < dataLength; i++) {
25
+ currentPoint = data[i][3];
26
+ if (currentPoint < min) {
27
+ min = currentPoint;
28
+ }
29
+
30
+ if (currentPoint > max) {
31
+ max = currentPoint;
32
+ }
33
+ }
34
+
35
+ return {
36
+ min: min,
37
+ max: max
38
+ };
39
+ }
40
+
41
+ var abs = Math.abs,
42
+ noop = H.noop,
43
+ addEvent = H.addEvent,
44
+ correctFloat = H.correctFloat,
45
+ seriesType = H.seriesType,
46
+ columnPrototype = H.seriesTypes.column.prototype;
47
+
48
+ /**
49
+ * The Volume By Price (VBP) series type.
50
+ *
51
+ * @private
52
+ * @class
53
+ * @name Highcharts.seriesTypes.vbp
54
+ *
55
+ * @augments Highcharts.Series
56
+ */
57
+ seriesType(
58
+ 'vbp',
59
+ 'sma',
60
+ /**
61
+ * Volume By Price indicator.
62
+ *
63
+ * This series requires `linkedTo` option to be set.
64
+ *
65
+ * @sample stock/indicators/volume-by-price
66
+ * Volume By Price indicator
67
+ *
68
+ * @extends plotOptions.sma
69
+ * @since 6.0.0
70
+ * @product highstock
71
+ * @optionparent plotOptions.vbp
72
+ */
73
+ {
74
+ /**
75
+ * @excluding index, period
76
+ */
77
+ params: {
78
+ /**
79
+ * The number of price zones.
80
+ */
81
+ ranges: 12,
82
+ /**
83
+ * The id of volume series which is mandatory. For example using
84
+ * OHLC data, volumeSeriesID='volume' means the indicator will be
85
+ * calculated using OHLC and volume values.
86
+ */
87
+ volumeSeriesID: 'volume'
88
+ },
89
+ /**
90
+ * The styles for lines which determine price zones.
91
+ */
92
+ zoneLines: {
93
+ /**
94
+ * Enable/disable zone lines.
95
+ */
96
+ enabled: true,
97
+ /**
98
+ * Specify the style of zone lines.
99
+ *
100
+ * @type {Highcharts.CSSObject}
101
+ * @default {"color": "#0A9AC9", "dashStyle": "LongDash", "lineWidth": 1}
102
+ */
103
+ styles: {
104
+ /** @ignore-options */
105
+ color: '#0A9AC9',
106
+ /** @ignore-options */
107
+ dashStyle: 'LongDash',
108
+ /** @ignore-options */
109
+ lineWidth: 1
110
+ }
111
+ },
112
+ /**
113
+ * The styles for bars when volume is divided into positive/negative.
114
+ */
115
+ volumeDivision: {
116
+ /**
117
+ * Option to control if volume is divided.
118
+ */
119
+ enabled: true,
120
+ styles: {
121
+ /**
122
+ * Color of positive volume bars.
123
+ *
124
+ * @type {Highcharts.ColorString}
125
+ */
126
+ positiveColor: 'rgba(144, 237, 125, 0.8)',
127
+ /**
128
+ * Color of negative volume bars.
129
+ *
130
+ * @type {Highcharts.ColorString}
131
+ */
132
+ negativeColor: 'rgba(244, 91, 91, 0.8)'
133
+ }
134
+ },
135
+ // To enable series animation; must be animationLimit > pointCount
136
+ animationLimit: 1000,
137
+ enableMouseTracking: false,
138
+ pointPadding: 0,
139
+ zIndex: -1,
140
+ crisp: true,
141
+ dataGrouping: {
142
+ enabled: false
143
+ },
144
+ dataLabels: {
145
+ enabled: true,
146
+ allowOverlap: true,
147
+ verticalAlign: 'top',
148
+ format: 'P: {point.volumePos:.2f} | N: {point.volumeNeg:.2f}',
149
+ padding: 0,
150
+ style: {
151
+ fontSize: '7px'
152
+ }
153
+ }
154
+ },
155
+ /**
156
+ * @lends Highcharts.Series#
157
+ */
158
+ {
159
+ nameBase: 'Volume by Price',
160
+ bindTo: {
161
+ series: false,
162
+ eventName: 'afterSetExtremes'
163
+ },
164
+ calculateOn: 'render',
165
+ markerAttribs: noop,
166
+ drawGraph: noop,
167
+ getColumnMetrics: columnPrototype.getColumnMetrics,
168
+ crispCol: columnPrototype.crispCol,
169
+ init: function (chart) {
170
+ var indicator = this,
171
+ params,
172
+ baseSeries,
173
+ volumeSeries;
174
+
175
+ H.seriesTypes.sma.prototype.init.apply(indicator, arguments);
176
+
177
+ params = indicator.options.params;
178
+ baseSeries = indicator.linkedParent;
179
+ volumeSeries = chart.get(params.volumeSeriesID);
180
+
181
+ indicator.addCustomEvents(baseSeries, volumeSeries);
182
+
183
+ return indicator;
184
+ },
185
+ // Adds events related with removing series
186
+ addCustomEvents: function (baseSeries, volumeSeries) {
187
+ var indicator = this;
188
+
189
+ function toEmptyIndicator() {
190
+ indicator.chart.redraw();
191
+
192
+ indicator.setData([]);
193
+ indicator.zoneStarts = [];
194
+
195
+ if (indicator.zoneLinesSVG) {
196
+ indicator.zoneLinesSVG.destroy();
197
+ delete indicator.zoneLinesSVG;
198
+ }
199
+ }
200
+
201
+ // If base series is deleted, indicator series data is filled with
202
+ // an empty array
203
+ indicator.dataEventsToUnbind.push(
204
+ addEvent(baseSeries, 'remove', function () {
205
+ toEmptyIndicator();
206
+ })
207
+ );
208
+
209
+ // If volume series is deleted, indicator series data is filled with
210
+ // an empty array
211
+ if (volumeSeries) {
212
+ indicator.dataEventsToUnbind.push(
213
+ addEvent(volumeSeries, 'remove', function () {
214
+ toEmptyIndicator();
215
+ })
216
+ );
217
+ }
218
+
219
+ return indicator;
220
+ },
221
+ // Initial animation
222
+ animate: function (init) {
223
+ var series = this,
224
+ attr = {};
225
+
226
+ if (H.svg && !init) {
227
+ attr.translateX = series.yAxis.pos;
228
+ series.group.animate(
229
+ attr,
230
+ H.extend(H.animObject(series.options.animation), {
231
+ step: function (val, fx) {
232
+ series.group.attr({
233
+ scaleX: Math.max(0.001, fx.pos)
234
+ });
235
+ }
236
+ })
237
+ );
238
+
239
+ // Delete this function to allow it only once
240
+ series.animate = null;
241
+ }
242
+ },
243
+ drawPoints: function () {
244
+ var indicator = this;
245
+
246
+ if (indicator.options.volumeDivision.enabled) {
247
+ indicator.posNegVolume(true, true);
248
+ columnPrototype.drawPoints.apply(indicator, arguments);
249
+ indicator.posNegVolume(false, false);
250
+ }
251
+
252
+ columnPrototype.drawPoints.apply(indicator, arguments);
253
+ },
254
+ // Function responsible for dividing volume into positive and negative
255
+ posNegVolume: function (initVol, pos) {
256
+ var indicator = this,
257
+ signOrder = pos ?
258
+ ['positive', 'negative'] :
259
+ ['negative', 'positive'],
260
+ volumeDivision = indicator.options.volumeDivision,
261
+ pointLength = indicator.points.length,
262
+ posWidths = [],
263
+ negWidths = [],
264
+ i = 0,
265
+ pointWidth,
266
+ priceZone,
267
+ wholeVol,
268
+ point;
269
+
270
+ if (initVol) {
271
+ indicator.posWidths = posWidths;
272
+ indicator.negWidths = negWidths;
273
+ } else {
274
+ posWidths = indicator.posWidths;
275
+ negWidths = indicator.negWidths;
276
+ }
277
+
278
+ for (; i < pointLength; i++) {
279
+ point = indicator.points[i];
280
+ point[signOrder[0] + 'Graphic'] = point.graphic;
281
+ point.graphic = point[signOrder[1] + 'Graphic'];
282
+
283
+ if (initVol) {
284
+ pointWidth = point.shapeArgs.width;
285
+ priceZone = indicator.priceZones[i];
286
+ wholeVol = priceZone.wholeVolumeData;
287
+
288
+ if (wholeVol) {
289
+ posWidths.push(
290
+ pointWidth / wholeVol * priceZone.positiveVolumeData
291
+ );
292
+ negWidths.push(
293
+ pointWidth / wholeVol * priceZone.negativeVolumeData
294
+ );
295
+ } else {
296
+ posWidths.push(0);
297
+ negWidths.push(0);
298
+ }
299
+ }
300
+
301
+ point.color = pos ?
302
+ volumeDivision.styles.positiveColor :
303
+ volumeDivision.styles.negativeColor;
304
+ point.shapeArgs.width = pos ?
305
+ indicator.posWidths[i] :
306
+ indicator.negWidths[i];
307
+ point.shapeArgs.x = pos ?
308
+ point.shapeArgs.x :
309
+ indicator.posWidths[i];
310
+ }
311
+ },
312
+ translate: function () {
313
+ var indicator = this,
314
+ options = indicator.options,
315
+ chart = indicator.chart,
316
+ yAxis = indicator.yAxis,
317
+ yAxisMin = yAxis.min,
318
+ zoneLinesOptions = indicator.options.zoneLines,
319
+ priceZones = indicator.priceZones,
320
+ yBarOffset = 0,
321
+ indicatorPoints,
322
+ volumeDataArray,
323
+ maxVolume,
324
+ primalBarWidth,
325
+ barHeight,
326
+ barHeightP,
327
+ oldBarHeight,
328
+ barWidth,
329
+ pointPadding,
330
+ chartPlotTop,
331
+ barX,
332
+ barY;
333
+
334
+ columnPrototype.translate.apply(indicator);
335
+ indicatorPoints = indicator.points;
336
+
337
+ // Do translate operation when points exist
338
+ if (indicatorPoints.length) {
339
+ pointPadding = options.pointPadding < 0.5 ?
340
+ options.pointPadding :
341
+ 0.1;
342
+ volumeDataArray = indicator.volumeDataArray;
343
+ maxVolume = H.arrayMax(volumeDataArray);
344
+ primalBarWidth = chart.plotWidth / 2;
345
+ chartPlotTop = chart.plotTop;
346
+ barHeight = abs(yAxis.toPixels(yAxisMin) -
347
+ yAxis.toPixels(yAxisMin + indicator.rangeStep));
348
+ oldBarHeight = abs(yAxis.toPixels(yAxisMin) -
349
+ yAxis.toPixels(yAxisMin + indicator.rangeStep));
350
+
351
+ if (pointPadding) {
352
+ barHeightP = abs(barHeight * (1 - 2 * pointPadding));
353
+ yBarOffset = abs((barHeight - barHeightP) / 2);
354
+ barHeight = abs(barHeightP);
355
+ }
356
+
357
+ indicatorPoints.forEach(function (point, index) {
358
+ barX = point.barX = point.plotX = 0;
359
+ barY = point.plotY = (
360
+ yAxis.toPixels(priceZones[index].start) -
361
+ chartPlotTop -
362
+ (
363
+ yAxis.reversed ?
364
+ (barHeight - oldBarHeight) :
365
+ barHeight
366
+ ) -
367
+ yBarOffset
368
+ );
369
+ barWidth = correctFloat(
370
+ primalBarWidth *
371
+ priceZones[index].wholeVolumeData / maxVolume
372
+ );
373
+ point.pointWidth = barWidth;
374
+
375
+ point.shapeArgs = indicator.crispCol.apply( // eslint-disable-line no-useless-call
376
+ indicator,
377
+ [barX, barY, barWidth, barHeight]
378
+ );
379
+
380
+ point.volumeNeg = priceZones[index].negativeVolumeData;
381
+ point.volumePos = priceZones[index].positiveVolumeData;
382
+ point.volumeAll = priceZones[index].wholeVolumeData;
383
+ });
384
+
385
+ if (zoneLinesOptions.enabled) {
386
+ indicator.drawZones(
387
+ chart,
388
+ yAxis,
389
+ indicator.zoneStarts,
390
+ zoneLinesOptions.styles
391
+ );
392
+ }
393
+ }
394
+ },
395
+ getValues: function (series, params) {
396
+ var indicator = this,
397
+ xValues = series.processedXData,
398
+ yValues = series.processedYData,
399
+ chart = indicator.chart,
400
+ ranges = params.ranges,
401
+ VBP = [],
402
+ xData = [],
403
+ yData = [],
404
+ isOHLC,
405
+ volumeSeries,
406
+ priceZones;
407
+
408
+ // Checks if base series exists
409
+ if (!series.chart) {
410
+ return H.error(
411
+ 'Base series not found! In case it has been removed, add ' +
412
+ 'a new one.',
413
+ true,
414
+ chart
415
+ );
416
+ }
417
+
418
+ // Checks if volume series exists
419
+ if (!(volumeSeries = chart.get(params.volumeSeriesID))) {
420
+ return H.error(
421
+ 'Series ' +
422
+ params.volumeSeriesID +
423
+ ' not found! Check `volumeSeriesID`.',
424
+ true,
425
+ chart
426
+ );
427
+ }
428
+
429
+ // Checks if series data fits the OHLC format
430
+ isOHLC = H.isArray(yValues[0]);
431
+
432
+ if (isOHLC && yValues[0].length !== 4) {
433
+ return H.error(
434
+ 'Type of ' +
435
+ series.name +
436
+ ' series is different than line, OHLC or candlestick.',
437
+ true,
438
+ chart
439
+ );
440
+ }
441
+
442
+ // Price zones contains all the information about the zones (index,
443
+ // start, end, volumes, etc.)
444
+ priceZones = indicator.priceZones = indicator.specifyZones(
445
+ isOHLC,
446
+ xValues,
447
+ yValues,
448
+ ranges,
449
+ volumeSeries
450
+ );
451
+
452
+ priceZones.forEach(function (zone, index) {
453
+ VBP.push([zone.x, zone.end]);
454
+ xData.push(VBP[index][0]);
455
+ yData.push(VBP[index][1]);
456
+ });
457
+
458
+ return {
459
+ values: VBP,
460
+ xData: xData,
461
+ yData: yData
462
+ };
463
+ },
464
+ // Specifing where each zone should start ans end
465
+ specifyZones: function (
466
+ isOHLC,
467
+ xValues,
468
+ yValues,
469
+ ranges,
470
+ volumeSeries
471
+ ) {
472
+ var indicator = this,
473
+ rangeExtremes = isOHLC ? arrayExtremesOHLC(yValues) : false,
474
+ lowRange = rangeExtremes ?
475
+ rangeExtremes.min :
476
+ H.arrayMin(yValues),
477
+ highRange = rangeExtremes ?
478
+ rangeExtremes.max :
479
+ H.arrayMax(yValues),
480
+ zoneStarts = indicator.zoneStarts = [],
481
+ priceZones = [],
482
+ i = 0,
483
+ j = 1,
484
+ rangeStep,
485
+ zoneStartsLength;
486
+
487
+ if (!lowRange || !highRange) {
488
+ if (this.points.length) {
489
+ this.setData([]);
490
+ this.zoneStarts = [];
491
+ this.zoneLinesSVG.destroy();
492
+ }
493
+ return [];
494
+ }
495
+
496
+ rangeStep = indicator.rangeStep =
497
+ correctFloat(highRange - lowRange) / ranges;
498
+ zoneStarts.push(lowRange);
499
+
500
+ for (; i < ranges - 1; i++) {
501
+ zoneStarts.push(correctFloat(zoneStarts[i] + rangeStep));
502
+ }
503
+
504
+ zoneStarts.push(highRange);
505
+ zoneStartsLength = zoneStarts.length;
506
+
507
+ // Creating zones
508
+ for (; j < zoneStartsLength; j++) {
509
+ priceZones.push({
510
+ index: j - 1,
511
+ x: xValues[0],
512
+ start: zoneStarts[j - 1],
513
+ end: zoneStarts[j]
514
+ });
515
+ }
516
+
517
+ return indicator.volumePerZone(
518
+ isOHLC,
519
+ priceZones,
520
+ volumeSeries,
521
+ xValues,
522
+ yValues
523
+ );
524
+ },
525
+ // Calculating sum of volume values for a specific zone
526
+ volumePerZone: function (
527
+ isOHLC,
528
+ priceZones,
529
+ volumeSeries,
530
+ xValues,
531
+ yValues
532
+ ) {
533
+ var indicator = this,
534
+ volumeXData = volumeSeries.processedXData,
535
+ volumeYData = volumeSeries.processedYData,
536
+ lastZoneIndex = priceZones.length - 1,
537
+ baseSeriesLength = yValues.length,
538
+ volumeSeriesLength = volumeYData.length,
539
+ previousValue,
540
+ startFlag,
541
+ endFlag,
542
+ value,
543
+ i;
544
+
545
+ // Checks if each point has a corresponding volume value
546
+ if (abs(baseSeriesLength - volumeSeriesLength)) {
547
+ // If the first point don't have volume, add 0 value at the
548
+ // beggining of the volume array
549
+ if (xValues[0] !== volumeXData[0]) {
550
+ volumeYData.unshift(0);
551
+ }
552
+
553
+ // If the last point don't have volume, add 0 value at the end
554
+ // of the volume array
555
+ if (
556
+ xValues[baseSeriesLength - 1] !==
557
+ volumeXData[volumeSeriesLength - 1]
558
+ ) {
559
+ volumeYData.push(0);
560
+ }
561
+ }
562
+
563
+ indicator.volumeDataArray = [];
564
+
565
+ priceZones.forEach(function (zone) {
566
+ zone.wholeVolumeData = 0;
567
+ zone.positiveVolumeData = 0;
568
+ zone.negativeVolumeData = 0;
569
+
570
+ for (i = 0; i < baseSeriesLength; i++) {
571
+ startFlag = false;
572
+ endFlag = false;
573
+ value = isOHLC ? yValues[i][3] : yValues[i];
574
+ previousValue = i ?
575
+ (isOHLC ? yValues[i - 1][3] : yValues[i - 1]) :
576
+ value;
577
+
578
+ // Checks if this is the point with the lowest close value
579
+ // and if so, adds it calculations
580
+ if (value <= zone.start && zone.index === 0) {
581
+ startFlag = true;
582
+ }
583
+
584
+ // Checks if this is the point with the highest close value
585
+ // and if so, adds it calculations
586
+ if (value >= zone.end && zone.index === lastZoneIndex) {
587
+ endFlag = true;
588
+ }
589
+
590
+ if (
591
+ (value > zone.start || startFlag) &&
592
+ (value < zone.end || endFlag)
593
+ ) {
594
+ zone.wholeVolumeData += volumeYData[i];
595
+
596
+ if (previousValue > value) {
597
+ zone.negativeVolumeData += volumeYData[i];
598
+ } else {
599
+ zone.positiveVolumeData += volumeYData[i];
600
+ }
601
+ }
602
+ }
603
+ indicator.volumeDataArray.push(zone.wholeVolumeData);
604
+ });
605
+
606
+ return priceZones;
607
+ },
608
+ // Function responsoble for drawing additional lines indicating zones
609
+ drawZones: function (chart, yAxis, zonesValues, zonesStyles) {
610
+ var indicator = this,
611
+ renderer = chart.renderer,
612
+ zoneLinesSVG = indicator.zoneLinesSVG,
613
+ zoneLinesPath = [],
614
+ leftLinePos = 0,
615
+ rightLinePos = chart.plotWidth,
616
+ verticalOffset = chart.plotTop,
617
+ verticalLinePos;
618
+
619
+ zonesValues.forEach(function (value) {
620
+ verticalLinePos = yAxis.toPixels(value) - verticalOffset;
621
+ zoneLinesPath = zoneLinesPath.concat(chart.renderer.crispLine([
622
+ 'M',
623
+ leftLinePos,
624
+ verticalLinePos,
625
+ 'L',
626
+ rightLinePos,
627
+ verticalLinePos
628
+ ], zonesStyles.lineWidth));
629
+ });
630
+
631
+ // Create zone lines one path or update it while animating
632
+ if (zoneLinesSVG) {
633
+ zoneLinesSVG.animate({
634
+ d: zoneLinesPath
635
+ });
636
+ } else {
637
+ zoneLinesSVG = indicator.zoneLinesSVG =
638
+ renderer.path(zoneLinesPath).attr({
639
+ 'stroke-width': zonesStyles.lineWidth,
640
+ 'stroke': zonesStyles.color,
641
+ 'dashstyle': zonesStyles.dashStyle,
642
+ 'zIndex': indicator.group.zIndex + 0.1
643
+ })
644
+ .add(indicator.group);
645
+ }
646
+ }
647
+ },
648
+ /**
649
+ * @lends Highcharts.Point#
650
+ */
651
+ {
652
+ // Required for destroying negative part of volume
653
+ destroy: function () {
654
+ if (this.negativeGraphic) {
655
+ this.negativeGraphic = this.negativeGraphic.destroy();
656
+ }
657
+ return H.Point.prototype.destroy.apply(this, arguments);
658
+ }
659
+ }
660
+ );
661
+
662
+ /**
663
+ * A `Volume By Price (VBP)` series. If the [type](#series.vbp.type) option is
664
+ * not specified, it is inherited from [chart.type](#chart.type).
665
+ *
666
+ * @extends series,plotOptions.vbp
667
+ * @since 6.0.0
668
+ * @product highstock
669
+ * @excluding dataParser, dataURL
670
+ * @apioption series.vbp
671
+ */