ohlcv-indicators 2.2.3 → 2.2.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){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 n(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)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},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 a,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw a}}}}function n(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:()=>We});var o=function(t){return"string"==typeof t&&/^\d{4}-\d{2}-\d{2}/.test(t)},i=function(t){if(0!==t.lastComputedIndex)throw Error('ohlcv is already computed, you can not add new indicators after "compute", "getLastValues" , "getDataAsCols" or "getData" methods are called.')},a=1e6,u="[big.js] ",l=u+"Invalid ",c=l+"decimal places",s=l+"rounding mode",f=u+"Division by zero",h={},y=void 0,p=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function v(t,e,r,n){var o=t.c;if(r===y&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(s);if(e<1)n=3===r&&(n||!!o[0])||0===e&&(1===r&&o[0]>=5||2===r&&(o[0]>5||5===o[0]&&(n||o[1]!==y))),o.length=1,n?(t.e=t.e-e+1,o[0]=1):o[0]=t.e=0;else if(e<o.length){if(n=1===r&&o[e]>=5||2===r&&(o[e]>5||5===o[e]&&(n||o[e+1]!==y||1&o[e-1]))||3===r&&(n||!!o[0]),o.length=e,n)for(;++o[--e]>9;)if(o[e]=0,0===e){++t.e,o.unshift(1);break}for(e=o.length;!o[--e];)o.pop()}return t}function d(t,e,r){var n=t.e,o=t.c.join(""),i=o.length;if(e)o=o.charAt(0)+(i>1?"."+o.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)o="0"+o;o="0."+o}else if(n>0)if(++n>i)for(n-=i;n--;)o+="0";else n<i&&(o=o.slice(0,n)+"."+o.slice(n));else i>1&&(o=o.charAt(0)+"."+o.slice(1));return t.s<0&&r?"-"+o:o}function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}function m(t){var e="function"==typeof Map?new Map:void 0;return m=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(g())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&w(o,r.prototype),o}(t,arguments,S(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),w(r,t)},m(t)}function g(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(g=function(){return!!t})()}function w(t,e){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},w(t,e)}function S(t){return S=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},S(t)}h.abs=function(){var t=new this.constructor(this);return t.s=1,t},h.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,a=t.s,u=r.e,l=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-a:0;if(i!=a)return i;if(e=i<0,u!=l)return u>l^e?1:-1;for(a=(u=n.length)<(l=o.length)?u:l,i=-1;++i<a;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return u==l?0:u>l^e?1:-1},h.div=function(t){var e=this,r=e.constructor,n=e.c,o=(t=new r(t)).c,i=e.s==t.s?1:-1,u=r.DP;if(u!==~~u||u<0||u>a)throw Error(c);if(!o[0])throw Error(f);if(!n[0])return t.s=i,t.c=[t.e=0],t;var l,s,h,p,d,b=o.slice(),m=l=o.length,g=n.length,w=n.slice(0,l),S=w.length,_=t,O=_.c=[],j=0,A=u+(_.e=e.e-t.e)+1;for(_.s=i,i=A<0?0:A,b.unshift(0);S++<l;)w.push(0);do{for(h=0;h<10;h++){if(l!=(S=w.length))p=l>S?1:-1;else for(d=-1,p=0;++d<l;)if(o[d]!=w[d]){p=o[d]>w[d]?1:-1;break}if(!(p<0))break;for(s=S==l?o:b;S;){if(w[--S]<s[S]){for(d=S;d&&!w[--d];)w[d]=9;--w[d],w[S]+=10}w[S]-=s[S]}for(;!w[0];)w.shift()}O[j++]=p?h:++h,w[0]&&p?w[S]=n[m]||0:w=[n[m]]}while((m++<g||w[0]!==y)&&i--);return O[0]||1==j||(O.shift(),_.e--,A--),j>A&&v(_,A,r.RM,w[0]!==y),_},h.eq=function(t){return 0===this.cmp(t)},h.gt=function(t){return this.cmp(t)>0},h.gte=function(t){return this.cmp(t)>-1},h.lt=function(t){return this.cmp(t)<0},h.lte=function(t){return this.cmp(t)<1},h.minus=h.sub=function(t){var e,r,n,o,i=this,a=i.constructor,u=i.s,l=(t=new a(t)).s;if(u!=l)return t.s=-l,i.plus(t);var c=i.c.slice(),s=i.e,f=t.c,h=t.e;if(!c[0]||!f[0])return f[0]?t.s=-l:c[0]?t=new a(i):t.s=1,t;if(u=s-h){for((o=u<0)?(u=-u,n=c):(h=s,n=f),n.reverse(),l=u;l--;)n.push(0);n.reverse()}else for(r=((o=c.length<f.length)?c:f).length,u=l=0;l<r;l++)if(c[l]!=f[l]){o=c[l]<f[l];break}if(o&&(n=c,c=f,f=n,t.s=-t.s),(l=(r=f.length)-(e=c.length))>0)for(;l--;)c[e++]=0;for(l=e;r>u;){if(c[--r]<f[r]){for(e=r;e&&!c[--e];)c[e]=9;--c[e],c[r]+=10}c[r]-=f[r]}for(;0===c[--l];)c.pop();for(;0===c[0];)c.shift(),--h;return c[0]||(t.s=1,c=[h=0]),t.c=c,t.e=h,t},h.mod=function(t){var e,r=this,n=r.constructor,o=r.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(f);return r.s=t.s=1,e=1==t.cmp(r),r.s=o,t.s=i,e?new n(r):(o=n.DP,i=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=o,n.RM=i,this.minus(r.times(t)))},h.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},h.plus=h.add=function(t){var e,r,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var a=o.e,u=o.c,l=t.e,c=t.c;if(!u[0]||!c[0])return c[0]||(u[0]?t=new i(o):t.s=o.s),t;if(u=u.slice(),e=a-l){for(e>0?(l=a,n=c):(e=-e,n=u),n.reverse();e--;)n.push(0);n.reverse()}for(u.length-c.length<0&&(n=c,c=u,u=n),e=c.length,r=0;e;u[e]%=10)r=(u[--e]=u[e]+c[e]+r)/10|0;for(r&&(u.unshift(r),++l),e=u.length;0===u[--e];)u.pop();return t.c=u,t.e=l,t},h.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(l+"exponent");for(o&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return o?r.div(n):n},h.prec=function(t,e){if(t!==~~t||t<1||t>a)throw Error(l+"precision");return v(new this.constructor(this),t,e)},h.round=function(t,e){if(t===y)t=0;else if(t!==~~t||t<-a||t>a)throw Error(c);return v(new this.constructor(this),t+this.e+1,e)},h.sqrt=function(){var t,e,r,n=this,o=n.constructor,i=n.s,a=n.e,l=new o("0.5");if(!n.c[0])return new o(n);if(i<0)throw Error(u+"No square root");0===(i=Math.sqrt(n+""))||i===1/0?((e=n.c.join("")).length+a&1||(e+="0"),a=((a+1)/2|0)-(a<0||1&a),t=new o(((i=Math.sqrt(e))==1/0?"5e":(i=i.toExponential()).slice(0,i.indexOf("e")+1))+a)):t=new o(i+""),a=t.e+(o.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 v(t,(o.DP-=4)+t.e+1,o.RM)},h.times=h.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,a=o.length,u=i.length,l=r.e,c=t.e;if(t.s=r.s==t.s?1:-1,!o[0]||!i[0])return t.c=[t.e=0],t;for(t.e=l+c,a<u&&(e=o,o=i,i=e,c=a,a=u,u=c),e=new Array(c=a+u);c--;)e[c]=0;for(l=u;l--;){for(u=0,c=a+l;c>l;)u=e[c]+i[l]*o[c-l-1]+u,e[c--]=u%10,u=u/10|0;e[c]=u}for(u?++t.e:e.shift(),l=e.length;!e[--l];)e.pop();return t.c=e,t},h.toExponential=function(t,e){var r=this,n=r.c[0];if(t!==y){if(t!==~~t||t<0||t>a)throw Error(c);for(r=v(new r.constructor(r),++t,e);r.c.length<t;)r.c.push(0)}return d(r,!0,!!n)},h.toFixed=function(t,e){var r=this,n=r.c[0];if(t!==y){if(t!==~~t||t<0||t>a)throw Error(c);for(t=t+(r=v(new r.constructor(r),t+r.e+1,e)).e+1;r.c.length<t;)r.c.push(0)}return d(r,!1,!!n)},h[Symbol.for("nodejs.util.inspect.custom")]=h.toJSON=h.toString=function(){var t=this,e=t.constructor;return d(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},h.toNumber=function(){var t=Number(d(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(u+"Imprecise conversion");return t},h.toPrecision=function(t,e){var r=this,n=r.constructor,o=r.c[0];if(t!==y){if(t!==~~t||t<1||t>a)throw Error(l+"precision");for(r=v(new n(r),t,e);r.c.length<t;)r.c.push(0)}return d(r,t<=r.e||r.e<=n.NE||r.e>=n.PE,!!o)},h.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(u+"valueOf disallowed");return d(t,t.e<=e.NE||t.e>=e.PE,!0)},function t(){function e(r){var n=this;if(!(n instanceof e))return r===y?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(l+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,o;if(!p.test(e))throw Error(l+"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=h,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 _=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"==b(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,g()?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&&w(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(m(Error));function O(t){return O="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},O(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,P(n.key),n)}}function A(t,e,r){return(e=P(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function P(t){var e=function(t,e){if("object"!=O(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=O(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==O(e)?e:e+""}var E=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),A(this,"previousHighest",void 0),A(this,"highest",void 0),A(this,"previousLowest",void 0),A(this,"lowest",void 0),A(this,"previousResult",void 0),A(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 _;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)}}])&&j(t.prototype,e),r&&j(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function k(t){return k="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},k(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,C(n.key),n)}}function I(t,e,r){return e=M(e),function(t,e){if(e&&("object"==k(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,x()?Reflect.construct(e,r||[],M(t).constructor):e.apply(t,r))}function x(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(x=function(){return!!t})()}function M(t){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},M(t)}function R(t,e){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},R(t,e)}function C(t){var e=function(t,e){if("object"!=k(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=k(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==k(e)?e:e+""}var D=function(t){function e(t){var r,n,o,i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=I(this,e),i=void 0,(o=C(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,r.interval=t,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&R(t,e)}(e,t),r=e,(n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&T(r.prototype,n),o&&T(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(E);function B(t){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(t)}function L(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 V(t,e,r){return e=N(e),function(t,e){if(e&&("object"==B(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,H()?Reflect.construct(e,r||[],N(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 N(t){return N=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},N(t)}function U(t,e){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},U(t,e)}function z(t){var e=function(t,e){if("object"!=B(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==B(e)?e:e+""}var $=function(t){function e(){var t,r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,a=new Array(i),u=0;u<i;u++)a[u]=arguments[u];return r=t=V(this,e,[].concat(a)),o=[],(n=z(n="prices"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&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&&L(r.prototype,n),o&&L(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(D);function q(t){return q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},q(t)}function F(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,W(n.key),n)}}function G(t,e,r){return e=K(e),function(t,e){if(e&&("object"==q(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,J()?Reflect.construct(e,r||[],K(t).constructor):e.apply(t,r))}function J(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(J=function(){return!!t})()}function K(t){return K=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},K(t)}function Y(t,e){return Y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Y(t,e)}function Q(t,e,r){return(e=W(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function W(t){var e=function(t,e){if("object"!=q(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==q(e)?e:e+""}var X=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),Q(r=G(this,e),"interval",void 0),Q(r,"indicator",void 0),Q(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&&Y(t,e)}(e,t),r=e,n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.indicator.update(t);if(e&&void 0!==this.previousResult){var n=(t-this.previousResult)*this.smoothingFactor;return this.setResult(n+this.previousResult,e)}if(!e&&void 0!==this.result){var o=(t-this.result)*this.smoothingFactor;return this.setResult(o+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&F(r.prototype,n),o&&F(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(E);function Z(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function tt(t){return tt="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},tt(t)}function et(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,nt(n.key),n)}}function rt(t,e,r){return(e=nt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function nt(t){var e=function(t,e){if("object"!=tt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=tt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==tt(e)?e:e+""}var ot=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),rt(this,"interval",void 0),rt(this,"deviationMultiplier",void 0),rt(this,"prices",[]),rt(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=Z(this.prices),r=function(t,e){var r=e||Z(t),n=Z(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 _;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&et(t.prototype,e),r&&et(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function it(t){return it="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},it(t)}function at(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,ht(n.key),n)}}function ut(t,e,r){return e=ct(e),function(t,e){if(e&&("object"==it(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,lt()?Reflect.construct(e,r||[],ct(t).constructor):e.apply(t,r))}function lt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(lt=function(){return!!t})()}function ct(t){return ct=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},ct(t)}function st(t,e){return st=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},st(t,e)}function ft(t,e,r){return(e=ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ht(t){var e=function(t,e){if("object"!=it(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=it(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==it(e)?e:e+""}var yt=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),ft(r=ut(this,e,[t]),"interval",void 0),ft(r,"pricesCounter",0),ft(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&&st(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 _;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&at(r.prototype,n),o&&at(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(D);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 vt(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,bt(n.key),n)}}function dt(t,e,r){return(e=bt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function bt(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+""}var mt=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),dt(this,"short",void 0),dt(this,"long",void 0),dt(this,"signal",void 0),dt(this,"prices",[]),dt(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 _;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t);var r=this.short.update(t,e),n=this.long.update(t,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var o=r-n,i=this.signal.update(o,e);return this.result={histogram:o-i,macd:o,signal:i}}}}],e&&vt(t.prototype,e),r&&vt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function gt(t){return gt="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},gt(t)}function wt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Pt(n.key),n)}}function St(t,e,r){return e=Ot(e),function(t,e){if(e&&("object"==gt(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,_t()?Reflect.construct(e,r||[],Ot(t).constructor):e.apply(t,r))}function _t(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_t=function(){return!!t})()}function Ot(t){return Ot=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ot(t)}function jt(t,e){return jt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},jt(t,e)}function At(t,e,r){return(e=Pt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Pt(t){var e=function(t,e){if("object"!=gt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=gt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==gt(e)?e:e+""}var Et=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:X;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),At(r=St(this,e),"interval",void 0),At(r,"previousPrices",[]),At(r,"avgGain",void 0),At(r,"avgLoss",void 0),At(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&&jt(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&e?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var r=t,n=this.previousPrices[this.previousPrices.length-2];if(r>n?(this.avgLoss.update(0,e),this.avgGain.update(t-n,e)):(this.avgLoss.update(n-r,e),this.avgGain.update(0,e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(0===o)return this.setResult(100,e);var i=this.avgGain.getResult()/o;return this.setResult(this.maxValue-this.maxValue/(i+1),e)}}}}],n&&wt(r.prototype,n),o&&wt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(E);function kt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||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,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 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 It=function(t){var e=1/(arguments.length>1&&void 0!==arguments[1]?arguments[1]:.1);return Math.round(t*e)/e},xt=function(t){return t.replace(/(?!^-)[^0-9.]/g,"")};function Mt(t){return Mt="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},Mt(t)}function Rt(t){return function(t){if(Array.isArray(t))return Ct(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 Ct(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)?Ct(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 Ct(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,e,r){return(e=function(t){var e=function(t,e){if("object"!=Mt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Mt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Mt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Bt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.05;if(null==t||null==e)return null;var n=t>=0,o=Math.abs(t),i=e.upper,a=e.middle,u=e.lower;if(o<u)return 0;if(o>i)return n?1:-1;var l=Number.EPSILON*Math.max(o,Math.abs(a));if(Math.abs(o-a)<l)return n?.5:-.5;if(i===u)return null;var c=It((o-u)/(i-u),r);return n?c:-c};function Lt(t){return Lt="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},Lt(t)}function Vt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Nt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Ht(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)||Nt(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 Nt(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}}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}var zt={ema:yt,sma:$},$t=function(t,e,r,n){if(!r||"object"!==Lt(r))throw new Error('"options" must be an object in '.concat(t,". eg: {target, height, range}"));var o=r.target,i=void 0===o?"close":o,a=r.diff,u=void 0===a?null:a;if("string"!=typeof i)throw new Error('"target" must be a valid keyName '.concat(t,"."));if("number"!=typeof e||e<=0)throw new Error('"size" must be a positive number in '.concat(t,"."));var l={target:i,diff:null};if(null!==u&&("object"===Lt(u)||"boolean"==typeof u&&!0===u)){var c=u=!0===u?{}:u,s=c.stdDev,f=void 0===s?2:s,h=c.scale,y=void 0===h?.05:h,p=c.targets,v=void 0===p?["close"]:p,d=c.size,b=void 0===d?e:d,m=c.lag,g=void 0===m?0:m;if("number"!=typeof f||f<=0)throw new Error('"diff.stdDev" must be a number greater than 0 in '.concat(t,"."));if("number"!=typeof y||!n.includes(y))throw new Error('"diff.scale" must be a number between 0.01 and 1 in '.concat(t,"."));if("number"!=typeof b||!Number.isInteger(b)||b<=0)throw new Error('"diff.size" must be an integer greater than or equal to size in '.concat(t,"."));if(!Array.isArray(v))throw new Error('"diff.targest" must be an array of keyNames with at least 1 item in '.concat(t,"."));if("number"!=typeof g||!Number.isInteger(g)||g<0)throw new Error('"diff.lag" must be an integer greater than 0 in '.concat(t,"."));l.diff={stdDev:f,scale:y,size:b,targets:v,lag:g}}return l};function qt(t){return qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qt(t)}function Ft(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==qt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Gt(t){return function(t){if(Array.isArray(t))return Jt(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 Jt(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)?Jt(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 Jt(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="close";function Yt(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 Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Wt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=te(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Xt(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Qt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Zt(t){return function(t){if(Array.isArray(t))return ee(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||te(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 te(t,e){if(t){if("string"==typeof t)return ee(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)?ee(t,e):void 0}}function ee(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 re(t){return re="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},re(t)}function ne(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=ae(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function oe(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=re(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=re(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==re(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ie(t){return function(t){if(Array.isArray(t))return ue(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||ae(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 ae(t,e){if(t){if("string"==typeof t)return ue(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)?ue(t,e):void 0}}function ue(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 le(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 ce=function(t,e){return t-e};function se(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||he(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 fe(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=he(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function he(t,e){if(t){if("string"==typeof t)return ye(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)?ye(t,e):void 0}}function ye(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 pe(t){return pe="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},pe(t)}var ve=function(t,e){var r=t.instances,n=t.verticalOhlcv,o=t.nullArray;if(0===e){var i=t.inputParams,a=t.priceBased,u=i.filter((function(t){return"lag"===t.key}));if("object"!==pe(u))return;var l,c=u.map((function(t){return t.params})),s=fe(c);try{for(s.s();!(l=s.n()).done;){var f,h=se(l.value,2),y=h[0],p=h[1],v=fe(y);try{for(v.s();!(f=v.n()).done;){var d=f.value;if(a.includes(d))for(var b=1;b<=p;b++)a.push("".concat(d,"_lag_").concat(b))}}catch(t){v.e(t)}finally{v.f()}}}catch(t){s.e(t)}finally{s.f()}r.lag={lagParams:c}}var m,g,w=fe(r.lag.lagParams);try{for(w.s();!(m=w.n()).done;){var S,_=se(m.value,2),O=_[0],j=_[1],A=fe(O);try{for(A.s();!(S=A.n()).done;){var P=S.value,E=n[P];if(0===e)for(var k=1;k<=j;k++)n["".concat(P,"_lag_").concat(k)]=function(t){if(Array.isArray(t))return ye(t)}(g=o)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(g)||he(g)||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.")}();for(var T=1;T<=j;T++){var I="".concat(P,"_lag_").concat(T),x=e-T,M=x<=0||void 0===E[x]?null:E[x];t.pushToMain({index:e,key:I,value:M})}}}catch(t){A.e(t)}finally{A.f()}}}catch(t){w.e(t)}finally{w.f()}return!0};function de(t,e){if(t){if("string"==typeof t)return be(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)?be(t,e):void 0}}function be(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 me(t){return me="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},me(t)}function ge(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,we(n.key),n)}}function we(t){var e=function(t,e){if("object"!=me(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=me(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==me(e)?e:e+""}var Se=function(t,e){return t>e},_e=function(t,e){return t<e},Oe=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object.assign(this,{interval:0,prevState:.5,prevFast:null,prevSlow:null,prevHigh:null,prevLow:null,areHighAndLowUndefined:!1,index:0,crossIndexes:{up:[],down:[]}})},(e=[{key:"update",value:function(t){var e=t.fast,r=t.high,n=t.slow,o=t.low,i=this.prevState;this.areHighAndLowUndefined||void 0!==r&&void 0!==o||(this.areHighAndLowUndefined=!0),null===e||null===n||function(t,e){return t===e}(e,n)?i=.5:Se(e,n)?i=this.areHighAndLowUndefined?1:[o,n,this.prevLow,this.prevSlow].every((function(t){return null!==t}))&&_e(o,n)&&Se(this.prevLow,this.prevSlow)?0:1:_e(e,n)&&(i=this.areHighAndLowUndefined?0:[r,n,this.prevHigh,this.prevSlow].every((function(t){return null!==t}))&&Se(r,n)&&_e(this.prevHigh,this.prevSlow)?1:0),.5===i?this.interval=0:1===i?this.prevState<=.5?this.interval=1:this.interval++:0===i&&(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),Object.assign(this,{index:this.index+1,prevState:i,prevFast:e,prevSlow:n,prevHigh:r,prevLow:o})}},{key:"getResult",value:function(){return this.interval}}])&&ge(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),je=function(t,e){var r=t.nullArray,n=t.verticalOhlcv,o=t.instances,i=t.len;if(0===e){var a=t.inputParams.filter((function(t){return"crossPairs"===t.key}));if("object"!==me(a))return;o.crossPairs={crossPairsList:a.flatMap((function(t){return t.params.flat()}))}}var u,l,c=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=de(t))){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(o.crossPairs.crossPairsList);try{for(c.s();!(u=c.n()).done;){var s=u.value,f=s.fast,h=s.slow;if(f&&h){var y="".concat(f,"_x_").concat(h);if(0===e){if("number"==typeof h&&(n[h]=new Array(i).fill(h)),"price"!==f&&!n.hasOwnProperty(f))throw Error('fast "'.concat(f,' not found in crossPairs"'));if(!n.hasOwnProperty(h))throw Error('slow "'.concat(h,' not found in crossPairs"'));o[y]=new Oe,n[y]=function(t){if(Array.isArray(t))return be(t)}(l=r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(l)||de(l)||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.")}()}var p=void 0,v=void 0,d=void 0,b=void 0,m=void 0;"price"===f?(v=n.close[e],d=n.high[e],b=n.low[e],m=n[h][e],o[y].update({fast:v,slow:m,high:d,low:b})):(p=n[f][e],m=n[h][e],o[y].update({fast:p,slow:m})),t.pushToMain({index:e,key:y,value:o[y].getResult()})}}}catch(t){c.e(t)}finally{c.f()}};function Ae(t){return function(t){if(Array.isArray(t))return Pe(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 Pe(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)?Pe(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 Pe(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function Ee(t){return function(t){if(Array.isArray(t))return ke(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 ke(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)?ke(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 ke(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 Te=["open","high","low","close","volume"];function Ie(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Re(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function xe(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.includes(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.includes(r)||{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Me(t){return function(t){if(Array.isArray(t))return Ce(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Re(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){if(t){if("string"==typeof t)return Ce(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)?Ce(t,e):void 0}}function Ce(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 De={dateTime:function(t,e){var r=t.instances,n=t.verticalOhlcv;if(0===e){var o=t.nullArray;if(!t.isValidDate)throw Error('dateTime method found and invalid "date" in input ohlcv');var i=n.date[0].slice(0,10);Object.assign(r,{dateTime:{prevDateStr:i,sessionDailyIndexCount:0,sessionIntradayIndexCount:0,cachedDayInfo:i}}),Object.assign(n,{day_of_the_week:Ae(o),day_of_the_month:Ae(o),week_of_the_month:Ae(o),hour:Ae(o),month:Ae(o),year:Ae(o),session_daily_index:Ae(o),session_intraday_index:Ae(o)})}var a=n.date[e],u=function(t){var e=new Date(t),r=e.getMonth(),n=e.getFullYear(),o=e.getHours(),i=e.getMinutes(),a=e.getDay(),u=e.getDate(),l=new Date(e.getFullYear(),e.getMonth(),1).getDay();return{month:r,year:n,hour:o,minute:i,day_of_the_week:a,day_of_the_month:u,week_of_the_month:Math.ceil((u+l)/7)}}(a),l=u.day_of_the_week,c=u.day_of_the_month,s=u.week_of_the_month,f=u.month,h=u.year,y=u.hour,p=a.slice(0,10);p!==r.dateTime.prevDateStr&&(r.dateTime.prevDateStr=p,r.dateTime.sessionDailyIndexCount++,r.dateTime.sessionIntradayIndexCount=0),t.pushToMain({index:e,key:"session_daily_index",value:r.dateTime.sessionDailyIndexCount}),t.pushToMain({index:e,key:"session_intraday_index",value:r.dateTime.sessionIntradayIndexCount}),t.pushToMain({index:e,key:"day_of_the_week",value:l}),t.pushToMain({index:e,key:"day_of_the_month",value:c}),t.pushToMain({index:e,key:"week_of_the_month",value:s}),t.pushToMain({index:e,key:"month",value:f}),t.pushToMain({index:e,key:"year",value:h}),t.pushToMain({index:e,key:"hour",value:y})},priceVariations:function(t,e){0===e&&(t.priceBased=Ee(new Set([].concat(Ee(t.priceBased),["mid_price_open_close","mid_price_high_low"]))),Object.assign(t.verticalOhlcv,{mid_price_open_close:Ee(t.nullArray),mid_price_high_low:Ee(t.nullArray)}));var r=t.verticalOhlcv.open[e],n=t.verticalOhlcv.high[e],o=t.verticalOhlcv.low[e],i=t.verticalOhlcv.close[e];t.pushToMain({index:e,key:"mid_price_open_close",value:(r+i)/2}),t.pushToMain({index:e,key:"mid_price_high_low",value:(n+o)/2})},rsi:function(t,e,r,n){var o=n.scale,i=n.target,a=t.verticalOhlcv,u=t.instances,l=t.lastIndexReplace,c="close"===i?"":"_".concat(i),s="rsi_".concat(r).concat(c),f="rsi_sma_".concat(r).concat(c);if(0===e){var h=t.crossPairsList,y=t.nullArray;if(!a.hasOwnProperty(i))throw new Error("Target property ".concat(i," not found in verticalOhlcv for rsi."));h.push({fast:s,slow:f,isDefault:!0}),Object.assign(u,Dt(Dt({},s,new Et(r)),f,new $(r))),Object.assign(a,Dt(Dt({},s,Rt(y)),f,Rt(y)))}var p=a[i][e],v=null,d=null;u[s].update(p,l);try{v=u[s].getResult()}catch(t){v=null}null!==v&&"number"==typeof v&&o&&(v=It(v,o)),t.pushToMain({index:e,key:s,value:v}),null!==v&&"number"==typeof v&&u[f].update(v,l);try{d=u[f].getResult()}catch(t){d=null}null!==d&&"number"==typeof d&&o&&(d=It(d,o)),t.pushToMain({index:e,key:f,value:d})},movingAverages:function(t,e,r,n,o){var i=o.target,a=o.diff,u=t.verticalOhlcv,l=t.instances,c=t.priceBased,s=t.lastIndexReplace,f="string"==typeof i&&u.hasOwnProperty(i)&&"close"!==i?"_".concat(i):"",h="".concat(r,"_").concat(n).concat(f),y="".concat(r,"_").concat(n,"_diff").concat(f);if(0===e){var p=t.nullArray;if(!u.hasOwnProperty(i))throw new Error("Target property ".concat(i," not found in verticalOhlcv for ").concat(r,"."));if(l[h]={maInstance:new zt[r](n)},u[h]=Ht(p),null!==a){l[h].diffInstance=new ot(a.size,a.stdDev);var v,d=[],b=Vt(a.targets);try{for(b.s();!(v=b.n()).done;){var m=v.value;u["".concat(y,"_").concat(m)]=Ht(p),a.lag>0&&d.push("".concat(y,"_").concat(m))}}catch(t){b.e(t)}finally{b.f()}a.lag>0&&t.lag(d,a.lag)}c.push(h)}var g=u[i][e],w=l[h],S=w.maInstance,_=w.diffInstance;S.update(g,s);var O=null;try{O=S.getResult()}catch(t){O=null}if(t.pushToMain({index:e,key:h,value:O}),null!==a){var j,A=Vt(a.targets);try{for(A.s();!(j=A.n()).done;){var P=j.value,E=null;null!==O&&"number"==typeof O&&(E=i===P?g-O:u[P][e]),null!==E&&"number"==typeof E&&_.update(Math.abs(E),s);var k=null;try{k=_.getResult()}catch(t){k=null}var T=Bt(E,k,a.scale);t.pushToMain({index:e,key:"".concat(y,"_").concat(P),value:T})}}catch(t){A.e(t)}finally{A.f()}}return!0},macd:function(t,e,r,n,o,i){var a=i.target,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace,s="".concat(r,"_").concat(n,"_").concat(o).concat(a===Kt?"":"_".concat(a));if(0===e){var f=t.inputParams,h=t.crossPairsList,y=t.nullArray,p=t.priceBased;if(!u.hasOwnProperty(a))throw new Error("Target property ".concat(a," not found in verticalOhlcv for macd."));var v=f.filter((function(t){return"macd"===t.key})).length,d=v>1?"macd_".concat(r,"_").concat(n,"_").concat(o):"macd",b=a===Kt?"".concat(d,"_diff"):"".concat(d,"_diff_").concat(a),m=a===Kt?"".concat(d,"_dea"):"".concat(d,"_dea_").concat(a),g=a===Kt?"".concat(d,"_histogram"):"".concat(d,"_histogram_").concat(a);h.push({fast:b,slow:m,isDefault:!0}),l.hasOwnProperty("macd")||(l.macd={numberOfIndicators:v,settings:{}}),l.macd.settings[s]=new mt(new yt(r),new yt(n),new yt(o)),Object.assign(u,Ft(Ft(Ft({},b,Gt(y)),m,Gt(y)),g,Gt(y))),p.push(b,m,g)}var w=l.macd,S=w.numberOfIndicators,_=w.settings,O=S>1?"macd_".concat(r,"_").concat(n,"_").concat(o):"macd",j=a===Kt?"".concat(O,"_diff"):"".concat(O,"_diff_").concat(a),A=a===Kt?"".concat(O,"_dea"):"".concat(O,"_dea_").concat(a),P=a===Kt?"".concat(O,"_histogram"):"".concat(O,"_histogram_").concat(a),E=_[s],k=u[a][e];E.update(k,c);var T=null;try{T=E.getResult()}catch(t){T=null}return t.pushToMain({index:e,key:j,value:T?T.macd:null}),t.pushToMain({index:e,key:A,value:T?T.signal:null}),t.pushToMain({index:e,key:P,value:T?T.histogram:null}),!0},relativeVolume:function(t,e){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,o=(arguments.length>3?arguments[3]:void 0).scale,i="relative_volume_".concat(n),a=t.instances,u=t.verticalOhlcv,l=t.lastIndexReplace;if(0===e){var c=t.nullArray;a[i]={instance:new $(n),prevRelativeVolumeSma:null},u[i]=function(t){if(Array.isArray(t))return Yt(t)}(r=c)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return Yt(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)?Yt(t,e):void 0}}(r)||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.")}()}var s=u.volume[e],f=a[i].instance;f.update(s,l);var h=null;try{h=f.getResult()}catch(t){h=null}var y=a[i].prevRelativeVolumeSma,p=null;return"number"==typeof h&&"number"==typeof y&&0!==y&&(p=s/y,o&&(p=It(p,o))),t.pushToMain({index:e,key:i,value:p}),a[i].prevRelativeVolumeSma=h,!0},donchianChannels:function(t,e,r,n,o){var i=o.height,a=o.range,u=o.scale,l="".concat(r,"_").concat(n),c=t.verticalOhlcv,s=t.instances,f=t.len;if(0===e){var h=t.inputParams,y=t.priceBased,p=t.nullArray,v=h.filter((function(t){return"donchianChannels"===t.key})).length,d=v>1?"donchian_channel_".concat(l):"donchian_channel";Object.assign(c,Xt(Xt(Xt({},"".concat(d,"_upper"),Zt(p)),"".concat(d,"_basis"),Zt(p)),"".concat(d,"_lower"),Zt(p))),i&&(c["".concat(d,"_height")]=Zt(p)),y.push("".concat(d,"_upper"),"".concat(d,"_basis"),"".concat(d,"_lower")),s.hasOwnProperty("donchian_channel")||(s.donchian_channel={numberOfIndicators:v,settings:{}});var b,m=Wt(a);try{for(m.s();!(b=m.n()).done;){var g=b.value;if(!(g in c)||!y.includes(g))throw new Error('Invalid range item value "'.concat(g,'" property for donchianChannels. Only price based key names are accepted:\n').concat(JSON.stringify(y)));c["".concat(d,"_range_").concat(g)]=Zt(p)}}catch(t){m.e(t)}finally{m.f()}s.donchian_channel.settings[l]={maxDeque:[],minDeque:[]}}var w=s.donchian_channel.numberOfIndicators>1?"donchian_channel_".concat(l):"donchian_channel",S=s.donchian_channel.settings[l],_=S.maxDeque,O=S.minDeque,j=e-n,A=j+1,P=A-r;if(P<0||A>f){t.pushToMain({index:e,key:"".concat(w,"_upper"),value:null}),t.pushToMain({index:e,key:"".concat(w,"_basis"),value:null}),t.pushToMain({index:e,key:"".concat(w,"_lower"),value:null}),i&&t.pushToMain({index:e,key:"".concat(w,"_height"),value:null});var E,k=Wt(a);try{for(k.s();!(E=k.n()).done;){var T=E.value;t.pushToMain({index:e,key:"".concat(w,"_range_").concat(T),value:null})}}catch(t){k.e(t)}finally{k.f()}return!0}for(var I=c.high,x=c.low;_.length&&_[0]<P;)_.shift();for(;_.length&&I[_[_.length-1]]<=I[j];)_.pop();for(_.push(j);O.length&&O[0]<P;)O.shift();for(;O.length&&x[O[O.length-1]]>=x[j];)O.pop();O.push(j);var M=_.length?I[_[0]]:null,R=O.length?x[O[0]]:null,C="number"==typeof M&&"number"==typeof R?(M+R)/2:null;if(t.pushToMain({index:e,key:"".concat(w,"_upper"),value:M}),t.pushToMain({index:e,key:"".concat(w,"_basis"),value:C}),t.pushToMain({index:e,key:"".concat(w,"_lower"),value:R}),i){var D=null;"number"==typeof M&&"number"==typeof R&&0!==R&&(D=(M-R)/R,u&&(D=It(D,u))),t.pushToMain({index:e,key:"".concat(w,"_height"),value:D})}var B,L=Wt(a);try{for(L.s();!(B=L.n()).done;){var V=B.value,H=null,N=c[V][e];"number"==typeof N&&"number"==typeof M&&"number"==typeof R&&M-R!=0&&(H=(N-R)/(M-R),u&&(H=It(H,u))),t.pushToMain({index:e,key:"".concat(w,"_range_").concat(V),value:H})}}catch(t){L.e(t)}finally{L.f()}return!0},bollingerBands:function(t,e,r,n,o){var i,a,u,l,c,s,f,h=o.height,y=o.range,p=void 0===y?[]:y,v=o.zScore,d=void 0===v?[]:v,b=o.target,m=o.scale,g=t.verticalOhlcv,w=t.instances,S=t.lastIndexReplace,_="close"===b?"":"_".concat(b),O="".concat(r,"_").concat(n).concat(_);if(0===e){var j=t.priceBased,A=t.inputParams,P=t.nullArray,E=t.verticalOhlcv;if(!(b in E))throw new Error('bollingerBands could not find target "'.concat(b,'"'));var k=A.filter((function(t){return"bollingerBands"===t.key})).length;f=k>1?"bollinger_bands_".concat(O):"bollinger_bands".concat(_),w.bollinger_bands||(w.bollinger_bands={numberOfIndicators:k,settings:{}}),w.bollinger_bands.settings[O]=new ot(r,n),Object.assign(E,oe(oe(oe({},"".concat(f,"_upper"),ie(P)),"".concat(f,"_middle"),ie(P)),"".concat(f,"_lower"),ie(P))),h&&(E["".concat(f,"_height")]=ie(P));var T,I=ne(p);try{for(I.s();!(T=I.n()).done;){var x=T.value;if(!(x in E)||!j.includes(x))throw new Error('Invalid range item value "'.concat(x,'" property for bollingerBands. Only price based key names are accepted:\n').concat(JSON.stringify(j)));E["".concat(f,"_range_").concat(x)]=ie(P)}}catch(t){I.e(t)}finally{I.f()}var M,R=ne(d);try{for(R.s();!(M=R.n()).done;){var C=M.value;if(!(C in E)||!j.includes(C))throw new Error('Invalid zScore item value "'.concat(C,'" for bollingerBands. Only price based key names are accepted:\n').concat(JSON.stringify(j)));E["".concat(f,"_zscore_").concat(C)]=ie(P)}}catch(t){R.e(t)}finally{R.f()}j.push("".concat(f,"_upper"),"".concat(f,"_middle"),"".concat(f,"_lower"))}f||(f=w.bollinger_bands.numberOfIndicators>1?"bollinger_bands_".concat(O):"bollinger_bands".concat(_));var D=f,B=w.bollinger_bands.settings[O],L=g[b][e];B.update(L,S);var V=null;try{V=B.getResult()}catch(t){}var H=null!==(i=null===(a=V)||void 0===a?void 0:a.upper)&&void 0!==i?i:null,N=null!==(u=null===(l=V)||void 0===l?void 0:l.middle)&&void 0!==u?u:null,U=null!==(c=null===(s=V)||void 0===s?void 0:s.lower)&&void 0!==c?c:null;if(t.pushToMain({index:e,key:"".concat(D,"_upper"),value:H}),t.pushToMain({index:e,key:"".concat(D,"_middle"),value:N}),t.pushToMain({index:e,key:"".concat(D,"_lower"),value:U}),h){var z=null;"number"==typeof H&&"number"==typeof U&&0!==U&&(z=(H-U)/U,m&&(z=It(z,m))),t.pushToMain({index:e,key:"".concat(D,"_height"),value:z})}var $,q=ne(p);try{for(q.s();!($=q.n()).done;){var F=$.value,G=null,J=g[F][e];"number"==typeof J&&"number"==typeof U&&"number"==typeof H&&H-U!=0&&(G=(J-U)/(H-U),m&&(G=It(G,m))),t.pushToMain({index:e,key:"".concat(D,"_range_").concat(F),value:G})}}catch(t){q.e(t)}finally{q.f()}var K,Y=ne(d);try{for(Y.s();!(K=Y.n()).done;){var Q=K.value,W=null,X=g[Q][e];"number"==typeof X&&"number"==typeof N&&"number"==typeof H&&"number"==typeof U&&H-U!=0&&(W=2*n*(X-N)/(H-U),m&&(W=It(W,m))),t.pushToMain({index:e,key:"".concat(D,"_zscore_").concat(Q),value:W})}}catch(t){Y.e(t)}finally{Y.f()}return!0},volumeOscillator:function(t,e,r,n,o){var i,a=o.scale,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace,s=u.volume[e],f="volume_oscillator";if(0===e){var h=t.crossPairsList,y=t.nullArray;Object.assign(l,{volume_oscillator:{fastEMA:new yt(r),slowEMA:new yt(n)}}),u[f]=function(t){if(Array.isArray(t))return le(t)}(i=y)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||function(t,e){if(t){if("string"==typeof t)return le(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)?le(t,e):void 0}}(i)||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.")}(),h.push({fast:f,slow:0,isDefault:!0})}var p=l[f],v=p.fastEMA,d=p.slowEMA;v.update(s,c),d.update(s,c);var b=null,m=null;try{b=v.getResult()}catch(t){b=null}try{m=d.getResult()}catch(t){m=null}var g=null;return"number"==typeof b&&"number"==typeof m&&0!==m&&(g=100*(b-m)/m,a&&(g=It(g,a))),t.pushToMain({index:e,key:f,value:g}),!0},candleStudies:function(t,e,r,n,o){var i=o.lag,a=o.scale,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace;if(0===e){var s=t.nullArray,f=[].concat(["candle_body","candle_top","candle_bottom"],["candle_gap"],["candle_change_close","candle_change_high","candle_change_low","candle_change_open"]);Object.assign(u,Object.fromEntries(f.map((function(t){return[t,s]})))),Object.assign(l,{candleStudies:{bodyInstance:new ot(r,n),closeInstance:new ot(r,n),highInstance:new ot(r,n),lowInstance:new ot(r,n),openInstance:new ot(r,n)}}),i>0&&t.lag(f,i)}var h=u.open[e-1],y=u.high[e-1],p=u.low[e-1],v=u.close[e-1];if(0===e)return!0;var d=u.open[e],b=u.high[e],m=u.low[e],g=u.close[e],w=ce(g,d),S=ce(b,Math.max(d,g)),_=ce(Math.min(d,g),m),O=ce(v,d),j=ce(g,v),A=ce(b,y),P=ce(m,p),E=ce(d,h),k=null,T=null,I=null,x=null,M=null,R=l.candleStudies,C=R.bodyInstance,D=R.closeInstance,B=R.highInstance,L=R.lowInstance,V=R.openInstance;C.update(Math.abs(w),c),D.update(Math.abs(j),c),B.update(Math.abs(A),c),L.update(Math.abs(P),c),V.update(Math.abs(E),c);try{k=C.getResult(),T=D.getResult(),I=B.getResult(),x=L.getResult(),M=V.getResult()}catch(t){}return t.pushToMain({index:e,key:"candle_body",value:Bt(w,k,a)}),t.pushToMain({index:e,key:"candle_top",value:Bt(S,k,a)}),t.pushToMain({index:e,key:"candle_bottom",value:Bt(_,k,a)}),t.pushToMain({index:e,key:"candle_gap",value:Bt(O,k,a)}),t.pushToMain({index:e,key:"candle_change_close",value:Bt(j,T,a)}),t.pushToMain({index:e,key:"candle_change_high",value:Bt(A,I,a)}),t.pushToMain({index:e,key:"candle_change_low",value:Bt(P,x,a)}),t.pushToMain({index:e,key:"candle_change_open",value:Bt(E,M,a)}),!0}},Be=function(t,e,r){var n=function(t){return r>1?t*r:t};if("number"===e)return n(t);if("string"===e){var o=xt(t);return n(Number(o))}return 0},Le=function(t,e){return"number"===e?t:"string"===e?Number(xt(t)):0},Ve=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=e.len,i=e.inputParams;e.nullArray=new Array(o).fill(null);var a=["open","high","low","close","volume"],u=new Set(a);if(0===n){!function(t){var e,n=t.inputParams,o=t.len,i=r(n);try{for(i.s();!(e=i.n()).done;){var a,u=r(e.value.params);try{for(u.s();!(a=u.n()).done;){var l=a.value;if("number"==typeof l&&l>o)throw console.log(l,o),new Error("At least one of the params of the indicator is greater than the input OHLCV length. Make sure to have enough datapoints in the input OHLCV.")}}catch(t){u.e(t)}finally{u.f()}}}catch(t){i.e(t)}finally{i.f()}}(e),a.forEach((function(t){e.verticalOhlcv[t]=Me(e.nullArray)}));var l=Object.keys(t[0]).filter((function(t){return!u.has(t)}));l.forEach((function(t){e.verticalOhlcv[t]=Me(e.nullArray)})),e.otherKeys=l,function(t,e){for(var r=0,n=Object.keys(e.inputTypes);r<n.length;r++){var o=n[r];if(!(o in t))throw new Error('Property "'.concat(o,'" not found in ohlcv array. ').concat(e.ticker));var i=t[o];if("number"==typeof i&&i>0)e.inputTypes[o]="number";else{if("string"!=typeof i||!/^(\d+(\.\d*)?|\.\d+)$/.test(i))throw new Error('Invalid property "'.concat(o,'" in ohlcv array. ').concat(e.ticker));e.inputTypes[o]="string",i=xt(i)}if(0===e.precisionMultiplier&&!0===e.precision){var a=(c=String(i).split("."),s=2,function(t){if(Array.isArray(t))return t}(c)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(c,s)||Re(c,s)||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.")}())[1],u=void 0===a?"":a,l=Math.max(4,u.length);e.precisionMultiplier=l>1?Math.pow(10,l-1):1}}var c,s}(t[0],e)}else if(!e.otherKeys)throw new Error("otherKeys not found in main. Ensure you run with startIndex=0 first to initialize.");for(var c=function(t){return Array.isArray(t)?t.map((function(t){var e=t.key,r=t.params;return{key:e,fn:De[e],args:r}})):[]}(i),s=n;s<o;s++){var f=t[s],h=f.open,y=f.high,p=f.low,v=f.close,d=f.volume,b=xe(f,Te),m=e.precisionMultiplier,g=Be(h,e.inputTypes.open,m),w=Be(y,e.inputTypes.high,m),S=Be(p,e.inputTypes.low,m),_=Be(v,e.inputTypes.close,m),O=Le(d,e.inputTypes.volume);e.pushToMain({index:s,key:"open",value:g}),e.pushToMain({index:s,key:"high",value:w}),e.pushToMain({index:s,key:"low",value:S}),e.pushToMain({index:s,key:"close",value:_}),e.pushToMain({index:s,key:"volume",value:O});var j,A=Ie(e.otherKeys);try{for(A.s();!(j=A.n()).done;){var P=j.value;e.pushToMain({index:s,key:P,value:b[P]})}}catch(t){A.e(t)}finally{A.f()}var E,k=Ie(c);try{for(k.s();!(E=k.n()).done;){var T=E.value,I=T.key,x=T.fn,M=T.args;["crossPairs","lag"].includes(I)||x.apply(void 0,[e,s].concat(Me(M)))}}catch(t){k.e(t)}finally{k.f()}ve(e,s),je(e,s),e.lastComputedIndex++}},He=function(t,e){for(var r=t.length,n=new $(e),o=new Array(r),i=0,a=0,u=0,l=0;l<r;l++)if(n.update(t[l]),n.isStable){var c=n.getResult();o[l]=c,i+=c,a+=c*c,u++}else o[l]=null;var s=i/u,f=a/u-s*s,h=Math.sqrt(f);return o.map((function(t){return null!==t?(t-s)/h:null}))},Ne=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=He(t,r),o=He(e,r),i=t.length,a=[],u=0,l=0,c=0,s=0,f=0,h=0,y=-1,p=0;p<i;p++){if(null!==n[p]&&null!==o[p]){y=p;break}a.push(0)}if(-1===y)return new Array(i).fill(0);for(var v=y;v<i;v++){var d=n[v],b=o[v];if(null!==d&&null!==b)if(u+=d,l+=b,c+=d*b,s+=d*d,f+=b*b,++h<2)a.push(0);else{var m=h*c-u*l,g=Math.sqrt((h*s-u*u)*(h*f-l*l)),w=0===g?0:m/g;a.push(w)}else u=l=c=s=f=h=0,a.push(0)}return a};function Ue(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 ze=function(t){for(var e=t.input,r=t.inputParams,n=new(0,t.OHLCV_INDICATORS)({input:e}),o=0;o<r.length;o++){var i=r[o],a=i.key,u=i.params;Array.isArray(u)&&(u.length>0?(Array.isArray(u)&&"crossPairs"===a&&Array.isArray(u[0])&&(u[0]=u[0].filter((function(t){return!t.isDefault}))),n[a].apply(n,function(t){if(Array.isArray(t))return Ue(t)}(l=u)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(l)||function(t,e){if(t){if("string"==typeof t)return Ue(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)?Ue(t,e):void 0}}(l)||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.")}())):n[a]())}var l;return n};function $e(t){return function(t){if(Array.isArray(t))return Je(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Ge(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 qe(t){return qe="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},qe(t)}function Fe(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||Ge(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 Ge(t,e){if(t){if("string"==typeof t)return Je(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)?Je(t,e):void 0}}function Je(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 Ke(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,Ye(n.key),n)}}function Ye(t){var e=function(t,e){if("object"!=qe(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=qe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==qe(e)?e:e+""}var Qe=[.01,.02,.025,.05,.1,.2,.25,.5,1,2,2.5,5,10],We=function(){return t=function t(e){var r=e.input,n=e.ticker,o=void 0===n?null:n,i=e.precision,a=void 0===i||i;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!Array.isArray(r))throw Error("input OHLCV must be an array: "+o);if(0===r.length)throw Error("input OHLCV must not be empty: "+o);if(!r[0].hasOwnProperty("close"))throw Error("input OHLCV array objects require at least close property: "+o);return this.isComputed=!1,this.lastComputedIndex=0,this.input=r,this.inputTypes={open:"",high:"",low:"",close:"",volume:""},this.priceBased=["open","high","low","close"],this.len=r.length,this.lastIndexReplace=!1,this.instances={},this.crossPairsList=[],this.verticalOhlcv={},this.inputParams=[],this.studies={},this.utilities={correlation:Ne},this.invalidValueIndex=-1,this.precision=a,this.precisionMultiplier=!0===this.precision?0:1,this.setIndicatorsFromInputParams=ze,this},e=[{key:"pushToMain",value:function(t){var e=t.index,r=t.key,n=t.value;null==n&&(this.invalidValueIndex=e),this.verticalOhlcv[r][e]=n}},{key:"getDataAsCols",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.compute();for(var e=this.precisionMultiplier,r=this.precision,n=this.invalidValueIndex,o=this.len,i=this.verticalOhlcv,a=this.priceBased,u={},l=n>=0&&t,c=o-n,s=0,f=Object.entries(i);s<f.length;s++){var h=Fe(f[s],2),y=h[0],p=h[1],v=l?p.slice(-c):p;r&&a.includes(y)&&(v=v.map((function(t){return null==t?null:t/e}))),u[y]=v}return u}},{key:"getData",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.compute();var e=this.precisionMultiplier,r=this.priceBased,n=this.precision;return function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=Object.keys(t);if(0===a.length)return[];var u=e&&i>=0?i+1:0,l=t[a[0]].length,c=l-u,s=new Array(c);console.log({skipNull:e,invalidValueIndex:i,len:c});for(var f=u;f<l;f++){for(var h={},y=0;y<a.length;y++){var p=a[y],v=t[p][f];h[p]=null==v?null:r&&o.includes(p)?v/n:v}s[f-u]=h}return s}(this.verticalOhlcv,t,n,e,r,this.invalidValueIndex)}},{key:"getLastValues",value:function(){this.compute();for(var t=this.precisionMultiplier,e=this.priceBased,r=this.precision,n=this.verticalOhlcv,o=this.len,i={},a=0,u=Object.keys(n);a<u.length;a++){var l=u[a];i[l]=n[l][o-1]}return r?function(t){for(var e=t.row,r=t.precisionMultiplier,n=t.priceBased,o={},i=0,a=Object.entries(e);i<a.length;i++){var u=kt(a[i],2),l=u[0],c=u[1];n.includes(l)&&(c/=r),o[l]=c}return o}({row:i,precisionMultiplier:t,priceBased:e}):i}},{key:"compute",value:function(t){if(!0===this.isComputed&&!t)return this;if(this.isComputed=!1,this.isValidDate=this.input[0].hasOwnProperty("date")&&o(this.input[0].date),this.len>this.lastComputedIndex&&!t&&Ve(this.input,this,0),t&&"object"===qe(t)){var e;if(!["open","high","low","close","volume","date"].every((function(e){return Object.keys(t).includes(e)})))throw Error('Invalid OHLCV object sent in "compute". Correct usage: .compute({open: 108.25, high: 108.410004, low: 108.25, close: 99999999, volume: 875903, date: "2024-12-16 15:45:00" || "2024-12-16"})');if(!this.isValidDate)throw Error('All the OHLCV rows require a valid date property to access the compute change method. Correct date format: "2024-12-16 15:45:00" or "2024-12-16"');if(!o(t.date))throw Error('The date in the new OHLCV row is invalid. Correct date format: "2024-12-16 15:45:00" or "2024-12-16"');var r=t.date,n=this.len-1,i=null===(e=this.input[n])||void 0===e?void 0:e.date;0===this.lastComputedIndex&&this.compute(),i!==r?(this.len++,this.input.push(t),Ve(this.input,this,this.len)):(this.input[n]=t,Ve(this.input,this,n))}return this}},{key:"crossPairs",value:function(t){return i(this),this.crossPairsList=[].concat($e(this.crossPairsList),$e(t)),this.inputParams.push({key:"crossPairs",params:[this.crossPairsList]}),this}},{key:"lag",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;i(this),this.inputParams.push({key:"lag",params:[e,r]});for(var n=function(){var r=e[o];t.priceBased.find((function(t){return r===t}))&&t.priceBased.push(r)},o=0;o<e.length;o++)n();return this}},{key:"relativeVolume",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this);var r=e.scale,n=void 0===r?null:r;if("number"==typeof n&&!Qe.includes(n))throw new Error('"scale" value in relativeVolume must be any of the following numbers: '.concat(Qe.join(", ")));return this.inputParams.push({key:"relativeVolume",params:[t,{scale:n}]}),this}},{key:"ema",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this);var r=$t("ema",t,e,Qe);return this.inputParams.push({key:"movingAverages",params:["ema",t,r]}),this}},{key:"sma",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this);var r=$t("sma",t,e,Qe);return this.inputParams.push({key:"movingAverages",params:["sma",t,r]}),this}},{key:"macd",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:26,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:9,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"fast" must be a positive number in macd.');if("number"!=typeof e||e<=t)throw new Error('"slow" must be a positive number greater than "fast" in macd.');if("number"!=typeof r||r<=0)throw new Error('"signal" must be a positive number in macd.');if("object"!==qe(n))throw new Error('"options" must be an object in macd. eg: {target}');var o=n.target,a=void 0===o?"close":o;return this.inputParams.push({key:"macd",params:[t,e,r,{target:a}]}),this}},{key:"bollingerBands",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),!r||"object"!==qe(r))throw new Error('"options" must be an object in bollingerBands. eg: {target, height, range}');var n=r.target,o=void 0===n?"close":n,a=r.height,u=void 0!==a&&a,l=r.range,c=void 0===l?[]:l,s=r.zScore,f=void 0===s?[]:s,h=r.scale,y=void 0===h?null:h;if("number"!=typeof t||t<=0)throw new Error('"size" must be a positive number in bollingerBands.');if("number"!=typeof e||e<=0)throw new Error('"stdDev" must be a positive number in bollingerBands.');if(!Array.isArray(c))throw new Error('If set, "range" must be a array of column names in bollingerBands.');if(!Array.isArray(f))throw new Error('If set, "zScore" must be a array of column names in bollingerBands.');if("boolean"!=typeof u)throw new Error('"height" must be a boolean in bollingerBands.');if("number"==typeof y&&!Qe.includes(y))throw new Error('"scale" value in bollingerBands must be any of the following numbers: '.concat(Qe.join(", ")));return this.inputParams.push({key:"bollingerBands",params:[t,e,{target:o,height:u,scale:y,range:c,zScore:f}]}),this}},{key:"rsi",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"size" must be a positive number in rsi.');var r=e.scale,n=void 0===r?null:r,o=e.target,a=void 0===o?"close":o;if("number"==typeof n&&!Qe.includes(n))throw new Error('"scale" value in rsi must be any of the following numbers: '.concat(Qe.join(", ")));return this.inputParams.push({key:"rsi",params:[t,{scale:n,target:a}]}),this}},{key:"donchianChannels",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"size" must be a positive number greater than 0 in donchianChannels.');if("number"!=typeof e||e<0)throw new Error('"offset" must be a number greater than or equal to 0 in donchianChannels.');var n=r.height,o=void 0!==n&&n,a=r.range,u=void 0===a?[]:a,l=r.scale,c=void 0===l?null:l;if(!Array.isArray(u))throw new Error('If set, "range" must be an array of column names in donchianChannels.');if("boolean"!=typeof o)throw new Error('"height" must be a boolean in donchianChannels.');if("number"==typeof c&&!Qe.includes(c))throw new Error('"scale" value in donchianChannels must be any of the following numbers: '.concat(Qe.join(", ")));return this.inputParams.push({key:"donchianChannels",params:[t,e,{height:o,range:u,scale:c}]}),this}},{key:"candleStudies",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"size" must be a positive number greater than 0 in candleStudies.');if("number"!=typeof e||e<=0)throw new Error('"stdDev" must be a positive number greater than 0 in candleStudies.');var n=r.lag,o=void 0===n?0:n,a=r.scale,u=void 0===a?.05:a;if("number"==typeof u&&!Qe.includes(u))throw new Error('"scale" value in candleStudies must be any of the following numbers: '.concat(Qe.join(", ")));return this.inputParams.push({key:"candleStudies",params:[t,e,{lag:o,scale:u}]}),this}},{key:"volumeOscillator",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),"number"!=typeof t||t<=1)throw new Error('fastSize" must be a positive number greater than 1 in volumeOscillator.');if("number"!=typeof e||e<=t)throw new Error('"slowSize" must be a positive number greater than the "fastSize" in volumeOscillator.');var n=r.scale,o=void 0===n?null:n;if("number"==typeof o&&!Qe.includes(o))throw new Error('"scale" value in volumeOscillator must be any of the following numbers: '.concat(Qe.join(", ")));return this.inputParams.push({key:"volumeOscillator",params:[t,e,{scale:o}]}),this}},{key:"dateTime",value:function(){return i(this),this.inputParams.push({key:"dateTime",params:[]}),this}},{key:"priceVariations",value:function(){return i(this),this.inputParams.push({key:"priceVariations",params:[]}),this}}],e&&Ke(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={};(()=>{function r(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 n(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)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},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 a,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw a}}}}function n(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:()=>er});var o=function(t){return"string"==typeof t&&/^\d{4}-\d{2}-\d{2}/.test(t)},i=function(t){if(0!==t.lastComputedIndex)throw Error('ohlcv is already computed, you can not add new indicators after "compute", "getLastValues" , "getDataAsCols" or "getData" methods are called.')},a=1e6,u="[big.js] ",l=u+"Invalid ",c=l+"decimal places",s=l+"rounding mode",f=u+"Division by zero",h={},y=void 0,p=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function v(t,e,r,n){var o=t.c;if(r===y&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(s);if(e<1)n=3===r&&(n||!!o[0])||0===e&&(1===r&&o[0]>=5||2===r&&(o[0]>5||5===o[0]&&(n||o[1]!==y))),o.length=1,n?(t.e=t.e-e+1,o[0]=1):o[0]=t.e=0;else if(e<o.length){if(n=1===r&&o[e]>=5||2===r&&(o[e]>5||5===o[e]&&(n||o[e+1]!==y||1&o[e-1]))||3===r&&(n||!!o[0]),o.length=e,n)for(;++o[--e]>9;)if(o[e]=0,0===e){++t.e,o.unshift(1);break}for(e=o.length;!o[--e];)o.pop()}return t}function d(t,e,r){var n=t.e,o=t.c.join(""),i=o.length;if(e)o=o.charAt(0)+(i>1?"."+o.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)o="0"+o;o="0."+o}else if(n>0)if(++n>i)for(n-=i;n--;)o+="0";else n<i&&(o=o.slice(0,n)+"."+o.slice(n));else i>1&&(o=o.charAt(0)+"."+o.slice(1));return t.s<0&&r?"-"+o:o}function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}function m(t){var e="function"==typeof Map?new Map:void 0;return m=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(g())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&w(o,r.prototype),o}(t,arguments,S(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),w(r,t)},m(t)}function g(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(g=function(){return!!t})()}function w(t,e){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},w(t,e)}function S(t){return S=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},S(t)}h.abs=function(){var t=new this.constructor(this);return t.s=1,t},h.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,a=t.s,u=r.e,l=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-a:0;if(i!=a)return i;if(e=i<0,u!=l)return u>l^e?1:-1;for(a=(u=n.length)<(l=o.length)?u:l,i=-1;++i<a;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return u==l?0:u>l^e?1:-1},h.div=function(t){var e=this,r=e.constructor,n=e.c,o=(t=new r(t)).c,i=e.s==t.s?1:-1,u=r.DP;if(u!==~~u||u<0||u>a)throw Error(c);if(!o[0])throw Error(f);if(!n[0])return t.s=i,t.c=[t.e=0],t;var l,s,h,p,d,b=o.slice(),m=l=o.length,g=n.length,w=n.slice(0,l),S=w.length,O=t,_=O.c=[],j=0,A=u+(O.e=e.e-t.e)+1;for(O.s=i,i=A<0?0:A,b.unshift(0);S++<l;)w.push(0);do{for(h=0;h<10;h++){if(l!=(S=w.length))p=l>S?1:-1;else for(d=-1,p=0;++d<l;)if(o[d]!=w[d]){p=o[d]>w[d]?1:-1;break}if(!(p<0))break;for(s=S==l?o:b;S;){if(w[--S]<s[S]){for(d=S;d&&!w[--d];)w[d]=9;--w[d],w[S]+=10}w[S]-=s[S]}for(;!w[0];)w.shift()}_[j++]=p?h:++h,w[0]&&p?w[S]=n[m]||0:w=[n[m]]}while((m++<g||w[0]!==y)&&i--);return _[0]||1==j||(_.shift(),O.e--,A--),j>A&&v(O,A,r.RM,w[0]!==y),O},h.eq=function(t){return 0===this.cmp(t)},h.gt=function(t){return this.cmp(t)>0},h.gte=function(t){return this.cmp(t)>-1},h.lt=function(t){return this.cmp(t)<0},h.lte=function(t){return this.cmp(t)<1},h.minus=h.sub=function(t){var e,r,n,o,i=this,a=i.constructor,u=i.s,l=(t=new a(t)).s;if(u!=l)return t.s=-l,i.plus(t);var c=i.c.slice(),s=i.e,f=t.c,h=t.e;if(!c[0]||!f[0])return f[0]?t.s=-l:c[0]?t=new a(i):t.s=1,t;if(u=s-h){for((o=u<0)?(u=-u,n=c):(h=s,n=f),n.reverse(),l=u;l--;)n.push(0);n.reverse()}else for(r=((o=c.length<f.length)?c:f).length,u=l=0;l<r;l++)if(c[l]!=f[l]){o=c[l]<f[l];break}if(o&&(n=c,c=f,f=n,t.s=-t.s),(l=(r=f.length)-(e=c.length))>0)for(;l--;)c[e++]=0;for(l=e;r>u;){if(c[--r]<f[r]){for(e=r;e&&!c[--e];)c[e]=9;--c[e],c[r]+=10}c[r]-=f[r]}for(;0===c[--l];)c.pop();for(;0===c[0];)c.shift(),--h;return c[0]||(t.s=1,c=[h=0]),t.c=c,t.e=h,t},h.mod=function(t){var e,r=this,n=r.constructor,o=r.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(f);return r.s=t.s=1,e=1==t.cmp(r),r.s=o,t.s=i,e?new n(r):(o=n.DP,i=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=o,n.RM=i,this.minus(r.times(t)))},h.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},h.plus=h.add=function(t){var e,r,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var a=o.e,u=o.c,l=t.e,c=t.c;if(!u[0]||!c[0])return c[0]||(u[0]?t=new i(o):t.s=o.s),t;if(u=u.slice(),e=a-l){for(e>0?(l=a,n=c):(e=-e,n=u),n.reverse();e--;)n.push(0);n.reverse()}for(u.length-c.length<0&&(n=c,c=u,u=n),e=c.length,r=0;e;u[e]%=10)r=(u[--e]=u[e]+c[e]+r)/10|0;for(r&&(u.unshift(r),++l),e=u.length;0===u[--e];)u.pop();return t.c=u,t.e=l,t},h.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(l+"exponent");for(o&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return o?r.div(n):n},h.prec=function(t,e){if(t!==~~t||t<1||t>a)throw Error(l+"precision");return v(new this.constructor(this),t,e)},h.round=function(t,e){if(t===y)t=0;else if(t!==~~t||t<-a||t>a)throw Error(c);return v(new this.constructor(this),t+this.e+1,e)},h.sqrt=function(){var t,e,r,n=this,o=n.constructor,i=n.s,a=n.e,l=new o("0.5");if(!n.c[0])return new o(n);if(i<0)throw Error(u+"No square root");0===(i=Math.sqrt(n+""))||i===1/0?((e=n.c.join("")).length+a&1||(e+="0"),a=((a+1)/2|0)-(a<0||1&a),t=new o(((i=Math.sqrt(e))==1/0?"5e":(i=i.toExponential()).slice(0,i.indexOf("e")+1))+a)):t=new o(i+""),a=t.e+(o.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 v(t,(o.DP-=4)+t.e+1,o.RM)},h.times=h.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,a=o.length,u=i.length,l=r.e,c=t.e;if(t.s=r.s==t.s?1:-1,!o[0]||!i[0])return t.c=[t.e=0],t;for(t.e=l+c,a<u&&(e=o,o=i,i=e,c=a,a=u,u=c),e=new Array(c=a+u);c--;)e[c]=0;for(l=u;l--;){for(u=0,c=a+l;c>l;)u=e[c]+i[l]*o[c-l-1]+u,e[c--]=u%10,u=u/10|0;e[c]=u}for(u?++t.e:e.shift(),l=e.length;!e[--l];)e.pop();return t.c=e,t},h.toExponential=function(t,e){var r=this,n=r.c[0];if(t!==y){if(t!==~~t||t<0||t>a)throw Error(c);for(r=v(new r.constructor(r),++t,e);r.c.length<t;)r.c.push(0)}return d(r,!0,!!n)},h.toFixed=function(t,e){var r=this,n=r.c[0];if(t!==y){if(t!==~~t||t<0||t>a)throw Error(c);for(t=t+(r=v(new r.constructor(r),t+r.e+1,e)).e+1;r.c.length<t;)r.c.push(0)}return d(r,!1,!!n)},h[Symbol.for("nodejs.util.inspect.custom")]=h.toJSON=h.toString=function(){var t=this,e=t.constructor;return d(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},h.toNumber=function(){var t=Number(d(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(u+"Imprecise conversion");return t},h.toPrecision=function(t,e){var r=this,n=r.constructor,o=r.c[0];if(t!==y){if(t!==~~t||t<1||t>a)throw Error(l+"precision");for(r=v(new n(r),t,e);r.c.length<t;)r.c.push(0)}return d(r,t<=r.e||r.e<=n.NE||r.e>=n.PE,!!o)},h.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(u+"valueOf disallowed");return d(t,t.e<=e.NE||t.e>=e.PE,!0)},function t(){function e(r){var n=this;if(!(n instanceof e))return r===y?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(l+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,o;if(!p.test(e))throw Error(l+"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=h,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 O=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"==b(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,g()?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&&w(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(m(Error));function _(t){return _="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)}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,P(n.key),n)}}function A(t,e,r){return(e=P(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function P(t){var e=function(t,e){if("object"!=_(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==_(e)?e:e+""}var E=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),A(this,"previousHighest",void 0),A(this,"highest",void 0),A(this,"previousLowest",void 0),A(this,"lowest",void 0),A(this,"previousResult",void 0),A(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 O;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)}}])&&j(t.prototype,e),r&&j(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function k(t){return k="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},k(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,C(n.key),n)}}function I(t,e,r){return e=x(e),function(t,e){if(e&&("object"==k(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,M()?Reflect.construct(e,r||[],x(t).constructor):e.apply(t,r))}function M(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(M=function(){return!!t})()}function x(t){return x=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},x(t)}function R(t,e){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},R(t,e)}function C(t){var e=function(t,e){if("object"!=k(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=k(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==k(e)?e:e+""}var D=function(t){function e(t){var r,n,o,i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=I(this,e),i=void 0,(o=C(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,r.interval=t,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&R(t,e)}(e,t),r=e,(n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&T(r.prototype,n),o&&T(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(E);function B(t){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(t)}function L(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 V(t,e,r){return e=N(e),function(t,e){if(e&&("object"==B(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,H()?Reflect.construct(e,r||[],N(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 N(t){return N=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},N(t)}function U(t,e){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},U(t,e)}function z(t){var e=function(t,e){if("object"!=B(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==B(e)?e:e+""}var $=function(t){function e(){var t,r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,a=new Array(i),u=0;u<i;u++)a[u]=arguments[u];return r=t=V(this,e,[].concat(a)),o=[],(n=z(n="prices"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&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&&L(r.prototype,n),o&&L(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(D);function q(t){return q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},q(t)}function F(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,W(n.key),n)}}function G(t,e,r){return e=K(e),function(t,e){if(e&&("object"==q(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,J()?Reflect.construct(e,r||[],K(t).constructor):e.apply(t,r))}function J(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(J=function(){return!!t})()}function K(t){return K=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},K(t)}function Y(t,e){return Y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Y(t,e)}function Q(t,e,r){return(e=W(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function W(t){var e=function(t,e){if("object"!=q(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==q(e)?e:e+""}var X=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),Q(r=G(this,e),"interval",void 0),Q(r,"indicator",void 0),Q(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&&Y(t,e)}(e,t),r=e,n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.indicator.update(t);if(e&&void 0!==this.previousResult){var n=(t-this.previousResult)*this.smoothingFactor;return this.setResult(n+this.previousResult,e)}if(!e&&void 0!==this.result){var o=(t-this.result)*this.smoothingFactor;return this.setResult(o+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&F(r.prototype,n),o&&F(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(E);function Z(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function tt(t){return tt="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},tt(t)}function et(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,nt(n.key),n)}}function rt(t,e,r){return(e=nt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function nt(t){var e=function(t,e){if("object"!=tt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=tt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==tt(e)?e:e+""}var ot=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),rt(this,"interval",void 0),rt(this,"deviationMultiplier",void 0),rt(this,"prices",[]),rt(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=Z(this.prices),r=function(t,e){var r=e||Z(t),n=Z(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 O;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&et(t.prototype,e),r&&et(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function it(t){return it="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},it(t)}function at(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,ht(n.key),n)}}function ut(t,e,r){return e=ct(e),function(t,e){if(e&&("object"==it(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,lt()?Reflect.construct(e,r||[],ct(t).constructor):e.apply(t,r))}function lt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(lt=function(){return!!t})()}function ct(t){return ct=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},ct(t)}function st(t,e){return st=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},st(t,e)}function ft(t,e,r){return(e=ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ht(t){var e=function(t,e){if("object"!=it(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=it(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==it(e)?e:e+""}var yt=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),ft(r=ut(this,e,[t]),"interval",void 0),ft(r,"pricesCounter",0),ft(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&&st(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 O;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&at(r.prototype,n),o&&at(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(D);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 vt(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,bt(n.key),n)}}function dt(t,e,r){return(e=bt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function bt(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+""}var mt=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),dt(this,"short",void 0),dt(this,"long",void 0),dt(this,"signal",void 0),dt(this,"prices",[]),dt(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 O;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t);var r=this.short.update(t,e),n=this.long.update(t,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var o=r-n,i=this.signal.update(o,e);return this.result={histogram:o-i,macd:o,signal:i}}}}],e&&vt(t.prototype,e),r&&vt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function gt(t){return gt="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},gt(t)}function wt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Pt(n.key),n)}}function St(t,e,r){return e=_t(e),function(t,e){if(e&&("object"==gt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,Ot()?Reflect.construct(e,r||[],_t(t).constructor):e.apply(t,r))}function Ot(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(Ot=function(){return!!t})()}function _t(t){return _t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_t(t)}function jt(t,e){return jt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},jt(t,e)}function At(t,e,r){return(e=Pt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Pt(t){var e=function(t,e){if("object"!=gt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=gt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==gt(e)?e:e+""}var Et=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:X;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),At(r=St(this,e),"interval",void 0),At(r,"previousPrices",[]),At(r,"avgGain",void 0),At(r,"avgLoss",void 0),At(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&&jt(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&e?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var r=t,n=this.previousPrices[this.previousPrices.length-2];if(r>n?(this.avgLoss.update(0,e),this.avgGain.update(t-n,e)):(this.avgLoss.update(n-r,e),this.avgGain.update(0,e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(0===o)return this.setResult(100,e);var i=this.avgGain.getResult()/o;return this.setResult(this.maxValue-this.maxValue/(i+1),e)}}}}],n&&wt(r.prototype,n),o&&wt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(E);function kt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||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,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 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 It=function(t){var e=1/(arguments.length>1&&void 0!==arguments[1]?arguments[1]:.1);return Math.round(t*e)/e},Mt=function(t){return t.replace(/(?!^-)[^0-9.]/g,"")};function xt(t){return xt="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},xt(t)}function Rt(t){return function(t){if(Array.isArray(t))return Ct(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 Ct(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)?Ct(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 Ct(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,e,r){return(e=function(t){var e=function(t,e){if("object"!=xt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=xt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==xt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Bt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.05;if(null==t||null==e)return null;var n=t>=0,o=Math.abs(t),i=e.upper,a=e.middle,u=e.lower;if(o<u)return 0;if(o>i)return n?1:-1;var l=Number.EPSILON*Math.max(o,Math.abs(a));if(Math.abs(o-a)<l)return n?.5:-.5;if(i===u)return null;var c=It((o-u)/(i-u),r);return n?c:-c};function Lt(t){return Lt="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},Lt(t)}function Vt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Nt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Ht(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)||Nt(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 Nt(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}}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}var zt={ema:yt,sma:$},$t=function(t,e,r,n){if(!r||"object"!==Lt(r))throw new Error('"options" must be an object in '.concat(t,". eg: {target, height, range}"));var o=r.target,i=void 0===o?"close":o,a=r.diff,u=void 0===a?null:a;if("string"!=typeof i)throw new Error('"target" must be a valid keyName '.concat(t,"."));if("number"!=typeof e||e<=0)throw new Error('"size" must be a positive number in '.concat(t,"."));var l={target:i,diff:null};if(null!==u&&("object"===Lt(u)||"boolean"==typeof u&&!0===u)){var c=u=!0===u?{}:u,s=c.stdDev,f=void 0===s?2:s,h=c.scale,y=void 0===h?.05:h,p=c.targets,v=void 0===p?["close"]:p,d=c.size,b=void 0===d?e:d,m=c.lag,g=void 0===m?0:m;if("number"!=typeof f||f<=0)throw new Error('"diff.stdDev" must be a number greater than 0 in '.concat(t,"."));if("number"!=typeof y||!n.includes(y))throw new Error('"diff.scale" must be a number between 0.01 and 1 in '.concat(t,"."));if("number"!=typeof b||!Number.isInteger(b)||b<=0)throw new Error('"diff.size" must be an integer greater than or equal to size in '.concat(t,"."));if(!Array.isArray(v))throw new Error('"diff.targest" must be an array of keyNames with at least 1 item in '.concat(t,"."));if("number"!=typeof g||!Number.isInteger(g)||g<0)throw new Error('"diff.lag" must be an integer greater than 0 in '.concat(t,"."));l.diff={stdDev:f,scale:y,size:b,targets:v,lag:g}}return l};function qt(t){return qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qt(t)}function Ft(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==qt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Gt(t){return function(t){if(Array.isArray(t))return Jt(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 Jt(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)?Jt(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 Jt(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="close";function Yt(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 Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Wt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=te(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Xt(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Qt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Zt(t){return function(t){if(Array.isArray(t))return ee(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||te(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 te(t,e){if(t){if("string"==typeof t)return ee(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)?ee(t,e):void 0}}function ee(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 re(t){return re="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},re(t)}function ne(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=ae(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function oe(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=re(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=re(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==re(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ie(t){return function(t){if(Array.isArray(t))return ue(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||ae(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 ae(t,e){if(t){if("string"==typeof t)return ue(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)?ue(t,e):void 0}}function ue(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 le(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 ce(t){return ce="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},ce(t)}function se(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function fe(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=ce(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ce(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ce(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function he(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 ye=function(t,e){return t-e};function pe(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||de(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 ve(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=de(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function de(t,e){if(t){if("string"==typeof t)return be(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)?be(t,e):void 0}}function be(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 me(t){return me="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},me(t)}var ge=function(t,e){var r=t.instances,n=t.verticalOhlcv,o=t.nullArray;if(0===e){var i=t.inputParams,a=t.priceBased,u=i.filter((function(t){return"lag"===t.key}));if("object"!==me(u))return;var l,c=u.map((function(t){return t.params})),s=ve(c);try{for(s.s();!(l=s.n()).done;){var f,h=pe(l.value,2),y=h[0],p=h[1],v=ve(y);try{for(v.s();!(f=v.n()).done;){var d=f.value;if(a.includes(d))for(var b=1;b<=p;b++)a.push("".concat(d,"_lag_").concat(b))}}catch(t){v.e(t)}finally{v.f()}}}catch(t){s.e(t)}finally{s.f()}r.lag={lagParams:c}}var m,g,w=ve(r.lag.lagParams);try{for(w.s();!(m=w.n()).done;){var S,O=pe(m.value,2),_=O[0],j=O[1],A=ve(_);try{for(A.s();!(S=A.n()).done;){var P=S.value,E=n[P];if(0===e)for(var k=1;k<=j;k++)n["".concat(P,"_lag_").concat(k)]=function(t){if(Array.isArray(t))return be(t)}(g=o)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(g)||de(g)||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.")}();for(var T=1;T<=j;T++){var I="".concat(P,"_lag_").concat(T),M=e-T,x=M<=0||void 0===E[M]?null:E[M];t.pushToMain({index:e,key:I,value:x})}}}catch(t){A.e(t)}finally{A.f()}}}catch(t){w.e(t)}finally{w.f()}return!0};function we(t,e){if(t){if("string"==typeof t)return Se(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)?Se(t,e):void 0}}function Se(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 Oe(t){return Oe="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},Oe(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,je(n.key),n)}}function je(t){var e=function(t,e){if("object"!=Oe(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Oe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Oe(e)?e:e+""}var Ae=function(t,e){return t>e},Pe=function(t,e){return t<e},Ee=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object.assign(this,{interval:0,prevState:.5,prevFast:null,prevSlow:null,prevHigh:null,prevLow:null,areHighAndLowUndefined:!1,index:0,crossIndexes:{up:[],down:[]}})},(e=[{key:"update",value:function(t){var e=t.fast,r=t.high,n=t.slow,o=t.low,i=this.prevState;this.areHighAndLowUndefined||void 0!==r&&void 0!==o||(this.areHighAndLowUndefined=!0),null===e||null===n||function(t,e){return t===e}(e,n)?i=.5:Ae(e,n)?i=this.areHighAndLowUndefined?1:[o,n,this.prevLow,this.prevSlow].every((function(t){return null!==t}))&&Pe(o,n)&&Ae(this.prevLow,this.prevSlow)?0:1:Pe(e,n)&&(i=this.areHighAndLowUndefined?0:[r,n,this.prevHigh,this.prevSlow].every((function(t){return null!==t}))&&Ae(r,n)&&Pe(this.prevHigh,this.prevSlow)?1:0),.5===i?this.interval=0:1===i?this.prevState<=.5?this.interval=1:this.interval++:0===i&&(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),Object.assign(this,{index:this.index+1,prevState:i,prevFast:e,prevSlow:n,prevHigh:r,prevLow:o})}},{key:"getResult",value:function(){return this.interval}}])&&_e(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),ke=function(t,e){var r=t.nullArray,n=t.verticalOhlcv,o=t.instances,i=t.len;if(0===e){var a=t.inputParams.filter((function(t){return"crossPairs"===t.key}));if("object"!==Oe(a))return;o.crossPairs={crossPairsList:a.flatMap((function(t){return t.params.flat()}))}}var u,l,c=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=we(t))){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(o.crossPairs.crossPairsList);try{for(c.s();!(u=c.n()).done;){var s=u.value,f=s.fast,h=s.slow;if(f&&h){var y="".concat(f,"_x_").concat(h);if(0===e){if("number"==typeof h&&(n[h]=new Array(i).fill(h)),"price"!==f&&!n.hasOwnProperty(f))throw Error('fast "'.concat(f,' not found in crossPairs"'));if(!n.hasOwnProperty(h))throw Error('slow "'.concat(h,' not found in crossPairs"'));o[y]=new Ee,n[y]=function(t){if(Array.isArray(t))return Se(t)}(l=r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(l)||we(l)||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.")}()}var p=void 0,v=void 0,d=void 0,b=void 0,m=void 0;"price"===f?(v=n.close[e],d=n.high[e],b=n.low[e],m=n[h][e],o[y].update({fast:v,slow:m,high:d,low:b})):(p=n[f][e],m=n[h][e],o[y].update({fast:p,slow:m})),t.pushToMain({index:e,key:y,value:o[y].getResult()})}}}catch(t){c.e(t)}finally{c.f()}};function Te(t){return function(t){if(Array.isArray(t))return Ie(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 Ie(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)?Ie(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 Ie(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 Me(t){return function(t){if(Array.isArray(t))return xe(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 xe(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)?xe(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 xe(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 Re=["open","high","low","close","volume"];function Ce(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Le(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function De(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.includes(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.includes(r)||{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Be(t){return function(t){if(Array.isArray(t))return Ve(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Le(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 Le(t,e){if(t){if("string"==typeof t)return Ve(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)?Ve(t,e):void 0}}function Ve(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 He={dateTime:function(t,e){var r=t.instances,n=t.verticalOhlcv;if(0===e){var o=t.nullArray;if(!t.isValidDate)throw Error('dateTime method found and invalid "date" in input ohlcv');var i=n.date[0].slice(0,10);Object.assign(r,{dateTime:{prevDateStr:i,sessionDailyIndexCount:0,sessionIntradayIndexCount:0,cachedDayInfo:i}}),Object.assign(n,{day_of_the_week:Te(o),day_of_the_month:Te(o),week_of_the_month:Te(o),hour:Te(o),month:Te(o),year:Te(o),session_daily_index:Te(o),session_intraday_index:Te(o)})}var a=n.date[e],u=function(t){var e=new Date(t),r=e.getMonth(),n=e.getFullYear(),o=e.getHours(),i=e.getMinutes(),a=e.getDay(),u=e.getDate(),l=new Date(e.getFullYear(),e.getMonth(),1).getDay();return{month:r,year:n,hour:o,minute:i,day_of_the_week:a,day_of_the_month:u,week_of_the_month:Math.ceil((u+l)/7)}}(a),l=u.day_of_the_week,c=u.day_of_the_month,s=u.week_of_the_month,f=u.month,h=u.year,y=u.hour,p=a.slice(0,10);p!==r.dateTime.prevDateStr&&(r.dateTime.prevDateStr=p,r.dateTime.sessionDailyIndexCount++,r.dateTime.sessionIntradayIndexCount=0),t.pushToMain({index:e,key:"session_daily_index",value:r.dateTime.sessionDailyIndexCount}),t.pushToMain({index:e,key:"session_intraday_index",value:r.dateTime.sessionIntradayIndexCount}),t.pushToMain({index:e,key:"day_of_the_week",value:l}),t.pushToMain({index:e,key:"day_of_the_month",value:c}),t.pushToMain({index:e,key:"week_of_the_month",value:s}),t.pushToMain({index:e,key:"month",value:f}),t.pushToMain({index:e,key:"year",value:h}),t.pushToMain({index:e,key:"hour",value:y})},priceVariations:function(t,e){0===e&&(t.priceBased=Me(new Set([].concat(Me(t.priceBased),["mid_price_open_close","mid_price_high_low"]))),Object.assign(t.verticalOhlcv,{mid_price_open_close:Me(t.nullArray),mid_price_high_low:Me(t.nullArray)}));var r=t.verticalOhlcv.open[e],n=t.verticalOhlcv.high[e],o=t.verticalOhlcv.low[e],i=t.verticalOhlcv.close[e];t.pushToMain({index:e,key:"mid_price_open_close",value:(r+i)/2}),t.pushToMain({index:e,key:"mid_price_high_low",value:(n+o)/2})},rsi:function(t,e,r,n){var o=n.scale,i=n.target,a=n.lag,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace,s="close"===i?"":"_".concat(i),f="rsi_".concat(r).concat(s),h="rsi_sma_".concat(r).concat(s);if(0===e){var y=t.crossPairsList,p=t.nullArray;if(!u.hasOwnProperty(i))throw new Error("Target property ".concat(i," not found in verticalOhlcv for rsi."));y.push({fast:f,slow:h,isDefault:!0}),Object.assign(l,Dt(Dt({},f,new Et(r)),h,new $(r))),Object.assign(u,Dt(Dt({},f,Rt(p)),h,Rt(p))),a>0&&t.lag([f,h],a)}var v=u[i][e],d=null,b=null;l[f].update(v,c);try{d=l[f].getResult()}catch(t){d=null}null!==d&&"number"==typeof d&&o&&(d=It(d,o)),t.pushToMain({index:e,key:f,value:d}),null!==d&&"number"==typeof d&&l[h].update(d,c);try{b=l[h].getResult()}catch(t){b=null}null!==b&&"number"==typeof b&&o&&(b=It(b,o)),t.pushToMain({index:e,key:h,value:b})},movingAverages:function(t,e,r,n,o){var i=o.target,a=o.diff,u=t.verticalOhlcv,l=t.instances,c=t.priceBased,s=t.lastIndexReplace,f="string"==typeof i&&u.hasOwnProperty(i)&&"close"!==i?"_".concat(i):"",h="".concat(r,"_").concat(n).concat(f),y="".concat(r,"_").concat(n,"_diff").concat(f);if(0===e){var p=t.nullArray;if(!u.hasOwnProperty(i))throw new Error("Target property ".concat(i," not found in verticalOhlcv for ").concat(r,"."));if(l[h]={maInstance:new zt[r](n)},u[h]=Ht(p),null!==a){l[h].diffInstance=new ot(a.size,a.stdDev);var v,d=[],b=Vt(a.targets);try{for(b.s();!(v=b.n()).done;){var m=v.value;u["".concat(y,"_").concat(m)]=Ht(p),a.lag>0&&d.push("".concat(y,"_").concat(m))}}catch(t){b.e(t)}finally{b.f()}a.lag>0&&t.lag(d,a.lag)}c.push(h)}var g=u[i][e],w=l[h],S=w.maInstance,O=w.diffInstance;S.update(g,s);var _=null;try{_=S.getResult()}catch(t){_=null}if(t.pushToMain({index:e,key:h,value:_}),null!==a){var j,A=Vt(a.targets);try{for(A.s();!(j=A.n()).done;){var P=j.value,E=null;null!==_&&"number"==typeof _&&(E=i===P?g-_:u[P][e]),null!==E&&"number"==typeof E&&O.update(Math.abs(E),s);var k=null;try{k=O.getResult()}catch(t){k=null}var T=Bt(E,k,a.scale);t.pushToMain({index:e,key:"".concat(y,"_").concat(P),value:T})}}catch(t){A.e(t)}finally{A.f()}}return!0},macd:function(t,e,r,n,o,i){var a=i.target,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace,s="".concat(r,"_").concat(n,"_").concat(o).concat(a===Kt?"":"_".concat(a));if(0===e){var f=t.inputParams,h=t.crossPairsList,y=t.nullArray,p=t.priceBased;if(!u.hasOwnProperty(a))throw new Error("Target property ".concat(a," not found in verticalOhlcv for macd."));var v=f.filter((function(t){return"macd"===t.key})).length,d=v>1?"macd_".concat(r,"_").concat(n,"_").concat(o):"macd",b=a===Kt?"".concat(d,"_diff"):"".concat(d,"_diff_").concat(a),m=a===Kt?"".concat(d,"_dea"):"".concat(d,"_dea_").concat(a),g=a===Kt?"".concat(d,"_histogram"):"".concat(d,"_histogram_").concat(a);h.push({fast:b,slow:m,isDefault:!0}),l.hasOwnProperty("macd")||(l.macd={numberOfIndicators:v,settings:{}}),l.macd.settings[s]=new mt(new yt(r),new yt(n),new yt(o)),Object.assign(u,Ft(Ft(Ft({},b,Gt(y)),m,Gt(y)),g,Gt(y))),p.push(b,m,g)}var w=l.macd,S=w.numberOfIndicators,O=w.settings,_=S>1?"macd_".concat(r,"_").concat(n,"_").concat(o):"macd",j=a===Kt?"".concat(_,"_diff"):"".concat(_,"_diff_").concat(a),A=a===Kt?"".concat(_,"_dea"):"".concat(_,"_dea_").concat(a),P=a===Kt?"".concat(_,"_histogram"):"".concat(_,"_histogram_").concat(a),E=O[s],k=u[a][e];E.update(k,c);var T=null;try{T=E.getResult()}catch(t){T=null}return t.pushToMain({index:e,key:j,value:T?T.macd:null}),t.pushToMain({index:e,key:A,value:T?T.signal:null}),t.pushToMain({index:e,key:P,value:T?T.histogram:null}),!0},relativeVolume:function(t,e){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,o=(arguments.length>3?arguments[3]:void 0).scale,i="relative_volume_".concat(n),a=t.instances,u=t.verticalOhlcv,l=t.lastIndexReplace;if(0===e){var c=t.nullArray;a[i]={instance:new $(n),prevRelativeVolumeSma:null},u[i]=function(t){if(Array.isArray(t))return Yt(t)}(r=c)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return Yt(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)?Yt(t,e):void 0}}(r)||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.")}()}var s=u.volume[e],f=a[i].instance;f.update(s,l);var h=null;try{h=f.getResult()}catch(t){h=null}var y=a[i].prevRelativeVolumeSma,p=null;return"number"==typeof h&&"number"==typeof y&&0!==y&&(p=s/y,o&&(p=It(p,o))),t.pushToMain({index:e,key:i,value:p}),a[i].prevRelativeVolumeSma=h,!0},donchianChannels:function(t,e,r,n,o){var i=o.height,a=o.range,u=o.scale,l="".concat(r,"_").concat(n),c=t.verticalOhlcv,s=t.instances,f=t.len;if(0===e){var h=t.inputParams,y=t.priceBased,p=t.nullArray,v=h.filter((function(t){return"donchianChannels"===t.key})).length,d=v>1?"donchian_channel_".concat(l):"donchian_channel";Object.assign(c,Xt(Xt(Xt({},"".concat(d,"_upper"),Zt(p)),"".concat(d,"_basis"),Zt(p)),"".concat(d,"_lower"),Zt(p))),i&&(c["".concat(d,"_height")]=Zt(p)),y.push("".concat(d,"_upper"),"".concat(d,"_basis"),"".concat(d,"_lower")),s.hasOwnProperty("donchian_channel")||(s.donchian_channel={numberOfIndicators:v,settings:{}});var b,m=Wt(a);try{for(m.s();!(b=m.n()).done;){var g=b.value;if(!(g in c)||!y.includes(g))throw new Error('Invalid range item value "'.concat(g,'" property for donchianChannels. Only price based key names are accepted:\n').concat(JSON.stringify(y)));c["".concat(d,"_range_").concat(g)]=Zt(p)}}catch(t){m.e(t)}finally{m.f()}s.donchian_channel.settings[l]={maxDeque:[],minDeque:[]}}var w=s.donchian_channel.numberOfIndicators>1?"donchian_channel_".concat(l):"donchian_channel",S=s.donchian_channel.settings[l],O=S.maxDeque,_=S.minDeque,j=e-n,A=j+1,P=A-r;if(P<0||A>f){t.pushToMain({index:e,key:"".concat(w,"_upper"),value:null}),t.pushToMain({index:e,key:"".concat(w,"_basis"),value:null}),t.pushToMain({index:e,key:"".concat(w,"_lower"),value:null}),i&&t.pushToMain({index:e,key:"".concat(w,"_height"),value:null});var E,k=Wt(a);try{for(k.s();!(E=k.n()).done;){var T=E.value;t.pushToMain({index:e,key:"".concat(w,"_range_").concat(T),value:null})}}catch(t){k.e(t)}finally{k.f()}return!0}for(var I=c.high,M=c.low;O.length&&O[0]<P;)O.shift();for(;O.length&&I[O[O.length-1]]<=I[j];)O.pop();for(O.push(j);_.length&&_[0]<P;)_.shift();for(;_.length&&M[_[_.length-1]]>=M[j];)_.pop();_.push(j);var x=O.length?I[O[0]]:null,R=_.length?M[_[0]]:null,C="number"==typeof x&&"number"==typeof R?(x+R)/2:null;if(t.pushToMain({index:e,key:"".concat(w,"_upper"),value:x}),t.pushToMain({index:e,key:"".concat(w,"_basis"),value:C}),t.pushToMain({index:e,key:"".concat(w,"_lower"),value:R}),i){var D=null;"number"==typeof x&&"number"==typeof R&&0!==R&&(D=(x-R)/R,u&&(D=It(D,u))),t.pushToMain({index:e,key:"".concat(w,"_height"),value:D})}var B,L=Wt(a);try{for(L.s();!(B=L.n()).done;){var V=B.value,H=null,N=c[V][e];"number"==typeof N&&"number"==typeof x&&"number"==typeof R&&x-R!=0&&(H=(N-R)/(x-R),u&&(H=It(H,u))),t.pushToMain({index:e,key:"".concat(w,"_range_").concat(V),value:H})}}catch(t){L.e(t)}finally{L.f()}return!0},bollingerBands:function(t,e,r,n,o){var i,a,u,l,c,s,f,h=o.height,y=o.range,p=void 0===y?[]:y,v=o.zScore,d=void 0===v?[]:v,b=o.target,m=o.scale,g=t.verticalOhlcv,w=t.instances,S=t.lastIndexReplace,O="close"===b?"":"_".concat(b),_="".concat(r,"_").concat(n).concat(O);if(0===e){var j=t.priceBased,A=t.inputParams,P=t.nullArray,E=t.verticalOhlcv;if(!(b in E))throw new Error('bollingerBands could not find target "'.concat(b,'"'));var k=A.filter((function(t){return"bollingerBands"===t.key})).length;f=k>1?"bollinger_bands_".concat(_):"bollinger_bands".concat(O),w.bollinger_bands||(w.bollinger_bands={numberOfIndicators:k,settings:{}}),w.bollinger_bands.settings[_]=new ot(r,n),Object.assign(E,oe(oe(oe({},"".concat(f,"_upper"),ie(P)),"".concat(f,"_middle"),ie(P)),"".concat(f,"_lower"),ie(P))),h&&(E["".concat(f,"_height")]=ie(P));var T,I=ne(p);try{for(I.s();!(T=I.n()).done;){var M=T.value;if(!(M in E)||!j.includes(M))throw new Error('Invalid range item value "'.concat(M,'" property for bollingerBands. Only price based key names are accepted:\n').concat(JSON.stringify(j)));E["".concat(f,"_range_").concat(M)]=ie(P)}}catch(t){I.e(t)}finally{I.f()}var x,R=ne(d);try{for(R.s();!(x=R.n()).done;){var C=x.value;if(!(C in E)||!j.includes(C))throw new Error('Invalid zScore item value "'.concat(C,'" for bollingerBands. Only price based key names are accepted:\n').concat(JSON.stringify(j)));E["".concat(f,"_zscore_").concat(C)]=ie(P)}}catch(t){R.e(t)}finally{R.f()}j.push("".concat(f,"_upper"),"".concat(f,"_middle"),"".concat(f,"_lower"))}f||(f=w.bollinger_bands.numberOfIndicators>1?"bollinger_bands_".concat(_):"bollinger_bands".concat(O));var D=f,B=w.bollinger_bands.settings[_],L=g[b][e];B.update(L,S);var V=null;try{V=B.getResult()}catch(t){}var H=null!==(i=null===(a=V)||void 0===a?void 0:a.upper)&&void 0!==i?i:null,N=null!==(u=null===(l=V)||void 0===l?void 0:l.middle)&&void 0!==u?u:null,U=null!==(c=null===(s=V)||void 0===s?void 0:s.lower)&&void 0!==c?c:null;if(t.pushToMain({index:e,key:"".concat(D,"_upper"),value:H}),t.pushToMain({index:e,key:"".concat(D,"_middle"),value:N}),t.pushToMain({index:e,key:"".concat(D,"_lower"),value:U}),h){var z=null;"number"==typeof H&&"number"==typeof U&&0!==U&&(z=(H-U)/U,m&&(z=It(z,m))),t.pushToMain({index:e,key:"".concat(D,"_height"),value:z})}var $,q=ne(p);try{for(q.s();!($=q.n()).done;){var F=$.value,G=null,J=g[F][e];"number"==typeof J&&"number"==typeof U&&"number"==typeof H&&H-U!=0&&(G=(J-U)/(H-U),m&&(G=It(G,m))),t.pushToMain({index:e,key:"".concat(D,"_range_").concat(F),value:G})}}catch(t){q.e(t)}finally{q.f()}var K,Y=ne(d);try{for(Y.s();!(K=Y.n()).done;){var Q=K.value,W=null,X=g[Q][e];"number"==typeof X&&"number"==typeof N&&"number"==typeof H&&"number"==typeof U&&H-U!=0&&(W=2*n*(X-N)/(H-U),m&&(W=It(W,m))),t.pushToMain({index:e,key:"".concat(D,"_zscore_").concat(Q),value:W})}}catch(t){Y.e(t)}finally{Y.f()}return!0},volumeOscillator:function(t,e,r,n,o){var i,a=o.scale,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace,s=u.volume[e],f="volume_oscillator";if(0===e){var h=t.crossPairsList,y=t.nullArray;Object.assign(l,{volume_oscillator:{fastEMA:new yt(r),slowEMA:new yt(n)}}),u[f]=function(t){if(Array.isArray(t))return le(t)}(i=y)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||function(t,e){if(t){if("string"==typeof t)return le(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)?le(t,e):void 0}}(i)||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.")}(),h.push({fast:f,slow:0,isDefault:!0})}var p=l[f],v=p.fastEMA,d=p.slowEMA;v.update(s,c),d.update(s,c);var b=null,m=null;try{b=v.getResult()}catch(t){b=null}try{m=d.getResult()}catch(t){m=null}var g=null;return"number"==typeof b&&"number"==typeof m&&0!==m&&(g=100*(b-m)/m,a&&(g=It(g,a))),t.pushToMain({index:e,key:f,value:g}),!0},candleStudies:function(t,e,r,n,o){var i=o.lag,a=o.scale,u=t.verticalOhlcv,l=t.instances,c=t.lastIndexReplace;if(0===e){var s=t.nullArray,f=["candle_body","candle_top","candle_bottom","candle_gap","candle_change_close","candle_change_high","candle_change_low","candle_change_open"],h=Object.fromEntries(f.map((function(t){return[t,(e=s,function(t){if(Array.isArray(t))return he(t)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(t,e){if(t){if("string"==typeof t)return he(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)?he(t,e):void 0}}(e)||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.")}())];var e})));Object.assign(u,function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?se(Object(r),!0).forEach((function(e){fe(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},h)),Object.assign(l,{candleStudies:{bodyInstance:new ot(r,n),closeInstance:new ot(r,n),highInstance:new ot(r,n),lowInstance:new ot(r,n),openInstance:new ot(r,n)}}),i>0&&t.lag(f,i)}var y=u.open[e-1],p=u.high[e-1],v=u.low[e-1],d=u.close[e-1];if(0===e)return!0;var b=u.open[e],m=u.high[e],g=u.low[e],w=u.close[e],S=ye(w,b),O=ye(m,Math.max(b,w)),_=ye(Math.min(b,w),g),j=ye(d,b),A=ye(w,d),P=ye(m,p),E=ye(g,v),k=ye(b,y),T=null,I=null,M=null,x=null,R=null,C=l.candleStudies,D=C.bodyInstance,B=C.closeInstance,L=C.highInstance,V=C.lowInstance,H=C.openInstance;D.update(Math.abs(S),c),B.update(Math.abs(A),c),L.update(Math.abs(P),c),V.update(Math.abs(E),c),H.update(Math.abs(k),c);try{T=D.getResult(),I=B.getResult(),M=L.getResult(),x=V.getResult(),R=H.getResult()}catch(t){}return t.pushToMain({index:e,key:"candle_body",value:Bt(S,T,a)}),t.pushToMain({index:e,key:"candle_top",value:Bt(O,T,a)}),t.pushToMain({index:e,key:"candle_bottom",value:Bt(_,T,a)}),t.pushToMain({index:e,key:"candle_gap",value:Bt(j,T,a)}),t.pushToMain({index:e,key:"candle_change_close",value:Bt(A,I,a)}),t.pushToMain({index:e,key:"candle_change_high",value:Bt(P,M,a)}),t.pushToMain({index:e,key:"candle_change_low",value:Bt(E,x,a)}),t.pushToMain({index:e,key:"candle_change_open",value:Bt(k,R,a)}),!0}},Ne=function(t,e,r){var n=function(t){return r>1?t*r:t};if("number"===e)return n(t);if("string"===e){var o=Mt(t);return n(Number(o))}return 0},Ue=function(t,e){return"number"===e?t:"string"===e?Number(Mt(t)):0},ze=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=e.len,i=e.inputParams;e.nullArray=new Array(o).fill(null);var a=["open","high","low","close","volume"],u=new Set(a);if(0===n){!function(t){var e,n=t.inputParams,o=t.len,i=r(n);try{for(i.s();!(e=i.n()).done;){var a,u=r(e.value.params);try{for(u.s();!(a=u.n()).done;){var l=a.value;if("number"==typeof l&&l>o)throw console.log(l,o),new Error("At least one of the params of the indicator is greater than the input OHLCV length. Make sure to have enough datapoints in the input OHLCV.")}}catch(t){u.e(t)}finally{u.f()}}}catch(t){i.e(t)}finally{i.f()}}(e),a.forEach((function(t){e.verticalOhlcv[t]=Be(e.nullArray)}));var l=Object.keys(t[0]).filter((function(t){return!u.has(t)}));l.forEach((function(t){e.verticalOhlcv[t]=Be(e.nullArray)})),e.otherKeys=l,function(t,e){for(var r=0,n=Object.keys(e.inputTypes);r<n.length;r++){var o=n[r];if(!(o in t))throw new Error('Property "'.concat(o,'" not found in ohlcv array. ').concat(e.ticker));var i=t[o];if("number"==typeof i&&i>0)e.inputTypes[o]="number";else{if("string"!=typeof i||!/^(\d+(\.\d*)?|\.\d+)$/.test(i))throw new Error('Invalid property "'.concat(o,'" in ohlcv array. ').concat(e.ticker));e.inputTypes[o]="string",i=Mt(i)}if(0===e.precisionMultiplier&&!0===e.precision){var a=(c=String(i).split("."),s=2,function(t){if(Array.isArray(t))return t}(c)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(c,s)||Le(c,s)||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.")}())[1],u=void 0===a?"":a,l=Math.max(4,u.length);e.precisionMultiplier=l>1?Math.pow(10,l-1):1}}var c,s}(t[0],e)}else if(!e.otherKeys)throw new Error("otherKeys not found in main. Ensure you run with startIndex=0 first to initialize.");for(var c=function(t){return Array.isArray(t)?t.map((function(t){var e=t.key,r=t.params;return{key:e,fn:He[e],args:r}})):[]}(i),s=n;s<o;s++){var f=t[s],h=f.open,y=f.high,p=f.low,v=f.close,d=f.volume,b=De(f,Re),m=e.precisionMultiplier,g=Ne(h,e.inputTypes.open,m),w=Ne(y,e.inputTypes.high,m),S=Ne(p,e.inputTypes.low,m),O=Ne(v,e.inputTypes.close,m),_=Ue(d,e.inputTypes.volume);e.pushToMain({index:s,key:"open",value:g}),e.pushToMain({index:s,key:"high",value:w}),e.pushToMain({index:s,key:"low",value:S}),e.pushToMain({index:s,key:"close",value:O}),e.pushToMain({index:s,key:"volume",value:_});var j,A=Ce(e.otherKeys);try{for(A.s();!(j=A.n()).done;){var P=j.value;e.pushToMain({index:s,key:P,value:b[P]})}}catch(t){A.e(t)}finally{A.f()}var E,k=Ce(c);try{for(k.s();!(E=k.n()).done;){var T=E.value,I=T.key,M=T.fn,x=T.args;["crossPairs","lag"].includes(I)||M.apply(void 0,[e,s].concat(Be(x)))}}catch(t){k.e(t)}finally{k.f()}ge(e,s),ke(e,s),e.lastComputedIndex++}},$e=function(t,e){for(var r=t.length,n=new $(e),o=new Array(r),i=0,a=0,u=0,l=0;l<r;l++)if(n.update(t[l]),n.isStable){var c=n.getResult();o[l]=c,i+=c,a+=c*c,u++}else o[l]=null;var s=i/u,f=a/u-s*s,h=Math.sqrt(f);return o.map((function(t){return null!==t?(t-s)/h:null}))},qe=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=$e(t,r),o=$e(e,r),i=t.length,a=[],u=0,l=0,c=0,s=0,f=0,h=0,y=-1,p=0;p<i;p++){if(null!==n[p]&&null!==o[p]){y=p;break}a.push(0)}if(-1===y)return new Array(i).fill(0);for(var v=y;v<i;v++){var d=n[v],b=o[v];if(null!==d&&null!==b)if(u+=d,l+=b,c+=d*b,s+=d*d,f+=b*b,++h<2)a.push(0);else{var m=h*c-u*l,g=Math.sqrt((h*s-u*u)*(h*f-l*l)),w=0===g?0:m/g;a.push(w)}else u=l=c=s=f=h=0,a.push(0)}return a};function Fe(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 Ge=function(t){for(var e=t.input,r=t.inputParams,n=new(0,t.OHLCV_INDICATORS)({input:e}),o=0;o<r.length;o++){var i=r[o],a=i.key,u=i.params;Array.isArray(u)&&(u.length>0?(Array.isArray(u)&&"crossPairs"===a&&Array.isArray(u[0])&&(u[0]=u[0].filter((function(t){return!t.isDefault}))),n[a].apply(n,function(t){if(Array.isArray(t))return Fe(t)}(l=u)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(l)||function(t,e){if(t){if("string"==typeof t)return Fe(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)?Fe(t,e):void 0}}(l)||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.")}())):n[a]())}var l;return n};function Je(t){return function(t){if(Array.isArray(t))return We(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Qe(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 Ke(t){return Ke="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},Ke(t)}function Ye(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||Qe(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 Qe(t,e){if(t){if("string"==typeof t)return We(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)?We(t,e):void 0}}function We(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 Xe(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,Ze(n.key),n)}}function Ze(t){var e=function(t,e){if("object"!=Ke(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Ke(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ke(e)?e:e+""}var tr=[.01,.02,.025,.05,.1,.2,.25,.5,1,2,2.5,5,10],er=function(){return t=function t(e){var r=e.input,n=e.ticker,o=void 0===n?null:n,i=e.precision,a=void 0===i||i;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!Array.isArray(r))throw Error("input OHLCV must be an array: "+o);if(0===r.length)throw Error("input OHLCV must not be empty: "+o);if(!r[0].hasOwnProperty("close"))throw Error("input OHLCV array objects require at least close property: "+o);return this.isComputed=!1,this.lastComputedIndex=0,this.input=r,this.inputTypes={open:"",high:"",low:"",close:"",volume:""},this.priceBased=["open","high","low","close"],this.len=r.length,this.lastIndexReplace=!1,this.instances={},this.crossPairsList=[],this.verticalOhlcv={},this.inputParams=[],this.studies={},this.utilities={correlation:qe},this.invalidValueIndex=-1,this.precision=a,this.precisionMultiplier=!0===this.precision?0:1,this.setIndicatorsFromInputParams=Ge,this},e=[{key:"pushToMain",value:function(t){var e=t.index,r=t.key,n=t.value;null==n&&(this.invalidValueIndex=e),this.verticalOhlcv[r][e]=n}},{key:"getDataAsCols",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.compute();for(var e=this.precisionMultiplier,r=this.precision,n=this.invalidValueIndex,o=this.len,i=this.verticalOhlcv,a=this.priceBased,u={},l=n>=0&&t,c=o-(n+1),s=0,f=Object.entries(i);s<f.length;s++){var h=Ye(f[s],2),y=h[0],p=h[1],v=l?p.slice(-c):p;r&&a.includes(y)&&(v=v.map((function(t){return null==t?null:t/e}))),u[y]=v}return u}},{key:"getData",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.compute();var e=this.precisionMultiplier,r=this.priceBased,n=this.precision;return function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=Object.keys(t);if(0===a.length)return[];for(var u=e&&i>=0?i+1:0,l=t[a[0]].length,c=new Array(l-u),s=u;s<l;s++){for(var f={},h=0;h<a.length;h++){var y=a[h],p=t[y][s];f[y]=r&&o.includes(y)?p/n:p}c[s-u]=f}return c}(this.verticalOhlcv,t,n,e,r,this.invalidValueIndex)}},{key:"getLastValues",value:function(){this.compute();for(var t=this.precisionMultiplier,e=this.priceBased,r=this.precision,n=this.verticalOhlcv,o=this.len,i={},a=0,u=Object.keys(n);a<u.length;a++){var l=u[a];i[l]=n[l][o-1]}return r?function(t){for(var e=t.row,r=t.precisionMultiplier,n=t.priceBased,o={},i=0,a=Object.entries(e);i<a.length;i++){var u=kt(a[i],2),l=u[0],c=u[1];n.includes(l)&&(c/=r),o[l]=c}return o}({row:i,precisionMultiplier:t,priceBased:e}):i}},{key:"compute",value:function(t){if(!0===this.isComputed&&!t)return this;if(this.isComputed=!1,this.isValidDate=this.input[0].hasOwnProperty("date")&&o(this.input[0].date),this.len>this.lastComputedIndex&&!t&&ze(this.input,this,0),t&&"object"===Ke(t)){var e;if(!["open","high","low","close","volume","date"].every((function(e){return Object.keys(t).includes(e)})))throw Error('Invalid OHLCV object sent in "compute". Correct usage: .compute({open: 108.25, high: 108.410004, low: 108.25, close: 99999999, volume: 875903, date: "2024-12-16 15:45:00" || "2024-12-16"})');if(!this.isValidDate)throw Error('All the OHLCV rows require a valid date property to access the compute change method. Correct date format: "2024-12-16 15:45:00" or "2024-12-16"');if(!o(t.date))throw Error('The date in the new OHLCV row is invalid. Correct date format: "2024-12-16 15:45:00" or "2024-12-16"');var r=t.date,n=this.len-1,i=null===(e=this.input[n])||void 0===e?void 0:e.date;0===this.lastComputedIndex&&this.compute(),i!==r?(this.len++,this.input.push(t),ze(this.input,this,this.len)):(this.input[n]=t,ze(this.input,this,n))}return this}},{key:"crossPairs",value:function(t){return i(this),this.crossPairsList=[].concat(Je(this.crossPairsList),Je(t)),this.inputParams.push({key:"crossPairs",params:[this.crossPairsList]}),this}},{key:"lag",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;i(this),this.inputParams.push({key:"lag",params:[e,r]});for(var n=function(){var r=e[o];t.priceBased.find((function(t){return r===t}))&&t.priceBased.push(r)},o=0;o<e.length;o++)n();return this}},{key:"relativeVolume",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this);var r=e.scale,n=void 0===r?null:r;if("number"==typeof n&&!tr.includes(n))throw new Error('"scale" value in relativeVolume must be any of the following numbers: '.concat(tr.join(", ")));return this.inputParams.push({key:"relativeVolume",params:[t,{scale:n}]}),this}},{key:"ema",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this);var r=$t("ema",t,e,tr);return this.inputParams.push({key:"movingAverages",params:["ema",t,r]}),this}},{key:"sma",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this);var r=$t("sma",t,e,tr);return this.inputParams.push({key:"movingAverages",params:["sma",t,r]}),this}},{key:"macd",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:26,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:9,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"fast" must be a positive number in macd.');if("number"!=typeof e||e<=t)throw new Error('"slow" must be a positive number greater than "fast" in macd.');if("number"!=typeof r||r<=0)throw new Error('"signal" must be a positive number in macd.');if("object"!==Ke(n))throw new Error('"options" must be an object in macd. eg: {target}');var o=n.target,a=void 0===o?"close":o;return this.inputParams.push({key:"macd",params:[t,e,r,{target:a}]}),this}},{key:"bollingerBands",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),!r||"object"!==Ke(r))throw new Error('"options" must be an object in bollingerBands. eg: {target, height, range}');var n=r.target,o=void 0===n?"close":n,a=r.height,u=void 0!==a&&a,l=r.range,c=void 0===l?[]:l,s=r.zScore,f=void 0===s?[]:s,h=r.scale,y=void 0===h?null:h;if("number"!=typeof t||t<=0)throw new Error('"size" must be a positive number in bollingerBands.');if("number"!=typeof e||e<=0)throw new Error('"stdDev" must be a positive number in bollingerBands.');if(!Array.isArray(c))throw new Error('If set, "range" must be a array of column names in bollingerBands.');if(!Array.isArray(f))throw new Error('If set, "zScore" must be a array of column names in bollingerBands.');if("boolean"!=typeof u)throw new Error('"height" must be a boolean in bollingerBands.');if("number"==typeof y&&!tr.includes(y))throw new Error('"scale" value in bollingerBands must be any of the following numbers: '.concat(tr.join(", ")));return this.inputParams.push({key:"bollingerBands",params:[t,e,{target:o,height:u,scale:y,range:c,zScore:f}]}),this}},{key:"rsi",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"size" must be a positive number in rsi.');var r=e.scale,n=void 0===r?null:r,o=e.target,a=void 0===o?"close":o,u=e.lag,l=void 0===u?0:u;if("number"==typeof n&&!tr.includes(n))throw new Error('"scale" value in rsi must be any of the following numbers: '.concat(tr.join(", ")));if("number"!=typeof l)throw new Error('"lag" value in rsi must be a number in rsi.');return this.inputParams.push({key:"rsi",params:[t,{scale:n,target:a,lag:l}]}),this}},{key:"donchianChannels",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"size" must be a positive number greater than 0 in donchianChannels.');if("number"!=typeof e||e<0)throw new Error('"offset" must be a number greater than or equal to 0 in donchianChannels.');var n=r.height,o=void 0!==n&&n,a=r.range,u=void 0===a?[]:a,l=r.scale,c=void 0===l?null:l;if(!Array.isArray(u))throw new Error('If set, "range" must be an array of column names in donchianChannels.');if("boolean"!=typeof o)throw new Error('"height" must be a boolean in donchianChannels.');if("number"==typeof c&&!tr.includes(c))throw new Error('"scale" value in donchianChannels must be any of the following numbers: '.concat(tr.join(", ")));return this.inputParams.push({key:"donchianChannels",params:[t,e,{height:o,range:u,scale:c}]}),this}},{key:"candleStudies",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),"number"!=typeof t||t<=0)throw new Error('"size" must be a positive number greater than 0 in candleStudies.');if("number"!=typeof e||e<=0)throw new Error('"stdDev" must be a positive number greater than 0 in candleStudies.');var n=r.lag,o=void 0===n?0:n,a=r.scale,u=void 0===a?.05:a;if("number"==typeof u&&!tr.includes(u))throw new Error('"scale" value in candleStudies must be any of the following numbers: '.concat(tr.join(", ")));return this.inputParams.push({key:"candleStudies",params:[t,e,{lag:o,scale:u}]}),this}},{key:"volumeOscillator",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(i(this),"number"!=typeof t||t<=1)throw new Error('fastSize" must be a positive number greater than 1 in volumeOscillator.');if("number"!=typeof e||e<=t)throw new Error('"slowSize" must be a positive number greater than the "fastSize" in volumeOscillator.');var n=r.scale,o=void 0===n?null:n;if("number"==typeof o&&!tr.includes(o))throw new Error('"scale" value in volumeOscillator must be any of the following numbers: '.concat(tr.join(", ")));return this.inputParams.push({key:"volumeOscillator",params:[t,e,{scale:o}]}),this}},{key:"dateTime",value:function(){return i(this),this.inputParams.push({key:"dateTime",params:[]}),this}},{key:"priceVariations",value:function(){return i(this),this.inputParams.push({key:"priceVariations",params:[]}),this}}],e&&Xe(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
package/index.js CHANGED
@@ -50,6 +50,8 @@ export default class OHLCV_INDICATORS {
50
50
  this.invalidValueIndex = index
51
51
  }
52
52
 
53
+
54
+
53
55
  this.verticalOhlcv[key][index] = value
54
56
  }
55
57
 
@@ -66,8 +68,9 @@ export default class OHLCV_INDICATORS {
66
68
  } = this;
67
69
  const result = {};
68
70
  const shouldSlice = invalidValueIndex >= 0 && skipNull;
69
- const sliceLength = len - invalidValueIndex;
71
+ const sliceLength = len - (invalidValueIndex + 1);
70
72
 
73
+
71
74
  for (const [key, arr] of Object.entries(verticalOhlcv)) {
72
75
  // If slicing is needed, create a sliced copy, otherwise re-use the array.
73
76
  let newArr = shouldSlice ? arr.slice(-sliceLength) : arr;
@@ -90,7 +93,6 @@ export default class OHLCV_INDICATORS {
90
93
 
91
94
  const {precisionMultiplier, priceBased, precision, verticalOhlcv, invalidValueIndex} = this
92
95
 
93
-
94
96
  return verticalToHorizontal(verticalOhlcv, skipNull, precision, precisionMultiplier, priceBased, invalidValueIndex)
95
97
  }
96
98
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ohlcv-indicators",
3
- "version": "2.2.3",
3
+ "version": "2.2.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",
@@ -10,13 +10,21 @@ export const candleStudies = (main, index, size, stdDev, {lag, scale}) => {
10
10
  if(index === 0)
11
11
  {
12
12
  const {nullArray} = main
13
-
14
- const candleParts = ['candle_body', 'candle_top', 'candle_bottom']
15
- const candleGaps = ['candle_gap']
16
- const candleChanges = ['candle_change_close', 'candle_change_high', 'candle_change_low', 'candle_change_open']
17
- const keyNames = [...candleParts, ...candleGaps, ...candleChanges]
18
-
19
- Object.assign(verticalOhlcv, Object.fromEntries(keyNames.map(k => [k, nullArray])))
13
+
14
+ const keyNames = [
15
+ 'candle_body',
16
+ 'candle_top',
17
+ 'candle_bottom',
18
+ 'candle_gap',
19
+ 'candle_change_close',
20
+ 'candle_change_high',
21
+ 'candle_change_low',
22
+ 'candle_change_open',
23
+ ]
24
+
25
+ const verticalOhlcvSetup = Object.fromEntries(keyNames.map(v => [v, [...nullArray]]))
26
+
27
+ Object.assign(verticalOhlcv, {...verticalOhlcvSetup})
20
28
 
21
29
  Object.assign(instances, {
22
30
  candleStudies: {
@@ -21,6 +21,7 @@ import { calcMagnitude } from "./numberUtilities.js"
21
21
 
22
22
 
23
23
  export const classifyBoll = (value, bollingerBands, scale = 0.05) => {
24
+
24
25
  // Validate that value and bollingerBands are not null/undefined
25
26
  if (value == null || bollingerBands == null) return null
26
27
 
@@ -12,8 +12,8 @@ export const verticalToHorizontal = (
12
12
  const startIndex = skipNull && invalidValueIndex >= 0 ? invalidValueIndex + 1 : 0;
13
13
  const endIndex = obj[keys[0]].length;
14
14
  const len = endIndex - startIndex;
15
-
16
15
  const result = new Array(len);
16
+
17
17
 
18
18
  for (let i = startIndex; i < endIndex; i++) {
19
19
  const row = {};
@@ -21,15 +21,10 @@ export const verticalToHorizontal = (
21
21
  const key = keys[j];
22
22
  const value = obj[key][i];
23
23
 
24
- if(value === null || typeof value === 'undefined')
25
- {
26
- row[key] = null
27
- }
28
- else{
29
- row[key] = (precision && priceBased.includes(key)) ? value / precisionMultiplier : value
30
- }
24
+ row[key] = (precision && priceBased.includes(key)) ? value / precisionMultiplier : value
31
25
 
32
26
  }
27
+
33
28
  result[i - startIndex] = row;
34
29
  }
35
30