macd.js
4.21 KB
/*
Highstock JS v7.2.0 (2019-09-03)
Indicator series type for Highstock
(c) 2010-2019 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(d){b(d);b.Highcharts=d;return b}):b("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(b){function d(b,l,h,d){b.hasOwnProperty(l)||(b[l]=d.apply(null,h))}b=b?b._modules:{};d(b,"indicators/macd.src.js",[b["parts/Globals.js"],b["parts/Utilities.js"]],function(b,d){var h=d.defined;
d=b.seriesType;var l=b.merge,m=b.seriesTypes.sma,n=b.seriesTypes.ema,q=b.correctFloat;d("macd","sma",{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,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},{nameComponents:["longPeriod","shortPeriod","signalPeriod"],requiredIndicators:["ema"],pointArrayMap:["y","signal","MACD"],parallelArrays:["x","y","signal","MACD"],pointValKey:"y",markerAttribs:b.noop,getColumnMetrics:b.seriesTypes.column.prototype.getColumnMetrics,crispCol:b.seriesTypes.column.prototype.crispCol,init:function(){m.prototype.init.apply(this,arguments);this.options&&(this.options=l({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)},toYData:function(a){return[a.y,a.signal,a.MACD]},translate:function(){var a=this,p=["plotSignal","plotMACD"];b.seriesTypes.column.prototype.translate.apply(a);a.points.forEach(function(b){[b.signal,b.MACD].forEach(function(c,e){null!==c&&(b[p[e]]=
a.yAxis.toPixels(c,!0))})})},destroy:function(){this.graph=null;this.graphmacd=this.graphmacd&&this.graphmacd.destroy();this.graphsignal=this.graphsignal&&this.graphsignal.destroy();m.prototype.destroy.apply(this,arguments)},drawPoints:b.seriesTypes.column.prototype.drawPoints,drawGraph:function(){for(var a=this,b=a.points,e=b.length,c=a.options,d=a.zones,k={options:{gapSize:c.gapSize}},g=[[],[]],f;e--;)f=b[e],h(f.plotMACD)&&g[0].push({plotX:f.plotX,plotY:f.plotMACD,isNull:!h(f.plotMACD)}),h(f.plotSignal)&&
g[1].push({plotX:f.plotX,plotY:f.plotSignal,isNull:!h(f.plotMACD)});["macd","signal"].forEach(function(b,p){a.points=g[p];a.options=l(c[b+"Line"].styles,k);a.graph=a["graph"+b];a.currentLineZone=b+"Zones";a.zones=a[a.currentLineZone].zones;m.prototype.drawGraph.call(a);a["graph"+b]=a.graph});a.points=b;a.options=c;a.zones=d;a.currentLineZone=null},getZonesGraphs:function(a){var b=m.prototype.getZonesGraphs.call(this,a),e=b;this.currentLineZone&&(e=b.splice(this[this.currentLineZone].startIndex+1),
e.length?e.splice(0,0,a[0]):e=[a[0]]);return e},applyZones:function(){var a=this.zones;this.zones=this.signalZones.zones;m.prototype.applyZones.call(this);this.options.macdLine.zones.length&&this.graphmacd.hide();this.zones=a},getValues:function(a,b){var e=0,c=[],d=[],k=[];if(a.xData.length<b.longPeriod+b.signalPeriod)return!1;var g=n.prototype.getValues(a,{period:b.shortPeriod});var f=n.prototype.getValues(a,{period:b.longPeriod});g=g.values;f=f.values;for(a=1;a<=g.length;a++)h(f[a-1])&&h(f[a-1][1])&&
h(g[a+b.shortPeriod+1])&&h(g[a+b.shortPeriod+1][0])&&c.push([g[a+b.shortPeriod+1][0],0,null,g[a+b.shortPeriod+1][1]-f[a-1][1]]);for(a=0;a<c.length;a++)d.push(c[a][0]),k.push([0,null,c[a][3]]);b=n.prototype.getValues({xData:d,yData:k},{period:b.signalPeriod,index:2});b=b.values;for(a=0;a<c.length;a++)c[a][0]>=b[0][0]&&(c[a][2]=b[e][1],k[a]=[0,b[e][1],c[a][3]],null===c[a][3]?(c[a][1]=0,k[a][0]=0):(c[a][1]=q(c[a][3]-b[e][1]),k[a][0]=q(c[a][3]-b[e][1])),e++);return{values:c,xData:d,yData:k}}})});d(b,
"masters/indicators/macd.src.js",[],function(){})});
//# sourceMappingURL=macd.js.map