ohlcv-indicators 1.9.3 → 1.9.5

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={};(()=>{function r(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}t.r(e),t.d(e,{default:()=>te});var n=function(t,e){return t===e},i=function(t,e){return t>e},o=function(t,e){return t<e},a=function(t){var e=t.fast,r=t.high,a=t.low,u=t.slow,s=e.length;if(s==!u.length)throw Error("fast and slow do not have the same length");for(var f=new Array(s).fill(.5),h=0;h<s;h++){var v=(null==f?void 0:f[h-1])||.5,p=e[h],y=u[h],d=null==r?void 0:r[h],b=null==a?void 0:a[h];if(!r&&!a||void 0!==d&&void 0!==b){var m=u[h-1],g=null==r?void 0:r[h-1],w=null==a?void 0:a[h-1];if(!r&&!a||void 0!==g&&void 0!==w&&void 0!==m){var _=void 0;null===p||null===y?_=.5:n(p,y)?_=v:i(p,y)?_=o(b,y)&&i(w,m)?0:1:o(p,y)&&(_=i(d,y)&&o(g,m)?1:0),f[h]=_}}}var O=c(f);return l(O)},l=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()},c=function(t){return 0===t.length?[]:t.reduce((function(t,e,r,n){if(0===r)t.push([e]);else{var i=n[r-1],o=t[t.length-1];e!==i?t.push([e]):o.push(e)}return t}),[])},u=1e6,s="[big.js] ",f=s+"Invalid ",h=f+"decimal places",v=f+"rounding mode",p=s+"Division by zero",y={},d=void 0,b=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function m(t,e,r,n){var i=t.c;if(r===d&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(v);if(e<1)n=3===r&&(n||!!i[0])||0===e&&(1===r&&i[0]>=5||2===r&&(i[0]>5||5===i[0]&&(n||i[1]!==d))),i.length=1,n?(t.e=t.e-e+1,i[0]=1):i[0]=t.e=0;else if(e<i.length){if(n=1===r&&i[e]>=5||2===r&&(i[e]>5||5===i[e]&&(n||i[e+1]!==d||1&i[e-1]))||3===r&&(n||!!i[0]),i.length=e,n)for(;++i[--e]>9;)if(i[e]=0,0===e){++t.e,i.unshift(1);break}for(e=i.length;!i[--e];)i.pop()}return t}function g(t,e,r){var n=t.e,i=t.c.join(""),o=i.length;if(e)i=i.charAt(0)+(o>1?"."+i.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)i="0"+i;i="0."+i}else if(n>0)if(++n>o)for(n-=o;n--;)i+="0";else n<o&&(i=i.slice(0,n)+"."+i.slice(n));else o>1&&(i=i.charAt(0)+"."+i.slice(1));return t.s<0&&r?"-"+i:i}function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function _(t){var e="function"==typeof Map?new Map:void 0;return _=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(O())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var i=new(t.bind.apply(t,n));return r&&P(i,r.prototype),i}(t,arguments,S(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),P(r,t)},_(t)}function O(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(O=function(){return!!t})()}function P(t,e){return P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},P(t,e)}function S(t){return S=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},S(t)}y.abs=function(){var t=new this.constructor(this);return t.s=1,t},y.cmp=function(t){var e,r=this,n=r.c,i=(t=new r.constructor(t)).c,o=r.s,a=t.s,l=r.e,c=t.e;if(!n[0]||!i[0])return n[0]?o:i[0]?-a:0;if(o!=a)return o;if(e=o<0,l!=c)return l>c^e?1:-1;for(a=(l=n.length)<(c=i.length)?l:c,o=-1;++o<a;)if(n[o]!=i[o])return n[o]>i[o]^e?1:-1;return l==c?0:l>c^e?1:-1},y.div=function(t){var e=this,r=e.constructor,n=e.c,i=(t=new r(t)).c,o=e.s==t.s?1:-1,a=r.DP;if(a!==~~a||a<0||a>u)throw Error(h);if(!i[0])throw Error(p);if(!n[0])return t.s=o,t.c=[t.e=0],t;var l,c,s,f,v,y=i.slice(),b=l=i.length,g=n.length,w=n.slice(0,l),_=w.length,O=t,P=O.c=[],S=0,j=a+(O.e=e.e-t.e)+1;for(O.s=o,o=j<0?0:j,y.unshift(0);_++<l;)w.push(0);do{for(s=0;s<10;s++){if(l!=(_=w.length))f=l>_?1:-1;else for(v=-1,f=0;++v<l;)if(i[v]!=w[v]){f=i[v]>w[v]?1:-1;break}if(!(f<0))break;for(c=_==l?i:y;_;){if(w[--_]<c[_]){for(v=_;v&&!w[--v];)w[v]=9;--w[v],w[_]+=10}w[_]-=c[_]}for(;!w[0];)w.shift()}P[S++]=f?s:++s,w[0]&&f?w[_]=n[b]||0:w=[n[b]]}while((b++<g||w[0]!==d)&&o--);return P[0]||1==S||(P.shift(),O.e--,j--),S>j&&m(O,j,r.RM,w[0]!==d),O},y.eq=function(t){return 0===this.cmp(t)},y.gt=function(t){return this.cmp(t)>0},y.gte=function(t){return this.cmp(t)>-1},y.lt=function(t){return this.cmp(t)<0},y.lte=function(t){return this.cmp(t)<1},y.minus=y.sub=function(t){var e,r,n,i,o=this,a=o.constructor,l=o.s,c=(t=new a(t)).s;if(l!=c)return t.s=-c,o.plus(t);var u=o.c.slice(),s=o.e,f=t.c,h=t.e;if(!u[0]||!f[0])return f[0]?t.s=-c:u[0]?t=new a(o):t.s=1,t;if(l=s-h){for((i=l<0)?(l=-l,n=u):(h=s,n=f),n.reverse(),c=l;c--;)n.push(0);n.reverse()}else for(r=((i=u.length<f.length)?u:f).length,l=c=0;c<r;c++)if(u[c]!=f[c]){i=u[c]<f[c];break}if(i&&(n=u,u=f,f=n,t.s=-t.s),(c=(r=f.length)-(e=u.length))>0)for(;c--;)u[e++]=0;for(c=e;r>l;){if(u[--r]<f[r]){for(e=r;e&&!u[--e];)u[e]=9;--u[e],u[r]+=10}u[r]-=f[r]}for(;0===u[--c];)u.pop();for(;0===u[0];)u.shift(),--h;return u[0]||(t.s=1,u=[h=0]),t.c=u,t.e=h,t},y.mod=function(t){var e,r=this,n=r.constructor,i=r.s,o=(t=new n(t)).s;if(!t.c[0])throw Error(p);return r.s=t.s=1,e=1==t.cmp(r),r.s=i,t.s=o,e?new n(r):(i=n.DP,o=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=i,n.RM=o,this.minus(r.times(t)))},y.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},y.plus=y.add=function(t){var e,r,n,i=this,o=i.constructor;if(t=new o(t),i.s!=t.s)return t.s=-t.s,i.minus(t);var a=i.e,l=i.c,c=t.e,u=t.c;if(!l[0]||!u[0])return u[0]||(l[0]?t=new o(i):t.s=i.s),t;if(l=l.slice(),e=a-c){for(e>0?(c=a,n=u):(e=-e,n=l),n.reverse();e--;)n.push(0);n.reverse()}for(l.length-u.length<0&&(n=u,u=l,l=n),e=u.length,r=0;e;l[e]%=10)r=(l[--e]=l[e]+u[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},y.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(f+"exponent");for(i&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return i?r.div(n):n},y.prec=function(t,e){if(t!==~~t||t<1||t>u)throw Error(f+"precision");return m(new this.constructor(this),t,e)},y.round=function(t,e){if(t===d)t=0;else if(t!==~~t||t<-u||t>u)throw Error(h);return m(new this.constructor(this),t+this.e+1,e)},y.sqrt=function(){var t,e,r,n=this,i=n.constructor,o=n.s,a=n.e,l=new i("0.5");if(!n.c[0])return new i(n);if(o<0)throw Error(s+"No square root");0===(o=Math.sqrt(n+""))||o===1/0?((e=n.c.join("")).length+a&1||(e+="0"),a=((a+1)/2|0)-(a<0||1&a),t=new i(((o=Math.sqrt(e))==1/0?"5e":(o=o.toExponential()).slice(0,o.indexOf("e")+1))+a)):t=new i(o+""),a=t.e+(i.DP+=4);do{r=t,t=l.times(r.plus(n.div(r)))}while(r.c.slice(0,a).join("")!==t.c.slice(0,a).join(""));return m(t,(i.DP-=4)+t.e+1,i.RM)},y.times=y.mul=function(t){var e,r=this,n=r.constructor,i=r.c,o=(t=new n(t)).c,a=i.length,l=o.length,c=r.e,u=t.e;if(t.s=r.s==t.s?1:-1,!i[0]||!o[0])return t.c=[t.e=0],t;for(t.e=c+u,a<l&&(e=i,i=o,o=e,u=a,a=l,l=u),e=new Array(u=a+l);u--;)e[u]=0;for(c=l;c--;){for(l=0,u=a+c;u>c;)l=e[u]+o[c]*i[u-c-1]+l,e[u--]=l%10,l=l/10|0;e[u]=l}for(l?++t.e:e.shift(),c=e.length;!e[--c];)e.pop();return t.c=e,t},y.toExponential=function(t,e){var r=this,n=r.c[0];if(t!==d){if(t!==~~t||t<0||t>u)throw Error(h);for(r=m(new r.constructor(r),++t,e);r.c.length<t;)r.c.push(0)}return g(r,!0,!!n)},y.toFixed=function(t,e){var r=this,n=r.c[0];if(t!==d){if(t!==~~t||t<0||t>u)throw Error(h);for(t=t+(r=m(new r.constructor(r),t+r.e+1,e)).e+1;r.c.length<t;)r.c.push(0)}return g(r,!1,!!n)},y[Symbol.for("nodejs.util.inspect.custom")]=y.toJSON=y.toString=function(){var t=this,e=t.constructor;return g(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},y.toNumber=function(){var t=Number(g(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(s+"Imprecise conversion");return t},y.toPrecision=function(t,e){var r=this,n=r.constructor,i=r.c[0];if(t!==d){if(t!==~~t||t<1||t>u)throw Error(f+"precision");for(r=m(new n(r),t,e);r.c.length<t;)r.c.push(0)}return g(r,t<=r.e||r.e<=n.NE||r.e>=n.PE,!!i)},y.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(s+"valueOf disallowed");return g(t,t.e<=e.NE||t.e>=e.PE,!0)},function t(){function e(r){var n=this;if(!(n instanceof e))return r===d?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(f+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,i;if(!b.test(e))throw Error(f+"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=y,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 j=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=S(e),function(t,e){if(e&&("object"==w(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,O()?Reflect.construct(e,r||[],S(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&&P(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(_(Error));function A(t){return A="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},A(t)}function E(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,k(n.key),n)}}function R(t,e,r){return(e=k(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function k(t){var e=function(t,e){if("object"!=A(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=A(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==A(e)?e:e+""}var I=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),R(this,"previousHighest",void 0),R(this,"highest",void 0),R(this,"previousLowest",void 0),R(this,"lowest",void 0),R(this,"previousResult",void 0),R(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 j;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)}}])&&E(t.prototype,e),r&&E(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function M(t){return M="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},M(t)}function T(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,L(n.key),n)}}function C(t,e,r){return e=x(e),function(t,e){if(e&&("object"==M(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,D()?Reflect.construct(e,r||[],x(t).constructor):e.apply(t,r))}function D(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(D=function(){return!!t})()}function x(t){return x=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},x(t)}function B(t,e){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},B(t,e)}function L(t){var e=function(t,e){if("object"!=M(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==M(e)?e:e+""}var z=function(t){function e(t){var r,n,i,o;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=C(this,e),o=void 0,(i=L(i="interval"))in n?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,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&&B(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)}}])&&T(r.prototype,n),i&&T(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(I);function F(t){return F="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},F(t)}function N(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,G(n.key),n)}}function V(t,e,r){return e=q(e),function(t,e){if(e&&("object"==F(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,H()?Reflect.construct(e,r||[],q(t).constructor):e.apply(t,r))}function H(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(H=function(){return!!t})()}function q(t){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},q(t)}function U(t,e){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},U(t,e)}function G(t){var e=function(t,e){if("object"!=F(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=F(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==F(e)?e:e+""}var $=function(t){function e(){var t,r,n,i;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var o=arguments.length,a=new Array(o),l=0;l<o;l++)a[l]=arguments[l];return r=t=V(this,e,[].concat(a)),i=[],(n=G(n="prices"))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,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&&U(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&&N(r.prototype,n),i&&N(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(z);function W(t){return W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},W(t)}function J(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,tt(n.key),n)}}function K(t,e,r){return e=Q(e),function(t,e){if(e&&("object"==W(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||[],Q(t).constructor):e.apply(t,r))}function Y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(Y=function(){return!!t})()}function Q(t){return Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Q(t)}function X(t,e){return X=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},X(t,e)}function Z(t,e,r){return(e=tt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function tt(t){var e=function(t,e){if("object"!=W(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=W(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==W(e)?e:e+""}var et=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),Z(r=K(this,e),"interval",void 0),Z(r,"indicator",void 0),Z(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new $(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&&X(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 i=(t-this.result)*this.smoothingFactor;return this.setResult(i+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&J(r.prototype,n),i&&J(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(I);function rt(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function nt(t){return nt="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},nt(t)}function it(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,at(n.key),n)}}function ot(t,e,r){return(e=at(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function at(t){var e=function(t,e){if("object"!=nt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=nt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==nt(e)?e:e+""}var lt=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),ot(this,"interval",void 0),ot(this,"deviationMultiplier",void 0),ot(this,"prices",[]),ot(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=rt(this.prices),r=function(t,e){var r=e||rt(t),n=rt(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 j;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&it(t.prototype,e),r&&it(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function ct(t){return ct="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},ct(t)}function ut(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,yt(n.key),n)}}function st(t,e,r){return e=ht(e),function(t,e){if(e&&("object"==ct(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,ft()?Reflect.construct(e,r||[],ht(t).constructor):e.apply(t,r))}function ft(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(ft=function(){return!!t})()}function ht(t){return ht=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},ht(t)}function vt(t,e){return vt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},vt(t,e)}function pt(t,e,r){return(e=yt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function yt(t){var e=function(t,e){if("object"!=ct(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ct(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ct(e)?e:e+""}var dt=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),pt(r=st(this,e,[t]),"interval",void 0),pt(r,"pricesCounter",0),pt(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&&vt(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 j;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&ut(r.prototype,n),i&&ut(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(z);function bt(t){return bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bt(t)}function mt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,wt(n.key),n)}}function gt(t,e,r){return(e=wt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function wt(t){var e=function(t,e){if("object"!=bt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=bt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==bt(e)?e:e+""}var _t=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),gt(this,"short",void 0),gt(this,"long",void 0),gt(this,"signal",void 0),gt(this,"prices",[]),gt(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 j;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 i=r-n,o=this.signal.update(i,e);return this.result={histogram:i-o,macd:i,signal:o}}}}],e&&mt(t.prototype,e),r&&mt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Ot(t){return Ot="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},Ot(t)}function Pt(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,kt(n.key),n)}}function St(t,e,r){return e=At(e),function(t,e){if(e&&("object"==Ot(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,jt()?Reflect.construct(e,r||[],At(t).constructor):e.apply(t,r))}function jt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(jt=function(){return!!t})()}function At(t){return At=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},At(t)}function Et(t,e){return Et=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Et(t,e)}function Rt(t,e,r){return(e=kt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function kt(t){var e=function(t,e){if("object"!=Ot(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Ot(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ot(e)?e:e+""}var It=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:et;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),Rt(r=St(this,e),"interval",void 0),Rt(r,"previousPrices",[]),Rt(r,"avgGain",void 0),Rt(r,"avgLoss",void 0),Rt(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&&Et(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 i=this.avgLoss.getResult();if(0===i)return this.setResult(100,e);var o=this.avgGain.getResult()/i;return this.setResult(this.maxValue-this.maxValue/(o+1),e)}}}}],n&&Pt(r.prototype,n),i&&Pt(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(I);function Mt(t){return function(t){if(Array.isArray(t))return Tt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Tt(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)?Tt(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tt(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 Ct=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1.5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;if(null===t||null===e||null===r)return null;if(n<2)throw new Error("numLevels must be at least 2");for(var i=4*r/(n-1),o=[],a=0;a<n-1;a++)o.push(e-2*r+a*i);for(var l=o.length-1;l>=0;l--)if(t>o[l])return(l+1)/(n-1);return 0};function Dt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Lt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}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 o,a=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){l=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw o}}}}function xt(t){return function(t){if(Array.isArray(t))return zt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Lt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Bt(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,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(t){u=!0,i=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(t,e)||Lt(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 Lt(t,e){if(t){if("string"==typeof t)return zt(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)?zt(t,e):void 0}}function zt(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 Ft={rsi:function(t,e,r){var n,i,o=t.verticalOhlcv.close[e];t.instances.hasOwnProperty("rsi_".concat(r))||(t.autoCrossPairsList.push({fast:"rsi_".concat(r),slow:"rsi_sma_".concat(r)}),t.instances["rsi_".concat(r)]=new It(r),t.instances["rsi_sma_".concat(r)]=new $(r),t.verticalOhlcv["rsi_".concat(r)]=new Array(t.len).fill(null),t.verticalOhlcv["rsi_sma_".concat(r)]=new Array(t.len).fill(null)),t.instances["rsi_".concat(r)].update(o);try{n=t.instances["rsi_".concat(r)].getResult()}catch(t){n=null}n&&(t.verticalOhlcv["rsi_".concat(r)][e]=n,t.instances["rsi_sma_".concat(r)].update(n));try{i=t.instances["rsi_sma_".concat(r)].getResult()}catch(t){i=null}return i&&(t.verticalOhlcv["rsi_sma_".concat(r)][e]=i),!0},sma:function(t,e,r){var n,i=t.verticalOhlcv.close[e];t.instances.hasOwnProperty("sma_".concat(r))||(t.instances["sma_".concat(r)]=new $(r),t.verticalOhlcv["sma_".concat(r)]=new Array(t.len).fill(null)),t.instances["sma_".concat(r)].update(i);try{n=t.instances["sma_".concat(r)].getResult()}catch(t){n=null}n&&(t.verticalOhlcv["sma_".concat(r)][e]=n)},ema:function(t,e,r){var n,i=t.verticalOhlcv.close[e];t.instances.hasOwnProperty("ema_".concat(r))||(t.instances["ema_".concat(r)]=new dt(r),t.verticalOhlcv["ema_".concat(r)]=new Array(t.len).fill(null)),t.instances["ema_".concat(r)].update(i);try{n=t.instances["ema_".concat(r)].getResult()}catch(t){n=null}n&&(t.verticalOhlcv["ema_".concat(r)][e]=n)},macd:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:12,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:26,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:9,o=t.verticalOhlcv.close[e];t.instances.hasOwnProperty("macd")||(t.autoCrossPairsList.push({fast:"macd_diff",slow:"macd_dea"}),t.instances.macd=new _t(new dt(r),new dt(n),new dt(i)),t.verticalOhlcv.macd_diff=new Array(t.len).fill(null),t.verticalOhlcv.macd_dea=new Array(t.len).fill(null),t.verticalOhlcv.macd_histogram=new Array(t.len).fill(null));var a,l=t.instances.macd;l.update(o);try{a=l.getResult()}catch(t){a={macd:null,signal:null,histogram:null}}var c=a,u=c.macd,s=c.signal,f=c.histogram;return null!==u&&(t.verticalOhlcv.macd_diff[e]=u),null!==s&&(t.verticalOhlcv.macd_dea[e]=s),null!==f&&(t.verticalOhlcv.macd_histogram[e]=f),!0},relativeVolume:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,n=t.verticalOhlcv.volume[e];t.instances.hasOwnProperty("relative_volume_".concat(r))||(t.instances["relative_volume_".concat(r)]=new $(r),t.verticalOhlcv["relative_volume_".concat(r)]=new Array(t.len).fill(null),t.verticalOhlcv["relative_volume_sma_".concat(r)]=new Array(t.len).fill(null));var i,o=t.instances["relative_volume_".concat(r)];o.update(n);try{i=o.getResult()}catch(t){i=null}return t.verticalOhlcv["relative_volume_sma_".concat(r)][e]=i,null!==i&&"number"==typeof t.verticalOhlcv["relative_volume_sma_".concat(r)][e-1]?t.verticalOhlcv["relative_volume_".concat(r)][e]=n/t.verticalOhlcv["relative_volume_sma_".concat(r)][e-1]:t.verticalOhlcv["relative_volume_".concat(r)][e]=null,!0},donchianChannels:function(t,e,r,n){var i=t.verticalOhlcv,o=i.high,a=i.low;if(e-n<r-1)return!0;t.instances.hasOwnProperty("donchian_channels")||(t.instances.donchian_channels={},i.donchian_channel_upper=new Array(t.len).fill(null),i.donchian_channel_basis=new Array(t.len).fill(null),i.donchian_channel_lower=new Array(t.len).fill(null));var l=e-n+1,c=l-r;if(c<0||l>t.len)return!0;var u=o.slice(c,l),s=a.slice(c,l),f=Math.max.apply(Math,Mt(u)),h=Math.min.apply(Math,Mt(s)),v=(f+h)/2,p=e;return p>=0&&p<t.len&&(i.donchian_channel_upper[p]=f,i.donchian_channel_basis[p]=v,i.donchian_channel_lower[p]=h),!0},bollingerBands:function(t,e,r,n){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=t.verticalOhlcv.close[e];t.instances.hasOwnProperty("bollinger_bands")||(t.instances.bollinger_bands={instance:new lt(r,n),heightInstance:i?new $(r):null},t.verticalOhlcv.bollinger_bands_upper=new Array(t.len).fill(null),t.verticalOhlcv.bollinger_bands_middle=new Array(t.len).fill(null),t.verticalOhlcv.bollinger_bands_lower=new Array(t.len).fill(null),i&&(t.verticalOhlcv.bollinger_bands_range=new Array(t.len).fill(null),t.verticalOhlcv.bollinger_bands_height=new Array(t.len).fill(null)));var a,l=t.instances.bollinger_bands,c=l.instance,u=l.heightInstance;c.update(o);try{a=c.getResult()}catch(t){a={upper:null,middle:null,lower:null}}var s=a,f=s.upper,h=s.middle,v=s.lower;if(t.verticalOhlcv.bollinger_bands_upper[e]=f,t.verticalOhlcv.bollinger_bands_middle[e]=h,t.verticalOhlcv.bollinger_bands_lower[e]=v,!i)return!0;var p,y=null,d=null;if(null!==f&&null!==v){y=(o-v)/(f-v),d=f-v,u.update(d);try{p=u.getResult()}catch(t){p=null}}return t.verticalOhlcv.bollinger_bands_range[e]=y,t.verticalOhlcv.bollinger_bands_height[e]=Ct(d,p,1.5),!0},volumeOscillator:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10,i=t.verticalOhlcv.volume[e];t.instances.hasOwnProperty("volume_oscillator")||(t.instances.volume_oscillator={fastEMA:new dt(r),slowEMA:new dt(n)},t.verticalOhlcv.volume_oscillator=new Array(t.len).fill(null),t.autoCrossPairsList.push({fast:"volume_oscillator",slow:0}));var o=t.instances.volume_oscillator,a=o.fastEMA,l=o.slowEMA;a.update(i),l.update(i);var c=null,u=null;try{c=a.getResult()}catch(t){c=null}try{u=l.getResult()}catch(t){u=null}return t.verticalOhlcv.volume_oscillator[e]="number"==typeof c&&"number"==typeof u&&0!==u?100*(c-u)/u:null,!0},candlesStudies:function(t,e,r){for(var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},o=i.changeLevel,a=void 0===o?7:o,l=i.sizeLevel,c=void 0===l?5:l,u=0,s=["candle_gap_size","candle_body_size","candle_top_size","candle_bottom_size","candle_shadow_size","candle_close_direction","candle_high_direction","candle_low_direction","candle_open_direction"];u<s.length;u++){var f=s[u];t.verticalOhlcv.hasOwnProperty(f)||(t.verticalOhlcv[f]=new Array(t.len).fill(null))}if(n){t.instances.hasOwnProperty("candleStudies")||(t.instances.candleStudies={});for(var h=0,v=["topInstance","bottomInstance","gapInstance","bodySizeInstance","shadowSizeInstance","closeDirectionInstance","highDirectionInstance","lowDirectionInstance","openDirectionInstance"];h<v.length;h++){var p=v[h];t.instances.candleStudies.hasOwnProperty(p)||(t.instances.candleStudies[p]=new $(r))}}var y=t.verticalOhlcv.open[e-1],d=t.verticalOhlcv.high[e-1],b=t.verticalOhlcv.low[e-1],m=t.verticalOhlcv.close[e-1];if([y,d,b,m].some((function(t){return void 0===t})))return!0;var g=t.verticalOhlcv.open[e],w=t.verticalOhlcv.high[e],_=t.verticalOhlcv.low[e],O=t.verticalOhlcv.close[e],P=O>g,S=Math.abs(O-g),j=Math.abs(w-_),A=w-Math.max(g,O),E=Math.min(g,O)-_,R=Math.abs(m-g),k=Math.abs(O-m),I=Math.abs(w-d),M=Math.abs(_-b),T=Math.abs(g-y),C=null,D=null,x=null,B=null,L=null,z=null,F=null,N=null,V=null;if(n){var H=t.instances.candleStudies,q=H.topInstance,U=H.bottomInstance,G=H.gapInstance,W=H.bodySizeInstance,J=H.shadowSizeInstance,K=H.closeDirectionInstance,Y=H.highDirectionInstance,Q=H.lowDirectionInstance,X=H.openDirectionInstance;q.update(Math.abs(A)),U.update(Math.abs(E)),J.update(Math.abs(j)),G.update(R),W.update(S),K.update(k),Y.update(I),Q.update(M),X.update(T);try{x=q.getResult(),D=U.getResult(),C=G.getResult(),B=W.getResult(),L=J.getResult(),z=K.getResult(),F=Y.getResult(),N=Q.getResult(),V=X.getResult()}catch(t){}t.verticalOhlcv.candle_body_size[e]=P?Ct(S,B,2,a):-Math.abs(Ct(S,B,2,a))||0,t.verticalOhlcv.candle_gap_size[e]=P?Ct(R,C,2,a):-Math.abs(Ct(R,C,2,a))||0,t.verticalOhlcv.candle_close_direction[e]=P?Ct(k,z,2,a):-Math.abs(Ct(k,z,2,a))||0,t.verticalOhlcv.candle_high_direction[e]=P?Ct(I,F,2,a):-Math.abs(Ct(I,F,2,a))||0,t.verticalOhlcv.candle_low_direction[e]=P?Ct(M,N,2,a):-Math.abs(Ct(M,N,2,a))||0,t.verticalOhlcv.candle_open_direction[e]=P?Ct(T,V,2,a):-Math.abs(Ct(T,V,2,a))||0,t.verticalOhlcv.candle_top_size[e]=Ct(A,x,.5,c),t.verticalOhlcv.candle_bottom_size[e]=Ct(E,D,.5,c),t.verticalOhlcv.candle_shadow_size[e]=Ct(j,L,.5,c)}else t.verticalOhlcv.candle_body_size[e]=P?S:-S,t.verticalOhlcv.candle_gap_size[e]=P?R:-R,t.verticalOhlcv.candle_close_direction[e]=P?k:-k,t.verticalOhlcv.candle_high_direction[e]=P?I:-I,t.verticalOhlcv.candle_low_direction[e]=P?M:-M,t.verticalOhlcv.candle_open_direction[e]=P?T:-T,t.verticalOhlcv.candle_top_size[e]=A,t.verticalOhlcv.candle_bottom_size[e]=E,t.verticalOhlcv.candle_shadow_size[e]=j;return!0},lag:function(t,e){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:["close"],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,i=t.verticalOhlcv,o=t.len,a=0;a<r.length;a++)for(var l=1;l<=n;l++){var c="".concat(r[a],"_lag_").concat(l);i.hasOwnProperty(c)||(i[c]=new Array(o).fill(null));var u=e-l,s=u>=0?i[r[a]][u]:null;i[c][e]=s}return!0}},Nt={midPriceOpenClose:!1,midPriceHighLow:!1,sessionIndex:!1,sessionIntradayIndex:!1,dayOfTheWeek:!1,dayOfTheMonth:!1,weekOfTheMonth:!1},Vt=function(t){var e=new Date(t),r=e.getDay(),n=e.getDate(),i=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+i)/7)}},Ht=function(t,e){for(var r=t.length,n=new $(e),i=new Array(r),o=0,a=0,l=0,c=0;c<r;c++)if(n.update(t[c]),n.isStable){var u=n.getResult();i[c]=u,o+=u,a+=u*u,l++}else i[c]=null;var s=o/l,f=a/l-s*s,h=Math.sqrt(f);return i.map((function(t){return null!==t?(t-s)/h:null}))},qt=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=Ht(t,r),i=Ht(e,r),o=t.length,a=[],l=0,c=0,u=0,s=0,f=0,h=0,v=-1,p=0;p<o;p++){if(null!==n[p]&&null!==i[p]){v=p;break}a.push(0)}if(-1===v)return new Array(o).fill(0);for(var y=v;y<o;y++){var d=n[y],b=i[y];if(null!==d&&null!==b)if(l+=d,c+=b,u+=d*b,s+=d*d,f+=b*b,++h<2)a.push(0);else{var m=h*u-l*c,g=Math.sqrt((h*s-l*l)*(h*f-c*c)),w=0===g?0:m/g;a.push(w)}else l=c=u=s=f=h=0,a.push(0)}return a};function Ut(t){return function(t){if(Array.isArray(t))return Wt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||$t(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Gt(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,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(t){u=!0,i=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(t,e)||$t(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 $t(t,e){if(t){if("string"==typeof t)return Wt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Wt(t,e):void 0}}function Wt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Jt=function(t){for(var e=t.input,r=t.inputParams,n=new(0,t.OHLCV_INDICATORS)({input:e,studyOptions:t.studyOptions}),i=0,o=Object.entries(r);i<o.length;i++){var a=Gt(o[i],2),l=a[0],c=a[1];if(!["crossPairs","lag"].includes(l)&&Array.isArray(c))for(var u=0;u<c.length;u++){var s=c[u];Array.isArray(s)&&(s.length>0?n[l].apply(n,Ut(s)):n[l]())}}for(var f=0,h=Object.entries(r);f<h.length;f++){var v=Gt(h[f],2),p=v[0],y=v[1];if(["crossPairs","lag"].includes(p)&&Array.isArray(y))for(var d=0;d<y.length;d++){var b=y[d];Array.isArray(b)&&(b.length>0?n[p].apply(n,Ut(b)):n[p]())}}return n};function Kt(t){return Kt="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},Kt(t)}function Yt(t){return function(t){if(Array.isArray(t))return Qt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return 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)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function 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 Xt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Zt(n.key),n)}}function Zt(t){var e=function(t,e){if("object"!=Kt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Kt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Kt(e)?e:e+""}var te=function(){return t=function t(e){var r=e.input,n=e.ticker,i=void 0===n?null:n,o=e.studyOptions,a=void 0===o?null:o;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: "+i);if(0===r.length)throw Error("input ohlcv must not be empty: "+i);if(!r[0].hasOwnProperty("close"))throw Error("input ohlcv array objects require at least close property: "+i);return this.input=r,this.priceBased=["open","high","low","close","mid_price_open_close","mid_price_high_low"],this.len=r.length,this.crossPairsArr=[],this.inputOhlcv=r,this.studyOptions=null===a?Nt:a,this.instances={},this.autoCrossPairsList=[],this.verticalOhlcv={},this.inputParams={crossPairs:null,lag:null,relativeVolume:null,ema:null,sma:null,macd:null,bollingerBands:null,rsi:null,donchianChannels:null,candlesStudies:null,volumeOscillator:null},this.studies={},this.utilities={correlation:qt},this.setIndicatorsFromInputParams=Jt,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,i=[],o=0;o<r;o++){for(var a={},l=!1,c=0;c<n;c++){var u=e[c],s=t[u][o];if(null==s){l=!0;break}a[u]=s}l||i.push(a)}return i}},{key:"getLastValues",value:function(){return this.getData()[this.getData().length-1]}},{key:"compute",value:function(){return function(t,e){var r=e.len,n=e.studyOptions,i=e.inputParams;if(Boolean(n))for(var o in n)if(!Nt.hasOwnProperty(o))throw new Error("Key ".concat(o," not found in defaultStudyOptions. Available options: ").concat(Object.keys(Nt).join(", ")));var a=n.midPriceOpenClose,l=n.midPriceHighLow,c=n.sessionIndex,u=n.sessionIntradayIndex,s=n.dayOfTheWeek,f=n.dayOfTheMonth,h=n.weekOfTheMonth,v=["open","high","low","close","volume"];a&&v.push("mid_price_open_close"),l&&v.push("mid_price_high_low");for(var p=new Set(v),y=0,d=v;y<d.length;y++){var b=d[y];e.verticalOhlcv[b]=new Array(r)}for(var m,g=[],w=0,_=Object.keys(t[0]);w<_.length;w++){var O=_[w];p.has(O)||(e.verticalOhlcv[O]=new Array(r),g.push(O))}var P,S=0,j=0,A=(P=t)[0].hasOwnProperty("date")&&"string"==typeof P[0].date&&/^\d{4}-\d{2}-\d{2}/.test(P[0].date);A&&(c&&(e.verticalOhlcv.session_index=new Array(r)),u&&(e.verticalOhlcv.session_intraday_index=new Array(r)),s&&(e.verticalOhlcv.day_of_the_week=new Array(r)),f&&(e.verticalOhlcv.day_of_the_month=new Array(r)),h&&(e.verticalOhlcv.week_of_the_month=new Array(r)),m=t[0].date.slice(0,10));for(var E=0;E<r;E++){var R=t[E];e.verticalOhlcv.open[E]=R.open,e.verticalOhlcv.high[E]=R.high,e.verticalOhlcv.low[E]=R.low,e.verticalOhlcv.close[E]=R.close,e.verticalOhlcv.volume[E]=R.volume;for(var k=0,I=Object.entries(i);k<I.length;k++){var M=Bt(I[k],2),T=M[0],C=M[1];if(!["crossPairs"].includes(T)&&Array.isArray(C))for(var D=0;D<C.length;D++){var x=C[D];Array.isArray(x)&&(x.length>0?Ft[T].apply(Ft,[e,E].concat(xt(x))):Ft[T](e,E))}}a&&(e.verticalOhlcv.mid_price_open_close[E]=(R.open+R.close)/2),l&&(e.verticalOhlcv.mid_price_high_low[E]=(R.high+R.low)/2);var B,L=Dt(g);try{for(L.s();!(B=L.n()).done;){var z=B.value;e.verticalOhlcv[z][E]=R[z]}}catch(t){L.e(t)}finally{L.f()}if(A){var F=R.date.slice(0,10);F!==m&&(m=F,S++,j=0);var N=Vt(F),V=N.day_of_the_week,H=N.day_of_the_month,q=N.week_of_the_month;s&&(e.verticalOhlcv.day_of_the_week[E]=V),f&&(e.verticalOhlcv.day_of_the_month[E]=H),h&&(e.verticalOhlcv.week_of_the_month[E]=q),c&&(e.verticalOhlcv.session_index[E]=S),u&&(e.verticalOhlcv.session_intraday_index[E]=j),j++}}}(this.input,this),this}},{key:"crossPairs",value:function(t){var e,n;this.compute();var i=[].concat(Yt(this.autoCrossPairsList),Yt(t));null!==(n=(e=this.inputParams).crossPairs)&&void 0!==n||(e.crossPairs=[]),this.inputParams.crossPairs.push([i]);var o=function(t,e){var n,i=t.verticalOhlcv,o=t.len,l={},c={},u={},s=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,o=function(){};return{s:o,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},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 a,l=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){c=!0,a=t},f:function(){try{l||null==n.return||n.return()}finally{if(c)throw a}}}}(e);try{var f=function(){var t=n.value,e=t.fast,r=t.slow,s=t.count;if(!e||!r)return 1;"number"!=typeof r||l[r]||(l[r]=Array(o).fill(r));var f="".concat(e,"_x_").concat(r),h="".concat(e,"_c_").concat(r),v=function(t){return void 0!==s?t.slice(-s).filter((function(t){return 1===t||-1===t})).length:0};if(i[f]){var p=i[f];c[f]=p,void 0!==s&&(u[h]=v(p))}else if((i[e]||"price"===e)&&i[r]){var y=a("price"===e?{fast:i.close,high:i.high,low:i.low,slow:i[r]}:{fast:i[e],slow:i[r]});c[f]=y,void 0!==s&&(u[h]=v(y))}else{if(!i[e]||!l[r])throw Error("Missing ohlcv properties for ".concat(e," or ").concat(r));var d=a({fast:i[e],slow:l[r]});c[f]=d,void 0!==s&&(u[h]=v(d))}};for(s.s();!(n=s.n()).done;)f()}catch(t){s.e(t)}finally{s.f()}return{x:c,c:u}}(this,i),l=o.x,c=o.c;return Object.assign(this.verticalOhlcv,l),Object.assign(this.studies,c),this}},{key:"lag",value:function(){var t,e,r=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!==(e=(t=this.inputParams).lag)&&void 0!==e||(t.lag=[]),this.inputParams.lag.push([n,i]);for(var o=function(){var t=n[a];r.priceBased.find((function(e){return t.startsWith(e)}))&&r.priceBased.push(t)},a=0;a<n.length;a++)o();return this}},{key:"relativeVolume",value:function(t){var e,r;return null!==(r=(e=this.inputParams).relativeVolume)&&void 0!==r||(e.relativeVolume=[]),this.inputParams.relativeVolume.push([t]),this}},{key:"ema",value:function(t){var e,r;return null!==(r=(e=this.inputParams).ema)&&void 0!==r||(e.ema=[]),this.inputParams.ema.push([t]),this.priceBased.push("ema_".concat(t)),this}},{key:"sma",value:function(t){var e,r;return null!==(r=(e=this.inputParams).sma)&&void 0!==r||(e.sma=[]),this.inputParams.sma.push([t]),this.priceBased.push("sma_".concat(t)),this}},{key:"macd",value:function(t,e,r){var n,i;return null!==(i=(n=this.inputParams).macd)&&void 0!==i||(n.macd=[]),this.inputParams.macd.push([t,e,r]),this}},{key:"bollingerBands",value:function(){var t,e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,i=arguments.length>2?arguments[2]:void 0;if("number"!=typeof r||r<=0)throw new Error('Invalid parameter: "size" must be a positive number.');if("number"!=typeof n||n<=0)throw new Error('Invalid parameter: "times" must be a positive number.');return null!==(e=(t=this.inputParams).bollingerBands)&&void 0!==e||(t.bollingerBands=[]),this.inputParams.bollingerBands.push([r,n,i]),this.priceBased.push("bollinger_bands_middle","bollinger_bands_upper","bollinger_bands_lower"),this}},{key:"rsi",value:function(t){var e,r;return null!==(r=(e=this.inputParams).rsi)&&void 0!==r||(e.rsi=[]),this.inputParams.rsi.push([t]),this}},{key:"donchianChannels",value:function(){var t,e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if("number"!=typeof r||r<=0)throw new Error('The "period" must be a positive number.');if("number"!=typeof n||n<=0)throw new Error('The "offset" must be a positive number.');return null!==(e=(t=this.inputParams).donchianChannels)&&void 0!==e||(t.donchianChannels=[]),this.inputParams.donchianChannels.push([r,n]),this.priceBased.push("donchian_channel_upper","donchian_channel_lower","donchian_channel_basis"),this}},{key:"candlesStudies",value:function(t,e,r){var n,i;return null!==(i=(n=this.inputParams).candlesStudies)&&void 0!==i||(n.candlesStudies=[]),this.inputParams.candlesStudies.push([t,e,r]),this}},{key:"volumeOscillator",value:function(t,e){var r,n;return null!==(n=(r=this.inputParams).volumeOscillator)&&void 0!==n||(r.volumeOscillator=[]),this.inputParams.volumeOscillator.push([t,e]),this}}],e&&Xt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
1
+ var OHLCV_INDICATORS;(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{t.r(e),t.d(e,{default:()=>oe});var r=1e6,n="[big.js] ",i=n+"Invalid ",o=i+"decimal places",a=i+"rounding mode",l=n+"Division by zero",u={},s=void 0,c=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function f(t,e,r,n){var i=t.c;if(r===s&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(a);if(e<1)n=3===r&&(n||!!i[0])||0===e&&(1===r&&i[0]>=5||2===r&&(i[0]>5||5===i[0]&&(n||i[1]!==s))),i.length=1,n?(t.e=t.e-e+1,i[0]=1):i[0]=t.e=0;else if(e<i.length){if(n=1===r&&i[e]>=5||2===r&&(i[e]>5||5===i[e]&&(n||i[e+1]!==s||1&i[e-1]))||3===r&&(n||!!i[0]),i.length=e,n)for(;++i[--e]>9;)if(i[e]=0,0===e){++t.e,i.unshift(1);break}for(e=i.length;!i[--e];)i.pop()}return t}function h(t,e,r){var n=t.e,i=t.c.join(""),o=i.length;if(e)i=i.charAt(0)+(o>1?"."+i.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)i="0"+i;i="0."+i}else if(n>0)if(++n>o)for(n-=o;n--;)i+="0";else n<o&&(i=i.slice(0,n)+"."+i.slice(n));else o>1&&(i=i.charAt(0)+"."+i.slice(1));return t.s<0&&r?"-"+i:i}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 i=new(t.bind.apply(t,n));return r&&d(i,r.prototype),i}(t,arguments,b(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),d(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 d(t,e){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},d(t,e)}function b(t){return b=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}u.abs=function(){var t=new this.constructor(this);return t.s=1,t},u.cmp=function(t){var e,r=this,n=r.c,i=(t=new r.constructor(t)).c,o=r.s,a=t.s,l=r.e,u=t.e;if(!n[0]||!i[0])return n[0]?o:i[0]?-a:0;if(o!=a)return o;if(e=o<0,l!=u)return l>u^e?1:-1;for(a=(l=n.length)<(u=i.length)?l:u,o=-1;++o<a;)if(n[o]!=i[o])return n[o]>i[o]^e?1:-1;return l==u?0:l>u^e?1:-1},u.div=function(t){var e=this,n=e.constructor,i=e.c,a=(t=new n(t)).c,u=e.s==t.s?1:-1,c=n.DP;if(c!==~~c||c<0||c>r)throw Error(o);if(!a[0])throw Error(l);if(!i[0])return t.s=u,t.c=[t.e=0],t;var h,v,p,y,d,b=a.slice(),m=h=a.length,g=i.length,w=i.slice(0,h),_=w.length,O=t,S=O.c=[],P=0,j=c+(O.e=e.e-t.e)+1;for(O.s=u,u=j<0?0:j,b.unshift(0);_++<h;)w.push(0);do{for(p=0;p<10;p++){if(h!=(_=w.length))y=h>_?1:-1;else for(d=-1,y=0;++d<h;)if(a[d]!=w[d]){y=a[d]>w[d]?1:-1;break}if(!(y<0))break;for(v=_==h?a:b;_;){if(w[--_]<v[_]){for(d=_;d&&!w[--d];)w[d]=9;--w[d],w[_]+=10}w[_]-=v[_]}for(;!w[0];)w.shift()}S[P++]=y?p:++p,w[0]&&y?w[_]=i[m]||0:w=[i[m]]}while((m++<g||w[0]!==s)&&u--);return S[0]||1==P||(S.shift(),O.e--,j--),P>j&&f(O,j,n.RM,w[0]!==s),O},u.eq=function(t){return 0===this.cmp(t)},u.gt=function(t){return this.cmp(t)>0},u.gte=function(t){return this.cmp(t)>-1},u.lt=function(t){return this.cmp(t)<0},u.lte=function(t){return this.cmp(t)<1},u.minus=u.sub=function(t){var e,r,n,i,o=this,a=o.constructor,l=o.s,u=(t=new a(t)).s;if(l!=u)return t.s=-u,o.plus(t);var s=o.c.slice(),c=o.e,f=t.c,h=t.e;if(!s[0]||!f[0])return f[0]?t.s=-u:s[0]?t=new a(o):t.s=1,t;if(l=c-h){for((i=l<0)?(l=-l,n=s):(h=c,n=f),n.reverse(),u=l;u--;)n.push(0);n.reverse()}else for(r=((i=s.length<f.length)?s:f).length,l=u=0;u<r;u++)if(s[u]!=f[u]){i=s[u]<f[u];break}if(i&&(n=s,s=f,f=n,t.s=-t.s),(u=(r=f.length)-(e=s.length))>0)for(;u--;)s[e++]=0;for(u=e;r>l;){if(s[--r]<f[r]){for(e=r;e&&!s[--e];)s[e]=9;--s[e],s[r]+=10}s[r]-=f[r]}for(;0===s[--u];)s.pop();for(;0===s[0];)s.shift(),--h;return s[0]||(t.s=1,s=[h=0]),t.c=s,t.e=h,t},u.mod=function(t){var e,r=this,n=r.constructor,i=r.s,o=(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=i,t.s=o,e?new n(r):(i=n.DP,o=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=i,n.RM=o,this.minus(r.times(t)))},u.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},u.plus=u.add=function(t){var e,r,n,i=this,o=i.constructor;if(t=new o(t),i.s!=t.s)return t.s=-t.s,i.minus(t);var a=i.e,l=i.c,u=t.e,s=t.c;if(!l[0]||!s[0])return s[0]||(l[0]?t=new o(i):t.s=i.s),t;if(l=l.slice(),e=a-u){for(e>0?(u=a,n=s):(e=-e,n=l),n.reverse();e--;)n.push(0);n.reverse()}for(l.length-s.length<0&&(n=s,s=l,l=n),e=s.length,r=0;e;l[e]%=10)r=(l[--e]=l[e]+s[e]+r)/10|0;for(r&&(l.unshift(r),++u),e=l.length;0===l[--e];)l.pop();return t.c=l,t.e=u,t},u.pow=function(t){var e=this,r=new e.constructor("1"),n=r,o=t<0;if(t!==~~t||t<-1e6||t>1e6)throw Error(i+"exponent");for(o&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return o?r.div(n):n},u.prec=function(t,e){if(t!==~~t||t<1||t>r)throw Error(i+"precision");return f(new this.constructor(this),t,e)},u.round=function(t,e){if(t===s)t=0;else if(t!==~~t||t<-r||t>r)throw Error(o);return f(new this.constructor(this),t+this.e+1,e)},u.sqrt=function(){var t,e,r,i=this,o=i.constructor,a=i.s,l=i.e,u=new o("0.5");if(!i.c[0])return new o(i);if(a<0)throw Error(n+"No square root");0===(a=Math.sqrt(i+""))||a===1/0?((e=i.c.join("")).length+l&1||(e+="0"),l=((l+1)/2|0)-(l<0||1&l),t=new o(((a=Math.sqrt(e))==1/0?"5e":(a=a.toExponential()).slice(0,a.indexOf("e")+1))+l)):t=new o(a+""),l=t.e+(o.DP+=4);do{r=t,t=u.times(r.plus(i.div(r)))}while(r.c.slice(0,l).join("")!==t.c.slice(0,l).join(""));return f(t,(o.DP-=4)+t.e+1,o.RM)},u.times=u.mul=function(t){var e,r=this,n=r.constructor,i=r.c,o=(t=new n(t)).c,a=i.length,l=o.length,u=r.e,s=t.e;if(t.s=r.s==t.s?1:-1,!i[0]||!o[0])return t.c=[t.e=0],t;for(t.e=u+s,a<l&&(e=i,i=o,o=e,s=a,a=l,l=s),e=new Array(s=a+l);s--;)e[s]=0;for(u=l;u--;){for(l=0,s=a+u;s>u;)l=e[s]+o[u]*i[s-u-1]+l,e[s--]=l%10,l=l/10|0;e[s]=l}for(l?++t.e:e.shift(),u=e.length;!e[--u];)e.pop();return t.c=e,t},u.toExponential=function(t,e){var n=this,i=n.c[0];if(t!==s){if(t!==~~t||t<0||t>r)throw Error(o);for(n=f(new n.constructor(n),++t,e);n.c.length<t;)n.c.push(0)}return h(n,!0,!!i)},u.toFixed=function(t,e){var n=this,i=n.c[0];if(t!==s){if(t!==~~t||t<0||t>r)throw Error(o);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,!!i)},u[Symbol.for("nodejs.util.inspect.custom")]=u.toJSON=u.toString=function(){var t=this,e=t.constructor;return h(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},u.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},u.toPrecision=function(t,e){var n=this,o=n.constructor,a=n.c[0];if(t!==s){if(t!==~~t||t<1||t>r)throw Error(i+"precision");for(n=f(new o(n),t,e);n.c.length<t;)n.c.push(0)}return h(n,t<=n.e||n.e<=o.NE||n.e>=o.PE,!!a)},u.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===s?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(i+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,o;if(!c.test(e))throw Error(i+"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),o=e.length,n=0;n<o&&"0"==e.charAt(n);)++n;if(n==o)t.c=[t.e=0];else{for(;o>0&&"0"==e.charAt(--o););for(t.e=r-n-1,t.c=[],r=0;n<=o;)t.c[r++]=+e.charAt(n++)}}(n,r)}n.constructor=e}return e.prototype=u,e.DP=20,e.RM=1,e.NE=-7,e.PE=21,e.strict=!1,e.roundDown=0,e.roundHalfUp=1,e.roundHalfEven=2,e.roundUp=3,e}();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=b(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||[],b(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&&d(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,O(n.key),n)}}function _(t,e,r){return(e=O(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function O(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 S=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),_(this,"previousHighest",void 0),_(this,"highest",void 0),_(this,"previousLowest",void 0),_(this,"lowest",void 0),_(this,"previousResult",void 0),_(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 P(t){return P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},P(t)}function j(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,k(n.key),n)}}function A(t,e,r){return e=I(e),function(t,e){if(e&&("object"==P(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,E()?Reflect.construct(e,r||[],I(t).constructor):e.apply(t,r))}function E(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(E=function(){return!!t})()}function I(t){return I=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},I(t)}function R(t,e){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},R(t,e)}function k(t){var e=function(t,e){if("object"!=P(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=P(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==P(e)?e:e+""}var M=function(t){function e(t){var r,n,i,o;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=A(this,e),o=void 0,(i=k(i="interval"))in n?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,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)}}])&&j(r.prototype,n),i&&j(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(S);function T(t){return T="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},T(t)}function x(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 D(t,e,r){return e=L(e),function(t,e){if(e&&("object"==T(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,C()?Reflect.construct(e,r||[],L(t).constructor):e.apply(t,r))}function C(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(C=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 z(t){var e=function(t,e){if("object"!=T(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==T(e)?e:e+""}var H=function(t){function e(){var t,r,n,i;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var o=arguments.length,a=new Array(o),l=0;l<o;l++)a[l]=arguments[l];return r=t=D(this,e,[].concat(a)),i=[],(n=z(n="prices"))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,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&&x(r.prototype,n),i&&x(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(M);function F(t){return F="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},F(t)}function N(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,G(n.key),n)}}function U(t,e,r){return e=q(e),function(t,e){if(e&&("object"==F(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,V()?Reflect.construct(e,r||[],q(t).constructor):e.apply(t,r))}function V(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(V=function(){return!!t})()}function q(t){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},q(t)}function K(t,e){return K=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},K(t,e)}function $(t,e,r){return(e=G(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function G(t){var e=function(t,e){if("object"!=F(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=F(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==F(e)?e:e+""}var W=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=U(this,e),"interval",void 0),$(r,"indicator",void 0),$(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new H(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&&K(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 i=(t-this.result)*this.smoothingFactor;return this.setResult(i+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&N(r.prototype,n),i&&N(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(S);function J(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function Y(t){return Y="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},Y(t)}function Q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,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"!=Y(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Y(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Y(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=J(this.prices),r=function(t,e){var r=e||J(t),n=J(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}}])&&Q(t.prototype,e),r&&Q(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,ut(n.key),n)}}function nt(t,e,r){return e=ot(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,it()?Reflect.construct(e,r||[],ot(t).constructor):e.apply(t,r))}function it(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(it=function(){return!!t})()}function ot(t){return ot=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},ot(t)}function at(t,e){return at=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},at(t,e)}function lt(t,e,r){return(e=ut(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ut(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 st=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),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&&at(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),i&&rt(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(M);function ct(t){return ct="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},ct(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"!=ct(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ct(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ct(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 i=r-n,o=this.signal.update(i,e);return this.result={histogram:i-o,macd:i,signal:o}}}}],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 dt(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,Ot(n.key),n)}}function bt(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 _t(t,e,r){return(e=Ot(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ot(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 St=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:W;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),_t(r=bt(this,e),"interval",void 0),_t(r,"previousPrices",[]),_t(r,"avgGain",void 0),_t(r,"avgLoss",void 0),_t(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 i=this.avgLoss.getResult();if(0===i)return this.setResult(100,e);var o=this.avgGain.getResult()/i;return this.setResult(this.maxValue-this.maxValue/(o+1),e)}}}}],n&&dt(r.prototype,n),i&&dt(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,i}(S);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)}function jt(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}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)}function Et(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}function It(t){return function(t){if(Array.isArray(t))return Rt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return 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)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function 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 kt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1.5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;if(null===t||null===e||null===r)return null;if(n<2)throw new Error("numLevels must be at least 2");for(var i=4*r/(n-1),o=[],a=0;a<n-1;a++)o.push(e-2*r+a*i);for(var l=o.length-1;l>=0;l--)if(t>o[l])return(l+1)/(n-1);return 0};function Mt(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,r){for(var n=0;n<r.length;n++)for(var i=(h=r[n],v=2,function(t){if(Array.isArray(t))return t}(h)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,l=[],u=!0,s=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,i=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw i}}return l}}(h,v)||function(t,e){if(t){if("string"==typeof t)return Mt(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)?Mt(t,e):void 0}}(h,v)||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.")}()),o=i[0],a=i[1],l=0;l<o.length;l++)for(var u=1;u<=a;u++){var s="".concat(o[l],"_lag_").concat(u);0===e&&(t.verticalOhlcv[s]=new Array(t.len).fill(null));var c=e-u,f=c>=0?t.verticalOhlcv[o[l]][c]:null;t.verticalOhlcv[s][e]=f}var h,v;return!0};function xt(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 Dt(t){return Dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dt(t)}function Ct(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,Lt(n.key),n)}}function Lt(t){var e=function(t,e){if("object"!=Dt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Dt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Dt(e)?e:e+""}var Bt=function(t,e){return t>e},zt=function(t,e){return t<e},Ht=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.interval=0,this.prevState=.5,this.prevFast=null,this.prevSlow=null,this.prevHigh=null,this.prevLow=null,this.areHighAndLowUndefined=!1,this.index=0,this.crossIndexes={up:[],down:[]}},(e=[{key:"update",value:function(t){var e=t.fast,r=t.high,n=t.slow,i=t.low,o=this.prevState;this.areHighAndLowUndefined||void 0!==r&&void 0!==i||(this.areHighAndLowUndefined=!0),null===e||null===n||function(t,e){return t===e}(e,n)?o=.5:Bt(e,n)?o=this.areHighAndLowUndefined?1:[i,n,this.prevLow,this.prevSlow].every((function(t){return null!==t}))&&zt(i,n)&&Bt(this.prevLow,this.prevSlow)?0:1:zt(e,n)&&(o=this.areHighAndLowUndefined?0:[r,n,this.prevHigh,this.prevSlow].every((function(t){return null!==t}))&&Bt(r,n)&&zt(this.prevHigh,this.prevSlow)?1:0),.5===o?this.interval=0:1===o?this.prevState<=.5?this.interval=1:this.interval++:0===o&&(this.prevState>=.5?this.interval=-1:this.interval--),1===this.interval&&this.crossIndexes.up.push(this.index),-1===this.interval&&this.crossIndexes.down.push(this.index),this.index++,this.prevState=o,this.prevFast=e,this.prevSlow=n,this.prevHigh=r,this.prevLow=i}},{key:"getResult",value:function(){return this.interval}}])&&Ct(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),Ft=function(t,e,r){var n,i=t.len,o=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 xt(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)?xt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}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 o,a=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){l=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw o}}}}(r);try{for(o.s();!(n=o.n()).done;){var a=n.value,l=a.fast,u=a.slow;if(l&&u){var s="".concat(l,"_x_").concat(u);if(0===e){if("number"==typeof u&&(t.verticalOhlcv[u]=new Array(i).fill(u)),"price"!==l&&!t.verticalOhlcv.hasOwnProperty(l))throw Error('fast "'.concat(l,' not found in crossPairs"'));if(!t.verticalOhlcv.hasOwnProperty(u))throw Error('slow "'.concat(u,' not found in crossPairs"'));t.instances[s]=new Ht,t.verticalOhlcv[s]=new Array(i).fill(null)}var c=void 0,f=void 0,h=void 0,v=void 0,p=void 0;"price"===l?(f=t.verticalOhlcv.close[e],h=t.verticalOhlcv.high[e],v=t.verticalOhlcv.low[e],p=t.verticalOhlcv[u][e],t.instances[s].update({fast:f,slow:p,high:h,low:v})):(c=t.verticalOhlcv[l][e],p=t.verticalOhlcv[u][e],t.instances[s].update({fast:c,slow:p})),t.verticalOhlcv[s][e]=t.instances[s].getResult()}}}catch(t){o.e(t)}finally{o.f()}};function Nt(t){return function(t){if(Array.isArray(t))return Ut(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ut(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)?Ut(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ut(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 Vt(t){return Vt="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},Vt(t)}var qt={rsi:function(t,e,r){var n,i,o=t.verticalOhlcv.close[e];0===e&&(t.crossPairsList.push({fast:"rsi_".concat(r),slow:"rsi_sma_".concat(r)}),Object.assign(t.instances,jt(jt({},"rsi_".concat(r),new St(r)),"rsi_sma_".concat(r),new H(r))),Object.assign(t.verticalOhlcv,jt(jt({},"rsi_".concat(r),new Array(t.len).fill(null)),"rsi_sma_".concat(r),new Array(t.len).fill(null)))),t.instances["rsi_".concat(r)].update(o);try{n=t.instances["rsi_".concat(r)].getResult()}catch(t){n=null}n&&(t.verticalOhlcv["rsi_".concat(r)][e]=n,t.instances["rsi_sma_".concat(r)].update(n));try{i=t.instances["rsi_sma_".concat(r)].getResult()}catch(t){i=null}return i&&(t.verticalOhlcv["rsi_sma_".concat(r)][e]=i),!0},sma:function(t,e,r){var n,i=t.verticalOhlcv.close[e];0===e&&(t.instances["sma_".concat(r)]=new H(r),t.verticalOhlcv["sma_".concat(r)]=new Array(t.len).fill(null)),t.instances["sma_".concat(r)].update(i);try{n=t.instances["sma_".concat(r)].getResult()}catch(t){}n&&(t.verticalOhlcv["sma_".concat(r)][e]=n)},ema:function(t,e,r){var n,i=t.verticalOhlcv.close[e];0===e&&(t.instances["ema_".concat(r)]=new st(r),t.verticalOhlcv["ema_".concat(r)]=new Array(t.len).fill(null)),t.instances["ema_".concat(r)].update(i);try{n=t.instances["ema_".concat(r)].getResult()}catch(t){n=null}n&&(t.verticalOhlcv["ema_".concat(r)][e]=n)},macd:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:12,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:26,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:9,o=t.verticalOhlcv.close[e];0===e&&(t.crossPairsList.push({fast:"macd_diff",slow:"macd_dea"}),t.instances.macd=new pt(new st(r),new st(n),new st(i)),Object.assign(t.verticalOhlcv,{macd_diff:new Array(t.len).fill(null),macd_dea:new Array(t.len).fill(null),macd_histogram:new Array(t.len).fill(null)}));var a,l=t.instances.macd;l.update(o);try{a=l.getResult()}catch(t){}return a&&(t.verticalOhlcv.macd_diff[e]=a.macd,t.verticalOhlcv.macd_dea[e]=a.signal,t.verticalOhlcv.macd_histogram[e]=a.histogram),!0},relativeVolume:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,n=t.verticalOhlcv.volume[e];0===e&&(t.instances["relative_volume_".concat(r)]=new H(r),Object.assign(t.verticalOhlcv,Et(Et({},"relative_volume_".concat(r),new Array(t.len).fill(null)),"relative_volume_sma_".concat(r),new Array(t.len).fill(null))));var i,o=t.instances["relative_volume_".concat(r)];o.update(n);try{i=o.getResult()}catch(t){}return t.verticalOhlcv["relative_volume_sma_".concat(r)][e]=i,null!==i&&"number"==typeof t.verticalOhlcv["relative_volume_sma_".concat(r)][e-1]?t.verticalOhlcv["relative_volume_".concat(r)][e]=n/t.verticalOhlcv["relative_volume_sma_".concat(r)][e-1]:t.verticalOhlcv["relative_volume_".concat(r)][e]=null,!0},donchianChannels:function(t,e,r,n){var i=t.verticalOhlcv.high,o=t.verticalOhlcv.low;0===e&&(t.instances.donchian_channels={},Object.assign(t.verticalOhlcv,{donchian_channel_upper:new Array(t.len).fill(null),donchian_channel_basis:new Array(t.len).fill(null),donchian_channel_lower:new Array(t.len).fill(null)}));var a=e-n+1,l=a-r;if(l<0||a>t.len)return!0;var u=i.slice(l,a),s=o.slice(l,a),c=Math.max.apply(Math,It(u)),f=Math.min.apply(Math,It(s)),h=(c+f)/2,v=e;return v>=0&&v<t.len&&(t.verticalOhlcv.donchian_channel_upper[v]=c,t.verticalOhlcv.donchian_channel_basis[v]=h,t.verticalOhlcv.donchian_channel_lower[v]=f),!0},bollingerBands:function(t,e,r,n){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=t.verticalOhlcv.close[e];0===e&&(Object.assign(t.instances,{bollinger_bands:{instance:new tt(r,n),heightInstance:i?new H(r):null}}),Object.assign(t.verticalOhlcv,{bollinger_bands_upper:new Array(t.len).fill(null),bollinger_bands_middle:new Array(t.len).fill(null),bollinger_bands_lower:new Array(t.len).fill(null)}),i&&Object.assign(t.verticalOhlcv,{bollinger_bands_range:new Array(t.len).fill(null),bollinger_bands_height:new Array(t.len).fill(null)}));var a,l=t.instances.bollinger_bands,u=l.instance,s=l.heightInstance;u.update(o);try{a=u.getResult()}catch(t){}if(!a)return!0;var c,f,h,v=a,p=v.upper,y=v.middle,d=v.lower;if(t.verticalOhlcv.bollinger_bands_upper[e]=p,t.verticalOhlcv.bollinger_bands_middle[e]=y,t.verticalOhlcv.bollinger_bands_lower[e]=d,!i)return!0;c=(o-d)/(p-d),f=p-d,s.update(f);try{h=s.getResult()}catch(t){}return t.verticalOhlcv.bollinger_bands_range[e]=c,h&&(t.verticalOhlcv.bollinger_bands_height[e]=kt(f,h,1.5)),!0},volumeOscillator:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10,i=t.verticalOhlcv.volume[e];0===e&&(Object.assign(t.instances,{volume_oscillator:{fastEMA:new st(r),slowEMA:new st(n)}}),t.verticalOhlcv.volume_oscillator=new Array(t.len).fill(null),t.crossPairsList.push({fast:"volume_oscillator",slow:0}));var o=t.instances.volume_oscillator,a=o.fastEMA,l=o.slowEMA;a.update(i),l.update(i);var u=null,s=null;try{u=a.getResult()}catch(t){u=null}try{s=l.getResult()}catch(t){s=null}return t.verticalOhlcv.volume_oscillator[e]="number"==typeof u&&"number"==typeof s&&0!==s?100*(u-s)/s:null,!0},candlesStudies:function(t,e,r){var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},o=i.changeLevel,a=void 0===o?7:o,l=i.sizeLevel,u=void 0===l?5:l;0===e&&Object.assign(t.verticalOhlcv,{candle_gap_size:new Array(t.len).fill(null),candle_body_size:new Array(t.len).fill(null),candle_top_size:new Array(t.len).fill(null),candle_bottom_size:new Array(t.len).fill(null),candle_shadow_size:new Array(t.len).fill(null),candle_close_direction:new Array(t.len).fill(null),candle_high_direction:new Array(t.len).fill(null),candle_low_direction:new Array(t.len).fill(null),candle_open_direction:new Array(t.len).fill(null)}),n&&0===e&&Object.assign(t.instances,{candleStudies:{topInstance:new H(r),bottomInstance:new H(r),gapInstance:new H(r),bodySizeInstance:new H(r),shadowSizeInstance:new H(r),closeDirectionInstance:new H(r),highDirectionInstance:new H(r),lowDirectionInstance:new H(r),openDirectionInstance:new H(r)}});var s=t.verticalOhlcv.open[e-1],c=t.verticalOhlcv.high[e-1],f=t.verticalOhlcv.low[e-1],h=t.verticalOhlcv.close[e-1];if([s,c,f,h].some((function(t){return void 0===t})))return!0;var v=t.verticalOhlcv.open[e],p=t.verticalOhlcv.high[e],y=t.verticalOhlcv.low[e],d=t.verticalOhlcv.close[e],b=d>v,m=Math.abs(d-v),g=Math.abs(p-y),w=p-Math.max(v,d),_=Math.min(v,d)-y,O=Math.abs(h-v),S=Math.abs(d-h),P=Math.abs(p-c),j=Math.abs(y-f),A=Math.abs(v-s),E=null,I=null,R=null,k=null,M=null,T=null,x=null,D=null,C=null;if(n){var L=t.instances.candleStudies,B=L.topInstance,z=L.bottomInstance,F=L.gapInstance,N=L.bodySizeInstance,U=L.shadowSizeInstance,V=L.closeDirectionInstance,q=L.highDirectionInstance,K=L.lowDirectionInstance,$=L.openDirectionInstance;B.update(Math.abs(w)),z.update(Math.abs(_)),U.update(Math.abs(g)),F.update(O),N.update(m),V.update(S),q.update(P),K.update(j),$.update(A);try{R=B.getResult(),I=z.getResult(),E=F.getResult(),k=N.getResult(),M=U.getResult(),T=V.getResult(),x=q.getResult(),D=K.getResult(),C=$.getResult()}catch(t){}t.verticalOhlcv.candle_body_size[e]=b?kt(m,k,2,a):-Math.abs(kt(m,k,2,a))||0,t.verticalOhlcv.candle_gap_size[e]=b?kt(O,E,2,a):-Math.abs(kt(O,E,2,a))||0,t.verticalOhlcv.candle_close_direction[e]=b?kt(S,T,2,a):-Math.abs(kt(S,T,2,a))||0,t.verticalOhlcv.candle_high_direction[e]=b?kt(P,x,2,a):-Math.abs(kt(P,x,2,a))||0,t.verticalOhlcv.candle_low_direction[e]=b?kt(j,D,2,a):-Math.abs(kt(j,D,2,a))||0,t.verticalOhlcv.candle_open_direction[e]=b?kt(A,C,2,a):-Math.abs(kt(A,C,2,a))||0,t.verticalOhlcv.candle_top_size[e]=kt(w,R,.5,u),t.verticalOhlcv.candle_bottom_size[e]=kt(_,I,.5,u),t.verticalOhlcv.candle_shadow_size[e]=kt(g,M,.5,u)}else t.verticalOhlcv.candle_body_size[e]=b?m:-m,t.verticalOhlcv.candle_gap_size[e]=b?O:-O,t.verticalOhlcv.candle_close_direction[e]=b?S:-S,t.verticalOhlcv.candle_high_direction[e]=b?P:-P,t.verticalOhlcv.candle_low_direction[e]=b?j:-j,t.verticalOhlcv.candle_open_direction[e]=b?A:-A,t.verticalOhlcv.candle_top_size[e]=w,t.verticalOhlcv.candle_bottom_size[e]=_,t.verticalOhlcv.candle_shadow_size[e]=g;return!0},lag:Tt},Kt={midPriceOpenClose:!0,midPriceHighLow:!0,sessionIndex:!0,sessionIntradayIndex:!0,dayOfTheWeek:!0,dayOfTheMonth:!0,weekOfTheMonth:!0},$t=function(t){var e=new Date(t),r=e.getDay(),n=e.getDate(),i=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+i)/7)}},Gt=function(t,e){for(var r=t.length,n=new H(e),i=new Array(r),o=0,a=0,l=0,u=0;u<r;u++)if(n.update(t[u]),n.isStable){var s=n.getResult();i[u]=s,o+=s,a+=s*s,l++}else i[u]=null;var c=o/l,f=a/l-c*c,h=Math.sqrt(f);return i.map((function(t){return null!==t?(t-c)/h:null}))},Wt=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=Gt(t,r),i=Gt(e,r),o=t.length,a=[],l=0,u=0,s=0,c=0,f=0,h=0,v=-1,p=0;p<o;p++){if(null!==n[p]&&null!==i[p]){v=p;break}a.push(0)}if(-1===v)return new Array(o).fill(0);for(var y=v;y<o;y++){var d=n[y],b=i[y];if(null!==d&&null!==b)if(l+=d,u+=b,s+=d*b,c+=d*d,f+=b*b,++h<2)a.push(0);else{var m=h*s-l*u,g=Math.sqrt((h*c-l*l)*(h*f-u*u)),w=0===g?0:m/g;a.push(w)}else l=u=s=c=f=h=0,a.push(0)}return a};function Jt(t){return function(t){if(Array.isArray(t))return Xt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Qt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Yt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,l=[],u=!0,s=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,i=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw i}}return l}}(t,e)||Qt(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){if(t){if("string"==typeof t)return Xt(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)?Xt(t,e):void 0}}function Xt(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 Zt=function(t){for(var e=t.input,r=t.inputParams,n=new(0,t.OHLCV_INDICATORS)({input:e,studyOptions:t.studyOptions}),i=0,o=Object.entries(r);i<o.length;i++){var a=Yt(o[i],2),l=a[0],u=a[1];if(!["crossPairs","lag"].includes(l)&&Array.isArray(u))for(var s=0;s<u.length;s++){var c=u[s];Array.isArray(c)&&(c.length>0?n[l].apply(n,Jt(c)):n[l]())}}for(var f=0,h=Object.entries(r);f<h.length;f++){var v=Yt(h[f],2),p=v[0],y=v[1];if(["crossPairs","lag"].includes(p)&&Array.isArray(y))for(var d=0;d<y.length;d++){var b=y[d];Array.isArray(b)&&(b.length>0?n[p].apply(n,Jt(b)):n[p]())}}return n};function te(t){return te="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},te(t)}function ee(t){return function(t){if(Array.isArray(t))return re(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return re(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)?re(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function re(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 ne(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,ie(n.key),n)}}function ie(t){var e=function(t,e){if("object"!=te(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==te(e)?e:e+""}var oe=function(){return t=function t(e){var r=e.input,n=e.ticker,i=void 0===n?null:n,o=e.studyOptions,a=void 0===o?null:o;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: "+i);if(0===r.length)throw Error("input ohlcv must not be empty: "+i);if(!r[0].hasOwnProperty("close"))throw Error("input ohlcv array objects require at least close property: "+i);return this.input=r,this.priceBased=["open","high","low","close","mid_price_open_close","mid_price_high_low"],this.len=r.length,this.studyOptions=null===a?Kt:a,this.instances={},this.crossPairsList=[],this.verticalOhlcv={},this.inputParams={crossPairs:null,lag:null,relativeVolume:null,ema:null,sma:null,macd:null,bollingerBands:null,rsi:null,donchianChannels:null,candlesStudies:null,volumeOscillator:null},this.studies={},this.utilities={correlation:Wt},this.setIndicatorsFromInputParams=Zt,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,i=[],o=0;o<r;o++){for(var a={},l=!1,u=0;u<n;u++){var s=e[u],c=t[s][o];if(null==c){l=!0;break}a[s]=c}l||i.push(a)}return i}},{key:"getLastValues",value:function(){return this.getData()[this.getData().length-1]}},{key:"compute",value:function(){return function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=e.len,i=e.studyOptions,o=void 0===i?{}:i,a=e.inputParams;if(o)for(var l=Object.keys(o),u=0;u<l.length;u++){var s=l[u];if(!Kt.hasOwnProperty(s))throw new Error("Key ".concat(s," not found in defaultStudyOptions. Available options: ").concat(Object.keys(Kt).join(", ")))}var c=o.midPriceOpenClose,f=o.midPriceHighLow,h=o.sessionIndex,v=o.sessionIntradayIndex,p=o.dayOfTheWeek,y=o.dayOfTheMonth,d=o.weekOfTheMonth,b=["open","high","low","close","volume"];c&&b.push("mid_price_open_close"),f&&b.push("mid_price_high_low");var m,g=new Set(b),w=e.verticalOhlcv,_=!1;if(0===r){for(var O=0;O<b.length;O++)w[b[O]]=new Array(n);for(var S=Object.keys(t[0]),P=[],j=0;j<S.length;j++){var A=S[j];g.has(A)||(w[A]=new Array(n),P.push(A))}e.otherKeys=P,(_=(m=t)[0].hasOwnProperty("date")&&"string"==typeof m[0].date&&/^\d{4}-\d{2}-\d{2}/.test(m[0].date))?(h&&(w.session_index=new Array(n)),v&&(w.session_intraday_index=new Array(n)),p&&(w.day_of_the_week=new Array(n)),y&&(w.day_of_the_month=new Array(n)),d&&(w.week_of_the_month=new Array(n)),e.prevDateStr=t[0].date.slice(0,10),e.sessionIndexCount=0,e.sessionIntradayIndexCount=0,e.cachedDayInfo=$t(e.prevDateStr)):(e.prevDateStr=null,e.sessionIndexCount=null,e.sessionIntradayIndexCount=null,e.cachedDayInfo=null)}else{if(!e.otherKeys)throw new Error("otherKeys not found in main. Ensure you run with startIndex=0 first to initialize.");if(!e.hasOwnProperty("prevDateStr"))throw new Error("prevDateStr missing in main. Make sure to store state after initial run.");_=null!==e.prevDateStr}var E=[];if(a&&"object"===Vt(a))for(var I in a){var R=a[I];if(Array.isArray(R))for(var k=0;k<R.length;k++){var M=R[k];Array.isArray(M)&&E.push({key:I,fn:qt[I],args:M})}}for(var T=w.open,x=w.high,D=w.low,C=w.close,L=w.volume,B=c?w.mid_price_open_close:null,z=f?w.mid_price_high_low:null,H={},F=0;F<e.otherKeys.length;F++){var N=e.otherKeys[F];H[N]=w[N]}for(var U=e.prevDateStr,V=e.sessionIndexCount,q=e.sessionIntradayIndexCount,K=e.cachedDayInfo,$=r;$<n;$++){var G=t[$];T[$]=G.open,x[$]=G.high,D[$]=G.low,C[$]=G.close,L[$]=G.volume,B&&(B[$]=(G.open+G.close)/2),z&&(z[$]=(G.high+G.low)/2);for(var W=0;W<e.otherKeys.length;W++){var J=e.otherKeys[W];H[J][$]=G[J]}if(_){var Y=G.date.slice(0,10);Y!==U&&(U=Y,V++,q=0,K=$t(Y)),p&&(w.day_of_the_week[$]=K.day_of_the_week),y&&(w.day_of_the_month[$]=K.day_of_the_month),d&&(w.week_of_the_month[$]=K.week_of_the_month),h&&(w.session_index[$]=V),v&&(w.session_intraday_index[$]=q),q++;for(var Q=0;Q<E.length;Q++){var X=E[Q],Z=X.fn,tt=X.args,et=X.key;"crossPairs"!==et&&"lag"!==et&&Z.apply(void 0,[e,$].concat(Nt(tt)))}Tt(e,$,a.lag),Ft(e,$,e.crossPairsList)}}e.prevDateStr=U,e.sessionIndexCount=V,e.sessionIntradayIndexCount=q,e.cachedDayInfo=K}(this.input,this),this}},{key:"crossPairs",value:function(t){var e,r;return this.crossPairsList=[].concat(ee(this.crossPairsList),ee(t)),null!==(r=(e=this.inputParams).crossPairs)&&void 0!==r||(e.crossPairs=[]),this.inputParams.crossPairs.push([this.crossPairsList]),this}},{key:"lag",value:function(){var t,e,r=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!==(e=(t=this.inputParams).lag)&&void 0!==e||(t.lag=[]),this.inputParams.lag.push([n,i]);for(var o=function(){var t=n[a];r.priceBased.find((function(e){return t.startsWith(e)}))&&r.priceBased.push(t)},a=0;a<n.length;a++)o();return this}},{key:"relativeVolume",value:function(t){var e,r;return null!==(r=(e=this.inputParams).relativeVolume)&&void 0!==r||(e.relativeVolume=[]),this.inputParams.relativeVolume.push([t]),this}},{key:"ema",value:function(t){var e,r;return null!==(r=(e=this.inputParams).ema)&&void 0!==r||(e.ema=[]),this.inputParams.ema.push([t]),this.priceBased.push("ema_".concat(t)),this}},{key:"sma",value:function(t){var e,r;return null!==(r=(e=this.inputParams).sma)&&void 0!==r||(e.sma=[]),this.inputParams.sma.push([t]),this.priceBased.push("sma_".concat(t)),this}},{key:"macd",value:function(t,e,r){var n,i;return null!==(i=(n=this.inputParams).macd)&&void 0!==i||(n.macd=[]),this.inputParams.macd.push([t,e,r]),this}},{key:"bollingerBands",value:function(){var t,e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,i=arguments.length>2?arguments[2]:void 0;if("number"!=typeof r||r<=0)throw new Error('Invalid parameter: "size" must be a positive number in bollingerBands.');if("number"!=typeof n||n<=0)throw new Error('Invalid parameter: "times" must be a positive number in bollingerBands.');return null!==(e=(t=this.inputParams).bollingerBands)&&void 0!==e||(t.bollingerBands=[]),this.inputParams.bollingerBands.push([r,n,i]),this.priceBased.push("bollinger_bands_middle","bollinger_bands_upper","bollinger_bands_lower"),this}},{key:"rsi",value:function(t){var e,r;if("number"!=typeof t||t<=0)throw new Error('Invalid parameter: "size" must be a positive number in rsi.');return null!==(r=(e=this.inputParams).rsi)&&void 0!==r||(e.rsi=[]),this.inputParams.rsi.push([t]),this}},{key:"donchianChannels",value:function(){var t,e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if("number"!=typeof r||r<=0)throw new Error('The "size" must be a positive number or 0 in donchianChannels.');if("number"!=typeof n||n<=0)throw new Error('The "offset" must be a positive number or 0 in donchianChannels.');return null!==(e=(t=this.inputParams).donchianChannels)&&void 0!==e||(t.donchianChannels=[]),this.inputParams.donchianChannels.push([r,n]),this.priceBased.push("donchian_channel_upper","donchian_channel_lower","donchian_channel_basis"),this}},{key:"candlesStudies",value:function(){var t,e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0;if("number"!=typeof r||r<=0)throw new Error('The "size" must be a positive number or 0 in candlesStudies.');if("boolean"!=typeof n)throw new Error('The "classify" must be a true or false in candlesStudies.');return null!==(e=(t=this.inputParams).candlesStudies)&&void 0!==e||(t.candlesStudies=[]),this.inputParams.candlesStudies.push([r,n,i]),this}},{key:"volumeOscillator",value:function(t,e){var r,n;return null!==(n=(r=this.inputParams).volumeOscillator)&&void 0!==n||(r.volumeOscillator=[]),this.inputParams.volumeOscillator.push([t,e]),this}}],e&&ne(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
package/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import {crossPairs} from './src/studies/findCrosses.js'
2
1
  import { parseOhlcvToVertical, defaultStudyOptions } from './src/utilities/parsing-utilities.js'
3
2
  import { correlation } from './src/studies/correlation.js'
4
3
  import { setIndicatorsFromInputParams } from './src/utilities/setIndicatorsFromInputParams.js'
@@ -15,7 +14,7 @@ export default class OHLCV_INDICATORS {
15
14
  this.len = input.length
16
15
  this.studyOptions = (studyOptions === null) ? defaultStudyOptions : studyOptions
17
16
  this.instances = {}
18
- this.autoCrossPairsList = []
17
+ this.crossPairsList = []
19
18
  this.verticalOhlcv = {}
20
19
 
21
20
  this.inputParams = {
@@ -100,22 +99,17 @@ export default class OHLCV_INDICATORS {
100
99
  }
101
100
 
102
101
 
102
+
103
103
  crossPairs(arr)
104
104
  {
105
-
106
- this.compute()
107
-
108
- const crossList = [...this.autoCrossPairsList, ...arr]
105
+ this.crossPairsList = [...this.crossPairsList, ...arr]
109
106
  this.inputParams.crossPairs ??= []
110
- this.inputParams.crossPairs.push([crossList])
111
-
112
- const {x, c} = crossPairs(this, crossList)
113
- Object.assign(this.verticalOhlcv, x)
114
- Object.assign(this.studies, c)
115
-
107
+ this.inputParams.crossPairs.push([this.crossPairsList])
108
+
116
109
  return this
117
110
  }
118
111
 
112
+
119
113
  lag(colKeys = ['close'], lags = 1) {
120
114
 
121
115
  this.inputParams.lag ??= []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ohlcv-indicators",
3
- "version": "1.9.3",
3
+ "version": "1.9.5",
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",
@@ -8,7 +8,8 @@
8
8
  "test": "node test/test.js",
9
9
  "study": "node test/study.js",
10
10
  "count": "node test/countUps.js",
11
- "build": "npx webpack"
11
+ "build": "npx webpack",
12
+ "cross": "node src/studies/findCrosses2.js"
12
13
  },
13
14
  "author": "https://jaimelias.com/",
14
15
  "license": "ISC",
@@ -5,18 +5,26 @@ export const bollingerBands = (main, index, size, times, bollingerBandsStudies =
5
5
 
6
6
  const value = main.verticalOhlcv.close[index]
7
7
 
8
- if (!main.instances.hasOwnProperty(`bollinger_bands`)) {
9
- main.instances[`bollinger_bands`] = {
8
+ if (index === 0) {
9
+
10
+ Object.assign(main.instances, {bollinger_bands: {
10
11
  instance: new FasterBollingerBands(size, times),
11
12
  heightInstance: bollingerBandsStudies ? new FasterSMA(size) : null
12
- };
13
- main.verticalOhlcv[`bollinger_bands_upper`] = new Array(main.len).fill(null);
14
- main.verticalOhlcv[`bollinger_bands_middle`] = new Array(main.len).fill(null);
15
- main.verticalOhlcv[`bollinger_bands_lower`] = new Array(main.len).fill(null);
13
+ }})
14
+
15
+
16
+ Object.assign(main.verticalOhlcv, {
17
+ bollinger_bands_upper: new Array(main.len).fill(null),
18
+ bollinger_bands_middle: new Array(main.len).fill(null),
19
+ bollinger_bands_lower: new Array(main.len).fill(null)
20
+ })
16
21
 
17
22
  if (bollingerBandsStudies) {
18
- main.verticalOhlcv[`bollinger_bands_range`] = new Array(main.len).fill(null);
19
- main.verticalOhlcv[`bollinger_bands_height`] = new Array(main.len).fill(null);
23
+
24
+ Object.assign(main.verticalOhlcv, {
25
+ bollinger_bands_range: new Array(main.len).fill(null),
26
+ bollinger_bands_height: new Array(main.len).fill(null),
27
+ })
20
28
  }
21
29
  }
22
30
 
@@ -27,13 +35,15 @@ export const bollingerBands = (main, index, size, times, bollingerBandsStudies =
27
35
  try {
28
36
  result = instance.getResult();
29
37
  } catch (err) {
30
- result = { upper: null, middle: null, lower: null };
38
+ //do nothing
31
39
  }
32
40
 
41
+ if(!result) return true
42
+
33
43
  const { upper, middle, lower } = result;
34
- main.verticalOhlcv[`bollinger_bands_upper`][index] = upper;
35
- main.verticalOhlcv[`bollinger_bands_middle`][index] = middle;
36
- main.verticalOhlcv[`bollinger_bands_lower`][index] = lower;
44
+ main.verticalOhlcv.bollinger_bands_upper[index] = upper;
45
+ main.verticalOhlcv.bollinger_bands_middle[index] = middle;
46
+ main.verticalOhlcv.bollinger_bands_lower[index] = lower;
37
47
 
38
48
  if (!bollingerBandsStudies) return true;
39
49
 
@@ -41,21 +51,23 @@ export const bollingerBands = (main, index, size, times, bollingerBandsStudies =
41
51
  let height = null;
42
52
  let heightMean;
43
53
 
44
- if (upper !== null && lower !== null) {
45
- range = (value - lower) / (upper - lower);
46
- height = upper - lower;
54
+ range = (value - lower) / (upper - lower);
55
+ height = upper - lower;
47
56
 
48
- heightInstance.update(height);
57
+ heightInstance.update(height);
49
58
 
50
- try {
51
- heightMean = heightInstance.getResult();
52
- } catch (err) {
53
- heightMean = null;
54
- }
59
+ try {
60
+ heightMean = heightInstance.getResult();
61
+ } catch (err) {
62
+ //do nothing
55
63
  }
56
64
 
57
- main.verticalOhlcv[`bollinger_bands_range`][index] = range;
58
- main.verticalOhlcv[`bollinger_bands_height`][index] = classifySize(height, heightMean, 1.5);
65
+ main.verticalOhlcv.bollinger_bands_range[index] = range;
59
66
 
67
+ if(heightMean)
68
+ {
69
+ main.verticalOhlcv.bollinger_bands_height[index] = classifySize(height, heightMean, 1.5);
70
+ }
71
+
60
72
  return true;
61
73
  };
@@ -1,19 +1,20 @@
1
1
  const avg = (h, l) => (h + l) / 2;
2
2
 
3
3
  export const donchianChannels = (main, index, size, offset) => {
4
- const { verticalOhlcv } = main;
5
- const highs = verticalOhlcv.high;
6
- const lows = verticalOhlcv.low;
7
4
 
8
- // If we don't have enough data to fill one size ending at (index - offset), return
9
- if ((index - offset) < (size - 1)) return true;
5
+ const highs = main.verticalOhlcv.high;
6
+ const lows = main.verticalOhlcv.low;
10
7
 
11
8
  // Ensure that the required arrays exist
12
- if (!main.instances.hasOwnProperty('donchian_channels')) {
9
+ if (index === 0) {
10
+
13
11
  main.instances['donchian_channels'] = {};
14
- verticalOhlcv['donchian_channel_upper'] = new Array(main.len).fill(null);
15
- verticalOhlcv['donchian_channel_basis'] = new Array(main.len).fill(null);
16
- verticalOhlcv['donchian_channel_lower'] = new Array(main.len).fill(null);
12
+
13
+ Object.assign(main.verticalOhlcv, {
14
+ donchian_channel_upper: new Array(main.len).fill(null),
15
+ donchian_channel_basis: new Array(main.len).fill(null),
16
+ donchian_channel_lower: new Array(main.len).fill(null),
17
+ })
17
18
  }
18
19
 
19
20
 
@@ -37,9 +38,9 @@ export const donchianChannels = (main, index, size, offset) => {
37
38
  const placementIndex = index;
38
39
 
39
40
  if (placementIndex >= 0 && placementIndex < main.len) {
40
- verticalOhlcv['donchian_channel_upper'][placementIndex] = upper;
41
- verticalOhlcv['donchian_channel_basis'][placementIndex] = basis;
42
- verticalOhlcv['donchian_channel_lower'][placementIndex] = lower;
41
+ main.verticalOhlcv['donchian_channel_upper'][placementIndex] = upper;
42
+ main.verticalOhlcv['donchian_channel_basis'][placementIndex] = basis;
43
+ main.verticalOhlcv['donchian_channel_lower'][placementIndex] = lower;
43
44
  }
44
45
 
45
46
  return true;
@@ -5,7 +5,7 @@ export const ema = (main, index, size) => {
5
5
 
6
6
  const value = main.verticalOhlcv.close[index]
7
7
 
8
- if(!main.instances.hasOwnProperty(`ema_${size}`))
8
+ if(index === 0)
9
9
  {
10
10
  main.instances[`ema_${size}`] = new FasterEMA(size)
11
11
  main.verticalOhlcv[`ema_${size}`] = new Array(main.len).fill(null)
@@ -4,9 +4,9 @@ export const macd = (main, index, fastLine = 12, slowLine = 26, signalLine = 9)
4
4
 
5
5
  const value = main.verticalOhlcv.close[index]
6
6
 
7
- if (!main.instances.hasOwnProperty('macd')) {
7
+ if (index === 0) {
8
8
 
9
- main.autoCrossPairsList.push({fast: 'macd_diff', slow: 'macd_dea'});
9
+ main.crossPairsList.push({fast: 'macd_diff', slow: 'macd_dea'});
10
10
 
11
11
  main.instances['macd'] = new FasterMACD(
12
12
  new FasterEMA(fastLine),
@@ -14,33 +14,29 @@ export const macd = (main, index, fastLine = 12, slowLine = 26, signalLine = 9)
14
14
  new FasterEMA(signalLine)
15
15
  );
16
16
 
17
- main.verticalOhlcv['macd_diff'] = new Array(main.len).fill(null);
18
- main.verticalOhlcv['macd_dea'] = new Array(main.len).fill(null);
19
- main.verticalOhlcv['macd_histogram'] = new Array(main.len).fill(null);
17
+ Object.assign(main.verticalOhlcv, {
18
+ macd_diff: new Array(main.len).fill(null),
19
+ macd_dea: new Array(main.len).fill(null),
20
+ macd_histogram: new Array(main.len).fill(null),
21
+ })
20
22
  }
21
23
 
22
24
  const macdInstance = main.instances[`macd`];
23
25
  macdInstance.update(value);
24
26
 
25
27
  let macdResult;
28
+
26
29
  try {
27
30
  macdResult = macdInstance.getResult();
28
31
  } catch (err) {
29
- macdResult = { macd: null, signal: null, histogram: null };
32
+ //do nothing
30
33
  }
31
34
 
32
- const { macd, signal, histogram } = macdResult;
33
35
 
34
- if (macd !== null) {
35
- main.verticalOhlcv['macd_diff'][index] = macd;
36
- }
37
-
38
- if (signal !== null) {
39
- main.verticalOhlcv['macd_dea'][index] = signal;
40
- }
41
-
42
- if (histogram !== null) {
43
- main.verticalOhlcv['macd_histogram'][index] = histogram;
36
+ if (macdResult) {
37
+ main.verticalOhlcv['macd_diff'][index] = macdResult.macd;
38
+ main.verticalOhlcv['macd_dea'][index] = macdResult.signal;
39
+ main.verticalOhlcv['macd_histogram'][index] = macdResult.histogram;
44
40
  }
45
41
 
46
42
  return true;
@@ -4,10 +4,13 @@ export const relativeVolume = (main, index, size = 10) => {
4
4
 
5
5
  const value = main.verticalOhlcv.volume[index]
6
6
 
7
- if (!main.instances.hasOwnProperty(`relative_volume_${size}`)) {
7
+ if (index === 0) {
8
8
  main.instances[`relative_volume_${size}`] = new FasterSMA(size);
9
- main.verticalOhlcv[`relative_volume_${size}`] = new Array(main.len).fill(null);
10
- main.verticalOhlcv[`relative_volume_sma_${size}`] = new Array(main.len).fill(null);
9
+
10
+ Object.assign(main.verticalOhlcv, {
11
+ [`relative_volume_${size}`]: new Array(main.len).fill(null),
12
+ [`relative_volume_sma_${size}`]: new Array(main.len).fill(null)
13
+ })
11
14
  }
12
15
 
13
16
  const smaInstance = main.instances[`relative_volume_${size}`]
@@ -17,7 +20,7 @@ export const relativeVolume = (main, index, size = 10) => {
17
20
  try {
18
21
  smaValue = smaInstance.getResult()
19
22
  } catch (err) {
20
- smaValue = null;
23
+ //do nothing
21
24
  }
22
25
 
23
26
  main.verticalOhlcv[`relative_volume_sma_${size}`][index] = smaValue;
@@ -5,7 +5,7 @@ export const sma = (main, index, size) => {
5
5
 
6
6
  const value = main.verticalOhlcv.close[index]
7
7
 
8
- if(!main.instances.hasOwnProperty(`sma_${size}`))
8
+ if(index === 0)
9
9
  {
10
10
  main.instances[`sma_${size}`] = new FasterSMA(size)
11
11
  main.verticalOhlcv[`sma_${size}`] = new Array(main.len).fill(null)
@@ -18,7 +18,7 @@ export const sma = (main, index, size) => {
18
18
  currSma = main.instances[`sma_${size}`].getResult()
19
19
  } catch(err)
20
20
  {
21
- currSma = null
21
+ //do nothing
22
22
  }
23
23
 
24
24
  if(currSma)