UNPKG

highcharts

Version:
20 lines (17 loc) 5.28 kB
/* Highstock JS v9.0.1 (2021-02-15) Indicator series type for Highstock (c) 2010-2021 Sebastian Bochan License: www.highcharts.com/license */ (function(b){"object"===typeof module&&module.exports?(b["default"]=b,module.exports=b):"function"===typeof define&&define.amd?define("highcharts/indicators/macd",["highcharts","highcharts/modules/stock"],function(f){b(f);b.Highcharts=f;return b}):b("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(b){function f(b,h,d,f){b.hasOwnProperty(h)||(b[h]=f.apply(null,d))}b=b?b._modules:{};f(b,"Stock/Indicators/MACD/MACDIndicator.js",[b["Core/Globals.js"],b["Core/Series/SeriesRegistry.js"],b["Core/Utilities.js"]], function(b,h,d){var f=this&&this.__extends||function(){var b=function(c,a){b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var l in b)b.hasOwnProperty(l)&&(a[l]=b[l])};return b(c,a)};return function(c,a){function l(){this.constructor=c}b(c,a);c.prototype=null===a?Object.create(a):(l.prototype=a.prototype,new l)}}(),r=b.noop,p=h.seriesTypes.sma,t=d.extend,q=d.correctFloat,m=d.defined,n=d.merge;d=function(d){function c(){var a=null!==d&&d.apply(this, arguments)||this;a.data=void 0;a.options=void 0;a.points=void 0;a.currentLineZone=void 0;a.graphmacd=void 0;a.graphsignal=void 0;a.macdZones=void 0;a.signalZones=void 0;return a}f(c,d);c.prototype.init=function(){h.seriesTypes.sma.prototype.init.apply(this,arguments);this.options&&(this.options=n({signalLine:{styles:{lineColor:this.color}},macdLine:{styles:{color:this.color}}},this.options),this.macdZones={zones:this.options.macdLine.zones,startIndex:0},this.signalZones={zones:this.macdZones.zones.concat(this.options.signalLine.zones), startIndex:this.macdZones.zones.length},this.resetZones=!0)};c.prototype.toYData=function(a){return[a.y,a.signal,a.MACD]};c.prototype.translate=function(){var a=this,l=["plotSignal","plotMACD"];b.seriesTypes.column.prototype.translate.apply(a);a.points.forEach(function(b){[b.signal,b.MACD].forEach(function(e,c){null!==e&&(b[l[c]]=a.yAxis.toPixels(e,!0))})})};c.prototype.destroy=function(){this.graph=null;this.graphmacd=this.graphmacd&&this.graphmacd.destroy();this.graphsignal=this.graphsignal&&this.graphsignal.destroy(); h.seriesTypes.sma.prototype.destroy.apply(this,arguments)};c.prototype.drawGraph=function(){for(var a=this,b=a.points,c=b.length,e=a.options,d=a.zones,f={options:{gapSize:e.gapSize}},k=[[],[]],g;c--;)g=b[c],m(g.plotMACD)&&k[0].push({plotX:g.plotX,plotY:g.plotMACD,isNull:!m(g.plotMACD)}),m(g.plotSignal)&&k[1].push({plotX:g.plotX,plotY:g.plotSignal,isNull:!m(g.plotMACD)});["macd","signal"].forEach(function(b,l){a.points=k[l];a.options=n(e[b+"Line"].styles,f);a.graph=a["graph"+b];a.currentLineZone=b+ "Zones";a.zones=a[a.currentLineZone].zones;h.seriesTypes.sma.prototype.drawGraph.call(a);a["graph"+b]=a.graph});a.points=b;a.options=e;a.zones=d;a.currentLineZone=null};c.prototype.getZonesGraphs=function(a){var b=d.prototype.getZonesGraphs.call(this,a),c=b;this.currentLineZone&&(c=b.splice(this[this.currentLineZone].startIndex+1),c.length?c.splice(0,0,a[0]):c=[a[0]]);return c};c.prototype.applyZones=function(){var a=this.zones;this.zones=this.signalZones.zones;h.seriesTypes.sma.prototype.applyZones.call(this); this.graphmacd&&this.options.macdLine.zones.length&&this.graphmacd.hide();this.zones=a};c.prototype.getValues=function(a,b){var c=0,e=[],d=[],f=[];if(!(a.xData.length<b.longPeriod+b.signalPeriod)){var k=h.seriesTypes.ema.prototype.getValues(a,{period:b.shortPeriod,index:b.index});var g=h.seriesTypes.ema.prototype.getValues(a,{period:b.longPeriod,index:b.index});k=k.values;g=g.values;for(a=1;a<=k.length;a++)m(g[a-1])&&m(g[a-1][1])&&m(k[a+b.shortPeriod+1])&&m(k[a+b.shortPeriod+1][0])&&e.push([k[a+b.shortPeriod+ 1][0],0,null,k[a+b.shortPeriod+1][1]-g[a-1][1]]);for(a=0;a<e.length;a++)d.push(e[a][0]),f.push([0,null,e[a][3]]);b=h.seriesTypes.ema.prototype.getValues({xData:d,yData:f},{period:b.signalPeriod,index:2});b=b.values;for(a=0;a<e.length;a++)e[a][0]>=b[0][0]&&(e[a][2]=b[c][1],f[a]=[0,b[c][1],e[a][3]],null===e[a][3]?(e[a][1]=0,f[a][0]=0):(e[a][1]=q(e[a][3]-b[c][1]),f[a][0]=q(e[a][3]-b[c][1])),c++);return{values:e,xData:d,yData:f}}};c.defaultOptions=n(p.defaultOptions,{params:{shortPeriod:12,longPeriod:26, signalPeriod:9,period:26},signalLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},macdLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},threshold:0,groupPadding:.1,pointPadding:.1,crisp:!1,states:{hover:{halo:{size:0}}},tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> <b> {series.name}</b><br/>Value: {point.MACD}<br/>Signal: {point.signal}<br/>Histogram: {point.y}<br/>'},dataGrouping:{approximation:"averages"},minPointLength:0});return c}(p);t(d.prototype,{nameComponents:["longPeriod", "shortPeriod","signalPeriod"],requiredIndicators:["ema"],pointArrayMap:["y","signal","MACD"],parallelArrays:["x","y","signal","MACD"],pointValKey:"y",markerAttribs:r,getColumnMetrics:b.seriesTypes.column.prototype.getColumnMetrics,crispCol:b.seriesTypes.column.prototype.crispCol,drawPoints:b.seriesTypes.column.prototype.drawPoints});h.registerSeriesType("macd",d);"";return d});f(b,"masters/indicators/macd.src.js",[],function(){})}); //# sourceMappingURL=macd.js.map