highcharts
Version:
JavaScript charting framework
14 lines • 3.13 kB
JavaScript
!/**
* Highstock JS v13.0.1 (2026-08-17)
* @module highcharts/modules/heikinashi
* @requires highcharts
* @requires highcharts/modules/stock
*
* HeikinAshi series type for Highcharts Stock
*
* (c) 2010-2026 Highsoft AS
* Author: Karol Kołodziej
*
* A commercial license may be required depending on use,
* see www.highcharts.com/license
*/function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(e._Highcharts,e._Highcharts.SeriesRegistry):"function"==typeof define&&define.amd?define("highcharts/modules/heikinashi",["highcharts/highcharts"],function(e){return t(e,e.SeriesRegistry)}):"object"==typeof exports?exports["highcharts/modules/heikinashi"]=t(e._Highcharts,e._Highcharts.SeriesRegistry):e.Highcharts=t(e.Highcharts,e.Highcharts.SeriesRegistry)}("u"<typeof window?this:window,(e,t)=>(()=>{"use strict";var i={512(e){e.exports=t},944(t){t.exports=e}};let s={};function a(e){let t=s[e];if(void 0!==t)return t.exports;let h=s[e]={exports:{}};return i[e](h,h.exports,a),h.exports}a.n=e=>{let t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{if(Array.isArray(t))for(var i=0;i<t.length;){var s=t[i++],h=t[i++];a.o(e,s)?0===h&&i++:0===h?Object.defineProperty(e,s,{enumerable:!0,value:t[i++]}):Object.defineProperty(e,s,{enumerable:!0,get:h})}else for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let h={};a.d(h,{default:()=>D});var o=a(944),r=a.n(o),n=a(512),l=a.n(n);let{candlestick:{prototype:{pointClass:p}},hlc:{prototype:{pointClass:c}}}=l().seriesTypes,{composed:d}=r(),{candlestick:u}=l().seriesTypes;function f(){this.series.forEach(e=>{e.is("heikinashi")&&(e.heikinashiData.length=0,e.getHeikinashiData())})}function g(){let e=this.points,t=this.heikinashiData,i=this.cropStart||0;for(let s=0;s<e.length;s++){let a=e[s],h=t[s+i];a.open=h[0],a.high=h[1],a.low=h[2],a.close=h[3]}}function y(){this.heikinashiData.length&&(this.heikinashiData.length=0)}class k extends u{constructor(){super(...arguments),this.heikinashiData=[]}static compose(e,t){u.compose(e),(0,o.pushUnique)(d,"HeikinAshi")&&((0,o.addEvent)(t,"postProcessData",f),(0,o.addEvent)(k,"afterTranslate",g),(0,o.addEvent)(k,"updatedData",y))}getHeikinashiData(){let e=this.allGroupedTable||this.dataTable,t=e.rowCount,i=this.heikinashiData;if(!i.length&&t){this.modifyFirstPointValue(e.getRowObject(0,this.pointArrayMap));for(let s=1;s<t;s++)this.modifyDataPoint(e.getRowObject(s,this.pointArrayMap),i[s-1])}this.heikinashiData=i}init(){super.init.apply(this,arguments),this.heikinashiData=[]}modifyFirstPointValue(e){let t=(e.open+e.high+e.low+e.close)/4,i=(e.open+e.close)/2;this.heikinashiData.push([t,e.high,e.low,i])}modifyDataPoint(e,t){let i=(t[0]+t[3])/2,s=(e.open+e.high+e.low+e.close)/4,a=Math.max(e.high,s,i),h=Math.min(e.low,s,i);this.heikinashiData.push([i,a,h,s])}}k.defaultOptions=(0,o.merge)(u.defaultOptions,{dataGrouping:{groupAll:!0}}),k.prototype.pointClass=class extends p{},l().registerSeriesType("heikinashi",k);let m=r();k.compose(m.Series,m.Axis);let D=r();return h.default})());