highcharts
Version:
JavaScript charting framework
17 lines (14 loc) • 3.67 kB
JavaScript
/*
Highstock JS v8.0.0 (2019-12-10)
Indicator series type for Highstock
(c) 2010-2019 Daniel Studencki
License: www.highcharts.com/license
*/
(function(a){"object"===typeof module&&module.exports?(a["default"]=a,module.exports=a):"function"===typeof define&&define.amd?define("highcharts/indicators/keltner-channels",["highcharts","highcharts/modules/stock"],function(b){a(b);a.Highcharts=b;return a}):a("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(a){function b(a,b,f,d){a.hasOwnProperty(b)||(a[b]=d.apply(null,f))}a=a?a._modules:{};b(a,"mixins/multipe-lines.js",[a["parts/Globals.js"],a["parts/Utilities.js"]],function(a,b){var x=
b.defined,d=a.each,n=a.merge,t=a.error,p=a.seriesTypes.sma;return{pointArrayMap:["top","bottom"],pointValKey:"top",linesApiNames:["bottomLine"],getTranslatedLinesNames:function(e){var a=[];d(this.pointArrayMap,function(c){c!==e&&a.push("plot"+c.charAt(0).toUpperCase()+c.slice(1))});return a},toYData:function(a){var e=[];d(this.pointArrayMap,function(c){e.push(a[c])});return e},translate:function(){var a=this,b=a.pointArrayMap,c=[],h;c=a.getTranslatedLinesNames();p.prototype.translate.apply(a,arguments);
d(a.points,function(e){d(b,function(b,d){h=e[b];null!==h&&(e[c[d]]=a.yAxis.toPixels(h,!0))})})},drawGraph:function(){var a=this,b=a.linesApiNames,c=a.points,h=c.length,u=a.options,y=a.graph,k={options:{gapSize:u.gapSize}},l=[],f=a.getTranslatedLinesNames(a.pointValKey),g;d(f,function(a,b){for(l[b]=[];h--;)g=c[h],l[b].push({x:g.x,plotX:g.plotX,plotY:g[a],isNull:!x(g[a])});h=c.length});d(b,function(b,c){l[c]?(a.points=l[c],u[b]?a.options=n(u[b].styles,k):t('Error: "There is no '+b+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names." at mixin/multiple-line.js:34'),
a.graph=a["graph"+b],p.prototype.drawGraph.call(a),a["graph"+b]=a.graph):t('Error: "'+b+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")});a.points=c;a.options=u;a.graph=y;p.prototype.drawGraph.call(a)}}});b(a,"indicators/keltner-channels.src.js",[a["parts/Globals.js"],a["parts/Utilities.js"],a["mixins/multipe-lines.js"]],function(a,b,f){var d=b.correctFloat,n=a.seriesTypes.sma,t=a.seriesTypes.ema,p=a.seriesTypes.atr,e=a.merge;a.seriesType("keltnerchannels",
"sma",{params:{period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1},e(f,{pointArrayMap:["top","middle","bottom"],pointValKey:"middle",
nameBase:"Keltner Channels",nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],requiredIndicators:["ema","atr"],init:function(){n.prototype.init.apply(this,arguments);this.options=e({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)},getValues:function(a,b){var c=b.period,e=b.periodATR,f=b.multiplierATR,k=a.yData;k=k?k.length:0;var l=[];b=t.prototype.getValues(a,{period:c,index:b.index});var n=p.prototype.getValues(a,
{period:e}),g=[],v=[],q;if(!(k<c)){for(q=c;q<=k;q++){var m=b.values[q-c];var r=n.values[q-e];var w=m[0];a=d(m[1]+f*r[1]);r=d(m[1]-f*r[1]);m=m[1];l.push([w,a,m,r]);g.push(w);v.push([a,m,r])}return{values:l,xData:g,yData:v}}}}));""});b(a,"masters/indicators/keltner-channels.src.js",[],function(){})});
//# sourceMappingURL=keltner-channels.js.map