ohlcv-indicators 1.6.3 → 1.6.4

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:()=>Zt});var r=1e6,n="[big.js] ",o=n+"Invalid ",i=o+"decimal places",u=o+"rounding mode",l=n+"Division by zero",c={},a=void 0,s=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function f(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(u);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 h(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}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 p(t){var e="function"==typeof Map?new Map:void 0;return p=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(y())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&b(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}}),b(r,t)},p(t)}function y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(y=function(){return!!t})()}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}c.abs=function(){var t=new this.constructor(this);return t.s=1,t},c.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,u=t.s,l=r.e,c=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-u:0;if(i!=u)return i;if(e=i<0,l!=c)return l>c^e?1:-1;for(u=(l=n.length)<(c=o.length)?l:c,i=-1;++i<u;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return l==c?0:l>c^e?1:-1},c.div=function(t){var e=this,n=e.constructor,o=e.c,u=(t=new n(t)).c,c=e.s==t.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>r)throw Error(i);if(!u[0])throw Error(l);if(!o[0])return t.s=c,t.c=[t.e=0],t;var h,v,p,y,b,d=u.slice(),m=h=u.length,g=o.length,w=o.slice(0,h),O=w.length,j=t,_=j.c=[],S=0,P=s+(j.e=e.e-t.e)+1;for(j.s=c,c=P<0?0:P,d.unshift(0);O++<h;)w.push(0);do{for(p=0;p<10;p++){if(h!=(O=w.length))y=h>O?1:-1;else for(b=-1,y=0;++b<h;)if(u[b]!=w[b]){y=u[b]>w[b]?1:-1;break}if(!(y<0))break;for(v=O==h?u:d;O;){if(w[--O]<v[O]){for(b=O;b&&!w[--b];)w[b]=9;--w[b],w[O]+=10}w[O]-=v[O]}for(;!w[0];)w.shift()}_[S++]=y?p:++p,w[0]&&y?w[O]=o[m]||0:w=[o[m]]}while((m++<g||w[0]!==a)&&c--);return _[0]||1==S||(_.shift(),j.e--,P--),S>P&&f(j,P,n.RM,w[0]!==a),j},c.eq=function(t){return 0===this.cmp(t)},c.gt=function(t){return this.cmp(t)>0},c.gte=function(t){return this.cmp(t)>-1},c.lt=function(t){return this.cmp(t)<0},c.lte=function(t){return this.cmp(t)<1},c.minus=c.sub=function(t){var e,r,n,o,i=this,u=i.constructor,l=i.s,c=(t=new u(t)).s;if(l!=c)return t.s=-c,i.plus(t);var a=i.c.slice(),s=i.e,f=t.c,h=t.e;if(!a[0]||!f[0])return f[0]?t.s=-c:a[0]?t=new u(i):t.s=1,t;if(l=s-h){for((o=l<0)?(l=-l,n=a):(h=s,n=f),n.reverse(),c=l;c--;)n.push(0);n.reverse()}else for(r=((o=a.length<f.length)?a:f).length,l=c=0;c<r;c++)if(a[c]!=f[c]){o=a[c]<f[c];break}if(o&&(n=a,a=f,f=n,t.s=-t.s),(c=(r=f.length)-(e=a.length))>0)for(;c--;)a[e++]=0;for(c=e;r>l;){if(a[--r]<f[r]){for(e=r;e&&!a[--e];)a[e]=9;--a[e],a[r]+=10}a[r]-=f[r]}for(;0===a[--c];)a.pop();for(;0===a[0];)a.shift(),--h;return a[0]||(t.s=1,a=[h=0]),t.c=a,t.e=h,t},c.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(l);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)))},c.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},c.plus=c.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 u=o.e,l=o.c,c=t.e,a=t.c;if(!l[0]||!a[0])return a[0]||(l[0]?t=new i(o):t.s=o.s),t;if(l=l.slice(),e=u-c){for(e>0?(c=u,n=a):(e=-e,n=l),n.reverse();e--;)n.push(0);n.reverse()}for(l.length-a.length<0&&(n=a,a=l,l=n),e=a.length,r=0;e;l[e]%=10)r=(l[--e]=l[e]+a[e]+r)/10|0;for(r&&(l.unshift(r),++c),e=l.length;0===l[--e];)l.pop();return t.c=l,t.e=c,t},c.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},c.prec=function(t,e){if(t!==~~t||t<1||t>r)throw Error(o+"precision");return f(new this.constructor(this),t,e)},c.round=function(t,e){if(t===a)t=0;else if(t!==~~t||t<-r||t>r)throw Error(i);return f(new this.constructor(this),t+this.e+1,e)},c.sqrt=function(){var t,e,r,o=this,i=o.constructor,u=o.s,l=o.e,c=new i("0.5");if(!o.c[0])return new i(o);if(u<0)throw Error(n+"No square root");0===(u=Math.sqrt(o+""))||u===1/0?((e=o.c.join("")).length+l&1||(e+="0"),l=((l+1)/2|0)-(l<0||1&l),t=new i(((u=Math.sqrt(e))==1/0?"5e":(u=u.toExponential()).slice(0,u.indexOf("e")+1))+l)):t=new i(u+""),l=t.e+(i.DP+=4);do{r=t,t=c.times(r.plus(o.div(r)))}while(r.c.slice(0,l).join("")!==t.c.slice(0,l).join(""));return f(t,(i.DP-=4)+t.e+1,i.RM)},c.times=c.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,u=o.length,l=i.length,c=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=c+a,u<l&&(e=o,o=i,i=e,a=u,u=l,l=a),e=new Array(a=u+l);a--;)e[a]=0;for(c=l;c--;){for(l=0,a=u+c;a>c;)l=e[a]+i[c]*o[a-c-1]+l,e[a--]=l%10,l=l/10|0;e[a]=l}for(l?++t.e:e.shift(),c=e.length;!e[--c];)e.pop();return t.c=e,t},c.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=f(new n.constructor(n),++t,e);n.c.length<t;)n.c.push(0)}return h(n,!0,!!o)},c.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=f(new n.constructor(n),t+n.e+1,e)).e+1;n.c.length<t;)n.c.push(0)}return h(n,!1,!!o)},c[Symbol.for("nodejs.util.inspect.custom")]=c.toJSON=c.toString=function(){var t=this,e=t.constructor;return h(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},c.toNumber=function(){var t=Number(h(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(n+"Imprecise conversion");return t},c.toPrecision=function(t,e){var n=this,i=n.constructor,u=n.c[0];if(t!==a){if(t!==~~t||t<1||t>r)throw Error(o+"precision");for(n=f(new i(n),t,e);n.c.length<t;)n.c.push(0)}return h(n,t<=n.e||n.e<=i.NE||n.e>=i.PE,!!u)},c.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(n+"valueOf disallowed");return h(t,t.e<=e.NE||t.e>=e.PE,!0)},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=c,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}();var m=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,y()?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&&b(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(p(Error));function g(t){return g="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},g(t)}function w(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 O(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"!=g(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=g(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==g(e)?e:e+""}var _=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),O(this,"previousHighest",void 0),O(this,"highest",void 0),O(this,"previousLowest",void 0),O(this,"lowest",void 0),O(this,"previousResult",void 0),O(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 m;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>this.highest?(this.previousHighest=this.highest,this.highest=t):this.previousHighest=this.highest,void 0===this.lowest?this.lowest=t:t<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)}}])&&w(t.prototype,e),r&&w(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function S(t){return S="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},S(t)}function P(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,T(n.key),n)}}function E(t,e,r){return e=k(e),function(t,e){if(e&&("object"==S(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,A()?Reflect.construct(e,r||[],k(t).constructor):e.apply(t,r))}function A(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(A=function(){return!!t})()}function k(t){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},k(t)}function R(t,e){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},R(t,e)}function T(t){var e=function(t,e){if("object"!=S(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=S(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(e)?e:e+""}var M=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=T(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&&R(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)}}])&&P(r.prototype,n),o&&P(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(_);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 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,F(n.key),n)}}function D(t,e,r){return e=L(e),function(t,e){if(e&&("object"==x(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,I()?Reflect.construct(e,r||[],L(t).constructor):e.apply(t,r))}function I(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(I=function(){return!!t})()}function L(t){return L=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},L(t)}function B(t,e){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},B(t,e)}function F(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 N=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,u=new Array(i),l=0;l<i;l++)u[l]=arguments[l];return r=t=D(this,e,[].concat(u)),o=[],(n=F(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&&B(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.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t),this.prices.length>this.interval&&this.prices.shift(),this.prices.length===this.interval){var r=this.prices.reduce((function(t,e){return t+e}),0);return this.setResult(r/this.prices.length,e)}}}],n&&C(r.prototype,n),o&&C(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(M);function q(t){return q="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},q(t)}function H(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 V(t,e,r){return e=z(e),function(t,e){if(e&&("object"==q(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||[],z(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 z(t){return z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},z(t)}function U(t,e){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},U(t,e)}function $(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"!=q(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==q(e)?e:e+""}var Y=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),$(r=V(this,e),"interval",void 0),$(r,"indicator",void 0),$(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new N(t),r.smoothingFactor=1/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&&U(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);if(e&&void 0!==this.previousResult){var n=(t-this.previousResult)*this.smoothingFactor;return this.setResult(n+this.previousResult,e)}if(!e&&void 0!==this.result){var o=(t-this.result)*this.smoothingFactor;return this.setResult(o+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&H(r.prototype,n),o&&H(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(_);function K(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function Q(t){return Q="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},Q(t)}function W(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,Z(n.key),n)}}function X(t,e,r){return(e=Z(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Z(t){var e=function(t,e){if("object"!=Q(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Q(e)?e:e+""}var tt=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),X(this,"interval",void 0),X(this,"deviationMultiplier",void 0),X(this,"prices",[]),X(this,"result",void 0),this.interval=e,this.deviationMultiplier=r},(e=[{key:"update",value:function(t){if(this.prices.push(t),this.prices.length>this.interval){this.prices.shift();var e=K(this.prices),r=function(t,e){var r=e||K(t),n=K(t.map((function(t){return t-r})).map((function(t){return t*t})));return Math.sqrt(n)}(this.prices,e);return this.result={lower:e-r*this.deviationMultiplier,middle:e,upper:e+r*this.deviationMultiplier}}}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&W(t.prototype,e),r&&W(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,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)}function rt(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,ct(n.key),n)}}function nt(t,e,r){return e=it(e),function(t,e){if(e&&("object"==et(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,ot()?Reflect.construct(e,r||[],it(t).constructor):e.apply(t,r))}function ot(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(ot=function(){return!!t})()}function it(t){return it=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},it(t)}function ut(t,e){return ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},ut(t,e)}function lt(t,e,r){return(e=ct(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ct(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+""}var at=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),lt(r=nt(this,e,[t]),"interval",void 0),lt(r,"pricesCounter",0),lt(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&&ut(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?e&&0===this.pricesCounter&&this.pricesCounter++:this.pricesCounter++,e&&void 0!==this.previousResult?this.setResult(t*this.weightFactor+this.previousResult*(1-this.weightFactor),e):this.setResult(t*this.weightFactor+(void 0!==this.result?this.result:t)*(1-this.weightFactor),e)}},{key:"getResult",value:function(){if(this.pricesCounter<this.interval)throw new m;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&rt(r.prototype,n),o&&rt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(M);function st(t){return st="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},st(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 ht(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"!=st(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=st(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==st(e)?e:e+""}var pt=function(){return t=function t(e,r,n){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),ht(this,"short",void 0),ht(this,"long",void 0),ht(this,"signal",void 0),ht(this,"prices",[]),ht(this,"result",void 0),this.short=e,this.long=r,this.signal=n},e=[{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{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];this.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t);var r=this.short.update(t,e),n=this.long.update(t,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var o=r-n,i=this.signal.update(o,e);return this.result={histogram:o-i,macd:o,signal:i}}}}],e&&ft(t.prototype,e),r&&ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function yt(t){return yt="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},yt(t)}function bt(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=gt(e),function(t,e){if(e&&("object"==yt(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,mt()?Reflect.construct(e,r||[],gt(t).constructor):e.apply(t,r))}function mt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(mt=function(){return!!t})()}function gt(t){return gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},gt(t)}function wt(t,e){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},wt(t,e)}function Ot(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"!=yt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==yt(e)?e:e+""}var _t=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Y;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),Ot(r=dt(this,e),"interval",void 0),Ot(r,"previousPrices",[]),Ot(r,"avgGain",void 0),Ot(r,"avgLoss",void 0),Ot(r,"maxValue",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&&wt(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=t,n=this.previousPrices[this.previousPrices.length-2];if(r>n?(this.avgLoss.update(0,e),this.avgGain.update(t-n,e)):(this.avgLoss.update(n-r,e),this.avgGain.update(0,e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(0===o)return this.setResult(100,e);var i=this.avgGain.getResult()/o;return this.setResult(this.maxValue-this.maxValue/(i+1),e)}}}}],n&&bt(r.prototype,n),o&&bt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(_);function St(t){return St="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},St(t)}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 Et=function(t,e){if(void 0===t||void 0===e)throw Error("undefined param in getEMA");for(var r=t.length,n=new Array(r).fill(null),o=new at(e),i=0;i<r;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function At(t){return At="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},At(t)}var kt=function(t,e){if(void 0===t||void 0===e)throw Error("undefined param in getSMA");for(var r=t.length,n=new Array(r).fill(null),o=new N(e),i=0;i<r;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};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){return t>e},Mt=function(t,e){return t<e},xt=function(t){var e=t.fast,r=t.slow,n=e.length;if(n==!r.length)throw Error("fast and slow do not have the same length");for(var o=new Array(n).fill(null),i=0;i<n;i++){var u=e[i],l=r[i],c=void 0;null===u||null===l?c="neutral":u===l?c=Tt(e[i-1],r[i-1])?1:Mt(e[i-1],r[i-1])?0:.5:Tt(u,l)?c=1:Mt(u,l)&&(c=0),o[i]=c}var a=Dt(o);return Ct(a)},Ct=function(t){var e=t.map((function(t){return t.length}));return t.map((function(t,r){var n=e[r];return t.map((function(t,e){var r=n-e;return.5===t&&(r=0),1===t&&(r*=1),0===t&&(r*=-1),r})).reverse()})).flat()},Dt=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}),[])},It=function(t,e){var r=t.verticalOhlcv;if(!r.hasOwnProperty(e))throw Error("property ".concat(e," not found in verticalOhlcv. Invoked by findDirectionCross."));for(var n=r[e],o=n.length,i=new Array(o).fill(null),u=0;u<o;u++)if(u>0&&null!==n[u]){var l=n[u],c=n[u-1];Tt(l,c)?i[u]=1:Mt(l,c)?i[u]=0:i[u]=.5}return i},Lt=function(t,e){if(!t.verticalOhlcv.hasOwnProperty(e))throw Error("property ".concat(e," not found in verticalOhlcv. Invoked by findDirectionCross."));var r=It(t,e),n=Dt(r);return Ct(n)};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 Ft={getSMA:kt,getEMA:Et},Nt=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,o=t.length;if(o<e)return[];for(var i=new Array(o).fill(null),u=new _t(e),l=0;l<o;l++){var c=null;if(null!==t[l]){u.update(t[l]);try{c=u.getResult()}catch(t){c=null}}i[l]=c}var a,s,f,h=(a={},s="rsi_".concat(e),f=i,(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:f,enumerable:!0,configurable:!0,writable:!0}):a[s]=f,a);if("string"==typeof r&&"number"==typeof n&&Ft.hasOwnProperty("get".concat(r))){var v=Ft["get".concat(r)](i,n);h["rsi_".concat(r,"_").concat(n)]=v,h["rsi_".concat(e,"_x_rsi_").concat(r,"_").concat(n)]=xt({fast:i,slow:v})}return h};function qt(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 Ht(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)?Ht(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,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}function Ht(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 Vt=function(t){var e=new Date(t),r=e.getDay(),n=e.getDate(),o=new Date(e.getFullYear(),e.getMonth(),1).getDay();return{day_of_the_week:r,day_of_the_month:n,week_of_the_month:Math.ceil((n+o)/7)}},Gt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.25;return null===t||null===e?null:t>e*(5*r)?1:t<e*(3*r)?0:2*r},zt=function(t,e){if(!e)return null;var r=t.open,n=t.high,o=t.low,i=t.close,u=e.high,l=e.low,c=[n,u],a=[o,l];i>r?(c.push(i),a.push(r)):(c.push(r),a.push(i));var s=Math.max(n,u)-Math.min(o,l)-(Math.abs(u-l)+Math.abs(n-o));return s>0?s:.01},Ut=function(t,e){for(var r=t.length,n=new N(e),o=new Array(r),i=0,u=0,l=0,c=0;c<r;c++)if(n.update(t[c]),n.isStable){var a=n.getResult();o[c]=a,i+=a,u+=a*a,l++}else o[c]=null;var s=i/l,f=u/l-s*s,h=Math.sqrt(f);return o.map((function(t){return null!==t?(t-s)/h:null}))},$t=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;if(t.length!==e.length)throw new Error("Both arrays must have the same length");for(var n=Ut(t,r),o=Ut(e,r),i=t.length,u=[],l=0,c=0,a=0,s=0,f=0,h=0,v=-1,p=0;p<i;p++){if(null!==n[p]&&null!==o[p]){v=p;break}u.push(0)}if(-1===v)return new Array(i).fill(0);for(var y=v;y<i;y++){var b=n[y],d=o[y];if(null!==b&&null!==d)if(l+=b,c+=d,a+=b*d,s+=b*b,f+=d*d,++h<2)u.push(0);else{var m=h*a-l*c,g=Math.sqrt((h*s-l*l)*(h*f-c*c)),w=0===g?0:m/g;u.push(w)}else l=c=a=s=f=h=0,u.push(0)}return u};function Jt(t){return Jt="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},Jt(t)}function Yt(t,e,r){return(e=Xt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Kt(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,u,l=[],c=!0,a=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(t){a=!0,o=t}finally{try{if(!c&&null!=r.return&&(u=r.return(),Object(u)!==u))return}finally{if(a)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Qt(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)?Qt(t,e):void 0}}(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 Qt(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 Wt(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,Xt(n.key),n)}}function Xt(t){var e=function(t,e){if("object"!=Jt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Jt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Jt(e)?e:e+""}var Zt=function(){return t=function t(e){var r=e.input,n=e.ticker,o=void 0===n?"undefined":n;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!Array.isArray(r))throw Error("input ohlcv must be an array: "+o);if(0===r.length)throw Error("input ohlcv must not be empty: "+o);if(!r[0].hasOwnProperty("close"))throw Error("input ohlcv array objects require at least close property: "+o);return this.len=r.length,this.crossPairsArr=[],this.inputOhlcv=r,this.verticalOhlcv=function(t,e){for(var r=["open","high","low","close","volume"],n=new Set(r),o={},i=0,u=r;i<u.length;i++)o[u[i]]=new Array(e);for(var l,c=[],a=0,s=Object.keys(t[0]);a<s.length;a++){var f=s[a];n.has(f)||(o[f]=new Array(e),c.push(f))}var h,v=0,p=0,y=(h=t)[0].hasOwnProperty("date")&&"string"==typeof h[0].date&&/^\d{4}-\d{2}-\d{2}/.test(h[0].date);y&&(o.session_index=new Array(e),o.session_intraday_index=new Array(e),o.day_of_the_week=new Array(e),o.day_of_the_month=new Array(e),o.week_of_the_month=new Array(e),l=t[0].date.slice(0,10));for(var b=0;b<e;b++){var d=t[b];o.open[b]=d.open,o.high[b]=d.high,o.low[b]=d.low,o.close[b]=d.close,o.volume[b]=d.volume;var m,g=qt(c);try{for(g.s();!(m=g.n()).done;){var w=m.value;o[w][b]=d[w]}}catch(t){g.e(t)}finally{g.f()}if(y){var O=d.date.slice(0,10);O!==l&&(l=O,v++,p=0);var j=Vt(O),_=j.day_of_the_week,S=j.day_of_the_month,P=j.week_of_the_month;o.day_of_the_week[b]=_,o.day_of_the_month[b]=S,o.week_of_the_month[b]=P,o.session_index[b]=v,o.session_intraday_index[b]=p,p++}}return o}(r,this.len),this.indicators={},this.studies={},this.utilities={correlation:$t},this},e=[{key:"getData",value:function(){this.compute();for(var t=this.verticalOhlcv,e=Object.keys(t),r=t[e[0]].length,n=e.length,o=[],i=0;i<r;i++){for(var u={},l=!1,c=0;c<n;c++){var a=e[c],s=t[a][i];if(null==s){l=!0;break}u[a]=s}l||o.push(u)}return o}},{key:"getLastValues",value:function(){this.compute();for(var t=this.verticalOhlcv,e=this.len,r={},n=0,o=Object.entries(t);n<o.length;n++){var i=Kt(o[n],2),u=i[0],l=i[1][e-1];r[u]=l}return Object.assign(r,this.studies),r}},{key:"compute",value:function(){for(var t=this.indicators,e=this.addColumn.bind(this),r=0,n=Object.entries(t);r<n.length;r++){var o=Kt(n[r],2),i=o[0],u=o[1];this.verticalOhlcv.hasOwnProperty(i)?delete this.indicators[i]:e(i,u)}return this}},{key:"addColumn",value:function(t,e){var r=this.len;if(t=t.toLowerCase(),e.length>r)throw new Error("Invalid column data: The length of the new column exceeds the length of the OHLCV data");if(e.length<r){var n=r-e.length;e=new Array(n).fill(null).concat(e)}this.verticalOhlcv[t]=e}},{key:"crossPairs",value:function(t){this.compute();var e=function(t,e){var r,n=t.verticalOhlcv,o=t.len,i={},u={},l={},c=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,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}(e);try{var a=function(){var t=r.value,e=t.fast,c=t.slow,a=t.count;if(!e||!c)return 1;"number"!=typeof c||i[c]||(i[c]=Array(o).fill(c));var s="".concat(e,"_x_").concat(c),f="".concat(e,"_c_").concat(c),h=function(t){return void 0!==a?t.slice(-a).filter((function(t){return 1===t||-1===t})).length:0};if(n[s]){var v=n[s];u[s]=v,void 0!==a&&(l[f]=h(v))}else if(n[e]&&n[c]){var p=xt({fast:n[e],slow:n[c]});u[s]=p,void 0!==a&&(l[f]=h(p))}else if(n[e]&&i[c]){var y=xt({fast:n[e],slow:i[c]});u[s]=y,void 0!==a&&(l[f]=h(y))}else console.log("Missing ohlcv properties for ".concat(e," or ").concat(c))};for(c.s();!(r=c.n()).done;)a()}catch(t){c.e(t)}finally{c.f()}return{x:u,c:l}}(this,t),r=e.x,n=e.c;return Object.assign(this.indicators,r),Object.assign(this.studies,n),this.compute(),this}},{key:"lag",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.compute();for(var r=this.verticalOhlcv,n=0;n<t.length;n++)for(var o=1;o<=e;o++){var i="".concat(t[n],"_lag_").concat(o),u=r[t[n]].slice(0,-o);Object.assign(this.indicators,Yt({},i,u))}return this.compute(),this}},{key:"relativeVolume",value:function(t){var e=function(t,e){var r=function(t){for(var e=new N(arguments.length>1&&void 0!==arguments[1]?arguments[1]:10),r=new Array(t.length).fill(null),n=new Array(t.length).fill(null),o=0;o<t.length;o++){var i=null;e.update(t[o]);try{i=e.getResult()}catch(t){i=null}r[o]=i,"number"==typeof r[o-1]&&(n[o]=t[o]/r[o-1])}return console.log(n),n}(t.verticalOhlcv.volume,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=St(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=St(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==St(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"relative_volume_".concat(e),r)}(this,t);return Object.assign(this.indicators,e),this}},{key:"ema",value:function(t){var e=function(t,e){var r=t.verticalOhlcv.close,n=Et(r,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),n)}(this,t);return Object.assign(this.indicators,e),this}},{key:"sma",value:function(t){var e=function(t,e){var r=t.verticalOhlcv.close,n=kt(r,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=At(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=At(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==At(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),n)}(this,t);return Object.assign(this.indicators,e),this}},{key:"macd",value:function(t,e,r){var n=function(t,e,r,n){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:26,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:9,o=t.length,i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),c=new pt(new at(e),new at(r),new at(n)),a=0;a<o;a++){var s={};c.update(t[a]);try{s=c.getResult()}catch(t){s={macd:null,signal:null,histogram:null}}i[a]=s.macd,u[a]=s.signal,l[a]=s.histogram}return{macd_diff:i,macd_dea:u,macd_histogram:l,macd_diff_x_macd_dea:xt({fast:i,slow:u})}}(t.verticalOhlcv.close,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,n),this}},{key:"bollingerBands",value:function(t,e){var r=function(t,e,r){return function(t){for(var e,r,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,u=t.length,l=Array(u).fill(null),c=Array(u).fill(null),a=Array(u).fill(null),s=Array(u).fill(null),f=Array(u).fill(null),h=null,v=null,p=new tt(o,i),y=0;y<u;y++){var b={};p.update(t[y]);var d=!1;try{b=p.getResult()}catch(t){d=!0,b={upper:null,middle:null,lower:null}}if(l[y]=b.upper,c[y]=b.middle,a[y]=b.lower,d)s[y]=null,f[y]=null;else{var m=(e=t[y],r=b.upper,{range:(e-(n=b.lower))/(r-n)*100,height:(r-n)/n*100});h=m.range,v=m.height}s[y]=h,f[y]=v}return{bollinger_bands_upper:l,bollinger_bands_middle:c,bollinger_bands_lower:a,bollinger_bands_range:s,bollinger_bands_height:f}}(t.verticalOhlcv.close,e,r)}(this,t,e);return Object.assign(this.indicators,r),this}},{key:"rsi",value:function(t,e,r){var n=function(t,e,r,n){var o=t.verticalOhlcv.close;return"number"==typeof e&&void 0===n&&(n=e),Nt(o,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,n),this}},{key:"orb",value:function(){var t=function(t,e){for(var r=new Array(e).fill(0),n=new Array(e).fill(0),o=0,i=null,u=0,l=0,c=0;c<e;c++){var a=t[c];if(0===c&&!a.hasOwnProperty("date"))throw Error("input ohlcv array must have a date property available in candle datapoint");var s=a.date.split(" ")[0];s!==i&&(i=s,u=a.high,l=a.low),r[o]=u,n[o]=l,o++}return{orb_high:r,orb_low:n}}(this.inputOhlcv,this.len);return Object.assign(this.indicators,t),this}},{key:"donchianChannels",value:function(t,e){var r=function(t,e,r){var n=t.verticalOhlcv,o=t.len;return function(t,e,r,n,o){for(var i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),c=[],a=[],s=0;s<o;s++){for(;c.length&&c[0]<=s-r;)c.shift();for(;c.length&&t[c[c.length-1]]<=t[s];)c.pop();for(c.push(s);a.length&&a[0]<=s-r;)a.shift();for(;a.length&&e[a[a.length-1]]>=e[s];)a.pop();if(a.push(s),s>=r-1){var f=t[c[0]],h=e[a[0]],v=(f+h)/2,p=s+n;p>=0&&p<o&&(i[p]=f,u[p]=h,l[p]=v)}}return{donchian_channel_upper:i,donchian_channel_lower:u,donchian_channel_basis:l}}(n.high,n.low,e,r,o)}(this,t,e);return Object.assign(this.indicators,r),this}},{key:"candlesStudies",value:function(t){var e=function(t,e){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,r=arguments.length>2?arguments[2]:void 0,n=function(t,e){return Math.abs(t-e)},o=new Array(r).fill(null),i=new Array(r).fill(null),u=new Array(r).fill(null),l=new Array(r).fill(null),c=new Array(r).fill(null),a=new N(e),s=new N(parseInt(e/2)),f=0;f<r;f++){var h=t[f],v=h.open,p=h.high,y=h.low,b=h.close,d=void 0!==t[f-1]?zt(t[f],t[f-1]):null,m=null,g=null,w=n(v,b),O=void 0,j=void 0,_=b>v?1:0;1===_?(O=n(p,b),j=n(v,y)):(O=n(p,v),j=n(b,y)),a.update(w),d&&s.update(d);try{m=a.getResult(),g=s.getResult()}catch(t){m=null,g=null}o[f]=_,i[f]=Gt(w,m,.25),u[f]=Gt(O,m,.25),l[f]=Gt(j,m,.25),c[f]=Gt(d,g,.25)}return{candle_direction:o,candle_gap_size:c,candle_body_size:i,candle_top_size:u,candle_bottom_size:l}}(t.inputOhlcv,e,t.len)}(this,t);return Object.assign(this.indicators,e),this}},{key:"findDirectionCross",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close","low"];this.compute();for(var e=0;e<t.length;e++){var r=t[e],n=Lt(this,r);Object.assign(this.indicators,Yt({},"".concat(r,"_direction_cross"),n))}return this.compute(),this}},{key:"findLinearDirection",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close","low"];this.compute();for(var e=0;e<t.length;e++){var r=t[e],n=It(this,r);Object.assign(this.indicators,Yt({},"".concat(r,"_linear_direction"),n))}return this.compute(),this}},{key:"gt",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[{a:"high",b:"low"}];this.compute();for(var r=this.verticalOhlcv,n=function(){var n,i=e[o],u=i.a,l=i.b;"string"==typeof l?n=r[l]:"number"==typeof l&&(n=new Array(r[u].length).fill(l));var c=r[u].map((function(t,e){return t>n[e]?1:0}));Object.assign(t.indicators,Yt({},"".concat(u,"_gt_").concat(l),c))},o=0;o<e.length;o++)n();return this.compute(),this}}],e&&Wt(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:(r,e)=>{for(var n in e)t.o(e,n)&&!t.o(r,n)&&Object.defineProperty(r,n,{enumerable:!0,get:e[n]})},o:(t,r)=>Object.prototype.hasOwnProperty.call(t,r),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},r={};(()=>{t.r(r),t.d(r,{default:()=>Zt});var e=1e6,n="[big.js] ",o=n+"Invalid ",i=o+"decimal places",u=o+"rounding mode",l=n+"Division by zero",a={},c=void 0,s=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function f(t,r,e,n){var o=t.c;if(e===c&&(e=t.constructor.RM),0!==e&&1!==e&&2!==e&&3!==e)throw Error(u);if(r<1)n=3===e&&(n||!!o[0])||0===r&&(1===e&&o[0]>=5||2===e&&(o[0]>5||5===o[0]&&(n||o[1]!==c))),o.length=1,n?(t.e=t.e-r+1,o[0]=1):o[0]=t.e=0;else if(r<o.length){if(n=1===e&&o[r]>=5||2===e&&(o[r]>5||5===o[r]&&(n||o[r+1]!==c||1&o[r-1]))||3===e&&(n||!!o[0]),o.length=r,n)for(;++o[--r]>9;)if(o[r]=0,0===r){++t.e,o.unshift(1);break}for(r=o.length;!o[--r];)o.pop()}return t}function h(t,r,e){var n=t.e,o=t.c.join(""),i=o.length;if(r)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&&e?"-"+o:o}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 p(t){var r="function"==typeof Map?new Map:void 0;return p=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(r){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!==r){if(r.has(t))return r.get(t);r.set(t,e)}function e(){return function(t,r,e){if(y())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,r);var o=new(t.bind.apply(t,n));return e&&b(o,e.prototype),o}(t,arguments,d(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),b(e,t)},p(t)}function y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(y=function(){return!!t})()}function b(t,r){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},b(t,r)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}a.abs=function(){var t=new this.constructor(this);return t.s=1,t},a.cmp=function(t){var r,e=this,n=e.c,o=(t=new e.constructor(t)).c,i=e.s,u=t.s,l=e.e,a=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-u:0;if(i!=u)return i;if(r=i<0,l!=a)return l>a^r?1:-1;for(u=(l=n.length)<(a=o.length)?l:a,i=-1;++i<u;)if(n[i]!=o[i])return n[i]>o[i]^r?1:-1;return l==a?0:l>a^r?1:-1},a.div=function(t){var r=this,n=r.constructor,o=r.c,u=(t=new n(t)).c,a=r.s==t.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>e)throw Error(i);if(!u[0])throw Error(l);if(!o[0])return t.s=a,t.c=[t.e=0],t;var h,v,p,y,b,d=u.slice(),m=h=u.length,g=o.length,w=o.slice(0,h),O=w.length,j=t,_=j.c=[],S=0,P=s+(j.e=r.e-t.e)+1;for(j.s=a,a=P<0?0:P,d.unshift(0);O++<h;)w.push(0);do{for(p=0;p<10;p++){if(h!=(O=w.length))y=h>O?1:-1;else for(b=-1,y=0;++b<h;)if(u[b]!=w[b]){y=u[b]>w[b]?1:-1;break}if(!(y<0))break;for(v=O==h?u:d;O;){if(w[--O]<v[O]){for(b=O;b&&!w[--b];)w[b]=9;--w[b],w[O]+=10}w[O]-=v[O]}for(;!w[0];)w.shift()}_[S++]=y?p:++p,w[0]&&y?w[O]=o[m]||0:w=[o[m]]}while((m++<g||w[0]!==c)&&a--);return _[0]||1==S||(_.shift(),j.e--,P--),S>P&&f(j,P,n.RM,w[0]!==c),j},a.eq=function(t){return 0===this.cmp(t)},a.gt=function(t){return this.cmp(t)>0},a.gte=function(t){return this.cmp(t)>-1},a.lt=function(t){return this.cmp(t)<0},a.lte=function(t){return this.cmp(t)<1},a.minus=a.sub=function(t){var r,e,n,o,i=this,u=i.constructor,l=i.s,a=(t=new u(t)).s;if(l!=a)return t.s=-a,i.plus(t);var c=i.c.slice(),s=i.e,f=t.c,h=t.e;if(!c[0]||!f[0])return f[0]?t.s=-a:c[0]?t=new u(i):t.s=1,t;if(l=s-h){for((o=l<0)?(l=-l,n=c):(h=s,n=f),n.reverse(),a=l;a--;)n.push(0);n.reverse()}else for(e=((o=c.length<f.length)?c:f).length,l=a=0;a<e;a++)if(c[a]!=f[a]){o=c[a]<f[a];break}if(o&&(n=c,c=f,f=n,t.s=-t.s),(a=(e=f.length)-(r=c.length))>0)for(;a--;)c[r++]=0;for(a=r;e>l;){if(c[--e]<f[e]){for(r=e;r&&!c[--r];)c[r]=9;--c[r],c[e]+=10}c[e]-=f[e]}for(;0===c[--a];)c.pop();for(;0===c[0];)c.shift(),--h;return c[0]||(t.s=1,c=[h=0]),t.c=c,t.e=h,t},a.mod=function(t){var r,e=this,n=e.constructor,o=e.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(l);return e.s=t.s=1,r=1==t.cmp(e),e.s=o,t.s=i,r?new n(e):(o=n.DP,i=n.RM,n.DP=n.RM=0,e=e.div(t),n.DP=o,n.RM=i,this.minus(e.times(t)))},a.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},a.plus=a.add=function(t){var r,e,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var u=o.e,l=o.c,a=t.e,c=t.c;if(!l[0]||!c[0])return c[0]||(l[0]?t=new i(o):t.s=o.s),t;if(l=l.slice(),r=u-a){for(r>0?(a=u,n=c):(r=-r,n=l),n.reverse();r--;)n.push(0);n.reverse()}for(l.length-c.length<0&&(n=c,c=l,l=n),r=c.length,e=0;r;l[r]%=10)e=(l[--r]=l[r]+c[r]+e)/10|0;for(e&&(l.unshift(e),++a),r=l.length;0===l[--r];)l.pop();return t.c=l,t.e=a,t},a.pow=function(t){var r=this,e=new r.constructor("1"),n=e,i=t<0;if(t!==~~t||t<-1e6||t>1e6)throw Error(o+"exponent");for(i&&(t=-t);1&t&&(n=n.times(r)),t>>=1;)r=r.times(r);return i?e.div(n):n},a.prec=function(t,r){if(t!==~~t||t<1||t>e)throw Error(o+"precision");return f(new this.constructor(this),t,r)},a.round=function(t,r){if(t===c)t=0;else if(t!==~~t||t<-e||t>e)throw Error(i);return f(new this.constructor(this),t+this.e+1,r)},a.sqrt=function(){var t,r,e,o=this,i=o.constructor,u=o.s,l=o.e,a=new i("0.5");if(!o.c[0])return new i(o);if(u<0)throw Error(n+"No square root");0===(u=Math.sqrt(o+""))||u===1/0?((r=o.c.join("")).length+l&1||(r+="0"),l=((l+1)/2|0)-(l<0||1&l),t=new i(((u=Math.sqrt(r))==1/0?"5e":(u=u.toExponential()).slice(0,u.indexOf("e")+1))+l)):t=new i(u+""),l=t.e+(i.DP+=4);do{e=t,t=a.times(e.plus(o.div(e)))}while(e.c.slice(0,l).join("")!==t.c.slice(0,l).join(""));return f(t,(i.DP-=4)+t.e+1,i.RM)},a.times=a.mul=function(t){var r,e=this,n=e.constructor,o=e.c,i=(t=new n(t)).c,u=o.length,l=i.length,a=e.e,c=t.e;if(t.s=e.s==t.s?1:-1,!o[0]||!i[0])return t.c=[t.e=0],t;for(t.e=a+c,u<l&&(r=o,o=i,i=r,c=u,u=l,l=c),r=new Array(c=u+l);c--;)r[c]=0;for(a=l;a--;){for(l=0,c=u+a;c>a;)l=r[c]+i[a]*o[c-a-1]+l,r[c--]=l%10,l=l/10|0;r[c]=l}for(l?++t.e:r.shift(),a=r.length;!r[--a];)r.pop();return t.c=r,t},a.toExponential=function(t,r){var n=this,o=n.c[0];if(t!==c){if(t!==~~t||t<0||t>e)throw Error(i);for(n=f(new n.constructor(n),++t,r);n.c.length<t;)n.c.push(0)}return h(n,!0,!!o)},a.toFixed=function(t,r){var n=this,o=n.c[0];if(t!==c){if(t!==~~t||t<0||t>e)throw Error(i);for(t=t+(n=f(new n.constructor(n),t+n.e+1,r)).e+1;n.c.length<t;)n.c.push(0)}return h(n,!1,!!o)},a[Symbol.for("nodejs.util.inspect.custom")]=a.toJSON=a.toString=function(){var t=this,r=t.constructor;return h(t,t.e<=r.NE||t.e>=r.PE,!!t.c[0])},a.toNumber=function(){var t=Number(h(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(n+"Imprecise conversion");return t},a.toPrecision=function(t,r){var n=this,i=n.constructor,u=n.c[0];if(t!==c){if(t!==~~t||t<1||t>e)throw Error(o+"precision");for(n=f(new i(n),t,r);n.c.length<t;)n.c.push(0)}return h(n,t<=n.e||n.e<=i.NE||n.e>=i.PE,!!u)},a.valueOf=function(){var t=this,r=t.constructor;if(!0===r.strict)throw Error(n+"valueOf disallowed");return h(t,t.e<=r.NE||t.e>=r.PE,!0)},function t(){function r(e){var n=this;if(!(n instanceof r))return e===c?t():new r(e);if(e instanceof r)n.s=e.s,n.e=e.e,n.c=e.c.slice();else{if("string"!=typeof e){if(!0===r.strict&&"bigint"!=typeof e)throw TypeError(o+"value");e=0===e&&1/e<0?"-0":String(e)}!function(t,r){var e,n,i;if(!s.test(r))throw Error(o+"number");for(t.s="-"==r.charAt(0)?(r=r.slice(1),-1):1,(e=r.indexOf("."))>-1&&(r=r.replace(".","")),(n=r.search(/e/i))>0?(e<0&&(e=n),e+=+r.slice(n+1),r=r.substring(0,n)):e<0&&(e=r.length),i=r.length,n=0;n<i&&"0"==r.charAt(n);)++n;if(n==i)t.c=[t.e=0];else{for(;i>0&&"0"==r.charAt(--i););for(t.e=e-n-1,t.c=[],e=0;n<=i;)t.c[e++]=+r.charAt(n++)}}(n,e)}n.constructor=r}return r.prototype=a,r.DP=20,r.RM=1,r.NE=-7,r.PE=21,r.strict=!1,r.roundDown=0,r.roundHalfUp=1,r.roundHalfEven=2,r.roundUp=3,r}();var m=function(t){function r(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Not enough data";return function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,r),t=function(t,r,e){return r=d(r),function(t,r){if(r&&("object"==v(r)||"function"==typeof r))return r;if(void 0!==r)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,y()?Reflect.construct(r,e||[],d(t).constructor):r.apply(t,e))}(this,r,[e]),Object.setPrototypeOf(t,(this instanceof r?this.constructor:void 0).prototype),t.name="NotEnoughDataError",t}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&b(t,r)}(r,t),e=r,Object.defineProperty(e,"prototype",{writable:!1}),e;var e}(p(Error));function g(t){return g="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},g(t)}function w(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,j(n.key),n)}}function O(t,r,e){return(r=j(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function j(t){var r=function(t,r){if("object"!=g(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=g(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==g(r)?r:r+""}var _=function(){return t=function t(){(function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")})(this,t),O(this,"previousHighest",void 0),O(this,"highest",void 0),O(this,"previousLowest",void 0),O(this,"lowest",void 0),O(this,"previousResult",void 0),O(this,"result",void 0)},(r=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"setResult",value:function(t,r){return r&&(this.highest=this.previousHighest,this.lowest=this.previousLowest,this.result=this.previousResult),void 0===this.highest?this.highest=t:t>this.highest?(this.previousHighest=this.highest,this.highest=t):this.previousHighest=this.highest,void 0===this.lowest?this.lowest=t:t<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)}}])&&w(t.prototype,r),e&&w(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,e}();function S(t){return S="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},S(t)}function P(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,T(n.key),n)}}function E(t,r,e){return r=k(r),function(t,r){if(r&&("object"==S(r)||"function"==typeof r))return r;if(void 0!==r)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,A()?Reflect.construct(r,e||[],k(t).constructor):r.apply(t,e))}function A(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(A=function(){return!!t})()}function k(t){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},k(t)}function R(t,r){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},R(t,r)}function T(t){var r=function(t,r){if("object"!=S(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=S(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(r)?r:r+""}var M=function(t){function r(t){var e,n,o,i;return function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,r),n=e=E(this,r),i=void 0,(o=T(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,e.interval=t,e}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&R(t,r)}(r,t),e=r,(n=[{key:"updates",value:function(t){var r=this;return t.forEach((function(t){return r.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&P(e.prototype,n),o&&P(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,o}(_);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 C(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,F(n.key),n)}}function D(t,r,e){return r=L(r),function(t,r){if(r&&("object"==x(r)||"function"==typeof r))return r;if(void 0!==r)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,I()?Reflect.construct(r,e||[],L(t).constructor):r.apply(t,e))}function I(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(I=function(){return!!t})()}function L(t){return L=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},L(t)}function B(t,r){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},B(t,r)}function F(t){var r=function(t,r){if("object"!=x(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.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(r)?r:r+""}var N=function(t){function r(){var t,e,n,o;!function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,r);for(var i=arguments.length,u=new Array(i),l=0;l<i;l++)u[l]=arguments[l];return e=t=D(this,r,[].concat(u)),o=[],(n=F(n="prices"))in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,t}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&B(t,r)}(r,t),e=r,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){var e=this.prices.reduce((function(t,r){return t+r}),0);return this.setResult(e/this.prices.length,r)}}}],n&&C(e.prototype,n),o&&C(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,o}(M);function q(t){return q="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},q(t)}function G(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,J(n.key),n)}}function H(t,r,e){return r=z(r),function(t,r){if(r&&("object"==q(r)||"function"==typeof r))return r;if(void 0!==r)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,V()?Reflect.construct(r,e||[],z(t).constructor):r.apply(t,e))}function V(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(V=function(){return!!t})()}function z(t){return z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},z(t)}function U(t,r){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},U(t,r)}function $(t,r,e){return(r=J(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function J(t){var r=function(t,r){if("object"!=q(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==q(r)?r:r+""}var Y=function(t){function r(t){var e;return function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,r),$(e=H(this,r),"interval",void 0),$(e,"indicator",void 0),$(e,"smoothingFactor",void 0),e.interval=t,e.indicator=new N(t),e.smoothingFactor=1/e.interval,e}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&U(t,r)}(r,t),e=r,n=[{key:"updates",value:function(t){var r=this;return t.forEach((function(t){return r.update(t)})),this.result}},{key:"update",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=this.indicator.update(t);if(r&&void 0!==this.previousResult){var n=(t-this.previousResult)*this.smoothingFactor;return this.setResult(n+this.previousResult,r)}if(!r&&void 0!==this.result){var o=(t-this.result)*this.smoothingFactor;return this.setResult(o+this.result,r)}if(void 0===this.result&&void 0!==e)return this.setResult(e,r)}}],n&&G(e.prototype,n),o&&G(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,o}(_);function K(t){return t.length?t.reduce((function(t,r){return t+r}),0)/t.length:0}function Q(t){return Q="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},Q(t)}function W(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Z(n.key),n)}}function X(t,r,e){return(r=Z(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function Z(t){var r=function(t,r){if("object"!=Q(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=Q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Q(r)?r:r+""}var tt=function(){return t=function t(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;(function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")})(this,t),X(this,"interval",void 0),X(this,"deviationMultiplier",void 0),X(this,"prices",[]),X(this,"result",void 0),this.interval=r,this.deviationMultiplier=e},(r=[{key:"update",value:function(t){if(this.prices.push(t),this.prices.length>this.interval){this.prices.shift();var r=K(this.prices),e=function(t,r){var e=r||K(t),n=K(t.map((function(t){return t-e})).map((function(t){return t*t})));return Math.sqrt(n)}(this.prices,r);return this.result={lower:r-e*this.deviationMultiplier,middle:r,upper:r+e*this.deviationMultiplier}}}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&W(t.prototype,r),e&&W(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,e}();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 et(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,at(n.key),n)}}function nt(t,r,e){return r=it(r),function(t,r){if(r&&("object"==rt(r)||"function"==typeof r))return r;if(void 0!==r)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,ot()?Reflect.construct(r,e||[],it(t).constructor):r.apply(t,e))}function ot(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(ot=function(){return!!t})()}function it(t){return it=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},it(t)}function ut(t,r){return ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},ut(t,r)}function lt(t,r,e){return(r=at(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function at(t){var r=function(t,r){if("object"!=rt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.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(r)?r:r+""}var ct=function(t){function r(t){var e;return function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,r),lt(e=nt(this,r,[t]),"interval",void 0),lt(e,"pricesCounter",0),lt(e,"weightFactor",void 0),e.interval=t,e.weightFactor=2/(e.interval+1),e}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&ut(t,r)}(r,t),e=r,n=[{key:"update",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r?r&&0===this.pricesCounter&&this.pricesCounter++:this.pricesCounter++,r&&void 0!==this.previousResult?this.setResult(t*this.weightFactor+this.previousResult*(1-this.weightFactor),r):this.setResult(t*this.weightFactor+(void 0!==this.result?this.result:t)*(1-this.weightFactor),r)}},{key:"getResult",value:function(){if(this.pricesCounter<this.interval)throw new m;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&et(e.prototype,n),o&&et(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,o}(M);function st(t){return st="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},st(t)}function ft(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,vt(n.key),n)}}function ht(t,r,e){return(r=vt(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function vt(t){var r=function(t,r){if("object"!=st(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=st(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==st(r)?r:r+""}var pt=function(){return t=function t(r,e,n){(function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")})(this,t),ht(this,"short",void 0),ht(this,"long",void 0),ht(this,"signal",void 0),ht(this,"prices",[]),ht(this,"result",void 0),this.short=r,this.long=e,this.signal=n},r=[{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.prices.length&&r?this.prices[this.prices.length-1]=t:this.prices.push(t);var e=this.short.update(t,r),n=this.long.update(t,r);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var o=e-n,i=this.signal.update(o,r);return this.result={histogram:o-i,macd:o,signal:i}}}}],r&&ft(t.prototype,r),e&&ft(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,e}();function yt(t){return yt="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},yt(t)}function bt(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,jt(n.key),n)}}function dt(t,r,e){return r=gt(r),function(t,r){if(r&&("object"==yt(r)||"function"==typeof r))return r;if(void 0!==r)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,mt()?Reflect.construct(r,e||[],gt(t).constructor):r.apply(t,e))}function mt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(mt=function(){return!!t})()}function gt(t){return gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},gt(t)}function wt(t,r){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},wt(t,r)}function Ot(t,r,e){return(r=jt(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function jt(t){var r=function(t,r){if("object"!=yt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==yt(r)?r:r+""}var _t=function(t){function r(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Y;return function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,r),Ot(e=dt(this,r),"interval",void 0),Ot(e,"previousPrices",[]),Ot(e,"avgGain",void 0),Ot(e,"avgLoss",void 0),Ot(e,"maxValue",100),e.interval=t,e.avgGain=new n(e.interval),e.avgLoss=new n(e.interval),e}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&wt(t,r)}(r,t),e=r,n=[{key:"update",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&r?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var e=t,n=this.previousPrices[this.previousPrices.length-2];if(e>n?(this.avgLoss.update(0,r),this.avgGain.update(t-n,r)):(this.avgLoss.update(n-e,r),this.avgGain.update(0,r)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(0===o)return this.setResult(100,r);var i=this.avgGain.getResult()/o;return this.setResult(this.maxValue-this.maxValue/(i+1),r)}}}}],n&&bt(e.prototype,n),o&&bt(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,o}(_);function St(t){return St="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},St(t)}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 Et=function(t,r){if(void 0===t||void 0===r)throw Error("undefined param in getEMA");for(var e=t.length,n=new Array(e).fill(null),o=new ct(r),i=0;i<e;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function At(t){return At="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},At(t)}var kt=function(t,r){if(void 0===t||void 0===r)throw Error("undefined param in getSMA");for(var e=t.length,n=new Array(e).fill(null),o=new N(r),i=0;i<e;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function Rt(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}var Tt=function(t,r){return t>r},Mt=function(t,r){return t<r},xt=function(t){var r=t.fast,e=t.slow,n=r.length;if(n==!e.length)throw Error("fast and slow do not have the same length");for(var o=new Array(n).fill(null),i=0;i<n;i++){var u=r[i],l=e[i],a=void 0;null===u||null===l?a="neutral":u===l?a=Tt(r[i-1],e[i-1])?1:Mt(r[i-1],e[i-1])?0:.5:Tt(u,l)?a=1:Mt(u,l)&&(a=0),o[i]=a}var c=Dt(o);return Ct(c)},Ct=function(t){var r=t.map((function(t){return t.length}));return t.map((function(t,e){var n=r[e];return t.map((function(t,r){var e=n-r;return.5===t&&(e=0),1===t&&(e*=1),0===t&&(e*=-1),e})).reverse()})).flat()},Dt=function(t){return 0===t.length?[]:t.reduce((function(t,r,e,n){if(0===e)t.push([r]);else{var o=n[e-1],i=t[t.length-1];r!==o?t.push([r]):i.push(r)}return t}),[])},It=function(t,r){var e=t.verticalOhlcv;if(!e.hasOwnProperty(r))throw Error("property ".concat(r," not found in verticalOhlcv. Invoked by findDirectionCross."));for(var n=e[r],o=n.length,i=new Array(o).fill(null),u=0;u<o;u++)if(u>0&&null!==n[u]){var l=n[u],a=n[u-1];Tt(l,a)?i[u]=1:Mt(l,a)?i[u]=0:i[u]=.5}return i},Lt=function(t,r){if(!t.verticalOhlcv.hasOwnProperty(r))throw Error("property ".concat(r," not found in verticalOhlcv. Invoked by findDirectionCross."));var e=It(t,r),n=Dt(e);return Ct(n)};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 Ft={getSMA:kt,getEMA:Et},Nt=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"SMA",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:14,o=t.length;if(o<r)return[];for(var i=new Array(o).fill(null),u=new _t(r),l=0;l<o;l++){var a=null;if(null!==t[l]){u.update(t[l]);try{a=u.getResult()}catch(t){a=null}}i[l]=a}var c,s,f,h=(c={},s="rsi_".concat(r),f=i,(s=function(t){var r=function(t,r){if("object"!=Bt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.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(r)?r:r+""}(s))in c?Object.defineProperty(c,s,{value:f,enumerable:!0,configurable:!0,writable:!0}):c[s]=f,c);if("string"==typeof e&&"number"==typeof n&&Ft.hasOwnProperty("get".concat(e))){var v=Ft["get".concat(e)](i,n);h["rsi_".concat(e,"_").concat(n)]=v,h["rsi_".concat(r,"_x_rsi_").concat(e,"_").concat(n)]=xt({fast:i,slow:v})}return h};function qt(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=function(t,r){if(t){if("string"==typeof t)return Gt(t,r);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Gt(t,r):void 0}}(t))||r&&t&&"number"==typeof t.length){e&&(t=e);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,u=!0,l=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==e.return||e.return()}finally{if(l)throw i}}}}function Gt(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}var Ht=function(t){var r=new Date(t),e=r.getDay(),n=r.getDate(),o=new Date(r.getFullYear(),r.getMonth(),1).getDay();return{day_of_the_week:e,day_of_the_month:n,week_of_the_month:Math.ceil((n+o)/7)}},Vt=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.25;return null===t||null===r?null:t>r*(5*e)?1:t<r*(3*e)?0:2*e},zt=function(t,r){if(!r)return null;var e=t.open,n=t.high,o=t.low,i=t.close,u=r.high,l=r.low,a=[n,u],c=[o,l];i>e?(a.push(i),c.push(e)):(a.push(e),c.push(i));var s=Math.max(n,u)-Math.min(o,l)-(Math.abs(u-l)+Math.abs(n-o));return s>0?s:.01},Ut=function(t,r){for(var e=t.length,n=new N(r),o=new Array(e),i=0,u=0,l=0,a=0;a<e;a++)if(n.update(t[a]),n.isStable){var c=n.getResult();o[a]=c,i+=c,u+=c*c,l++}else o[a]=null;var s=i/l,f=u/l-s*s,h=Math.sqrt(f);return o.map((function(t){return null!==t?(t-s)/h:null}))},$t=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;if(t.length!==r.length)throw new Error("Both arrays must have the same length");for(var n=Ut(t,e),o=Ut(r,e),i=t.length,u=[],l=0,a=0,c=0,s=0,f=0,h=0,v=-1,p=0;p<i;p++){if(null!==n[p]&&null!==o[p]){v=p;break}u.push(0)}if(-1===v)return new Array(i).fill(0);for(var y=v;y<i;y++){var b=n[y],d=o[y];if(null!==b&&null!==d)if(l+=b,a+=d,c+=b*d,s+=b*b,f+=d*d,++h<2)u.push(0);else{var m=h*c-l*a,g=Math.sqrt((h*s-l*l)*(h*f-a*a)),w=0===g?0:m/g;u.push(w)}else l=a=c=s=f=h=0,u.push(0)}return u};function Jt(t){return Jt="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},Jt(t)}function Yt(t,r,e){return(r=Xt(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function Kt(t,r){return function(t){if(Array.isArray(t))return t}(t)||function(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,u,l=[],a=!0,c=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;a=!1}else for(;!(a=(n=i.call(e)).done)&&(l.push(n.value),l.length!==r);a=!0);}catch(t){c=!0,o=t}finally{try{if(!a&&null!=e.return&&(u=e.return(),Object(u)!==u))return}finally{if(c)throw o}}return l}}(t,r)||function(t,r){if(t){if("string"==typeof t)return Qt(t,r);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Qt(t,r):void 0}}(t,r)||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 Qt(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function Wt(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Xt(n.key),n)}}function Xt(t){var r=function(t,r){if("object"!=Jt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=Jt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Jt(r)?r:r+""}var Zt=function(){return t=function t(r){var e=r.input,n=r.ticker,o=void 0===n?"undefined":n;if(function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,t),!Array.isArray(e))throw Error("input ohlcv must be an array: "+o);if(0===e.length)throw Error("input ohlcv must not be empty: "+o);if(!e[0].hasOwnProperty("close"))throw Error("input ohlcv array objects require at least close property: "+o);return this.len=e.length,this.crossPairsArr=[],this.inputOhlcv=e,this.verticalOhlcv=function(t,r){for(var e=["open","high","low","close","volume"],n=new Set(e),o={},i=0,u=e;i<u.length;i++)o[u[i]]=new Array(r);for(var l,a=[],c=0,s=Object.keys(t[0]);c<s.length;c++){var f=s[c];n.has(f)||(o[f]=new Array(r),a.push(f))}var h,v=0,p=0,y=(h=t)[0].hasOwnProperty("date")&&"string"==typeof h[0].date&&/^\d{4}-\d{2}-\d{2}/.test(h[0].date);y&&(o.session_index=new Array(r),o.session_intraday_index=new Array(r),o.day_of_the_week=new Array(r),o.day_of_the_month=new Array(r),o.week_of_the_month=new Array(r),l=t[0].date.slice(0,10));for(var b=0;b<r;b++){var d=t[b];o.open[b]=d.open,o.high[b]=d.high,o.low[b]=d.low,o.close[b]=d.close,o.volume[b]=d.volume;var m,g=qt(a);try{for(g.s();!(m=g.n()).done;){var w=m.value;o[w][b]=d[w]}}catch(t){g.e(t)}finally{g.f()}if(y){var O=d.date.slice(0,10);O!==l&&(l=O,v++,p=0);var j=Ht(O),_=j.day_of_the_week,S=j.day_of_the_month,P=j.week_of_the_month;o.day_of_the_week[b]=_,o.day_of_the_month[b]=S,o.week_of_the_month[b]=P,o.session_index[b]=v,o.session_intraday_index[b]=p,p++}}return o}(e,this.len),this.indicators={},this.studies={},this.utilities={correlation:$t},this},r=[{key:"getData",value:function(){this.compute();for(var t=this.verticalOhlcv,r=Object.keys(t),e=t[r[0]].length,n=r.length,o=[],i=0;i<e;i++){for(var u={},l=!1,a=0;a<n;a++){var c=r[a],s=t[c][i];if(null==s){l=!0;break}u[c]=s}l||o.push(u)}return o}},{key:"getLastValues",value:function(){this.compute();for(var t=this.verticalOhlcv,r=this.len,e={},n=0,o=Object.entries(t);n<o.length;n++){var i=Kt(o[n],2),u=i[0],l=i[1][r-1];e[u]=l}return Object.assign(e,this.studies),e}},{key:"compute",value:function(){for(var t=this.indicators,r=this.addColumn.bind(this),e=0,n=Object.entries(t);e<n.length;e++){var o=Kt(n[e],2),i=o[0],u=o[1];this.verticalOhlcv.hasOwnProperty(i)?delete this.indicators[i]:r(i,u)}return this}},{key:"addColumn",value:function(t,r){var e=this.len;if(t=t.toLowerCase(),r.length>e)throw new Error("Invalid column data: The length of the new column exceeds the length of the OHLCV data");if(r.length<e){var n=e-r.length;r=new Array(n).fill(null).concat(r)}this.verticalOhlcv[t]=r}},{key:"crossPairs",value:function(t){this.compute();var r=function(t,r){var e,n=t.verticalOhlcv,o=t.len,i={},u={},l={},a=function(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=function(t,r){if(t){if("string"==typeof t)return Rt(t,r);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Rt(t,r):void 0}}(t))||r&&t&&"number"==typeof t.length){e&&(t=e);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,u=!0,l=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==e.return||e.return()}finally{if(l)throw i}}}}(r);try{var c=function(){var t=e.value,r=t.fast,a=t.slow,c=t.count;if(!r||!a)return 1;"number"!=typeof a||i[a]||(i[a]=Array(o).fill(a));var s="".concat(r,"_x_").concat(a),f="".concat(r,"_c_").concat(a),h=function(t){return void 0!==c?t.slice(-c).filter((function(t){return 1===t||-1===t})).length:0};if(n[s]){var v=n[s];u[s]=v,void 0!==c&&(l[f]=h(v))}else if(n[r]&&n[a]){var p=xt({fast:n[r],slow:n[a]});u[s]=p,void 0!==c&&(l[f]=h(p))}else if(n[r]&&i[a]){var y=xt({fast:n[r],slow:i[a]});u[s]=y,void 0!==c&&(l[f]=h(y))}else console.log("Missing ohlcv properties for ".concat(r," or ").concat(a))};for(a.s();!(e=a.n()).done;)c()}catch(t){a.e(t)}finally{a.f()}return{x:u,c:l}}(this,t),e=r.x,n=r.c;return Object.assign(this.indicators,e),Object.assign(this.studies,n),this.compute(),this}},{key:"lag",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.compute();for(var e=this.verticalOhlcv,n=0;n<t.length;n++)for(var o=1;o<=r;o++){var i="".concat(t[n],"_lag_").concat(o),u=e[t[n]].slice(0,-o);Object.assign(this.indicators,Yt({},i,u))}return this.compute(),this}},{key:"relativeVolume",value:function(t){var r=function(t,r){var e=function(t){for(var r=new N(arguments.length>1&&void 0!==arguments[1]?arguments[1]:10),e=new Array(t.length).fill(null),n=new Array(t.length).fill(null),o=0;o<t.length;o++){var i=null;r.update(t[o]);try{i=r.getResult()}catch(t){i=null}e[o]=i,"number"==typeof e[o-1]&&(n[o]=t[o]/e[o-1])}return console.log(n),n}(t.verticalOhlcv.volume,r);return function(t,r,e){return(r=function(t){var r=function(t,r){if("object"!=St(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=St(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==St(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}({},"relative_volume_".concat(r),e)}(this,t);return Object.assign(this.indicators,r),this}},{key:"ema",value:function(t){var r=function(t,r){var e=t.verticalOhlcv.close,n=Et(e,r);return function(t,r,e){return(r=function(t){var r=function(t,r){if("object"!=Pt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.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(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}({},"ema_".concat(r),n)}(this,t);return Object.assign(this.indicators,r),this}},{key:"sma",value:function(t){var r=function(t,r){var e=t.verticalOhlcv.close,n=kt(e,r);return function(t,r,e){return(r=function(t){var r=function(t,r){if("object"!=At(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=At(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==At(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}({},"sma_".concat(r),n)}(this,t);return Object.assign(this.indicators,r),this}},{key:"macd",value:function(t,r,e){var n=function(t,r,e,n){return function(t){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:26,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:9,o=t.length,i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),a=new pt(new ct(r),new ct(e),new ct(n)),c=0;c<o;c++){var s={};a.update(t[c]);try{s=a.getResult()}catch(t){s={macd:null,signal:null,histogram:null}}i[c]=s.macd,u[c]=s.signal,l[c]=s.histogram}return{macd_diff:i,macd_dea:u,macd_histogram:l,macd_diff_x_macd_dea:xt({fast:i,slow:u})}}(t.verticalOhlcv.close,r,e,n)}(this,t,r,e);return Object.assign(this.indicators,n),this}},{key:"bollingerBands",value:function(t,r){var e=function(t,r,e){return function(t){for(var r,e,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,u=t.length,l=Array(u).fill(null),a=Array(u).fill(null),c=Array(u).fill(null),s=Array(u).fill(null),f=Array(u).fill(null),h=null,v=null,p=new tt(o,i),y=0;y<u;y++){var b={};p.update(t[y]);var d=!1;try{b=p.getResult()}catch(t){d=!0,b={upper:null,middle:null,lower:null}}if(l[y]=b.upper,a[y]=b.middle,c[y]=b.lower,d)s[y]=null,f[y]=null;else{var m=(r=t[y],e=b.upper,{range:(r-(n=b.lower))/(e-n)*100,height:(e-n)/n*100});h=m.range,v=m.height}s[y]=h,f[y]=v}return{bollinger_bands_upper:l,bollinger_bands_middle:a,bollinger_bands_lower:c,bollinger_bands_range:s,bollinger_bands_height:f}}(t.verticalOhlcv.close,r,e)}(this,t,r);return Object.assign(this.indicators,e),this}},{key:"rsi",value:function(t,r,e){var n=function(t,r,e,n){var o=t.verticalOhlcv.close;return"number"==typeof r&&void 0===n&&(n=r),Nt(o,r,e,n)}(this,t,r,e);return Object.assign(this.indicators,n),this}},{key:"orb",value:function(){var t=function(t,r){for(var e=new Array(r).fill(0),n=new Array(r).fill(0),o=0,i=null,u=0,l=0,a=0;a<r;a++){var c=t[a];if(0===a&&!c.hasOwnProperty("date"))throw Error("input ohlcv array must have a date property available in candle datapoint");var s=c.date.split(" ")[0];s!==i&&(i=s,u=c.high,l=c.low),e[o]=u,n[o]=l,o++}return{orb_high:e,orb_low:n}}(this.inputOhlcv,this.len);return Object.assign(this.indicators,t),this}},{key:"donchianChannels",value:function(t,r){var e=function(t,r,e){var n=t.verticalOhlcv,o=t.len;return function(t,r,e,n,o){for(var i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),a=[],c=[],s=0;s<o;s++){for(;a.length&&a[0]<=s-e;)a.shift();for(;a.length&&t[a[a.length-1]]<=t[s];)a.pop();for(a.push(s);c.length&&c[0]<=s-e;)c.shift();for(;c.length&&r[c[c.length-1]]>=r[s];)c.pop();if(c.push(s),s>=e-1){var f=t[a[0]],h=r[c[0]],v=(f+h)/2,p=s+n;p>=0&&p<o&&(i[p]=f,u[p]=h,l[p]=v)}}return{donchian_channel_upper:i,donchian_channel_lower:u,donchian_channel_basis:l}}(n.high,n.low,r,e,o)}(this,t,r);return Object.assign(this.indicators,e),this}},{key:"candlesStudies",value:function(t){var r=function(t,r){return function(t){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,e=arguments.length>2?arguments[2]:void 0,n=function(t,r){return Math.abs(t-r)},o=new Array(e).fill(null),i=new Array(e).fill(null),u=new Array(e).fill(null),l=new Array(e).fill(null),a=new Array(e).fill(null),c=new N(r),s=new N(parseInt(r/2)),f=0;f<e;f++){var h=t[f],v=h.open,p=h.high,y=h.low,b=h.close,d=void 0!==t[f-1]?zt(t[f],t[f-1]):null,m=null,g=null,w=n(v,b),O=void 0,j=void 0,_=b>v?1:0;1===_?(O=n(p,b),j=n(v,y)):(O=n(p,v),j=n(b,y)),c.update(w),d&&s.update(d);try{m=c.getResult(),g=s.getResult()}catch(t){m=null,g=null}o[f]=_,i[f]=Vt(w,m,.25),u[f]=Vt(O,m,.25),l[f]=Vt(j,m,.25),a[f]=Vt(d,g,.25)}return{candle_direction:o,candle_gap_size:a,candle_body_size:i,candle_top_size:u,candle_bottom_size:l}}(t.inputOhlcv,r,t.len)}(this,t);return Object.assign(this.indicators,r),this}},{key:"findDirectionCross",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close","low"];this.compute();for(var r=0;r<t.length;r++){var e=t[r],n=Lt(this,e);Object.assign(this.indicators,Yt({},"".concat(e,"_direction_cross"),n))}return this.compute(),this}},{key:"findLinearDirection",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close","low"];this.compute();for(var r=0;r<t.length;r++){var e=t[r],n=It(this,e);Object.assign(this.indicators,Yt({},"".concat(e,"_linear_direction"),n))}return this.compute(),this}},{key:"change",value:function(t){this.compute();var r=this.verticalOhlcv;if(!r.hasOwnProperty(t)){var e='key "'.concat(t,'" not found in verticalOhlcv. change method');throw Error(e)}return Object.assign(this.indicators,Yt({},"".concat(t,"_change"),function(t){if(!Array.isArray(t))throw Error("data param in arrayGt function must be array");for(var r=Array(t.length).fill(0),e=1;e<r.length;e++)if(null===t[e]||null===t[e-1])r[e];else{var n=t[e],o=t[e-1];r[e]=(n-o)/o}return r}(r[t]))),this.compute(),this}},{key:"gt",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"close",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"open";this.compute();var e,n=this.verticalOhlcv;if(!n.hasOwnProperty(t)){var o='key "'.concat(t,'" not found in verticalOhlcv. gt method');throw Error(o)}if("string"==typeof r){if(!n.hasOwnProperty(r)){var i='key "'.concat(r,'" not found in verticalOhlcv. gt method');throw Error(i)}e=n[r]}else"number"==typeof r&&(e=new Array(n[t].length).fill(r));return Object.assign(this.indicators,Yt({},"".concat(t,"_gt_").concat(r),function(t,r){if(!Array.isArray(t)||!Array.isArray(r))throw Error("a and b params in arrayGt function must be arrays");if(t.length!==r.length)throw Error("array a and b must be the same length in arrayGt function");if(t.length<2)throw Error("arrays in arrayGt function must have at least 2 numeric items");for(var e=Array(t.length).fill(.5),n=1;n<e.length;n++)null!==t[n]&&null!==r[n]||(e[n]=null),t[n]>r[n]?e[n]=1:t[n]<r[n]&&(e[n]=0);return e}(n[t],e))),this.compute(),this}}],r&&Wt(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r}()})(),OHLCV_INDICATORS=r})();
package/index.js CHANGED
@@ -10,6 +10,7 @@ import { donchianChannels } from './src/moving-averages/donchianChannel.js'
10
10
  import { parseOhlcvToVertical } from './src/utilities/parsing-utilities.js'
11
11
  import { candlesStudies } from './src/studies/candleStudies.js'
12
12
  import { correlation } from './src/studies/correlation.js'
13
+ import { arrayChange, arrayGt } from './src/utilities/math-array.js'
13
14
 
14
15
  export default class OHLCV_INDICATORS {
15
16
  constructor({input, ticker = 'undefined'}) {
@@ -255,29 +256,58 @@ export default class OHLCV_INDICATORS {
255
256
  this.compute()
256
257
  return this
257
258
  }
258
- gt(arr = [{a: 'high', b: 'low'}])
259
+
260
+ change(key)
261
+ {
262
+ this.compute()
263
+ const {verticalOhlcv} = this
264
+
265
+ if(!verticalOhlcv.hasOwnProperty(key))
266
+ {
267
+ const err = `key "${key}" not found in verticalOhlcv. change method`
268
+ throw Error(err)
269
+ }
270
+
271
+ Object.assign(this.indicators, {
272
+ [`${key}_change`]: arrayChange(verticalOhlcv[key])
273
+ })
274
+
275
+ this.compute()
276
+
277
+ return this
278
+
279
+ }
280
+
281
+ gt(a = 'close', b = 'open')
259
282
  {
260
283
  this.compute()
261
284
 
262
285
  const {verticalOhlcv} = this
263
286
 
264
- for(let x = 0; x < arr.length; x++)
287
+ if(!verticalOhlcv.hasOwnProperty(a))
265
288
  {
266
- const {a, b} = arr[x]
267
- let bArr
289
+ const errA = `key "${a}" not found in verticalOhlcv. gt method`
290
+ throw Error(errA)
291
+ }
292
+
293
+ let bArr
268
294
 
269
- if(typeof b === 'string')
270
- {
271
- bArr = verticalOhlcv[b]
272
- }
273
- else if(typeof b === 'number')
295
+ if(typeof b === 'string')
296
+ {
297
+ if(!verticalOhlcv.hasOwnProperty(b))
274
298
  {
275
- bArr = new Array(verticalOhlcv[a].length).fill(b)
299
+ const errB = `key "${b}" not found in verticalOhlcv. gt method`
300
+ throw Error(errB)
276
301
  }
277
302
 
278
- const result = verticalOhlcv[a].map((v, i) => (v > bArr[i]) ? 1 : 0)
279
- Object.assign(this.indicators, {[`${a}_gt_${b}`]: result})
303
+ bArr = verticalOhlcv[b]
280
304
  }
305
+ else if(typeof b === 'number')
306
+ {
307
+ bArr = new Array(verticalOhlcv[a].length).fill(b)
308
+ }
309
+
310
+ Object.assign(this.indicators, {[`${a}_gt_${b}`]: arrayGt(verticalOhlcv[a], bArr)})
281
311
 
282
312
  this.compute()
283
313
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ohlcv-indicators",
3
- "version": "1.6.3",
3
+ "version": "1.6.4",
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",
@@ -0,0 +1,64 @@
1
+ //change between current and prev
2
+ export const arrayChange = data => {
3
+
4
+ if(!Array.isArray(data))
5
+ {
6
+ throw Error('data param in arrayGt function must be array')
7
+ }
8
+
9
+ const output = Array(data.length).fill(0)
10
+
11
+ for (let x = 1; x < output.length; x++) {
12
+
13
+ if(data[x] === null || data[x - 1] === null)
14
+ {
15
+ output[x] === null
16
+ }
17
+ else
18
+ {
19
+ const curr = data[x]
20
+ const prev = data[x - 1]
21
+ output[x] = (curr - prev) / prev
22
+ }
23
+ }
24
+
25
+ return output
26
+ }
27
+
28
+ //tells if array a is greater than array b
29
+
30
+ export const arrayGt = (a, b) => {
31
+
32
+ if(!Array.isArray(a) || !Array.isArray(b))
33
+ {
34
+ throw Error('a and b params in arrayGt function must be arrays')
35
+ }
36
+ if(a.length !== b.length)
37
+ {
38
+ throw Error('array a and b must be the same length in arrayGt function')
39
+ }
40
+ if(a.length < 2)
41
+ {
42
+ throw Error('arrays in arrayGt function must have at least 2 numeric items')
43
+ }
44
+
45
+ const output = Array(a.length).fill(0.5)
46
+
47
+ for (let x = 1; x < output.length; x++) {
48
+
49
+ if(a[x] === null || b[x] === null)
50
+ {
51
+ output[x] = null
52
+ }
53
+ if(a[x] > b[x])
54
+ {
55
+ output[x] = 1
56
+ }
57
+ else if(a[x] < b[x])
58
+ {
59
+ output[x] = 0
60
+ }
61
+ }
62
+
63
+ return output
64
+ }