ohlcv-indicators 1.3.6 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var OHLCV_INDICATORS;(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{t.r(e),t.d(e,{default:()=>ne});var r=1e6,n="[big.js] ",o=n+"Invalid ",i=o+"decimal places",l=o+"rounding mode",c=n+"Division by zero",u={},a=void 0,s=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function h(t,e,r,n){var o=t.c;if(r===a&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(l);if(e<1)n=3===r&&(n||!!o[0])||0===e&&(1===r&&o[0]>=5||2===r&&(o[0]>5||5===o[0]&&(n||o[1]!==a))),o.length=1,n?(t.e=t.e-e+1,o[0]=1):o[0]=t.e=0;else if(e<o.length){if(n=1===r&&o[e]>=5||2===r&&(o[e]>5||5===o[e]&&(n||o[e+1]!==a||1&o[e-1]))||3===r&&(n||!!o[0]),o.length=e,n)for(;++o[--e]>9;)if(o[e]=0,0===e){++t.e,o.unshift(1);break}for(e=o.length;!o[--e];)o.pop()}return t}function f(t,e,r){var n=t.e,o=t.c.join(""),i=o.length;if(e)o=o.charAt(0)+(i>1?"."+o.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)o="0"+o;o="0."+o}else if(n>0)if(++n>i)for(n-=i;n--;)o+="0";else n<i&&(o=o.slice(0,n)+"."+o.slice(n));else i>1&&(o=o.charAt(0)+"."+o.slice(1));return t.s<0&&r?"-"+o:o}u.abs=function(){var t=new this.constructor(this);return t.s=1,t},u.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,l=t.s,c=r.e,u=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-l:0;if(i!=l)return i;if(e=i<0,c!=u)return c>u^e?1:-1;for(l=(c=n.length)<(u=o.length)?c:u,i=-1;++i<l;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return c==u?0:c>u^e?1:-1},u.div=function(t){var e=this,n=e.constructor,o=e.c,l=(t=new n(t)).c,u=e.s==t.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>r)throw Error(i);if(!l[0])throw Error(c);if(!o[0])return t.s=u,t.c=[t.e=0],t;var f,p,v,y,b,m=l.slice(),d=f=l.length,g=o.length,w=o.slice(0,f),M=w.length,S=t,j=S.c=[],O=0,P=s+(S.e=e.e-t.e)+1;for(S.s=u,u=P<0?0:P,m.unshift(0);M++<f;)w.push(0);do{for(v=0;v<10;v++){if(f!=(M=w.length))y=f>M?1:-1;else for(b=-1,y=0;++b<f;)if(l[b]!=w[b]){y=l[b]>w[b]?1:-1;break}if(!(y<0))break;for(p=M==f?l:m;M;){if(w[--M]<p[M]){for(b=M;b&&!w[--b];)w[b]=9;--w[b],w[M]+=10}w[M]-=p[M]}for(;!w[0];)w.shift()}j[O++]=y?v:++v,w[0]&&y?w[M]=o[d]||0:w=[o[d]]}while((d++<g||w[0]!==a)&&u--);return j[0]||1==O||(j.shift(),S.e--,P--),O>P&&h(S,P,n.RM,w[0]!==a),S},u.eq=function(t){return 0===this.cmp(t)},u.gt=function(t){return this.cmp(t)>0},u.gte=function(t){return this.cmp(t)>-1},u.lt=function(t){return this.cmp(t)<0},u.lte=function(t){return this.cmp(t)<1},u.minus=u.sub=function(t){var e,r,n,o,i=this,l=i.constructor,c=i.s,u=(t=new l(t)).s;if(c!=u)return t.s=-u,i.plus(t);var a=i.c.slice(),s=i.e,h=t.c,f=t.e;if(!a[0]||!h[0])return h[0]?t.s=-u:a[0]?t=new l(i):t.s=1,t;if(c=s-f){for((o=c<0)?(c=-c,n=a):(f=s,n=h),n.reverse(),u=c;u--;)n.push(0);n.reverse()}else for(r=((o=a.length<h.length)?a:h).length,c=u=0;u<r;u++)if(a[u]!=h[u]){o=a[u]<h[u];break}if(o&&(n=a,a=h,h=n,t.s=-t.s),(u=(r=h.length)-(e=a.length))>0)for(;u--;)a[e++]=0;for(u=e;r>c;){if(a[--r]<h[r]){for(e=r;e&&!a[--e];)a[e]=9;--a[e],a[r]+=10}a[r]-=h[r]}for(;0===a[--u];)a.pop();for(;0===a[0];)a.shift(),--f;return a[0]||(t.s=1,a=[f=0]),t.c=a,t.e=f,t},u.mod=function(t){var e,r=this,n=r.constructor,o=r.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(c);return r.s=t.s=1,e=1==t.cmp(r),r.s=o,t.s=i,e?new n(r):(o=n.DP,i=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=o,n.RM=i,this.minus(r.times(t)))},u.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},u.plus=u.add=function(t){var e,r,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var l=o.e,c=o.c,u=t.e,a=t.c;if(!c[0]||!a[0])return a[0]||(c[0]?t=new i(o):t.s=o.s),t;if(c=c.slice(),e=l-u){for(e>0?(u=l,n=a):(e=-e,n=c),n.reverse();e--;)n.push(0);n.reverse()}for(c.length-a.length<0&&(n=a,a=c,c=n),e=a.length,r=0;e;c[e]%=10)r=(c[--e]=c[e]+a[e]+r)/10|0;for(r&&(c.unshift(r),++u),e=c.length;0===c[--e];)c.pop();return t.c=c,t.e=u,t},u.pow=function(t){var e=this,r=new e.constructor("1"),n=r,i=t<0;if(t!==~~t||t<-1e6||t>1e6)throw Error(o+"exponent");for(i&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return i?r.div(n):n},u.prec=function(t,e){if(t!==~~t||t<1||t>r)throw Error(o+"precision");return h(new this.constructor(this),t,e)},u.round=function(t,e){if(t===a)t=0;else if(t!==~~t||t<-r||t>r)throw Error(i);return h(new this.constructor(this),t+this.e+1,e)},u.sqrt=function(){var t,e,r,o=this,i=o.constructor,l=o.s,c=o.e,u=new i("0.5");if(!o.c[0])return new i(o);if(l<0)throw Error(n+"No square root");0===(l=Math.sqrt(o+""))||l===1/0?((e=o.c.join("")).length+c&1||(e+="0"),c=((c+1)/2|0)-(c<0||1&c),t=new i(((l=Math.sqrt(e))==1/0?"5e":(l=l.toExponential()).slice(0,l.indexOf("e")+1))+c)):t=new i(l+""),c=t.e+(i.DP+=4);do{r=t,t=u.times(r.plus(o.div(r)))}while(r.c.slice(0,c).join("")!==t.c.slice(0,c).join(""));return h(t,(i.DP-=4)+t.e+1,i.RM)},u.times=u.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,l=o.length,c=i.length,u=r.e,a=t.e;if(t.s=r.s==t.s?1:-1,!o[0]||!i[0])return t.c=[t.e=0],t;for(t.e=u+a,l<c&&(e=o,o=i,i=e,a=l,l=c,c=a),e=new Array(a=l+c);a--;)e[a]=0;for(u=c;u--;){for(c=0,a=l+u;a>u;)c=e[a]+i[u]*o[a-u-1]+c,e[a--]=c%10,c=c/10|0;e[a]=c}for(c?++t.e:e.shift(),u=e.length;!e[--u];)e.pop();return t.c=e,t},u.toExponential=function(t,e){var n=this,o=n.c[0];if(t!==a){if(t!==~~t||t<0||t>r)throw Error(i);for(n=h(new n.constructor(n),++t,e);n.c.length<t;)n.c.push(0)}return f(n,!0,!!o)},u.toFixed=function(t,e){var n=this,o=n.c[0];if(t!==a){if(t!==~~t||t<0||t>r)throw Error(i);for(t=t+(n=h(new n.constructor(n),t+n.e+1,e)).e+1;n.c.length<t;)n.c.push(0)}return f(n,!1,!!o)},u[Symbol.for("nodejs.util.inspect.custom")]=u.toJSON=u.toString=function(){var t=this,e=t.constructor;return f(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},u.toNumber=function(){var t=Number(f(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(n+"Imprecise conversion");return t},u.toPrecision=function(t,e){var n=this,i=n.constructor,l=n.c[0];if(t!==a){if(t!==~~t||t<1||t>r)throw Error(o+"precision");for(n=h(new i(n),t,e);n.c.length<t;)n.c.push(0)}return f(n,t<=n.e||n.e<=i.NE||n.e>=i.PE,!!l)},u.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(n+"valueOf disallowed");return f(t,t.e<=e.NE||t.e>=e.PE,!0)};const p=function t(){function e(r){var n=this;if(!(n instanceof e))return r===a?t():new e(r);if(r instanceof e)n.s=r.s,n.e=r.e,n.c=r.c.slice();else{if("string"!=typeof r){if(!0===e.strict&&"bigint"!=typeof r)throw TypeError(o+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,i;if(!s.test(e))throw Error(o+"number");for(t.s="-"==e.charAt(0)?(e=e.slice(1),-1):1,(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),i=e.length,n=0;n<i&&"0"==e.charAt(n);)++n;if(n==i)t.c=[t.e=0];else{for(;i>0&&"0"==e.charAt(--i););for(t.e=r-n-1,t.c=[],r=0;n<=i;)t.c[r++]=+e.charAt(n++)}}(n,r)}n.constructor=e}return e.prototype=u,e.DP=20,e.RM=1,e.NE=-7,e.PE=21,e.strict=!1,e.roundDown=0,e.roundHalfUp=1,e.roundHalfEven=2,e.roundUp=3,e}();function v(t){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},v(t)}function y(t){var e="function"==typeof Map?new Map:void 0;return y=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(b())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&m(o,r.prototype),o}(t,arguments,d(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),m(r,t)},y(t)}function b(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(b=function(){return!!t})()}function m(t,e){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},m(t,e)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}var g=function(t){function e(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Not enough data";return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t=function(t,e,r){return e=d(e),function(t,e){if(e&&("object"==v(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,b()?Reflect.construct(e,r||[],d(t).constructor):e.apply(t,r))}(this,e,[r]),Object.setPrototypeOf(t,(this instanceof e?this.constructor:void 0).prototype),t.name="NotEnoughDataError",t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&m(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(y(Error));function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function M(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,j(n.key),n)}}function S(t,e,r){return(e=j(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function j(t){var e=function(t,e){if("object"!=w(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==w(e)?e:e+""}var O=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),S(this,"previousHighest",void 0),S(this,"highest",void 0),S(this,"previousLowest",void 0),S(this,"lowest",void 0),S(this,"previousResult",void 0),S(this,"result",void 0)},(e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"getResult",value:function(){if(void 0===this.result)throw new g;return this.result}},{key:"setResult",value:function(t,e){return e&&(this.highest=this.previousHighest,this.lowest=this.previousLowest,this.result=this.previousResult),void 0===this.highest?this.highest=t:t.gt(this.highest)?(this.previousHighest=this.highest,this.highest=t):this.previousHighest=this.highest,void 0===this.lowest?this.lowest=t:t.lt(this.lowest)?(this.previousLowest=this.lowest,this.lowest=t):this.previousLowest=this.lowest,this.previousResult=this.result,this.result=t}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&M(t.prototype,e),r&&M(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function P(t){return P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},P(t)}function _(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,A(n.key),n)}}function E(t,e,r){return e=R(e),function(t,e){if(e&&("object"==P(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,k()?Reflect.construct(e,r||[],R(t).constructor):e.apply(t,r))}function k(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(k=function(){return!!t})()}function R(t){return R=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},R(t)}function T(t,e){return T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},T(t,e)}function A(t){var e=function(t,e){if("object"!=P(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=P(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==P(e)?e:e+""}var x=function(t){function e(t){var r,n,o,i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=E(this,e),i=void 0,(o=A(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,r.interval=t,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&T(t,e)}(e,t),r=e,(n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&_(r.prototype,n),o&&_(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(O);function B(t){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(t)}function C(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,N(n.key),n)}}function I(t,e,r){return e=V(e),function(t,e){if(e&&("object"==B(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,D()?Reflect.construct(e,r||[],V(t).constructor):e.apply(t,r))}function D(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(D=function(){return!!t})()}function V(t){return V=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},V(t)}function F(t,e){return F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},F(t,e)}function N(t){var e=function(t,e){if("object"!=B(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==B(e)?e:e+""}var H=function(t){function e(){var t,r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,l=new Array(i),c=0;c<i;c++)l[c]=arguments[c];return r=t=I(this,e,[].concat(l)),o=[],(n=N(n="prices"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&F(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.prices.length&&r?this.prices[this.prices.length-1]=t:this.prices.push(t),this.prices.length>this.interval&&this.prices.shift(),this.prices.length===this.interval)return this.setResult(e.getResultFromBatch(this.prices),r)}}],o=[{key:"getResultFromBatch",value:function(t){return t.reduce((function(t,e){return t.plus(e)}),new p("0")).div(t.length||1)}}],n&&C(r.prototype,n),o&&C(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(x);function L(t){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},L(t)}function q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function U(t,e,r){return e=W(e),function(t,e){if(e&&("object"==L(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,G()?Reflect.construct(e,r||[],W(t).constructor):e.apply(t,r))}function G(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(G=function(){return!!t})()}function W(t){return W=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},W(t)}function $(t,e){return $=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},$(t,e)}function z(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t,e){if("object"!=L(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=L(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==L(e)?e:e+""}var J=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),z(r=U(this,e,[t]),"interval",void 0),z(r,"indicator",void 0),z(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new H(t),r.smoothingFactor=new p(1).div(r.interval),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&$(t,e)}(e,t),r=e,n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.indicator.update(t,e);if(e&&this.previousResult){var n=new p(t).minus(this.previousResult).mul(this.smoothingFactor);return this.setResult(n.plus(this.previousResult),e)}if(!e&&this.result){var o=new p(t).minus(this.result).mul(this.smoothingFactor);return this.setResult(o.plus(this.result),e)}if(void 0===this.result&&r)return this.setResult(r,e)}}],n&&q(r.prototype,n),o&&q(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(x);function Q(t){return t.reduce((function(t,e){return t.add(e)}),new p(0)).div(t.length||1)}function X(t){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},X(t)}function Y(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,tt(n.key),n)}}function Z(t,e,r){return(e=tt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function tt(t){var e=function(t,e){if("object"!=X(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=X(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==X(e)?e:e+""}var et=function(){return t=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),Z(this,"interval",void 0),Z(this,"deviationMultiplier",void 0),Z(this,"prices",[]),Z(this,"result",void 0),this.interval=e,this.deviationMultiplier=r},(e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){if(this.prices.push(new p(t)),this.prices.length>this.interval){this.prices.shift();var e=H.getResultFromBatch(this.prices),r=function(t,e){var r=e||Q(t);return Q(t.map((function(t){return new p(t).sub(r).pow(2)}))).sqrt()}(this.prices,e);return this.result={lower:e.sub(r.times(this.deviationMultiplier)),middle:e,upper:e.add(r.times(this.deviationMultiplier))}}}},{key:"getResult",value:function(){if(void 0===this.result)throw new g;return this.result}}])&&Y(t.prototype,e),r&&Y(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function rt(t){return rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rt(t)}function nt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,at(n.key),n)}}function ot(t,e,r){return e=lt(e),function(t,e){if(e&&("object"==rt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,it()?Reflect.construct(e,r||[],lt(t).constructor):e.apply(t,r))}function it(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(it=function(){return!!t})()}function lt(t){return lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},lt(t)}function ct(t,e){return ct=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},ct(t,e)}function ut(t,e,r){return(e=at(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function at(t){var e=function(t,e){if("object"!=rt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==rt(e)?e:e+""}var st=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),ut(r=ot(this,e,[t]),"interval",void 0),ut(r,"pricesCounter",0),ut(r,"weightFactor",void 0),r.interval=t,r.weightFactor=2/(r.interval+1),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ct(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];r?r&&0===this.pricesCounter&&this.pricesCounter++:this.pricesCounter++;var n=new p(t);return r&&this.previousResult?this.setResult(n.times(this.weightFactor).add(this.previousResult.times(1-this.weightFactor)),r):this.setResult(n.times(this.weightFactor).add((null!==(e=this.result)&&void 0!==e?e:n).times(1-this.weightFactor)),r)}},{key:"getResult",value:function(){if(this.pricesCounter<this.interval)throw new g;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&nt(r.prototype,n),o&&nt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(x);function ht(t){return ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ht(t)}function ft(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,vt(n.key),n)}}function pt(t,e,r){return(e=vt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function vt(t){var e=function(t,e){if("object"!=ht(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ht(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ht(e)?e:e+""}var yt=function(){return t=function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),pt(this,"prices",[]),pt(this,"long",void 0),pt(this,"short",void 0),pt(this,"signal",void 0),pt(this,"result",void 0),this.long=new e.indicator(e.longInterval),this.short=new e.indicator(e.shortInterval),this.signal=new e.indicator(e.signalInterval)},e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=new p(t);this.prices.length&&e?this.prices[this.prices.length-1]=r:this.prices.push(r);var n=this.short.update(r,e),o=this.long.update(r,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var i=n.sub(o),l=this.signal.update(i);return this.result={histogram:i.sub(l),macd:i,signal:l}}}},{key:"getResult",value:function(){if(!this.isStable||void 0===this.result)throw new g;return this.result}}],e&&ft(t.prototype,e),r&&ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function bt(t){return bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bt(t)}function mt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,jt(n.key),n)}}function dt(t,e,r){return e=wt(e),function(t,e){if(e&&("object"==bt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,gt()?Reflect.construct(e,r||[],wt(t).constructor):e.apply(t,r))}function gt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(gt=function(){return!!t})()}function wt(t){return wt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},wt(t)}function Mt(t,e){return Mt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Mt(t,e)}function St(t,e,r){return(e=jt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function jt(t){var e=function(t,e){if("object"!=bt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=bt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==bt(e)?e:e+""}var Ot=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:J;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),St(r=dt(this,e),"interval",void 0),St(r,"previousPrices",[]),St(r,"avgGain",void 0),St(r,"avgLoss",void 0),St(r,"maxValue",new p(100)),r.interval=t,r.avgGain=new n(r.interval),r.avgLoss=new n(r.interval),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Mt(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&e?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var r=new p(t),n=new p(this.previousPrices[this.previousPrices.length-2]);if(r.gt(n)?(this.avgLoss.update(new p(0),e),this.avgGain.update(r.sub(n),e)):(this.avgLoss.update(n.sub(r),e),this.avgGain.update(new p(0),e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(o.eq(0))return this.setResult(new p(100),e);var i=this.avgGain.getResult().div(o);return this.setResult(this.maxValue.minus(this.maxValue.div(i.add(1))),e)}}}}],n&&mt(r.prototype,n),o&&mt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(O);function Pt(t){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Pt(t)}var _t=function(t,e){for(var r=[],n=new st(e),o=t.length,i=0;i<o;i++){var l=null;n.update(t[i]);try{l=n.getResult()}catch(t){l=null}r.push(l)}return r};function Et(t){return Et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Et(t)}var kt=function(t,e){for(var r=[],n=new H(e),o=t.length,i=0;i<o;i++){var l=null;n.update(t[i]);try{l=n.getResult()}catch(t){l=null}r.push(l)}return r};function Rt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Tt=function(t,e){t=t.filter((function(t){return t instanceof p})),e=e.filter((function(t){return t instanceof p}));var r=Math.min(t.length,e.length);t=t.slice(-r),e=e.slice(-r);var n=t.map((function(t,r){if(t.eq(e[r]))return"neutral";if(t.gt(e[r]))return"up";if(t.lt(e[r]))return"down";throw Error("undefined error in findCrosses")})),o=At(n),i=o.map((function(t){return t.length}));return o.map((function(t,e){var r=i[e];return t.map((function(t,e){var n=r-e;return"neutral"===t&&(n=0),"up"===t&&(n*=1),"down"===t&&(n*=-1),n})).reverse()})).flat()},At=function(t){return 0===t.length?[]:t.reduce((function(t,e,r,n){if(0===r)t.push([e]);else{var o=n[r-1],i=t[t.length-1];e!==o?t.push([e]):i.push(e)}return t}),[])},xt=function(t,e){for(var r=e.bollinger_bands_upper,n=e.bollinger_bands_lower,o=new Array(t.length),i=0;i<t.length;i++)if(null!=r[i]&&null!=n[i]&&null!=t[i]){var l=new p(r[i]),c=new p(n[i]),u=new p(t[i]),a=l.minus(c);o[i]=u.minus(c).div(a).times(100)}else o[i]=null;return o};function Bt(t){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bt(t)}var Ct={getSMA:kt,getEMA:_t},It=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"SMA",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:14;if(t.length<e)return[];var o=[];e=parseInt(e),n=parseInt(n);for(var i=new Ot(e),l=t.length,c=0;c<l;c++){var u=null;i.update(t[c]);try{u=i.getResult()}catch(t){u=null}o.push(u)}o=o.filter((function(t){return t}));var a,s,h,f=(a={},s="rsi_".concat(e),h=o,(s=function(t){var e=function(t,e){if("object"!=Bt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Bt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Bt(e)?e:e+""}(s))in a?Object.defineProperty(a,s,{value:h,enumerable:!0,configurable:!0,writable:!0}):a[s]=h,a);if("string"==typeof r&&"number"==typeof n&&Ct.hasOwnProperty("get".concat(r))){var p=Ct["get".concat(r)](o,n);f["rsi_".concat(r,"_").concat(n)]=p,f["rsi_".concat(e,"_x_rsi_").concat(r,"_").concat(n)]=Tt(o,p)}return f};function Dt(t){return Dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dt(t)}function Vt(t){return function(t){if(Array.isArray(t))return Ft(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ft(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ft(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ft(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Nt=function(t){if(!t||0===t.length)throw new Error("Bins array is empty or not provided");var e=t[0],r=t[0];return t.forEach((function(t){t.grossVolume>e.grossVolume&&(e=t),t.grossVolume<r.grossVolume&&(r=t)})),{high:e,low:r}},Ht=function(t,e,r){var n,o,i,l=new Date(t[r][t[r].length-1]),c=new Date(l);c.setDate(c.getDate()-e),c.setHours(0,0,0,0);for(var u=(n={open:[],high:[],low:[],close:[],volume:[]},i=[],(o=function(t){var e=function(t,e){if("object"!=Dt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Dt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Dt(e)?e:e+""}(o=r))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,n),a=0;a<t[r].length;a++)new Date(t[r][a])>=c&&(u.open.push(t.open[a]),u.high.push(t.high[a]),u.low.push(t.low[a]),u.close.push(t.close[a]),u.volume.push(t.volume[a]),u[r].push(t[r][a]));return u};function Lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var qt=function(t){var e=t.open,r=t.high,n=t.low,o=t.close,i=e.length;if(![e,r,n,o].every((function(t){return Array.isArray(t)&&t.length>1&&t.length===i})))return{pattern:Array(i).fill("Neutral"),name:Array(i).fill("No Pattern"),score:Array(i).fill(0)};for(var l=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-4;return Math.abs(t-e)<r},c=function(t){return t.close<t.open},u={bullish:[{name:"Marubozu",condition:function(t,e,r){return c(t)&&c(e)&&(n=r).close>n.open&&r>2*e;var n},score:2},{name:"Engulfing",condition:function(t,e){return e.open<t.close&&e.close>t.open&&e.low<t.low&&e.high>t.high},score:2},{name:"Kicker",condition:function(t,e){return e.open<t.open&&e.close>e.open&&t.close<t.open},score:2},{name:"Morning Star",condition:function(t,e,r){return t.close>t.open&&e.close<e.open&&r.close>e.open},score:3},{name:"Piercing Line",condition:function(t,e){return e.close>t.close&&e.open<t.open&&e.close>(t.open+t.close)/2},score:1},{name:"Belt Hold",condition:function(t,e){return e.open>t.open&&l(e.close,e.high)&&l(t.close,t.low)},score:1},{name:"Harami",condition:function(t,e){return e.open>t.close&&e.close<t.open&&e.open<t.open&&e.close>t.close},score:1},{name:"Doji",condition:function(t,e){return l(e.close,e.open)&&e.high-e.low>Math.abs(e.close-e.open)},score:0}],bearish:[{name:"Marubozu",condition:function(t,e){return l(e.open,e.high)&&l(e.close,e.low)},score:-2},{name:"Engulfing",condition:function(t,e){return e.open>t.close&&e.close<t.open&&e.high>t.high&&e.low<t.low},score:-2},{name:"Kicker",condition:function(t,e){return e.open>t.open&&e.close<e.open&&t.close>t.open},score:-2},{name:"Evening Star",condition:function(t,e,r){return t.close<t.open&&e.close>e.open&&r.close<e.open},score:-3},{name:"Dark Cloud Cover",condition:function(t,e){return e.close<t.close&&e.open>t.open&&e.close<(t.open+t.close)/2},score:-1},{name:"Belt Hold",condition:function(t,e){return e.open<t.open&&l(e.close,e.low)&&l(t.close,t.high)},score:-1},{name:"Harami",condition:function(t,e){return e.open<t.close&&e.close>t.open&&e.open>t.open&&e.close<t.close},score:-1},{name:"Doji",condition:function(t,e){return l(e.close,e.open)&&e.high-e.low>Math.abs(e.close-e.open)},score:0}]},a=function(t,e,r){var n,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return Lt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Lt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return l=t.done,t},e:function(t){c=!0,i=t},f:function(){try{l||null==r.return||r.return()}finally{if(c)throw i}}}}(r);try{for(i.s();!(n=i.n()).done;){var l=n.value,c=l.name,u=l.condition,a=l.score;if(o){if(u(o,t,e))return{name:c,score:a}}else if(u(t,e))return{name:c,score:a}}}catch(t){i.e(t)}finally{i.f()}return null},s=["Neutral"],h=["No Pattern"],f=[0],p=2;p<i;p++){var v={open:e[p-1],high:r[p-1],low:n[p-1],close:o[p-1]},y={open:e[p],high:r[p],low:n[p],close:o[p]},b={open:e[p-2],high:r[p-2],low:n[p-2],close:o[p-2]},m=b?a(v,y,u.bullish,b)||a(v,y,u.bearish,b):a(v,y,u.bullish)||a(v,y,u.bearish);m?(s.push(m.score>0?"Bullish":"Bearish"),h.push(m.name),f.push(m.score)):(s.push("Neutral"),h.push("No Pattern"),f.push(0))}return{candle_pattern:s,candle_name:h,candle_score:f}};function Ut(t){return Ut="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ut(t)}function Gt(t){return function(t){if(Array.isArray(t))return Wt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Wt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Wt(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function $t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,zt(n.key),n)}}function zt(t){var e=function(t,e){if("object"!=Ut(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Ut(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ut(e)?e:e+""}var Kt=function(){return t=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var n=["open","high","low","close"];this.ohlcv={};for(var o=0,i=Object.keys(e);o<i.length;o++){var l=i[o];n.includes(l)&&(this.ohlcv[l]=e[l].slice(-r))}},(e=[{key:"init",value:function(){if(this.ohlcv.close.length<50)return console.log("PatternRecognizer requires at least 50 datapoints"),{chart_pattern:"Neutral",chart_score:0};for(var t=0,e=[{name:"Bullish Flag",condition:this.isBullishFlag.bind(this),score:2},{name:"Bearish Flag",condition:this.isBearishFlag.bind(this),score:-2},{name:"Bullish Pennant",condition:this.isBullishPennant.bind(this),score:2},{name:"Bearish Pennant",condition:this.isBearishPennant.bind(this),score:-2},{name:"Bearish Double Top",condition:this.isDoubleTop.bind(this),score:-1},{name:"Bullish Double Bottom",condition:this.isDoubleBottom.bind(this),score:1},{name:"Bearish Triple Top",condition:this.isTripleTop.bind(this),score:-1},{name:"Bullish Triple Bottom",condition:this.isTripleBottom.bind(this),score:1},{name:"Bearish Head And Shoulders",condition:this.isHeadAndShoulders.bind(this),score:-1},{name:"Bullish Inverse Head And Shoulders",condition:this.isInverseHeadAndShoulders.bind(this),score:1},{name:"Bearish Rising Wedge",condition:this.isRisingWedge.bind(this),score:-1},{name:"Bullish Falling Wedge",condition:this.isFallingWedge.bind(this),score:1},{name:"Bullish Triangle",condition:this.isBullishTriangle.bind(this),score:1},{name:"Bearish Triangle",condition:this.isBearishTriangle.bind(this),score:-1},{name:"Bullish Rectangle",condition:this.isBullishRectangle.bind(this),score:1},{name:"Bearish Rectangle",condition:this.isBearishRectangle.bind(this),score:-1}];t<e.length;t++){var r=e[t],n=r.name,o=r.condition,i=r.score;if(o())return{chart_pattern:n,chart_score:i}}return{chart_pattern:"Neutral",chart_score:0}}},{key:"isBullishFlag",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=(Math.floor(e/2),this.ohlcv.close[t-2*e]);if((this.ohlcv.close[t-e]-r)/r<.15)return!1;var n=this.ohlcv.close[t-e];if((n-this.ohlcv.close[t-1])/n>.05)return!1;for(var o=t-e;o<t-1;o++)if(this.ohlcv.high[o]>this.ohlcv.high[o+1]||this.ohlcv.low[o]>this.ohlcv.low[o+1])return!1;return!0}},{key:"isBearishFlag",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=(Math.floor(e/2),this.ohlcv.close[t-2*e]);if((r-this.ohlcv.close[t-e])/r<.15)return!1;var n=this.ohlcv.close[t-e];if((this.ohlcv.close[t-1]-n)/n>.05)return!1;for(var o=t-e;o<t-1;o++)if(this.ohlcv.high[o]<this.ohlcv.high[o+1]||this.ohlcv.low[o]<this.ohlcv.low[o+1])return!1;return!0}},{key:"isBullishPennant",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.floor(e/2),n=this.ohlcv.close[t-2*e];if((this.ohlcv.close[t-e]-n)/n<.15)return!1;var o=this.ohlcv.close[t-e];if((o-this.ohlcv.close[t-1])/o>.05)return!1;for(var i=t-r;i<t-1;i++)if(this.ohlcv.high[i]<this.ohlcv.high[i+1]&&this.ohlcv.low[i]<this.ohlcv.low[i+1]||this.ohlcv.high[i]>this.ohlcv.high[i+1]&&this.ohlcv.low[i]>this.ohlcv.low[i+1])return!1;return!0}},{key:"isBearishPennant",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.floor(e/2),n=this.ohlcv.close[t-2*e];if((n-this.ohlcv.close[t-e])/n<.15)return!1;var o=this.ohlcv.close[t-e];if((this.ohlcv.close[t-1]-o)/o>.05)return!1;for(var i=t-r;i<t-1;i++)if(this.ohlcv.high[i]>this.ohlcv.high[i+1]&&this.ohlcv.low[i]>this.ohlcv.low[i+1]||this.ohlcv.high[i]<this.ohlcv.high[i+1]&&this.ohlcv.low[i]<this.ohlcv.low[i+1])return!1;return!0}},{key:"isDoubleTop",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e)));if(r<=0||n<=0)return!1;var o=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e)));return!((r-o)/r<.1||(n-i)/n<.1)&&Math.abs(r-n)/r<.03}},{key:"isDoubleBottom",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e)));if(r<=0||n<=0)return!1;var o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),i=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e)));return!((o-r)/r<.1||(i-n)/n<.1)&&Math.abs(r-n)/r<.03}},{key:"isTripleTop",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=(r-Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))))/r,l=(n-Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))))/n,c=(o-Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e))))/o;return!(i<.1||l<.1||c<.1)&&Math.abs(r-n)/r<.03&&Math.abs(r-o)/r<.03}},{key:"isTripleBottom",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=(Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e)))-r)/r,l=(Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e)))-n)/n,c=(Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e)))-o)/o;return!(i<.1||l<.1||c<.1)&&Math.abs(r-n)/r<.03&&Math.abs(r-o)/r<.03}},{key:"isHeadAndShoulders",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e))),u=(n-l)/n,a=(Math.max(i,c)-Math.min(i,c))/Math.min(i,c);return u>.15&&a<.03}},{key:"isInverseHeadAndShoulders",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e))),u=(l-n)/n,a=(Math.min(i,c)-Math.max(i,c))/Math.max(i,c);return u>.15&&a<.03}},{key:"isRisingWedge",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));return r<n&&n<o&&i<l&&l<c}},{key:"isFallingWedge",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));return r>n&&n>o&&i>l&&l>c}},{key:"isBullishTriangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e))),o=Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e))),i=Math.min.apply(Math,Gt(this.ohlcv.low.slice(e)));return r>n&&o<i}},{key:"isBearishTriangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e)));return Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e)))<Math.min.apply(Math,Gt(this.ohlcv.low.slice(e)))&&r>n}},{key:"isBullishRectangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.high.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.low.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.low.slice(2*e))),u=Math.abs(r-n)/r<.03&&Math.abs(n-o)/n<.03,a=Math.abs(i-l)/i<.03&&Math.abs(l-c)/l<.03;return u&&a}},{key:"isBearishRectangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.high.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.low.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.low.slice(2*e))),u=Math.abs(r-n)/r<.03&&Math.abs(n-o)/n<.03,a=Math.abs(i-l)/i<.03&&Math.abs(l-c)/l<.03;return u&&a}}])&&$t(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),Jt=["open","high","low","close","volume"];function Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Xt(t){return function(t){if(Array.isArray(t))return te(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Zt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Yt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,l,c=[],u=!0,a=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){a=!0,o=t}finally{try{if(!u&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(a)throw o}}return c}}(t,e)||Zt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zt(t,e){if(t){if("string"==typeof t)return te(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?te(t,e):void 0}}function te(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function ee(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,re(n.key),n)}}function re(t){var e=function(t,e){if("object"!=Qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Qt(e)?e:e+""}var ne=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ChartPatterns=function(t){return new Kt(t).init()}},e=[{key:"init",value:function(t){return this.crossPairsArr=[],this.ohlcv=t.reduce((function(t,e){var r=e.open,n=e.high,o=e.low,i=e.close,l=e.volume,c=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.includes(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.includes(r)||{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,Jt);t.open.push(new p(r)),t.high.push(new p(n)),t.low.push(new p(o)),t.close.push(new p(i)),t.volume.push(new p(l));for(var u=0,a=Object.keys(c);u<a.length;u++){var s=a[u];t[s]||(t[s]=[]),t[s].push(c[s])}return t}),{open:[],high:[],low:[],close:[],volume:[]}),this}},{key:"getData",value:function(){var t=this.ohlcv,e=Object.keys(t),r=e.length;return t.open.map((function(n,o){for(var i={},l=0;l<r;l++){var c=e[l],u=t[c][o];i[c]=u instanceof p?u.toNumber():u}return i}))}},{key:"getLastValues",value:function(){for(var t={},e=0,r=Object.entries(this.ohlcv);e<r.length;e++){var n=Yt(r[e],2),o=n[0],i=n[1],l=i[i.length-1];t[o]=l instanceof p?l.toNumber():l}return t}},{key:"addObjectColumns",value:function(t){for(var e=0,r=Object.entries(t);e<r.length;e++){var n=Yt(r[e],2),o=n[0],i=n[1];this.addColumn(o,i)}}},{key:"addColumn",value:function(t,e){t=t.toLowerCase();var r=this.ohlcv.open.length;if(e.length>r)throw new Error("Invalid column data: The length of the new column exceeds the length of the OHLCV data");var n=new Array(r-e.length).fill(null);e=[].concat(Xt(n),Xt(e)),this.ohlcv[t]=e}},{key:"crossPairs",value:function(t){return function(t,e){var r,n=t.ohlcv,o={},i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return Rt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Rt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return l=t.done,t},e:function(t){c=!0,i=t},f:function(){try{l||null==r.return||r.return()}finally{if(c)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var l=r.value,c=l.fast,u=l.slow;if(c&&u){"number"!=typeof u||o[u]||(o[u]=Array(n.close.length).fill(new p(u)));var a="".concat(c,"_x_").concat(u);if(n[c]&&n[u]){var s=Tt(n[c],n[u]);t.addColumn(a,s)}else if(n[c]&&o[u]){var h=Tt(n[c],o[u]);t.addColumn(a,h)}else console.log("Missing ohlcv properties for ".concat(c," or ").concat(u))}}}catch(t){i.e(t)}finally{i.f()}}(this,t),this}},{key:"ema",value:function(t){var e=this.ohlcv.close;return this.addObjectColumns(function(t,e){var r=_t(t,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Pt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Pt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"ema_".concat(e),r)}(e,t)),this}},{key:"sma",value:function(t){var e=this.ohlcv.close;return this.addObjectColumns(function(t,e){var r=kt(t,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Et(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Et(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Et(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"sma_".concat(e),r)}(e,t)),this}},{key:"macd",value:function(t,e,r){var n=this.ohlcv.close;return this.addObjectColumns(function(t,e,r,n){var o=Math.max(e,r,n);return function(t){for(var e=[],r=[],n=[],o=new yt({indicator:st,shortInterval:arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,longInterval:arguments.length>2&&void 0!==arguments[2]?arguments[2]:26,signalInterval:arguments.length>3&&void 0!==arguments[3]?arguments[3]:9}),i=t.length,l=0;l<i;l++){var c={};o.update(t[l]);try{c=o.getResult()}catch(t){c={macd:null,signal:null,histogram:null}}e.push(c.macd),r.push(c.signal),n.push(c.histogram)}return{macd_diff:e,macd_dea:r,macd_histogram:n,macd_diff_x_macd_dea:Tt(e,r)}}(t.slice(-3*o),e,r,n)}(n,t,e,r)),this}},{key:"bollingerBands",value:function(t,e){var r=this.ohlcv.close;return this.addObjectColumns(function(t,e,r){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,n=t.length,o={bollinger_bands_upper:[],bollinger_bands_middle:[],bollinger_bands_lower:[]},i=new et(e,r),l=0;l<n;l++){var c={};i.update(t[l]);try{c=i.getResult()}catch(t){c={upper:null,middle:null,lower:null}}o.bollinger_bands_upper.push(c.upper),o.bollinger_bands_middle.push(c.middle),o.bollinger_bands_lower.push(c.lower)}var u=o.bollinger_bands_upper,a=o.bollinger_bands_middle,s=o.bollinger_bands_lower;return{bollinger_bands_upper:u,bollinger_bands_middle:a,bollinger_bands_lower:s,bollinger_bands_range:xt(t,{bollinger_bands_upper:u,bollinger_bands_lower:s})}}(t.slice(-3*e),e,r)}(r,t,e)),this}},{key:"rsi",value:function(t,e,r){var n=this.ohlcv.close;return this.addObjectColumns(function(t,e,r,n){var o=t.slice(-3*e);return"number"==typeof e&&void 0===n&&(n=e),It(o,e,r,n)}(n,t,e,r)),this}},{key:"candles",value:function(){var t=this.ohlcv;return this.addObjectColumns(function(t){return qt(t)}(t)),this}},{key:"volumeProfile",value:function(t,e,r){var n=this.ohlcv;return this.addObjectColumns(function(t,e){var r=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,r=t.open,n=t.high,o=t.low,i=t.close,l=t.volume,c=Math.min.apply(Math,Vt(o)),u=(Math.max.apply(Math,Vt(n))-c)/e,a={upVolume:0,downVolume:0,grossVolume:0},s=Array.from({length:e},(function(t,e){return{price:c+u*e,upVolume:0,downVolume:0,grossVolume:0}})),h=1/u,f=0;f<i.length;f++)for(var p=i[f],v=r[f],y=n[f],b=o[f],m=l[f],d=p>=v?m:0,g=p<v?m:0,w=Math.max(0,Math.floor((b-c)*h)),M=Math.min(e,Math.ceil((y-c)*h)),S=w;S<M;S++)s[S].upVolume+=d,s[S].downVolume+=g,s[S].grossVolume+=d+g;for(var j=0,O=s;j<O.length;j++){var P=O[j],_=P.upVolume,E=P.downVolume,k=P.grossVolume;a.upVolume+=_,a.downVolume+=E,a.grossVolume+=k}return{bins:s,nodes:Nt(s)}}(Ht(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,arguments.length>3?arguments[3]:void 0),e);return{volume_profile_high:[r.nodes.high.price],volume_profile_low:[r.nodes.low.price]}}(n,t,e,r)),this}}],e&&ee(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
1
+ var OHLCV_INDICATORS;(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{t.r(e),t.d(e,{default:()=>ne});var r=1e6,n="[big.js] ",o=n+"Invalid ",i=o+"decimal places",l=o+"rounding mode",c=n+"Division by zero",u={},a=void 0,s=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function h(t,e,r,n){var o=t.c;if(r===a&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(l);if(e<1)n=3===r&&(n||!!o[0])||0===e&&(1===r&&o[0]>=5||2===r&&(o[0]>5||5===o[0]&&(n||o[1]!==a))),o.length=1,n?(t.e=t.e-e+1,o[0]=1):o[0]=t.e=0;else if(e<o.length){if(n=1===r&&o[e]>=5||2===r&&(o[e]>5||5===o[e]&&(n||o[e+1]!==a||1&o[e-1]))||3===r&&(n||!!o[0]),o.length=e,n)for(;++o[--e]>9;)if(o[e]=0,0===e){++t.e,o.unshift(1);break}for(e=o.length;!o[--e];)o.pop()}return t}function f(t,e,r){var n=t.e,o=t.c.join(""),i=o.length;if(e)o=o.charAt(0)+(i>1?"."+o.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)o="0"+o;o="0."+o}else if(n>0)if(++n>i)for(n-=i;n--;)o+="0";else n<i&&(o=o.slice(0,n)+"."+o.slice(n));else i>1&&(o=o.charAt(0)+"."+o.slice(1));return t.s<0&&r?"-"+o:o}u.abs=function(){var t=new this.constructor(this);return t.s=1,t},u.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,l=t.s,c=r.e,u=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-l:0;if(i!=l)return i;if(e=i<0,c!=u)return c>u^e?1:-1;for(l=(c=n.length)<(u=o.length)?c:u,i=-1;++i<l;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return c==u?0:c>u^e?1:-1},u.div=function(t){var e=this,n=e.constructor,o=e.c,l=(t=new n(t)).c,u=e.s==t.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>r)throw Error(i);if(!l[0])throw Error(c);if(!o[0])return t.s=u,t.c=[t.e=0],t;var f,p,v,y,b,m=l.slice(),d=f=l.length,g=o.length,w=o.slice(0,f),M=w.length,S=t,j=S.c=[],O=0,P=s+(S.e=e.e-t.e)+1;for(S.s=u,u=P<0?0:P,m.unshift(0);M++<f;)w.push(0);do{for(v=0;v<10;v++){if(f!=(M=w.length))y=f>M?1:-1;else for(b=-1,y=0;++b<f;)if(l[b]!=w[b]){y=l[b]>w[b]?1:-1;break}if(!(y<0))break;for(p=M==f?l:m;M;){if(w[--M]<p[M]){for(b=M;b&&!w[--b];)w[b]=9;--w[b],w[M]+=10}w[M]-=p[M]}for(;!w[0];)w.shift()}j[O++]=y?v:++v,w[0]&&y?w[M]=o[d]||0:w=[o[d]]}while((d++<g||w[0]!==a)&&u--);return j[0]||1==O||(j.shift(),S.e--,P--),O>P&&h(S,P,n.RM,w[0]!==a),S},u.eq=function(t){return 0===this.cmp(t)},u.gt=function(t){return this.cmp(t)>0},u.gte=function(t){return this.cmp(t)>-1},u.lt=function(t){return this.cmp(t)<0},u.lte=function(t){return this.cmp(t)<1},u.minus=u.sub=function(t){var e,r,n,o,i=this,l=i.constructor,c=i.s,u=(t=new l(t)).s;if(c!=u)return t.s=-u,i.plus(t);var a=i.c.slice(),s=i.e,h=t.c,f=t.e;if(!a[0]||!h[0])return h[0]?t.s=-u:a[0]?t=new l(i):t.s=1,t;if(c=s-f){for((o=c<0)?(c=-c,n=a):(f=s,n=h),n.reverse(),u=c;u--;)n.push(0);n.reverse()}else for(r=((o=a.length<h.length)?a:h).length,c=u=0;u<r;u++)if(a[u]!=h[u]){o=a[u]<h[u];break}if(o&&(n=a,a=h,h=n,t.s=-t.s),(u=(r=h.length)-(e=a.length))>0)for(;u--;)a[e++]=0;for(u=e;r>c;){if(a[--r]<h[r]){for(e=r;e&&!a[--e];)a[e]=9;--a[e],a[r]+=10}a[r]-=h[r]}for(;0===a[--u];)a.pop();for(;0===a[0];)a.shift(),--f;return a[0]||(t.s=1,a=[f=0]),t.c=a,t.e=f,t},u.mod=function(t){var e,r=this,n=r.constructor,o=r.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(c);return r.s=t.s=1,e=1==t.cmp(r),r.s=o,t.s=i,e?new n(r):(o=n.DP,i=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=o,n.RM=i,this.minus(r.times(t)))},u.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},u.plus=u.add=function(t){var e,r,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var l=o.e,c=o.c,u=t.e,a=t.c;if(!c[0]||!a[0])return a[0]||(c[0]?t=new i(o):t.s=o.s),t;if(c=c.slice(),e=l-u){for(e>0?(u=l,n=a):(e=-e,n=c),n.reverse();e--;)n.push(0);n.reverse()}for(c.length-a.length<0&&(n=a,a=c,c=n),e=a.length,r=0;e;c[e]%=10)r=(c[--e]=c[e]+a[e]+r)/10|0;for(r&&(c.unshift(r),++u),e=c.length;0===c[--e];)c.pop();return t.c=c,t.e=u,t},u.pow=function(t){var e=this,r=new e.constructor("1"),n=r,i=t<0;if(t!==~~t||t<-1e6||t>1e6)throw Error(o+"exponent");for(i&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return i?r.div(n):n},u.prec=function(t,e){if(t!==~~t||t<1||t>r)throw Error(o+"precision");return h(new this.constructor(this),t,e)},u.round=function(t,e){if(t===a)t=0;else if(t!==~~t||t<-r||t>r)throw Error(i);return h(new this.constructor(this),t+this.e+1,e)},u.sqrt=function(){var t,e,r,o=this,i=o.constructor,l=o.s,c=o.e,u=new i("0.5");if(!o.c[0])return new i(o);if(l<0)throw Error(n+"No square root");0===(l=Math.sqrt(o+""))||l===1/0?((e=o.c.join("")).length+c&1||(e+="0"),c=((c+1)/2|0)-(c<0||1&c),t=new i(((l=Math.sqrt(e))==1/0?"5e":(l=l.toExponential()).slice(0,l.indexOf("e")+1))+c)):t=new i(l+""),c=t.e+(i.DP+=4);do{r=t,t=u.times(r.plus(o.div(r)))}while(r.c.slice(0,c).join("")!==t.c.slice(0,c).join(""));return h(t,(i.DP-=4)+t.e+1,i.RM)},u.times=u.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,l=o.length,c=i.length,u=r.e,a=t.e;if(t.s=r.s==t.s?1:-1,!o[0]||!i[0])return t.c=[t.e=0],t;for(t.e=u+a,l<c&&(e=o,o=i,i=e,a=l,l=c,c=a),e=new Array(a=l+c);a--;)e[a]=0;for(u=c;u--;){for(c=0,a=l+u;a>u;)c=e[a]+i[u]*o[a-u-1]+c,e[a--]=c%10,c=c/10|0;e[a]=c}for(c?++t.e:e.shift(),u=e.length;!e[--u];)e.pop();return t.c=e,t},u.toExponential=function(t,e){var n=this,o=n.c[0];if(t!==a){if(t!==~~t||t<0||t>r)throw Error(i);for(n=h(new n.constructor(n),++t,e);n.c.length<t;)n.c.push(0)}return f(n,!0,!!o)},u.toFixed=function(t,e){var n=this,o=n.c[0];if(t!==a){if(t!==~~t||t<0||t>r)throw Error(i);for(t=t+(n=h(new n.constructor(n),t+n.e+1,e)).e+1;n.c.length<t;)n.c.push(0)}return f(n,!1,!!o)},u[Symbol.for("nodejs.util.inspect.custom")]=u.toJSON=u.toString=function(){var t=this,e=t.constructor;return f(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},u.toNumber=function(){var t=Number(f(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(n+"Imprecise conversion");return t},u.toPrecision=function(t,e){var n=this,i=n.constructor,l=n.c[0];if(t!==a){if(t!==~~t||t<1||t>r)throw Error(o+"precision");for(n=h(new i(n),t,e);n.c.length<t;)n.c.push(0)}return f(n,t<=n.e||n.e<=i.NE||n.e>=i.PE,!!l)},u.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(n+"valueOf disallowed");return f(t,t.e<=e.NE||t.e>=e.PE,!0)};const p=function t(){function e(r){var n=this;if(!(n instanceof e))return r===a?t():new e(r);if(r instanceof e)n.s=r.s,n.e=r.e,n.c=r.c.slice();else{if("string"!=typeof r){if(!0===e.strict&&"bigint"!=typeof r)throw TypeError(o+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,i;if(!s.test(e))throw Error(o+"number");for(t.s="-"==e.charAt(0)?(e=e.slice(1),-1):1,(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),i=e.length,n=0;n<i&&"0"==e.charAt(n);)++n;if(n==i)t.c=[t.e=0];else{for(;i>0&&"0"==e.charAt(--i););for(t.e=r-n-1,t.c=[],r=0;n<=i;)t.c[r++]=+e.charAt(n++)}}(n,r)}n.constructor=e}return e.prototype=u,e.DP=20,e.RM=1,e.NE=-7,e.PE=21,e.strict=!1,e.roundDown=0,e.roundHalfUp=1,e.roundHalfEven=2,e.roundUp=3,e}();function v(t){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},v(t)}function y(t){var e="function"==typeof Map?new Map:void 0;return y=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(b())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&m(o,r.prototype),o}(t,arguments,d(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),m(r,t)},y(t)}function b(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(b=function(){return!!t})()}function m(t,e){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},m(t,e)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}var g=function(t){function e(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Not enough data";return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t=function(t,e,r){return e=d(e),function(t,e){if(e&&("object"==v(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,b()?Reflect.construct(e,r||[],d(t).constructor):e.apply(t,r))}(this,e,[r]),Object.setPrototypeOf(t,(this instanceof e?this.constructor:void 0).prototype),t.name="NotEnoughDataError",t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&m(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(y(Error));function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function M(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,j(n.key),n)}}function S(t,e,r){return(e=j(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function j(t){var e=function(t,e){if("object"!=w(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==w(e)?e:e+""}var O=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),S(this,"previousHighest",void 0),S(this,"highest",void 0),S(this,"previousLowest",void 0),S(this,"lowest",void 0),S(this,"previousResult",void 0),S(this,"result",void 0)},(e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"getResult",value:function(){if(void 0===this.result)throw new g;return this.result}},{key:"setResult",value:function(t,e){return e&&(this.highest=this.previousHighest,this.lowest=this.previousLowest,this.result=this.previousResult),void 0===this.highest?this.highest=t:t.gt(this.highest)?(this.previousHighest=this.highest,this.highest=t):this.previousHighest=this.highest,void 0===this.lowest?this.lowest=t:t.lt(this.lowest)?(this.previousLowest=this.lowest,this.lowest=t):this.previousLowest=this.lowest,this.previousResult=this.result,this.result=t}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&M(t.prototype,e),r&&M(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function P(t){return P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},P(t)}function _(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,A(n.key),n)}}function E(t,e,r){return e=R(e),function(t,e){if(e&&("object"==P(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,k()?Reflect.construct(e,r||[],R(t).constructor):e.apply(t,r))}function k(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(k=function(){return!!t})()}function R(t){return R=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},R(t)}function T(t,e){return T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},T(t,e)}function A(t){var e=function(t,e){if("object"!=P(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=P(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==P(e)?e:e+""}var x=function(t){function e(t){var r,n,o,i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=E(this,e),i=void 0,(o=A(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,r.interval=t,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&T(t,e)}(e,t),r=e,(n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&_(r.prototype,n),o&&_(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(O);function B(t){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(t)}function C(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,N(n.key),n)}}function I(t,e,r){return e=V(e),function(t,e){if(e&&("object"==B(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,D()?Reflect.construct(e,r||[],V(t).constructor):e.apply(t,r))}function D(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(D=function(){return!!t})()}function V(t){return V=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},V(t)}function F(t,e){return F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},F(t,e)}function N(t){var e=function(t,e){if("object"!=B(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==B(e)?e:e+""}var H=function(t){function e(){var t,r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,l=new Array(i),c=0;c<i;c++)l[c]=arguments[c];return r=t=I(this,e,[].concat(l)),o=[],(n=N(n="prices"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&F(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.prices.length&&r?this.prices[this.prices.length-1]=t:this.prices.push(t),this.prices.length>this.interval&&this.prices.shift(),this.prices.length===this.interval)return this.setResult(e.getResultFromBatch(this.prices),r)}}],o=[{key:"getResultFromBatch",value:function(t){return t.reduce((function(t,e){return t.plus(e)}),new p("0")).div(t.length||1)}}],n&&C(r.prototype,n),o&&C(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(x);function L(t){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},L(t)}function q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function U(t,e,r){return e=W(e),function(t,e){if(e&&("object"==L(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,G()?Reflect.construct(e,r||[],W(t).constructor):e.apply(t,r))}function G(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(G=function(){return!!t})()}function W(t){return W=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},W(t)}function $(t,e){return $=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},$(t,e)}function z(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t,e){if("object"!=L(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=L(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==L(e)?e:e+""}var J=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),z(r=U(this,e,[t]),"interval",void 0),z(r,"indicator",void 0),z(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new H(t),r.smoothingFactor=new p(1).div(r.interval),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&$(t,e)}(e,t),r=e,n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.indicator.update(t,e);if(e&&this.previousResult){var n=new p(t).minus(this.previousResult).mul(this.smoothingFactor);return this.setResult(n.plus(this.previousResult),e)}if(!e&&this.result){var o=new p(t).minus(this.result).mul(this.smoothingFactor);return this.setResult(o.plus(this.result),e)}if(void 0===this.result&&r)return this.setResult(r,e)}}],n&&q(r.prototype,n),o&&q(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(x);function Q(t){return t.reduce((function(t,e){return t.add(e)}),new p(0)).div(t.length||1)}function X(t){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},X(t)}function Y(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,tt(n.key),n)}}function Z(t,e,r){return(e=tt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function tt(t){var e=function(t,e){if("object"!=X(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=X(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==X(e)?e:e+""}var et=function(){return t=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),Z(this,"interval",void 0),Z(this,"deviationMultiplier",void 0),Z(this,"prices",[]),Z(this,"result",void 0),this.interval=e,this.deviationMultiplier=r},(e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){if(this.prices.push(new p(t)),this.prices.length>this.interval){this.prices.shift();var e=H.getResultFromBatch(this.prices),r=function(t,e){var r=e||Q(t);return Q(t.map((function(t){return new p(t).sub(r).pow(2)}))).sqrt()}(this.prices,e);return this.result={lower:e.sub(r.times(this.deviationMultiplier)),middle:e,upper:e.add(r.times(this.deviationMultiplier))}}}},{key:"getResult",value:function(){if(void 0===this.result)throw new g;return this.result}}])&&Y(t.prototype,e),r&&Y(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function rt(t){return rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rt(t)}function nt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,at(n.key),n)}}function ot(t,e,r){return e=lt(e),function(t,e){if(e&&("object"==rt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,it()?Reflect.construct(e,r||[],lt(t).constructor):e.apply(t,r))}function it(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(it=function(){return!!t})()}function lt(t){return lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},lt(t)}function ct(t,e){return ct=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},ct(t,e)}function ut(t,e,r){return(e=at(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function at(t){var e=function(t,e){if("object"!=rt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==rt(e)?e:e+""}var st=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),ut(r=ot(this,e,[t]),"interval",void 0),ut(r,"pricesCounter",0),ut(r,"weightFactor",void 0),r.interval=t,r.weightFactor=2/(r.interval+1),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ct(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];r?r&&0===this.pricesCounter&&this.pricesCounter++:this.pricesCounter++;var n=new p(t);return r&&this.previousResult?this.setResult(n.times(this.weightFactor).add(this.previousResult.times(1-this.weightFactor)),r):this.setResult(n.times(this.weightFactor).add((null!==(e=this.result)&&void 0!==e?e:n).times(1-this.weightFactor)),r)}},{key:"getResult",value:function(){if(this.pricesCounter<this.interval)throw new g;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&nt(r.prototype,n),o&&nt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(x);function ht(t){return ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ht(t)}function ft(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,vt(n.key),n)}}function pt(t,e,r){return(e=vt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function vt(t){var e=function(t,e){if("object"!=ht(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ht(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ht(e)?e:e+""}var yt=function(){return t=function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),pt(this,"prices",[]),pt(this,"long",void 0),pt(this,"short",void 0),pt(this,"signal",void 0),pt(this,"result",void 0),this.long=new e.indicator(e.longInterval),this.short=new e.indicator(e.shortInterval),this.signal=new e.indicator(e.signalInterval)},e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=new p(t);this.prices.length&&e?this.prices[this.prices.length-1]=r:this.prices.push(r);var n=this.short.update(r,e),o=this.long.update(r,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var i=n.sub(o),l=this.signal.update(i);return this.result={histogram:i.sub(l),macd:i,signal:l}}}},{key:"getResult",value:function(){if(!this.isStable||void 0===this.result)throw new g;return this.result}}],e&&ft(t.prototype,e),r&&ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function bt(t){return bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bt(t)}function mt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,jt(n.key),n)}}function dt(t,e,r){return e=wt(e),function(t,e){if(e&&("object"==bt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,gt()?Reflect.construct(e,r||[],wt(t).constructor):e.apply(t,r))}function gt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(gt=function(){return!!t})()}function wt(t){return wt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},wt(t)}function Mt(t,e){return Mt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Mt(t,e)}function St(t,e,r){return(e=jt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function jt(t){var e=function(t,e){if("object"!=bt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=bt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==bt(e)?e:e+""}var Ot=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:J;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),St(r=dt(this,e),"interval",void 0),St(r,"previousPrices",[]),St(r,"avgGain",void 0),St(r,"avgLoss",void 0),St(r,"maxValue",new p(100)),r.interval=t,r.avgGain=new n(r.interval),r.avgLoss=new n(r.interval),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Mt(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&e?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var r=new p(t),n=new p(this.previousPrices[this.previousPrices.length-2]);if(r.gt(n)?(this.avgLoss.update(new p(0),e),this.avgGain.update(r.sub(n),e)):(this.avgLoss.update(n.sub(r),e),this.avgGain.update(new p(0),e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(o.eq(0))return this.setResult(new p(100),e);var i=this.avgGain.getResult().div(o);return this.setResult(this.maxValue.minus(this.maxValue.div(i.add(1))),e)}}}}],n&&mt(r.prototype,n),o&&mt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(O);function Pt(t){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Pt(t)}var _t=function(t,e){for(var r=[],n=new st(e),o=t.length,i=0;i<o;i++){var l=null;n.update(t[i]);try{l=n.getResult()}catch(t){l=null}r.push(l)}return r};function Et(t){return Et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Et(t)}var kt=function(t,e){for(var r=[],n=new H(e),o=t.length,i=0;i<o;i++){var l=null;n.update(t[i]);try{l=n.getResult()}catch(t){l=null}r.push(l)}return r};function Rt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Tt=function(t,e){t=t.filter((function(t){return t instanceof p})),e=e.filter((function(t){return t instanceof p}));var r=Math.min(t.length,e.length);t=t.slice(-r),e=e.slice(-r);var n=t.map((function(t,r){if(t.eq(e[r]))return"neutral";if(t.gt(e[r]))return"up";if(t.lt(e[r]))return"down";throw Error("undefined error in findCrosses")})),o=At(n),i=o.map((function(t){return t.length}));return o.map((function(t,e){var r=i[e];return t.map((function(t,e){var n=r-e;return"neutral"===t&&(n=0),"up"===t&&(n*=1),"down"===t&&(n*=-1),n})).reverse()})).flat()},At=function(t){return 0===t.length?[]:t.reduce((function(t,e,r,n){if(0===r)t.push([e]);else{var o=n[r-1],i=t[t.length-1];e!==o?t.push([e]):i.push(e)}return t}),[])},xt=function(t,e){for(var r=e.bollinger_bands_upper,n=e.bollinger_bands_lower,o=new Array(t.length),i=0;i<t.length;i++)if(null!=r[i]&&null!=n[i]&&null!=t[i]){var l=new p(r[i]),c=new p(n[i]),u=new p(t[i]),a=l.minus(c);o[i]=u.minus(c).div(a).times(100)}else o[i]=null;return o};function Bt(t){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bt(t)}var Ct={getSMA:kt,getEMA:_t},It=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"SMA",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:14;if(t.length<e)return[];var o=[];e=parseInt(e),n=parseInt(n);for(var i=new Ot(e),l=t.length,c=0;c<l;c++){var u=null;i.update(t[c]);try{u=i.getResult()}catch(t){u=null}o.push(u)}o=o.filter((function(t){return t}));var a,s,h,f=(a={},s="rsi_".concat(e),h=o,(s=function(t){var e=function(t,e){if("object"!=Bt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Bt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Bt(e)?e:e+""}(s))in a?Object.defineProperty(a,s,{value:h,enumerable:!0,configurable:!0,writable:!0}):a[s]=h,a);if("string"==typeof r&&"number"==typeof n&&Ct.hasOwnProperty("get".concat(r))){var p=Ct["get".concat(r)](o,n);f["rsi_".concat(r,"_").concat(n)]=p,f["rsi_".concat(e,"_x_rsi_").concat(r,"_").concat(n)]=Tt(o,p)}return f};function Dt(t){return Dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dt(t)}function Vt(t){return function(t){if(Array.isArray(t))return Ft(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ft(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ft(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ft(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Nt=function(t){if(!t||0===t.length)throw new Error("Bins array is empty or not provided");var e=t[0],r=t[0];return t.forEach((function(t){t.grossVolume>e.grossVolume&&(e=t),t.grossVolume<r.grossVolume&&(r=t)})),{high:e,low:r}},Ht=function(t,e,r){var n,o,i,l=new Date(t[r][t[r].length-1]),c=new Date(l);c.setDate(c.getDate()-e),c.setHours(0,0,0,0);for(var u=(n={open:[],high:[],low:[],close:[],volume:[]},i=[],(o=function(t){var e=function(t,e){if("object"!=Dt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Dt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Dt(e)?e:e+""}(o=r))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,n),a=0;a<t[r].length;a++)new Date(t[r][a])>=c&&(u.open.push(t.open[a]),u.high.push(t.high[a]),u.low.push(t.low[a]),u.close.push(t.close[a]),u.volume.push(t.volume[a]),u[r].push(t[r][a]));return u};function Lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var qt=function(t){var e=t.open,r=t.high,n=t.low,o=t.close,i=e.length;if(![e,r,n,o].every((function(t){return Array.isArray(t)&&t.length>1&&t.length===i})))return{pattern:Array(i).fill("Neutral"),name:Array(i).fill("No Pattern"),score:Array(i).fill(0)};for(var l=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-4;return Math.abs(t-e)<r},c=function(t){return t.close<t.open},u={bullish:[{name:"Marubozu",condition:function(t,e,r){return c(t)&&c(e)&&(n=r).close>n.open&&r>2*e;var n},score:2},{name:"Engulfing",condition:function(t,e){return e.open<t.close&&e.close>t.open&&e.low<t.low&&e.high>t.high},score:2},{name:"Kicker",condition:function(t,e){return e.open<t.open&&e.close>e.open&&t.close<t.open},score:2},{name:"Morning Star",condition:function(t,e,r){return t.close>t.open&&e.close<e.open&&r.close>e.open},score:3},{name:"Piercing Line",condition:function(t,e){return e.close>t.close&&e.open<t.open&&e.close>(t.open+t.close)/2},score:1},{name:"Belt Hold",condition:function(t,e){return e.open>t.open&&l(e.close,e.high)&&l(t.close,t.low)},score:1},{name:"Harami",condition:function(t,e){return e.open>t.close&&e.close<t.open&&e.open<t.open&&e.close>t.close},score:1},{name:"Doji",condition:function(t,e){return l(e.close,e.open)&&e.high-e.low>Math.abs(e.close-e.open)},score:0}],bearish:[{name:"Marubozu",condition:function(t,e){return l(e.open,e.high)&&l(e.close,e.low)},score:-2},{name:"Engulfing",condition:function(t,e){return e.open>t.close&&e.close<t.open&&e.high>t.high&&e.low<t.low},score:-2},{name:"Kicker",condition:function(t,e){return e.open>t.open&&e.close<e.open&&t.close>t.open},score:-2},{name:"Evening Star",condition:function(t,e,r){return t.close<t.open&&e.close>e.open&&r.close<e.open},score:-3},{name:"Dark Cloud Cover",condition:function(t,e){return e.close<t.close&&e.open>t.open&&e.close<(t.open+t.close)/2},score:-1},{name:"Belt Hold",condition:function(t,e){return e.open<t.open&&l(e.close,e.low)&&l(t.close,t.high)},score:-1},{name:"Harami",condition:function(t,e){return e.open<t.close&&e.close>t.open&&e.open>t.open&&e.close<t.close},score:-1},{name:"Doji",condition:function(t,e){return l(e.close,e.open)&&e.high-e.low>Math.abs(e.close-e.open)},score:0}]},a=function(t,e,r){var n,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return Lt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Lt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return l=t.done,t},e:function(t){c=!0,i=t},f:function(){try{l||null==r.return||r.return()}finally{if(c)throw i}}}}(r);try{for(i.s();!(n=i.n()).done;){var l=n.value,c=l.name,u=l.condition,a=l.score;if(o){if(u(o,t,e))return{name:c,score:a}}else if(u(t,e))return{name:c,score:a}}}catch(t){i.e(t)}finally{i.f()}return null},s=["Neutral"],h=["No Pattern"],f=[0],p=2;p<i;p++){var v={open:e[p-1],high:r[p-1],low:n[p-1],close:o[p-1]},y={open:e[p],high:r[p],low:n[p],close:o[p]},b={open:e[p-2],high:r[p-2],low:n[p-2],close:o[p-2]},m=b?a(v,y,u.bullish,b)||a(v,y,u.bearish,b):a(v,y,u.bullish)||a(v,y,u.bearish);m?(s.push(m.score>0?"Bullish":"Bearish"),h.push(m.name),f.push(m.score)):(s.push("Neutral"),h.push("No Pattern"),f.push(0))}return{candle_pattern:s,candle_name:h,candle_score:f}};function Ut(t){return Ut="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ut(t)}function Gt(t){return function(t){if(Array.isArray(t))return Wt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Wt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Wt(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Wt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function $t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,zt(n.key),n)}}function zt(t){var e=function(t,e){if("object"!=Ut(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Ut(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ut(e)?e:e+""}var Kt=function(){return t=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var n=["open","high","low","close"];this.ohlcv={};for(var o=0,i=Object.keys(e);o<i.length;o++){var l=i[o];n.includes(l)&&(this.ohlcv[l]=e[l].slice(-r))}},(e=[{key:"init",value:function(){if(this.ohlcv.close.length<50)return console.log("PatternRecognizer requires at least 50 datapoints"),{chart_pattern:"Neutral",chart_score:0};for(var t=0,e=[{name:"Bullish Flag",condition:this.isBullishFlag.bind(this),score:2},{name:"Bearish Flag",condition:this.isBearishFlag.bind(this),score:-2},{name:"Bullish Pennant",condition:this.isBullishPennant.bind(this),score:2},{name:"Bearish Pennant",condition:this.isBearishPennant.bind(this),score:-2},{name:"Bearish Double Top",condition:this.isDoubleTop.bind(this),score:-1},{name:"Bullish Double Bottom",condition:this.isDoubleBottom.bind(this),score:1},{name:"Bearish Triple Top",condition:this.isTripleTop.bind(this),score:-1},{name:"Bullish Triple Bottom",condition:this.isTripleBottom.bind(this),score:1},{name:"Bearish Head And Shoulders",condition:this.isHeadAndShoulders.bind(this),score:-1},{name:"Bullish Inverse Head And Shoulders",condition:this.isInverseHeadAndShoulders.bind(this),score:1},{name:"Bearish Rising Wedge",condition:this.isRisingWedge.bind(this),score:-1},{name:"Bullish Falling Wedge",condition:this.isFallingWedge.bind(this),score:1},{name:"Bullish Triangle",condition:this.isBullishTriangle.bind(this),score:1},{name:"Bearish Triangle",condition:this.isBearishTriangle.bind(this),score:-1},{name:"Bullish Rectangle",condition:this.isBullishRectangle.bind(this),score:1},{name:"Bearish Rectangle",condition:this.isBearishRectangle.bind(this),score:-1}];t<e.length;t++){var r=e[t],n=r.name,o=r.condition,i=r.score;if(o())return{chart_pattern:n,chart_score:i}}return{chart_pattern:"Neutral",chart_score:0}}},{key:"isBullishFlag",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=(Math.floor(e/2),this.ohlcv.close[t-2*e]);if((this.ohlcv.close[t-e]-r)/r<.15)return!1;var n=this.ohlcv.close[t-e];if((n-this.ohlcv.close[t-1])/n>.05)return!1;for(var o=t-e;o<t-1;o++)if(this.ohlcv.high[o]>this.ohlcv.high[o+1]||this.ohlcv.low[o]>this.ohlcv.low[o+1])return!1;return!0}},{key:"isBearishFlag",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=(Math.floor(e/2),this.ohlcv.close[t-2*e]);if((r-this.ohlcv.close[t-e])/r<.15)return!1;var n=this.ohlcv.close[t-e];if((this.ohlcv.close[t-1]-n)/n>.05)return!1;for(var o=t-e;o<t-1;o++)if(this.ohlcv.high[o]<this.ohlcv.high[o+1]||this.ohlcv.low[o]<this.ohlcv.low[o+1])return!1;return!0}},{key:"isBullishPennant",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.floor(e/2),n=this.ohlcv.close[t-2*e];if((this.ohlcv.close[t-e]-n)/n<.15)return!1;var o=this.ohlcv.close[t-e];if((o-this.ohlcv.close[t-1])/o>.05)return!1;for(var i=t-r;i<t-1;i++)if(this.ohlcv.high[i]<this.ohlcv.high[i+1]&&this.ohlcv.low[i]<this.ohlcv.low[i+1]||this.ohlcv.high[i]>this.ohlcv.high[i+1]&&this.ohlcv.low[i]>this.ohlcv.low[i+1])return!1;return!0}},{key:"isBearishPennant",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.floor(e/2),n=this.ohlcv.close[t-2*e];if((n-this.ohlcv.close[t-e])/n<.15)return!1;var o=this.ohlcv.close[t-e];if((this.ohlcv.close[t-1]-o)/o>.05)return!1;for(var i=t-r;i<t-1;i++)if(this.ohlcv.high[i]>this.ohlcv.high[i+1]&&this.ohlcv.low[i]>this.ohlcv.low[i+1]||this.ohlcv.high[i]<this.ohlcv.high[i+1]&&this.ohlcv.low[i]<this.ohlcv.low[i+1])return!1;return!0}},{key:"isDoubleTop",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e)));if(r<=0||n<=0)return!1;var o=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e)));return!((r-o)/r<.1||(n-i)/n<.1)&&Math.abs(r-n)/r<.03}},{key:"isDoubleBottom",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e)));if(r<=0||n<=0)return!1;var o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),i=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e)));return!((o-r)/r<.1||(i-n)/n<.1)&&Math.abs(r-n)/r<.03}},{key:"isTripleTop",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=(r-Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))))/r,l=(n-Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))))/n,c=(o-Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e))))/o;return!(i<.1||l<.1||c<.1)&&Math.abs(r-n)/r<.03&&Math.abs(r-o)/r<.03}},{key:"isTripleBottom",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=(Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e)))-r)/r,l=(Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e)))-n)/n,c=(Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e)))-o)/o;return!(i<.1||l<.1||c<.1)&&Math.abs(r-n)/r<.03&&Math.abs(r-o)/r<.03}},{key:"isHeadAndShoulders",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e))),u=(n-l)/n,a=(Math.max(i,c)-Math.min(i,c))/Math.min(i,c);return u>.15&&a<.03}},{key:"isInverseHeadAndShoulders",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));if(r<=0||n<=0||o<=0)return!1;var i=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e))),u=(l-n)/n,a=(Math.min(i,c)-Math.max(i,c))/Math.max(i,c);return u>.15&&a<.03}},{key:"isRisingWedge",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));return r<n&&n<o&&i<l&&l<c}},{key:"isFallingWedge",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.close.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.close.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.close.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.close.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.close.slice(2*e)));return r>n&&n>o&&i>l&&l>c}},{key:"isBullishTriangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e))),o=Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e))),i=Math.min.apply(Math,Gt(this.ohlcv.low.slice(e)));return r>n&&o<i}},{key:"isBearishTriangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/2),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e)));return Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e)))<Math.min.apply(Math,Gt(this.ohlcv.low.slice(e)))&&r>n}},{key:"isBullishRectangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.high.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.low.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.low.slice(2*e))),u=Math.abs(r-n)/r<.03&&Math.abs(n-o)/n<.03,a=Math.abs(i-l)/i<.03&&Math.abs(l-c)/l<.03;return u&&a}},{key:"isBearishRectangle",value:function(){var t=this.ohlcv.close.length,e=Math.floor(t/3),r=Math.max.apply(Math,Gt(this.ohlcv.high.slice(0,e))),n=Math.max.apply(Math,Gt(this.ohlcv.high.slice(e,2*e))),o=Math.max.apply(Math,Gt(this.ohlcv.high.slice(2*e))),i=Math.min.apply(Math,Gt(this.ohlcv.low.slice(0,e))),l=Math.min.apply(Math,Gt(this.ohlcv.low.slice(e,2*e))),c=Math.min.apply(Math,Gt(this.ohlcv.low.slice(2*e))),u=Math.abs(r-n)/r<.03&&Math.abs(n-o)/n<.03,a=Math.abs(i-l)/i<.03&&Math.abs(l-c)/l<.03;return u&&a}}])&&$t(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),Jt=["open","high","low","close","volume"];function Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Xt(t){return function(t){if(Array.isArray(t))return te(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Zt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Yt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,l,c=[],u=!0,a=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){a=!0,o=t}finally{try{if(!u&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(a)throw o}}return c}}(t,e)||Zt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zt(t,e){if(t){if("string"==typeof t)return te(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?te(t,e):void 0}}function te(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function ee(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,re(n.key),n)}}function re(t){var e=function(t,e){if("object"!=Qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Qt(e)?e:e+""}var ne=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ChartPatterns=function(t){return new Kt(t).init()}},e=[{key:"init",value:function(t){return this.crossPairsArr=[],this.ohlcv=t.reduce((function(t,e){var r=e.open,n=e.high,o=e.low,i=e.close,l=e.volume,c=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.includes(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.includes(r)||{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,Jt);t.open.push(new p(r)),t.high.push(new p(n)),t.low.push(new p(o)),t.close.push(new p(i)),t.volume.push(new p(l));for(var u=0,a=Object.keys(c);u<a.length;u++){var s=a[u];t[s]||(t[s]=[]),t[s].push(c[s])}return t}),{open:[],high:[],low:[],close:[],volume:[]}),this}},{key:"getData",value:function(){var t=this.ohlcv,e=Object.keys(t),r=e.length;return t.open.map((function(n,o){for(var i={},l=0;l<r;l++){var c=e[l],u=t[c][o];i[c]=u instanceof p?u.toNumber():u}return i}))}},{key:"getLastValues",value:function(){for(var t={},e=0,r=Object.entries(this.ohlcv);e<r.length;e++){var n=Yt(r[e],2),o=n[0],i=n[1],l=i[i.length-1];t[o]=l instanceof p?l.toNumber():l}return t}},{key:"addObjectColumns",value:function(t){for(var e=0,r=Object.entries(t);e<r.length;e++){var n=Yt(r[e],2),o=n[0],i=n[1];this.addColumn(o,i)}}},{key:"addColumn",value:function(t,e){t=t.toLowerCase();var r=this.ohlcv.open.length;if(e.length>r)throw new Error("Invalid column data: The length of the new column exceeds the length of the OHLCV data");var n=new Array(r-e.length).fill(null);e=[].concat(Xt(n),Xt(e)),this.ohlcv[t]=e}},{key:"crossPairs",value:function(t){var e=function(t,e){var r,n={},o={},i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return Rt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Rt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return l=t.done,t},e:function(t){c=!0,i=t},f:function(){try{l||null==r.return||r.return()}finally{if(c)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var l=r.value,c=l.fast,u=l.slow;if(c&&u){"number"!=typeof u||n[u]||(n[u]=Array(t.close.length).fill(new p(u)));var a="".concat(c,"_x_").concat(u);if(t[c]&&t[u]){var s=Tt(t[c],t[u]);o[a]=s}else if(t[c]&&n[u]){var h=Tt(t[c],n[u]);o[a]=h}else console.log("Missing ohlcv properties for ".concat(c," or ").concat(u))}}}catch(t){i.e(t)}finally{i.f()}return o}(this.ohlcv,t);return e&&this.addObjectColumns(e),this}},{key:"ema",value:function(t){var e=function(t,e){var r=_t(t,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Pt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Pt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"ema_".concat(e),r)}(this.ohlcv.close,t);return e&&this.addObjectColumns(e),this}},{key:"sma",value:function(t){var e=function(t,e){var r=kt(t,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Et(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Et(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Et(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"sma_".concat(e),r)}(this.ohlcv.close,t);return e&&this.addObjectColumns(e),this}},{key:"macd",value:function(t,e,r){var n=function(t,e,r,n){var o=Math.max(e,r,n);return function(t){for(var e=[],r=[],n=[],o=new yt({indicator:st,shortInterval:arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,longInterval:arguments.length>2&&void 0!==arguments[2]?arguments[2]:26,signalInterval:arguments.length>3&&void 0!==arguments[3]?arguments[3]:9}),i=t.length,l=0;l<i;l++){var c={};o.update(t[l]);try{c=o.getResult()}catch(t){c={macd:null,signal:null,histogram:null}}e.push(c.macd),r.push(c.signal),n.push(c.histogram)}return{macd_diff:e,macd_dea:r,macd_histogram:n,macd_diff_x_macd_dea:Tt(e,r)}}(t.slice(-3*o),e,r,n)}(this.ohlcv.close,t,e,r);return n&&this.addObjectColumns(n),this}},{key:"bollingerBands",value:function(t,e){var r=function(t,e,r){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,n=t.length,o={bollinger_bands_upper:[],bollinger_bands_middle:[],bollinger_bands_lower:[]},i=new et(e,r),l=0;l<n;l++){var c={};i.update(t[l]);try{c=i.getResult()}catch(t){c={upper:null,middle:null,lower:null}}o.bollinger_bands_upper.push(c.upper),o.bollinger_bands_middle.push(c.middle),o.bollinger_bands_lower.push(c.lower)}var u=o.bollinger_bands_upper,a=o.bollinger_bands_middle,s=o.bollinger_bands_lower;return{bollinger_bands_upper:u,bollinger_bands_middle:a,bollinger_bands_lower:s,bollinger_bands_range:xt(t,{bollinger_bands_upper:u,bollinger_bands_lower:s})}}(t.slice(-3*e),e,r)}(this.ohlcv.close,t,e);return r&&this.addObjectColumns(r),this}},{key:"rsi",value:function(t,e,r){var n=function(t,e,r,n){var o=t.slice(-3*e);return"number"==typeof e&&void 0===n&&(n=e),It(o,e,r,n)}(this.ohlcv.close,t,e,r);return n&&this.addObjectColumns(n),this}},{key:"candles",value:function(){var t,e=(t=this.ohlcv,qt(t));return e&&this.addObjectColumns(e),this}},{key:"volumeProfile",value:function(t,e,r){var n=function(t,e){var r=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,r=t.open,n=t.high,o=t.low,i=t.close,l=t.volume,c=Math.min.apply(Math,Vt(o)),u=(Math.max.apply(Math,Vt(n))-c)/e,a={upVolume:0,downVolume:0,grossVolume:0},s=Array.from({length:e},(function(t,e){return{price:c+u*e,upVolume:0,downVolume:0,grossVolume:0}})),h=1/u,f=0;f<i.length;f++)for(var p=i[f],v=r[f],y=n[f],b=o[f],m=l[f],d=p>=v?m:0,g=p<v?m:0,w=Math.max(0,Math.floor((b-c)*h)),M=Math.min(e,Math.ceil((y-c)*h)),S=w;S<M;S++)s[S].upVolume+=d,s[S].downVolume+=g,s[S].grossVolume+=d+g;for(var j=0,O=s;j<O.length;j++){var P=O[j],_=P.upVolume,E=P.downVolume,k=P.grossVolume;a.upVolume+=_,a.downVolume+=E,a.grossVolume+=k}return{bins:s,nodes:Nt(s)}}(Ht(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,arguments.length>3?arguments[3]:void 0),e);return{volume_profile_high:[r.nodes.high.price],volume_profile_low:[r.nodes.low.price]}}(this.ohlcv,t,e,r);return n&&this.addObjectColumns(n),this}}],e&&ee(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
package/index.js CHANGED
@@ -96,7 +96,13 @@ export default class OHLCV_INDICATORS {
96
96
 
97
97
  crossPairs(arr)
98
98
  {
99
- crossPairs(this, arr)
99
+ const {ohlcv} = this
100
+ const result = crossPairs(ohlcv, arr)
101
+
102
+ if(result)
103
+ {
104
+ this.addObjectColumns(result)
105
+ }
100
106
 
101
107
  return this
102
108
  }
@@ -105,7 +111,12 @@ export default class OHLCV_INDICATORS {
105
111
 
106
112
  const {close} = this.ohlcv
107
113
 
108
- this.addObjectColumns(ema(close, size))
114
+ const result = ema(close, size)
115
+
116
+ if(result)
117
+ {
118
+ this.addObjectColumns(result)
119
+ }
109
120
 
110
121
  return this
111
122
  }
@@ -113,24 +124,40 @@ export default class OHLCV_INDICATORS {
113
124
 
114
125
  const {close} = this.ohlcv
115
126
 
116
- this.addObjectColumns(sma(close, size))
117
-
118
- return this
127
+ const result = sma(close, size)
128
+
129
+ if(result)
130
+ {
131
+ this.addObjectColumns(result)
132
+ }
133
+
134
+ return this
119
135
  }
120
136
  macd(fastLine, slowLine, signalLine) {
121
137
 
122
138
  const {close} = this.ohlcv
123
139
 
124
- this.addObjectColumns(macd(close, fastLine, slowLine, signalLine))
140
+ const result = macd(close, fastLine, slowLine, signalLine)
141
+
142
+ if(result)
143
+ {
144
+ this.addObjectColumns(result)
145
+ }
125
146
 
126
147
  return this
148
+
127
149
  }
128
150
  bollingerBands(size, times)
129
151
  {
130
152
 
131
153
  const {close} = this.ohlcv
132
154
 
133
- this.addObjectColumns(bollingerBands(close, size, times))
155
+ const result = bollingerBands(close, size, times)
156
+
157
+ if(result)
158
+ {
159
+ this.addObjectColumns(result)
160
+ }
134
161
 
135
162
  return this
136
163
  }
@@ -138,8 +165,13 @@ export default class OHLCV_INDICATORS {
138
165
  {
139
166
  const {close} = this.ohlcv
140
167
 
141
- this.addObjectColumns(rsi(close, period, movingAverage, movingAveragePeriod))
168
+ const result = rsi(close, period, movingAverage, movingAveragePeriod)
142
169
 
170
+ if(result)
171
+ {
172
+ this.addObjectColumns(result)
173
+ }
174
+
143
175
  return this
144
176
  }
145
177
  candles()
@@ -147,8 +179,13 @@ export default class OHLCV_INDICATORS {
147
179
 
148
180
  const {ohlcv} = this
149
181
 
150
- this.addObjectColumns(candles(ohlcv))
182
+ const result = candles(ohlcv)
151
183
 
184
+ if(result)
185
+ {
186
+ this.addObjectColumns(result)
187
+ }
188
+
152
189
  return this
153
190
  }
154
191
  volumeProfile(numBins, daysBack, targetDateKey)
@@ -156,7 +193,12 @@ export default class OHLCV_INDICATORS {
156
193
 
157
194
  const {ohlcv} = this
158
195
 
159
- this.addObjectColumns(volumeProfile(ohlcv, numBins, daysBack, targetDateKey))
196
+ const result = volumeProfile(ohlcv, numBins, daysBack, targetDateKey)
197
+
198
+ if(result)
199
+ {
200
+ this.addObjectColumns(result)
201
+ }
160
202
 
161
203
  return this
162
204
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ohlcv-indicators",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "A JavaScript library featuring optimized trading indicators for OHLCV arrays [{open, high, low, close, value}]. This library is optimized for backtesting and trading bot development.",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -75,10 +75,10 @@ const groupConsecutiveValues = arr => {
75
75
 
76
76
 
77
77
 
78
- export const crossPairs = (main, arr) => {
78
+ export const crossPairs = (ohlcv, arr) => {
79
79
 
80
- const {ohlcv} = main;
81
80
  const slowNumArrCache = {};
81
+ const output = {}
82
82
 
83
83
  for (const { fast, slow } of arr) {
84
84
  // Validate parameters
@@ -96,18 +96,18 @@ export const crossPairs = (main, arr) => {
96
96
 
97
97
  const cross = findCrosses(ohlcv[fast], ohlcv[slow]);
98
98
 
99
- main.addColumn(keyName, cross)
99
+ output[keyName] = cross
100
100
 
101
101
 
102
102
  } else if (ohlcv[fast] && slowNumArrCache[slow]) {
103
103
  const cross = findCrosses(ohlcv[fast], slowNumArrCache[slow])
104
104
 
105
- main.addColumn(keyName, cross)
105
+ output[keyName] = cross
106
106
 
107
107
  } else {
108
108
  console.log(`Missing ohlcv properties for ${fast} or ${slow}`);
109
109
  }
110
110
  }
111
111
 
112
- return true
112
+ return output
113
113
  }