ohlcv-indicators 1.9.0 → 1.9.2
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.
- package/dist/ohlcv-indicators.min.js +1 -1
- package/index.js +64 -28
- package/package.json +2 -2
- package/src/oscillators/rsi.js +1 -1
- package/src/oscillators/volumeOscillator.js +47 -0
- package/src/utilities/parsing-utilities.js +0 -12
- package/src/utilities/setIndicatorsFromInputParams.js +45 -0
- package/dist/ohlcv-indicators.min.js.LICENSE.txt +0 -1
- package/knn-model.json +0 -1
- package/src/moving-averages/vwap.js +0 -40
- package/src/utilities/math-array.js +0 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
var OHLCV_INDICATORS;(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{t.r(e),t.d(e,{default:()=>re});var r=1e6,n="[big.js] ",o=n+"Invalid ",i=o+"decimal places",u=o+"rounding mode",l=n+"Division by zero",c={},a=void 0,s=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function f(t,e,r,n){var o=t.c;if(r===a&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(u);if(e<1)n=3===r&&(n||!!o[0])||0===e&&(1===r&&o[0]>=5||2===r&&(o[0]>5||5===o[0]&&(n||o[1]!==a))),o.length=1,n?(t.e=t.e-e+1,o[0]=1):o[0]=t.e=0;else if(e<o.length){if(n=1===r&&o[e]>=5||2===r&&(o[e]>5||5===o[e]&&(n||o[e+1]!==a||1&o[e-1]))||3===r&&(n||!!o[0]),o.length=e,n)for(;++o[--e]>9;)if(o[e]=0,0===e){++t.e,o.unshift(1);break}for(e=o.length;!o[--e];)o.pop()}return t}function h(t,e,r){var n=t.e,o=t.c.join(""),i=o.length;if(e)o=o.charAt(0)+(i>1?"."+o.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)o="0"+o;o="0."+o}else if(n>0)if(++n>i)for(n-=i;n--;)o+="0";else n<i&&(o=o.slice(0,n)+"."+o.slice(n));else i>1&&(o=o.charAt(0)+"."+o.slice(1));return t.s<0&&r?"-"+o:o}function p(t){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p(t)}function v(t){var e="function"==typeof Map?new Map:void 0;return v=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(y())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&b(o,r.prototype),o}(t,arguments,d(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),b(r,t)},v(t)}function y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(y=function(){return!!t})()}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}c.abs=function(){var t=new this.constructor(this);return t.s=1,t},c.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,u=t.s,l=r.e,c=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-u:0;if(i!=u)return i;if(e=i<0,l!=c)return l>c^e?1:-1;for(u=(l=n.length)<(c=o.length)?l:c,i=-1;++i<u;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return l==c?0:l>c^e?1:-1},c.div=function(t){var e=this,n=e.constructor,o=e.c,u=(t=new n(t)).c,c=e.s==t.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>r)throw Error(i);if(!u[0])throw Error(l);if(!o[0])return t.s=c,t.c=[t.e=0],t;var h,p,v,y,b,d=u.slice(),m=h=u.length,g=o.length,w=o.slice(0,h),O=w.length,_=t,j=_.c=[],S=0,P=s+(_.e=e.e-t.e)+1;for(_.s=c,c=P<0?0:P,d.unshift(0);O++<h;)w.push(0);do{for(v=0;v<10;v++){if(h!=(O=w.length))y=h>O?1:-1;else for(b=-1,y=0;++b<h;)if(u[b]!=w[b]){y=u[b]>w[b]?1:-1;break}if(!(y<0))break;for(p=O==h?u:d;O;){if(w[--O]<p[O]){for(b=O;b&&!w[--b];)w[b]=9;--w[b],w[O]+=10}w[O]-=p[O]}for(;!w[0];)w.shift()}j[S++]=y?v:++v,w[0]&&y?w[O]=o[m]||0:w=[o[m]]}while((m++<g||w[0]!==a)&&c--);return j[0]||1==S||(j.shift(),_.e--,P--),S>P&&f(_,P,n.RM,w[0]!==a),_},c.eq=function(t){return 0===this.cmp(t)},c.gt=function(t){return this.cmp(t)>0},c.gte=function(t){return this.cmp(t)>-1},c.lt=function(t){return this.cmp(t)<0},c.lte=function(t){return this.cmp(t)<1},c.minus=c.sub=function(t){var e,r,n,o,i=this,u=i.constructor,l=i.s,c=(t=new u(t)).s;if(l!=c)return t.s=-c,i.plus(t);var a=i.c.slice(),s=i.e,f=t.c,h=t.e;if(!a[0]||!f[0])return f[0]?t.s=-c:a[0]?t=new u(i):t.s=1,t;if(l=s-h){for((o=l<0)?(l=-l,n=a):(h=s,n=f),n.reverse(),c=l;c--;)n.push(0);n.reverse()}else for(r=((o=a.length<f.length)?a:f).length,l=c=0;c<r;c++)if(a[c]!=f[c]){o=a[c]<f[c];break}if(o&&(n=a,a=f,f=n,t.s=-t.s),(c=(r=f.length)-(e=a.length))>0)for(;c--;)a[e++]=0;for(c=e;r>l;){if(a[--r]<f[r]){for(e=r;e&&!a[--e];)a[e]=9;--a[e],a[r]+=10}a[r]-=f[r]}for(;0===a[--c];)a.pop();for(;0===a[0];)a.shift(),--h;return a[0]||(t.s=1,a=[h=0]),t.c=a,t.e=h,t},c.mod=function(t){var e,r=this,n=r.constructor,o=r.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(l);return r.s=t.s=1,e=1==t.cmp(r),r.s=o,t.s=i,e?new n(r):(o=n.DP,i=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=o,n.RM=i,this.minus(r.times(t)))},c.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},c.plus=c.add=function(t){var e,r,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var u=o.e,l=o.c,c=t.e,a=t.c;if(!l[0]||!a[0])return a[0]||(l[0]?t=new i(o):t.s=o.s),t;if(l=l.slice(),e=u-c){for(e>0?(c=u,n=a):(e=-e,n=l),n.reverse();e--;)n.push(0);n.reverse()}for(l.length-a.length<0&&(n=a,a=l,l=n),e=a.length,r=0;e;l[e]%=10)r=(l[--e]=l[e]+a[e]+r)/10|0;for(r&&(l.unshift(r),++c),e=l.length;0===l[--e];)l.pop();return t.c=l,t.e=c,t},c.pow=function(t){var e=this,r=new e.constructor("1"),n=r,i=t<0;if(t!==~~t||t<-1e6||t>1e6)throw Error(o+"exponent");for(i&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return i?r.div(n):n},c.prec=function(t,e){if(t!==~~t||t<1||t>r)throw Error(o+"precision");return f(new this.constructor(this),t,e)},c.round=function(t,e){if(t===a)t=0;else if(t!==~~t||t<-r||t>r)throw Error(i);return f(new this.constructor(this),t+this.e+1,e)},c.sqrt=function(){var t,e,r,o=this,i=o.constructor,u=o.s,l=o.e,c=new i("0.5");if(!o.c[0])return new i(o);if(u<0)throw Error(n+"No square root");0===(u=Math.sqrt(o+""))||u===1/0?((e=o.c.join("")).length+l&1||(e+="0"),l=((l+1)/2|0)-(l<0||1&l),t=new i(((u=Math.sqrt(e))==1/0?"5e":(u=u.toExponential()).slice(0,u.indexOf("e")+1))+l)):t=new i(u+""),l=t.e+(i.DP+=4);do{r=t,t=c.times(r.plus(o.div(r)))}while(r.c.slice(0,l).join("")!==t.c.slice(0,l).join(""));return f(t,(i.DP-=4)+t.e+1,i.RM)},c.times=c.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,u=o.length,l=i.length,c=r.e,a=t.e;if(t.s=r.s==t.s?1:-1,!o[0]||!i[0])return t.c=[t.e=0],t;for(t.e=c+a,u<l&&(e=o,o=i,i=e,a=u,u=l,l=a),e=new Array(a=u+l);a--;)e[a]=0;for(c=l;c--;){for(l=0,a=u+c;a>c;)l=e[a]+i[c]*o[a-c-1]+l,e[a--]=l%10,l=l/10|0;e[a]=l}for(l?++t.e:e.shift(),c=e.length;!e[--c];)e.pop();return t.c=e,t},c.toExponential=function(t,e){var n=this,o=n.c[0];if(t!==a){if(t!==~~t||t<0||t>r)throw Error(i);for(n=f(new n.constructor(n),++t,e);n.c.length<t;)n.c.push(0)}return h(n,!0,!!o)},c.toFixed=function(t,e){var n=this,o=n.c[0];if(t!==a){if(t!==~~t||t<0||t>r)throw Error(i);for(t=t+(n=f(new n.constructor(n),t+n.e+1,e)).e+1;n.c.length<t;)n.c.push(0)}return h(n,!1,!!o)},c[Symbol.for("nodejs.util.inspect.custom")]=c.toJSON=c.toString=function(){var t=this,e=t.constructor;return h(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},c.toNumber=function(){var t=Number(h(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(n+"Imprecise conversion");return t},c.toPrecision=function(t,e){var n=this,i=n.constructor,u=n.c[0];if(t!==a){if(t!==~~t||t<1||t>r)throw Error(o+"precision");for(n=f(new i(n),t,e);n.c.length<t;)n.c.push(0)}return h(n,t<=n.e||n.e<=i.NE||n.e>=i.PE,!!u)},c.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(n+"valueOf disallowed");return h(t,t.e<=e.NE||t.e>=e.PE,!0)},function t(){function e(r){var n=this;if(!(n instanceof e))return r===a?t():new e(r);if(r instanceof e)n.s=r.s,n.e=r.e,n.c=r.c.slice();else{if("string"!=typeof r){if(!0===e.strict&&"bigint"!=typeof r)throw TypeError(o+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,i;if(!s.test(e))throw Error(o+"number");for(t.s="-"==e.charAt(0)?(e=e.slice(1),-1):1,(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),i=e.length,n=0;n<i&&"0"==e.charAt(n);)++n;if(n==i)t.c=[t.e=0];else{for(;i>0&&"0"==e.charAt(--i););for(t.e=r-n-1,t.c=[],r=0;n<=i;)t.c[r++]=+e.charAt(n++)}}(n,r)}n.constructor=e}return e.prototype=c,e.DP=20,e.RM=1,e.NE=-7,e.PE=21,e.strict=!1,e.roundDown=0,e.roundHalfUp=1,e.roundHalfEven=2,e.roundUp=3,e}();var m=function(t){function e(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Not enough data";return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t=function(t,e,r){return e=d(e),function(t,e){if(e&&("object"==p(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,y()?Reflect.construct(e,r||[],d(t).constructor):e.apply(t,r))}(this,e,[r]),Object.setPrototypeOf(t,(this instanceof e?this.constructor:void 0).prototype),t.name="NotEnoughDataError",t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&b(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(v(Error));function g(t){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g(t)}function w(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,_(n.key),n)}}function O(t,e,r){return(e=_(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _(t){var e=function(t,e){if("object"!=g(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=g(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==g(e)?e:e+""}var j=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),O(this,"previousHighest",void 0),O(this,"highest",void 0),O(this,"previousLowest",void 0),O(this,"lowest",void 0),O(this,"previousResult",void 0),O(this,"result",void 0)},(e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"setResult",value:function(t,e){return e&&(this.highest=this.previousHighest,this.lowest=this.previousLowest,this.result=this.previousResult),void 0===this.highest?this.highest=t:t>this.highest?(this.previousHighest=this.highest,this.highest=t):this.previousHighest=this.highest,void 0===this.lowest?this.lowest=t:t<this.lowest?(this.previousLowest=this.lowest,this.lowest=t):this.previousLowest=this.lowest,this.previousResult=this.result,this.result=t}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&w(t.prototype,e),r&&w(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}function P(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,T(n.key),n)}}function E(t,e,r){return e=k(e),function(t,e){if(e&&("object"==S(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,A()?Reflect.construct(e,r||[],k(t).constructor):e.apply(t,r))}function A(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(A=function(){return!!t})()}function k(t){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},k(t)}function R(t,e){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},R(t,e)}function T(t){var e=function(t,e){if("object"!=S(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=S(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(e)?e:e+""}var M=function(t){function e(t){var r,n,o,i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=E(this,e),i=void 0,(o=T(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,r.interval=t,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&R(t,e)}(e,t),r=e,(n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&P(r.prototype,n),o&&P(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(j);function x(t){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},x(t)}function D(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,F(n.key),n)}}function C(t,e,r){return e=I(e),function(t,e){if(e&&("object"==x(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,B()?Reflect.construct(e,r||[],I(t).constructor):e.apply(t,r))}function B(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(B=function(){return!!t})()}function I(t){return I=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},I(t)}function L(t,e){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},L(t,e)}function F(t){var e=function(t,e){if("object"!=x(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=x(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==x(e)?e:e+""}var N=function(t){function e(){var t,r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,u=new Array(i),l=0;l<i;l++)u[l]=arguments[l];return r=t=C(this,e,[].concat(u)),o=[],(n=F(n="prices"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&L(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&&D(r.prototype,n),o&&D(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(M);function H(t){return H="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},H(t)}function q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,W(n.key),n)}}function V(t,e,r){return e=G(e),function(t,e){if(e&&("object"==H(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,z()?Reflect.construct(e,r||[],G(t).constructor):e.apply(t,r))}function z(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(z=function(){return!!t})()}function G(t){return G=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},G(t)}function U(t,e){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},U(t,e)}function $(t,e,r){return(e=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"!=H(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=H(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==H(e)?e:e+""}var J=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),$(r=V(this,e),"interval",void 0),$(r,"indicator",void 0),$(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new N(t),r.smoothingFactor=1/r.interval,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&U(t,e)}(e,t),r=e,n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.indicator.update(t);if(e&&void 0!==this.previousResult){var n=(t-this.previousResult)*this.smoothingFactor;return this.setResult(n+this.previousResult,e)}if(!e&&void 0!==this.result){var o=(t-this.result)*this.smoothingFactor;return this.setResult(o+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&q(r.prototype,n),o&&q(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(j);function K(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function Y(t){return Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Y(t)}function Q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Z(n.key),n)}}function X(t,e,r){return(e=Z(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Z(t){var e=function(t,e){if("object"!=Y(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Y(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Y(e)?e:e+""}var tt=function(){return t=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),X(this,"interval",void 0),X(this,"deviationMultiplier",void 0),X(this,"prices",[]),X(this,"result",void 0),this.interval=e,this.deviationMultiplier=r},(e=[{key:"update",value:function(t){if(this.prices.push(t),this.prices.length>this.interval){this.prices.shift();var e=K(this.prices),r=function(t,e){var r=e||K(t),n=K(t.map((function(t){return t-r})).map((function(t){return t*t})));return Math.sqrt(n)}(this.prices,e);return this.result={lower:e-r*this.deviationMultiplier,middle:e,upper:e+r*this.deviationMultiplier}}}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&Q(t.prototype,e),r&&Q(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function et(t){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},et(t)}function rt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,ct(n.key),n)}}function nt(t,e,r){return e=it(e),function(t,e){if(e&&("object"==et(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,ot()?Reflect.construct(e,r||[],it(t).constructor):e.apply(t,r))}function ot(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(ot=function(){return!!t})()}function it(t){return it=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},it(t)}function ut(t,e){return ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},ut(t,e)}function lt(t,e,r){return(e=ct(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ct(t){var e=function(t,e){if("object"!=et(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=et(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==et(e)?e:e+""}var at=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),lt(r=nt(this,e,[t]),"interval",void 0),lt(r,"pricesCounter",0),lt(r,"weightFactor",void 0),r.interval=t,r.weightFactor=2/(r.interval+1),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ut(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?e&&0===this.pricesCounter&&this.pricesCounter++:this.pricesCounter++,e&&void 0!==this.previousResult?this.setResult(t*this.weightFactor+this.previousResult*(1-this.weightFactor),e):this.setResult(t*this.weightFactor+(void 0!==this.result?this.result:t)*(1-this.weightFactor),e)}},{key:"getResult",value:function(){if(this.pricesCounter<this.interval)throw new m;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&rt(r.prototype,n),o&&rt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(M);function st(t){return st="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},st(t)}function ft(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,pt(n.key),n)}}function ht(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"!=st(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=st(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==st(e)?e:e+""}var vt=function(){return t=function t(e,r,n){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),ht(this,"short",void 0),ht(this,"long",void 0),ht(this,"signal",void 0),ht(this,"prices",[]),ht(this,"result",void 0),this.short=e,this.long=r,this.signal=n},e=[{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t);var r=this.short.update(t,e),n=this.long.update(t,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var o=r-n,i=this.signal.update(o,e);return this.result={histogram:o-i,macd:o,signal:i}}}}],e&&ft(t.prototype,e),r&&ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function yt(t){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yt(t)}function bt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,_t(n.key),n)}}function dt(t,e,r){return e=gt(e),function(t,e){if(e&&("object"==yt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,mt()?Reflect.construct(e,r||[],gt(t).constructor):e.apply(t,r))}function mt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(mt=function(){return!!t})()}function gt(t){return gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},gt(t)}function wt(t,e){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},wt(t,e)}function Ot(t,e,r){return(e=_t(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _t(t){var e=function(t,e){if("object"!=yt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==yt(e)?e:e+""}var jt=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:J;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),Ot(r=dt(this,e),"interval",void 0),Ot(r,"previousPrices",[]),Ot(r,"avgGain",void 0),Ot(r,"avgLoss",void 0),Ot(r,"maxValue",100),r.interval=t,r.avgGain=new n(r.interval),r.avgLoss=new n(r.interval),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&wt(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&e?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var r=t,n=this.previousPrices[this.previousPrices.length-2];if(r>n?(this.avgLoss.update(0,e),this.avgGain.update(t-n,e)):(this.avgLoss.update(n-r,e),this.avgGain.update(0,e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(0===o)return this.setResult(100,e);var i=this.avgGain.getResult()/o;return this.setResult(this.maxValue-this.maxValue/(i+1),e)}}}}],n&&bt(r.prototype,n),o&&bt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(j);function St(t){return St="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},St(t)}function Pt(t){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Pt(t)}var Et=function(t,e){if(void 0===t||void 0===e)throw Error("undefined param in getEMA");for(var r=t.length,n=new Array(r).fill(null),o=new at(e),i=0;i<r;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function At(t){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},At(t)}var kt=function(t,e){if(void 0===t||void 0===e)throw Error("undefined param in getSMA");for(var r=t.length,n=new Array(r).fill(null),o=new N(e),i=0;i<r;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function Rt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Tt=function(t,e){return t===e},Mt=function(t,e){return t>e},xt=function(t,e){return t<e},Dt=function(t){var e=t.fast,r=t.high,n=t.low,o=t.slow,i=e.length;if(i==!o.length)throw Error("fast and slow do not have the same length");for(var u=new Array(i).fill(.5),l=0;l<i;l++){var c=(null==u?void 0:u[l-1])||.5,a=e[l],s=o[l],f=null==r?void 0:r[l],h=null==n?void 0:n[l];if(!r&&!n||void 0!==f&&void 0!==h){var p=o[l-1],v=null==r?void 0:r[l-1],y=null==n?void 0:n[l-1];if(!r&&!n||void 0!==v&&void 0!==y&&void 0!==p){var b=void 0;null===a||null===s?b=.5:Tt(a,s)?b=c:Mt(a,s)?b=xt(h,s)&&Mt(y,p)?0:1:xt(a,s)&&(b=Mt(f,s)&&xt(v,p)?1:0),u[l]=b}}}var d=Bt(u);return Ct(d)},Ct=function(t){var e=t.map((function(t){return t.length}));return t.map((function(t,r){var n=e[r];return t.map((function(t,e){var r=n-e;return.5===t&&(r=0),1===t&&(r*=1),0===t&&(r*=-1),r})).reverse()})).flat()},Bt=function(t){return 0===t.length?[]:t.reduce((function(t,e,r,n){if(0===r)t.push([e]);else{var o=n[r-1],i=t[t.length-1];e!==o?t.push([e]):i.push(e)}return t}),[])},It=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1.5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;if(null===t||null===e||null===r)return null;if(n<2)throw new Error("numLevels must be at least 2");for(var o=4*r/(n-1),i=[],u=0;u<n-1;u++)i.push(e-2*r+u*o);for(var l=i.length-1;l>=0;l--)if(t>i[l])return(l+1)/(n-1);return 0},Lt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:7;if(null===t||null===e||null===r)return null;if(n<2)throw new Error("numLevels must be at least 2");if(2===n)return t>=e?1:-1;for(var o=4*r/(n-1),i=[],u=0;u<n-1;u++)i.push(e-2*r+u*o);for(var l=i.length-1;l>=0;l--)if(t>i[l])return(l-Math.floor((n-1)/2))/Math.floor((n-1)/2);return-1};function Ft(t){return Ft="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},Ft(t)}function Nt(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 Ht(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Nt(Object(r),!0).forEach((function(e){qt(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Nt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function qt(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Ft(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Ft(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ft(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Vt(t){return Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vt(t)}var zt={getSMA:kt,getEMA:Et},Gt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"SMA",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:14,o=t.length;if(o<e)return[];for(var i=new Array(o).fill(null),u=new jt(e),l=0;l<o;l++){var c=null;if(null!==t[l]){u.update(t[l]);try{c=u.getResult()}catch(t){c=null}}i[l]=c}var a,s,f,h=(a={},s="rsi_".concat(e),f=i,(s=function(t){var e=function(t,e){if("object"!=Vt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Vt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Vt(e)?e:e+""}(s))in a?Object.defineProperty(a,s,{value:f,enumerable:!0,configurable:!0,writable:!0}):a[s]=f,a);if("string"==typeof r&&"number"==typeof n&&zt.hasOwnProperty("get".concat(r))){var p=zt["get".concat(r)](i,n);h["rsi_".concat(r,"_").concat(n)]=p,h["rsi_".concat(e,"_x_rsi_").concat(r,"_").concat(n)]=Dt({fast:i,slow:p})}return h};function Ut(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 $t(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)?$t(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}function $t(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 Wt={midPriceOpenClose:!1,midPriceHighLow:!1,sessionIndex:!1,sessionIntradayIndex:!1,dayOfTheWeek:!1,dayOfTheMonth:!1,weekOfTheMonth:!1},Jt=function(t){var e=new Date(t),r=e.getDay(),n=e.getDate(),o=new Date(e.getFullYear(),e.getMonth(),1).getDay();return{day_of_the_week:r,day_of_the_month:n,week_of_the_month:Math.ceil((n+o)/7)}},Kt=function(t,e){for(var r=t.length,n=new N(e),o=new Array(r),i=0,u=0,l=0,c=0;c<r;c++)if(n.update(t[c]),n.isStable){var a=n.getResult();o[c]=a,i+=a,u+=a*a,l++}else o[c]=null;var s=i/l,f=u/l-s*s,h=Math.sqrt(f);return o.map((function(t){return null!==t?(t-s)/h:null}))},Yt=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=Kt(t,r),o=Kt(e,r),i=t.length,u=[],l=0,c=0,a=0,s=0,f=0,h=0,p=-1,v=0;v<i;v++){if(null!==n[v]&&null!==o[v]){p=v;break}u.push(0)}if(-1===p)return new Array(i).fill(0);for(var y=p;y<i;y++){var b=n[y],d=o[y];if(null!==b&&null!==d)if(l+=b,c+=d,a+=b*d,s+=b*b,f+=d*d,++h<2)u.push(0);else{var m=h*a-l*c,g=Math.sqrt((h*s-l*l)*(h*f-c*c)),w=0===g?0:m/g;u.push(w)}else l=c=a=s=f=h=0,u.push(0)}return u};function Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Xt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,u,l=[],c=!0,a=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(t){a=!0,o=t}finally{try{if(!c&&null!=r.return&&(u=r.return(),Object(u)!==u))return}finally{if(a)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Zt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Zt(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zt(t,e){(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 te(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,ee(n.key),n)}}function ee(t){var e=function(t,e){if("object"!=Qt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Qt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Qt(e)?e:e+""}var re=function(){return t=function t(e){var r=e.input,n=e.ticker,o=void 0===n?null:n,i=e.studyOptions,u=void 0===i?null: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.priceBased=["open","high","low","close","mid_price_open_close","mid_price_high_low"],this.len=r.length,this.crossPairsArr=[],this.inputOhlcv=r,this.studyOptions=null===u?Wt:u,this.verticalOhlcv=function(t,e,r){if(Boolean(r))for(var n in r)if(!Wt.hasOwnProperty(n))throw new Error("Key ".concat(n," not found in defaultStudyOptions. Available options: ").concat(Object.keys(Wt).join(", ")));var o=r.midPriceOpenClose,i=r.midPriceHighLow,u=r.sessionIndex,l=r.sessionIntradayIndex,c=r.dayOfTheWeek,a=r.dayOfTheMonth,s=r.weekOfTheMonth,f=["open","high","low","close","volume"];o&&f.push("mid_price_open_close"),i&&f.push("mid_price_high_low");for(var h=new Set(f),p={},v=0,y=f;v<y.length;v++)p[y[v]]=new Array(e);for(var b,d=[],m=0,g=Object.keys(t[0]);m<g.length;m++){var w=g[m];h.has(w)||(p[w]=new Array(e),d.push(w))}var O,_=0,j=0,S=(O=t)[0].hasOwnProperty("date")&&"string"==typeof O[0].date&&/^\d{4}-\d{2}-\d{2}/.test(O[0].date);S&&(u&&(p.session_index=new Array(e)),l&&(p.session_intraday_index=new Array(e)),c&&(p.day_of_the_week=new Array(e)),a&&(p.day_of_the_month=new Array(e)),s&&(p.week_of_the_month=new Array(e)),b=t[0].date.slice(0,10));for(var P=0;P<e;P++){var E=t[P];p.open[P]=E.open,p.high[P]=E.high,p.low[P]=E.low,p.close[P]=E.close,p.volume[P]=E.volume,o&&(p.mid_price_open_close[P]=(E.open+E.close)/2),i&&(p.mid_price_high_low[P]=(E.high+E.low)/2);var A,k=Ut(d);try{for(k.s();!(A=k.n()).done;){var R=A.value;p[R][P]=E[R]}}catch(t){k.e(t)}finally{k.f()}if(S){var T=E.date.slice(0,10);T!==b&&(b=T,_++,j=0);var M=Jt(T),x=M.day_of_the_week,D=M.day_of_the_month,C=M.week_of_the_month;c&&(p.day_of_the_week[P]=x),a&&(p.day_of_the_month[P]=D),s&&(p.week_of_the_month[P]=C),u&&(p.session_index[P]=_),l&&(p.session_intraday_index[P]=j),j++}}return p}(r,this.len,this.studyOptions),this.indicators={},this.studies={},this.utilities={correlation:Yt},this},e=[{key:"getData",value:function(){this.compute();for(var t=this.verticalOhlcv,e=Object.keys(t),r=t[e[0]].length,n=e.length,o=[],i=0;i<r;i++){for(var u={},l=!1,c=0;c<n;c++){var a=e[c],s=t[a][i];if(null==s){l=!0;break}u[a]=s}l||o.push(u)}return o}},{key:"getLastValues",value:function(){return this.getData()[this.getData().length-1]}},{key:"compute",value:function(){if(0===Object.keys(this.indicators).length)return this;for(var t=this.addColumn.bind(this),e=0,r=Object.entries(this.indicators);e<r.length;e++){var n=Xt(r[e],2),o=n[0],i=n[1];this.verticalOhlcv.hasOwnProperty(o)?delete this.indicators[o]:t(o,i)}return this}},{key:"addColumn",value:function(t,e){var r=this.len;if(t=t.toLowerCase(),e.length>r)throw new Error("Invalid column data: The length of the new column exceeds the length of the OHLCV data");if(e.length<r){var n=r-e.length;e=new Array(n).fill(null).concat(e)}this.verticalOhlcv[t]=e}},{key:"crossPairs",value:function(t){this.compute();var e=function(t,e){var r,n=t.verticalOhlcv,o=t.len,i={},u={},l={},c=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return Rt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Rt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}(e);try{var a=function(){var t=r.value,e=t.fast,c=t.slow,a=t.count;if(!e||!c)return 1;"number"!=typeof c||i[c]||(i[c]=Array(o).fill(c));var s="".concat(e,"_x_").concat(c),f="".concat(e,"_c_").concat(c),h=function(t){return void 0!==a?t.slice(-a).filter((function(t){return 1===t||-1===t})).length:0};if(n[s]){var p=n[s];u[s]=p,void 0!==a&&(l[f]=h(p))}else if((n[e]||"price"===e)&&n[c]){var v=Dt("price"===e?{fast:n.close,high:n.high,low:n.low,slow:n[c]}:{fast:n[e],slow:n[c]});u[s]=v,void 0!==a&&(l[f]=h(v))}else{if(!n[e]||!i[c])throw Error("Missing ohlcv properties for ".concat(e," or ").concat(c));var y=Dt({fast:n[e],slow:i[c]});u[s]=y,void 0!==a&&(l[f]=h(y))}};for(c.s();!(r=c.n()).done;)a()}catch(t){c.e(t)}finally{c.f()}return{x:u,c:l}}(this,t),r=e.x,n=e.c;return Object.assign(this.indicators,r),Object.assign(this.studies,n),this.compute(),this}},{key:"lag",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.compute();for(var n=this.verticalOhlcv,o=this.priceBased,i=0;i<e.length;i++)for(var u=function(){var r,u,c,a="".concat(e[i],"_lag_").concat(l),s=n[e[i]].slice(0,-l);Object.assign(t.indicators,(r={},c=s,(u=ee(u=a))in r?Object.defineProperty(r,u,{value:c,enumerable:!0,configurable:!0,writable:!0}):r[u]=c,r)),o.find((function(t){return a.startsWith(t)}))&&t.priceBased.push(a)},l=1;l<=r;l++)u();return this.compute(),this}},{key:"relativeVolume",value:function(t){var e=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,r=function(t,e){for(var r=new N(e),n=new Array(t.length).fill(null),o=new Array(t.length).fill(null),i=0;i<t.length;i++){var u=null;r.update(t[i]);try{u=r.getResult()}catch(t){u=null}n[i]=u,"number"==typeof n[i-1]&&(o[i]=t[i]/n[i-1])}return o}(t.verticalOhlcv.volume,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=St(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=St(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==St(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"relative_volume_".concat(e),r)}(this,t);return Object.assign(this.indicators,e),this}},{key:"ema",value:function(t){var e=function(t,e){var r=t.verticalOhlcv.close,n=Et(r,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Pt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Pt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"ema_".concat(e),n)}(this,t);return Object.assign(this.indicators,e),this.priceBased.push("ema_".concat(t)),this}},{key:"sma",value:function(t){var e=function(t,e){var r=t.verticalOhlcv.close,n=kt(r,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=At(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=At(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==At(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"sma_".concat(e),n)}(this,t);return Object.assign(this.indicators,e),this.priceBased.push("sma_".concat(t)),this}},{key:"macd",value:function(t,e,r){var n=function(t,e,r,n){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:26,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:9,o=t.length,i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),c=new vt(new at(e),new at(r),new at(n)),a=0;a<o;a++){var s={};c.update(t[a]);try{s=c.getResult()}catch(t){s={macd:null,signal:null,histogram:null}}i[a]=s.macd,u[a]=s.signal,l[a]=s.histogram}return{macd_diff:i,macd_dea:u,macd_histogram:l,macd_diff_x_macd_dea:Dt({fast:i,slow:u})}}(t.verticalOhlcv.close,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,n),this}},{key:"bollingerBands",value:function(t,e,r){var n=function(t,e,r,n){return function(t){var e,r,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,u=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l=t.length,c=Array(l).fill(null),a=Array(l).fill(null),s=Array(l).fill(null),f=null,h=null;u&&(e=Array(l).fill(null),r=Array(l).fill(null),n=new N(o));for(var p,v,y,b=new tt(o,i),d=0;d<l;d++){var m={};b.update(t[d]);var g=!1,w=void 0;try{m=b.getResult()}catch(t){g=!0,m={upper:null,middle:null,lower:null}}if(c[d]=m.upper,a[d]=m.middle,s[d]=m.lower,!1!==u){if(g)e[d]=null,r[d]=null;else{var O=(p=t[d],v=m.upper,{range:(p-(y=m.lower))/(v-y),height:v-y});f=O.range,h=O.height,n.update(h);try{w=n.getResult()}catch(t){w=null}}e[d]=f,r[d]=It(h,w,1.5)}}var _={bollinger_bands_upper:c,bollinger_bands_middle:a,bollinger_bands_lower:s};return u&&(_=Ht(Ht({},_),{},{bollinger_bands_range:e,bollinger_bands_height:r})),_}(t.verticalOhlcv.close,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,n),this.priceBased.push("bollinger_bands_middle","bollinger_bands_upper","bollinger_bands_lower"),this}},{key:"rsi",value:function(t,e,r){var n=function(t,e,r,n){var o=t.verticalOhlcv.close;return"number"==typeof e&&void 0===n&&(n=e),Gt(o,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,n),this}},{key:"orb",value:function(){var t=function(t,e){for(var r=new Array(e).fill(0),n=new Array(e).fill(0),o=0,i=null,u=0,l=0,c=0;c<e;c++){var a=t[c];if(0===c&&!a.hasOwnProperty("date"))throw Error("input ohlcv array must have a date property available in candle datapoint");var s=a.date.split(" ")[0];s!==i&&(i=s,u=a.high,l=a.low),r[o]=u,n[o]=l,o++}return{orb_high:r,orb_low:n}}(this.inputOhlcv,this.len);return Object.assign(this.indicators,t),this.priceBased.push("orb_high","orb_low"),this}},{key:"donchianChannels",value:function(t,e){var r=function(t,e,r){var n=t.verticalOhlcv,o=t.len;return function(t,e,r,n,o){for(var i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),c=[],a=[],s=0;s<o;s++){for(;c.length&&c[0]<=s-r;)c.shift();for(;c.length&&t[c[c.length-1]]<=t[s];)c.pop();for(c.push(s);a.length&&a[0]<=s-r;)a.shift();for(;a.length&&e[a[a.length-1]]>=e[s];)a.pop();if(a.push(s),s>=r-1){var f=t[c[0]],h=e[a[0]],p=(f+h)/2,v=s+n;v>=0&&v<o&&(i[v]=f,u[v]=h,l[v]=p)}}return{donchian_channel_upper:i,donchian_channel_lower:u,donchian_channel_basis:l}}(n.high,n.low,e,r,o)}(this,t,e);return Object.assign(this.indicators,r),this.priceBased.push("donchian_channel_upper","donchian_channel_lower","donchian_channel_basis"),this}},{key:"candlesStudies",value:function(t,e,r){var n=function(t,e,r,n){return function(t){var e,r,n,o,i,u,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,c=arguments.length>2?arguments[2]:void 0,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},f=s.changeLevel,h=void 0===f?7:f,p=s.sizeLevel,v=void 0===p?5:p,y=new Array(c).fill(null),b=new Array(c).fill(null),d=new Array(c).fill(null),m=new Array(c).fill(null),g=new Array(c).fill(null),w=new Array(c).fill(null);a&&(e=new N(l),r=new N(l),n=new N(l),o=new N(l),i=new N(l),u=new N(l));for(var O=0;O<c;O++){var _=t[O],j=t[O-1];if(void 0!==j){var S=_.open,P=_.high,E=_.low,A=_.close,k=null,R=null,T=null,M=null,x=null,D=null,C=A-S,B=_.high-_.low,I=P-Math.max(S,A),L=Math.min(S,A)-E,F=j.close-_.open,H=_.close-j.close;if(a){e.update(Math.abs(I)),r.update(Math.abs(L)),i.update(Math.abs(B)),n.update(F),o.update(C),u.update(H);try{T=e.getResult(),R=r.getResult(),k=n.getResult(),M=o.getResult(),x=i.getResult(),D=u.getResult()}catch(t){M=null,k=null,T=null,R=null,x=null,D=null}y[O]=Lt(C,M,.5,h),m[O]=Lt(F,k,.5,h),w[O]=Lt(H,D,.5,h),b[O]=It(I,T,.5,v),d[O]=It(L,R,.5,v),g[O]=It(B,x,.5,v)}else y[O]=C,m[O]=F,w[O]=H,b[O]=I,d[O]=L,g[O]=B}}return{candle_gap_size:m,candle_body_size:y,candle_top_size:b,candle_bottom_size:d,candle_shadow_size:g,candle_position:w}}(t.inputOhlcv,e,t.len,r,n)}(this,t,e,r);return Object.assign(this.indicators,n),this}}],e&&te(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
|
|
1
|
+
var OHLCV_INDICATORS;(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{t.r(e),t.d(e,{default:()=>ue});var r=1e6,n="[big.js] ",o=n+"Invalid ",i=o+"decimal places",u=o+"rounding mode",l=n+"Division by zero",a={},s=void 0,c=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function f(t,e,r,n){var o=t.c;if(r===s&&(r=t.constructor.RM),0!==r&&1!==r&&2!==r&&3!==r)throw Error(u);if(e<1)n=3===r&&(n||!!o[0])||0===e&&(1===r&&o[0]>=5||2===r&&(o[0]>5||5===o[0]&&(n||o[1]!==s))),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]!==s||1&o[e-1]))||3===r&&(n||!!o[0]),o.length=e,n)for(;++o[--e]>9;)if(o[e]=0,0===e){++t.e,o.unshift(1);break}for(e=o.length;!o[--e];)o.pop()}return t}function h(t,e,r){var n=t.e,o=t.c.join(""),i=o.length;if(e)o=o.charAt(0)+(i>1?"."+o.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)o="0"+o;o="0."+o}else if(n>0)if(++n>i)for(n-=i;n--;)o+="0";else n<i&&(o=o.slice(0,n)+"."+o.slice(n));else i>1&&(o=o.charAt(0)+"."+o.slice(1));return t.s<0&&r?"-"+o:o}function p(t){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p(t)}function v(t){var e="function"==typeof Map?new Map:void 0;return v=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(y())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&b(o,r.prototype),o}(t,arguments,d(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),b(r,t)},v(t)}function y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(y=function(){return!!t})()}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}a.abs=function(){var t=new this.constructor(this);return t.s=1,t},a.cmp=function(t){var e,r=this,n=r.c,o=(t=new r.constructor(t)).c,i=r.s,u=t.s,l=r.e,a=t.e;if(!n[0]||!o[0])return n[0]?i:o[0]?-u:0;if(i!=u)return i;if(e=i<0,l!=a)return l>a^e?1:-1;for(u=(l=n.length)<(a=o.length)?l:a,i=-1;++i<u;)if(n[i]!=o[i])return n[i]>o[i]^e?1:-1;return l==a?0:l>a^e?1:-1},a.div=function(t){var e=this,n=e.constructor,o=e.c,u=(t=new n(t)).c,a=e.s==t.s?1:-1,c=n.DP;if(c!==~~c||c<0||c>r)throw Error(i);if(!u[0])throw Error(l);if(!o[0])return t.s=a,t.c=[t.e=0],t;var h,p,v,y,b,d=u.slice(),m=h=u.length,g=o.length,w=o.slice(0,h),O=w.length,_=t,P=_.c=[],j=0,S=c+(_.e=e.e-t.e)+1;for(_.s=a,a=S<0?0:S,d.unshift(0);O++<h;)w.push(0);do{for(v=0;v<10;v++){if(h!=(O=w.length))y=h>O?1:-1;else for(b=-1,y=0;++b<h;)if(u[b]!=w[b]){y=u[b]>w[b]?1:-1;break}if(!(y<0))break;for(p=O==h?u:d;O;){if(w[--O]<p[O]){for(b=O;b&&!w[--b];)w[b]=9;--w[b],w[O]+=10}w[O]-=p[O]}for(;!w[0];)w.shift()}P[j++]=y?v:++v,w[0]&&y?w[O]=o[m]||0:w=[o[m]]}while((m++<g||w[0]!==s)&&a--);return P[0]||1==j||(P.shift(),_.e--,S--),j>S&&f(_,S,n.RM,w[0]!==s),_},a.eq=function(t){return 0===this.cmp(t)},a.gt=function(t){return this.cmp(t)>0},a.gte=function(t){return this.cmp(t)>-1},a.lt=function(t){return this.cmp(t)<0},a.lte=function(t){return this.cmp(t)<1},a.minus=a.sub=function(t){var e,r,n,o,i=this,u=i.constructor,l=i.s,a=(t=new u(t)).s;if(l!=a)return t.s=-a,i.plus(t);var s=i.c.slice(),c=i.e,f=t.c,h=t.e;if(!s[0]||!f[0])return f[0]?t.s=-a:s[0]?t=new u(i):t.s=1,t;if(l=c-h){for((o=l<0)?(l=-l,n=s):(h=c,n=f),n.reverse(),a=l;a--;)n.push(0);n.reverse()}else for(r=((o=s.length<f.length)?s:f).length,l=a=0;a<r;a++)if(s[a]!=f[a]){o=s[a]<f[a];break}if(o&&(n=s,s=f,f=n,t.s=-t.s),(a=(r=f.length)-(e=s.length))>0)for(;a--;)s[e++]=0;for(a=e;r>l;){if(s[--r]<f[r]){for(e=r;e&&!s[--e];)s[e]=9;--s[e],s[r]+=10}s[r]-=f[r]}for(;0===s[--a];)s.pop();for(;0===s[0];)s.shift(),--h;return s[0]||(t.s=1,s=[h=0]),t.c=s,t.e=h,t},a.mod=function(t){var e,r=this,n=r.constructor,o=r.s,i=(t=new n(t)).s;if(!t.c[0])throw Error(l);return r.s=t.s=1,e=1==t.cmp(r),r.s=o,t.s=i,e?new n(r):(o=n.DP,i=n.RM,n.DP=n.RM=0,r=r.div(t),n.DP=o,n.RM=i,this.minus(r.times(t)))},a.neg=function(){var t=new this.constructor(this);return t.s=-t.s,t},a.plus=a.add=function(t){var e,r,n,o=this,i=o.constructor;if(t=new i(t),o.s!=t.s)return t.s=-t.s,o.minus(t);var u=o.e,l=o.c,a=t.e,s=t.c;if(!l[0]||!s[0])return s[0]||(l[0]?t=new i(o):t.s=o.s),t;if(l=l.slice(),e=u-a){for(e>0?(a=u,n=s):(e=-e,n=l),n.reverse();e--;)n.push(0);n.reverse()}for(l.length-s.length<0&&(n=s,s=l,l=n),e=s.length,r=0;e;l[e]%=10)r=(l[--e]=l[e]+s[e]+r)/10|0;for(r&&(l.unshift(r),++a),e=l.length;0===l[--e];)l.pop();return t.c=l,t.e=a,t},a.pow=function(t){var e=this,r=new e.constructor("1"),n=r,i=t<0;if(t!==~~t||t<-1e6||t>1e6)throw Error(o+"exponent");for(i&&(t=-t);1&t&&(n=n.times(e)),t>>=1;)e=e.times(e);return i?r.div(n):n},a.prec=function(t,e){if(t!==~~t||t<1||t>r)throw Error(o+"precision");return f(new this.constructor(this),t,e)},a.round=function(t,e){if(t===s)t=0;else if(t!==~~t||t<-r||t>r)throw Error(i);return f(new this.constructor(this),t+this.e+1,e)},a.sqrt=function(){var t,e,r,o=this,i=o.constructor,u=o.s,l=o.e,a=new i("0.5");if(!o.c[0])return new i(o);if(u<0)throw Error(n+"No square root");0===(u=Math.sqrt(o+""))||u===1/0?((e=o.c.join("")).length+l&1||(e+="0"),l=((l+1)/2|0)-(l<0||1&l),t=new i(((u=Math.sqrt(e))==1/0?"5e":(u=u.toExponential()).slice(0,u.indexOf("e")+1))+l)):t=new i(u+""),l=t.e+(i.DP+=4);do{r=t,t=a.times(r.plus(o.div(r)))}while(r.c.slice(0,l).join("")!==t.c.slice(0,l).join(""));return f(t,(i.DP-=4)+t.e+1,i.RM)},a.times=a.mul=function(t){var e,r=this,n=r.constructor,o=r.c,i=(t=new n(t)).c,u=o.length,l=i.length,a=r.e,s=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=a+s,u<l&&(e=o,o=i,i=e,s=u,u=l,l=s),e=new Array(s=u+l);s--;)e[s]=0;for(a=l;a--;){for(l=0,s=u+a;s>a;)l=e[s]+i[a]*o[s-a-1]+l,e[s--]=l%10,l=l/10|0;e[s]=l}for(l?++t.e:e.shift(),a=e.length;!e[--a];)e.pop();return t.c=e,t},a.toExponential=function(t,e){var n=this,o=n.c[0];if(t!==s){if(t!==~~t||t<0||t>r)throw Error(i);for(n=f(new n.constructor(n),++t,e);n.c.length<t;)n.c.push(0)}return h(n,!0,!!o)},a.toFixed=function(t,e){var n=this,o=n.c[0];if(t!==s){if(t!==~~t||t<0||t>r)throw Error(i);for(t=t+(n=f(new n.constructor(n),t+n.e+1,e)).e+1;n.c.length<t;)n.c.push(0)}return h(n,!1,!!o)},a[Symbol.for("nodejs.util.inspect.custom")]=a.toJSON=a.toString=function(){var t=this,e=t.constructor;return h(t,t.e<=e.NE||t.e>=e.PE,!!t.c[0])},a.toNumber=function(){var t=Number(h(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(t.toString()))throw Error(n+"Imprecise conversion");return t},a.toPrecision=function(t,e){var n=this,i=n.constructor,u=n.c[0];if(t!==s){if(t!==~~t||t<1||t>r)throw Error(o+"precision");for(n=f(new i(n),t,e);n.c.length<t;)n.c.push(0)}return h(n,t<=n.e||n.e<=i.NE||n.e>=i.PE,!!u)},a.valueOf=function(){var t=this,e=t.constructor;if(!0===e.strict)throw Error(n+"valueOf disallowed");return h(t,t.e<=e.NE||t.e>=e.PE,!0)},function t(){function e(r){var n=this;if(!(n instanceof e))return r===s?t():new e(r);if(r instanceof e)n.s=r.s,n.e=r.e,n.c=r.c.slice();else{if("string"!=typeof r){if(!0===e.strict&&"bigint"!=typeof r)throw TypeError(o+"value");r=0===r&&1/r<0?"-0":String(r)}!function(t,e){var r,n,i;if(!c.test(e))throw Error(o+"number");for(t.s="-"==e.charAt(0)?(e=e.slice(1),-1):1,(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),i=e.length,n=0;n<i&&"0"==e.charAt(n);)++n;if(n==i)t.c=[t.e=0];else{for(;i>0&&"0"==e.charAt(--i););for(t.e=r-n-1,t.c=[],r=0;n<=i;)t.c[r++]=+e.charAt(n++)}}(n,r)}n.constructor=e}return e.prototype=a,e.DP=20,e.RM=1,e.NE=-7,e.PE=21,e.strict=!1,e.roundDown=0,e.roundHalfUp=1,e.roundHalfEven=2,e.roundUp=3,e}();var m=function(t){function e(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Not enough data";return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t=function(t,e,r){return e=d(e),function(t,e){if(e&&("object"==p(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,y()?Reflect.construct(e,r||[],d(t).constructor):e.apply(t,r))}(this,e,[r]),Object.setPrototypeOf(t,(this instanceof e?this.constructor:void 0).prototype),t.name="NotEnoughDataError",t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&b(t,e)}(e,t),r=e,Object.defineProperty(r,"prototype",{writable:!1}),r;var r}(v(Error));function g(t){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g(t)}function w(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,_(n.key),n)}}function O(t,e,r){return(e=_(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _(t){var e=function(t,e){if("object"!=g(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=g(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==g(e)?e:e+""}var P=function(){return t=function t(){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),O(this,"previousHighest",void 0),O(this,"highest",void 0),O(this,"previousLowest",void 0),O(this,"lowest",void 0),O(this,"previousResult",void 0),O(this,"result",void 0)},(e=[{key:"isStable",get:function(){return void 0!==this.result}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"setResult",value:function(t,e){return e&&(this.highest=this.previousHighest,this.lowest=this.previousLowest,this.result=this.previousResult),void 0===this.highest?this.highest=t:t>this.highest?(this.previousHighest=this.highest,this.highest=t):this.previousHighest=this.highest,void 0===this.lowest?this.lowest=t:t<this.lowest?(this.previousLowest=this.lowest,this.lowest=t):this.previousLowest=this.lowest,this.previousResult=this.result,this.result=t}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&w(t.prototype,e),r&&w(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function j(t){return j="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},j(t)}function S(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,T(n.key),n)}}function A(t,e,r){return e=R(e),function(t,e){if(e&&("object"==j(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,E()?Reflect.construct(e,r||[],R(t).constructor):e.apply(t,r))}function E(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(E=function(){return!!t})()}function R(t){return R=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},R(t)}function k(t,e){return k=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},k(t,e)}function T(t){var e=function(t,e){if("object"!=j(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=j(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==j(e)?e:e+""}var M=function(t){function e(t){var r,n,o,i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),n=r=A(this,e),i=void 0,(o=T(o="interval"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,r.interval=t,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&k(t,e)}(e,t),r=e,(n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"replace",value:function(t){return this.update(t,!0)}}])&&S(r.prototype,n),o&&S(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(P);function x(t){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},x(t)}function C(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,F(n.key),n)}}function D(t,e,r){return e=B(e),function(t,e){if(e&&("object"==x(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,I()?Reflect.construct(e,r||[],B(t).constructor):e.apply(t,r))}function I(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(I=function(){return!!t})()}function B(t){return B=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},B(t)}function L(t,e){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},L(t,e)}function F(t){var e=function(t,e){if("object"!=x(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=x(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==x(e)?e:e+""}var V=function(t){function e(){var t,r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,u=new Array(i),l=0;l<i;l++)u[l]=arguments[l];return r=t=D(this,e,[].concat(u)),o=[],(n=F(n="prices"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&L(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t),this.prices.length>this.interval&&this.prices.shift(),this.prices.length===this.interval){var r=this.prices.reduce((function(t,e){return t+e}),0);return this.setResult(r/this.prices.length,e)}}}],n&&C(r.prototype,n),o&&C(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(M);function N(t){return N="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},N(t)}function H(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,W(n.key),n)}}function q(t,e,r){return e=G(e),function(t,e){if(e&&("object"==N(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,z()?Reflect.construct(e,r||[],G(t).constructor):e.apply(t,r))}function z(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(z=function(){return!!t})()}function G(t){return G=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},G(t)}function U(t,e){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},U(t,e)}function $(t,e,r){return(e=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"!=N(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=N(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==N(e)?e:e+""}var J=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),$(r=q(this,e),"interval",void 0),$(r,"indicator",void 0),$(r,"smoothingFactor",void 0),r.interval=t,r.indicator=new V(t),r.smoothingFactor=1/r.interval,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&U(t,e)}(e,t),r=e,n=[{key:"updates",value:function(t){var e=this;return t.forEach((function(t){return e.update(t)})),this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.indicator.update(t);if(e&&void 0!==this.previousResult){var n=(t-this.previousResult)*this.smoothingFactor;return this.setResult(n+this.previousResult,e)}if(!e&&void 0!==this.result){var o=(t-this.result)*this.smoothingFactor;return this.setResult(o+this.result,e)}if(void 0===this.result&&void 0!==r)return this.setResult(r,e)}}],n&&H(r.prototype,n),o&&H(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(P);function K(t){return t.length?t.reduce((function(t,e){return t+e}),0)/t.length:0}function Y(t){return Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Y(t)}function Q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Z(n.key),n)}}function X(t,e,r){return(e=Z(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Z(t){var e=function(t,e){if("object"!=Y(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Y(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Y(e)?e:e+""}var tt=function(){return t=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),X(this,"interval",void 0),X(this,"deviationMultiplier",void 0),X(this,"prices",[]),X(this,"result",void 0),this.interval=e,this.deviationMultiplier=r},(e=[{key:"update",value:function(t){if(this.prices.push(t),this.prices.length>this.interval){this.prices.shift();var e=K(this.prices),r=function(t,e){var r=e||K(t),n=K(t.map((function(t){return t-r})).map((function(t){return t*t})));return Math.sqrt(n)}(this.prices,e);return this.result={lower:e-r*this.deviationMultiplier,middle:e,upper:e+r*this.deviationMultiplier}}}},{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}}])&&Q(t.prototype,e),r&&Q(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function et(t){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},et(t)}function rt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,at(n.key),n)}}function nt(t,e,r){return e=it(e),function(t,e){if(e&&("object"==et(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,ot()?Reflect.construct(e,r||[],it(t).constructor):e.apply(t,r))}function ot(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(ot=function(){return!!t})()}function it(t){return it=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},it(t)}function ut(t,e){return ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},ut(t,e)}function lt(t,e,r){return(e=at(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function at(t){var e=function(t,e){if("object"!=et(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=et(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==et(e)?e:e+""}var st=function(t){function e(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),lt(r=nt(this,e,[t]),"interval",void 0),lt(r,"pricesCounter",0),lt(r,"weightFactor",void 0),r.interval=t,r.weightFactor=2/(r.interval+1),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ut(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?e&&0===this.pricesCounter&&this.pricesCounter++:this.pricesCounter++,e&&void 0!==this.previousResult?this.setResult(t*this.weightFactor+this.previousResult*(1-this.weightFactor),e):this.setResult(t*this.weightFactor+(void 0!==this.result?this.result:t)*(1-this.weightFactor),e)}},{key:"getResult",value:function(){if(this.pricesCounter<this.interval)throw new m;return this.result}},{key:"isStable",get:function(){try{return this.getResult(),!0}catch(t){return!1}}}],n&&rt(r.prototype,n),o&&rt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(M);function ct(t){return ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ct(t)}function ft(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,pt(n.key),n)}}function ht(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"!=ct(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ct(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ct(e)?e:e+""}var vt=function(){return t=function t(e,r,n){(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),ht(this,"short",void 0),ht(this,"long",void 0),ht(this,"signal",void 0),ht(this,"prices",[]),ht(this,"result",void 0),this.short=e,this.long=r,this.signal=n},e=[{key:"getResult",value:function(){if(void 0===this.result)throw new m;return this.result}},{key:"isStable",get:function(){return void 0!==this.result}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.prices.length&&e?this.prices[this.prices.length-1]=t:this.prices.push(t);var r=this.short.update(t,e),n=this.long.update(t,e);if(this.prices.length>this.long.interval&&this.prices.shift(),this.prices.length===this.long.interval){var o=r-n,i=this.signal.update(o,e);return this.result={histogram:o-i,macd:o,signal:i}}}}],e&&ft(t.prototype,e),r&&ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function yt(t){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yt(t)}function bt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,_t(n.key),n)}}function dt(t,e,r){return e=gt(e),function(t,e){if(e&&("object"==yt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,mt()?Reflect.construct(e,r||[],gt(t).constructor):e.apply(t,r))}function mt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(mt=function(){return!!t})()}function gt(t){return gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},gt(t)}function wt(t,e){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},wt(t,e)}function Ot(t,e,r){return(e=_t(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _t(t){var e=function(t,e){if("object"!=yt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==yt(e)?e:e+""}var Pt=function(t){function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:J;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),Ot(r=dt(this,e),"interval",void 0),Ot(r,"previousPrices",[]),Ot(r,"avgGain",void 0),Ot(r,"avgLoss",void 0),Ot(r,"maxValue",100),r.interval=t,r.avgGain=new n(r.interval),r.avgLoss=new n(r.interval),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&wt(t,e)}(e,t),r=e,n=[{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.previousPrices.length&&e?this.previousPrices[this.previousPrices.length-1]=t:this.previousPrices.push(t),!(this.previousPrices.length<2)){var r=t,n=this.previousPrices[this.previousPrices.length-2];if(r>n?(this.avgLoss.update(0,e),this.avgGain.update(t-n,e)):(this.avgLoss.update(n-r,e),this.avgGain.update(0,e)),this.avgGain.isStable){var o=this.avgLoss.getResult();if(0===o)return this.setResult(100,e);var i=this.avgGain.getResult()/o;return this.setResult(this.maxValue-this.maxValue/(i+1),e)}}}}],n&&bt(r.prototype,n),o&&bt(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(P);function jt(t){return jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},jt(t)}function St(t){return St="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},St(t)}var At=function(t,e){if(void 0===t||void 0===e)throw Error("undefined param in getEMA");for(var r=t.length,n=new Array(r).fill(null),o=new st(e),i=0;i<r;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function Et(t){return Et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Et(t)}var Rt=function(t,e){if(void 0===t||void 0===e)throw Error("undefined param in getSMA");for(var r=t.length,n=new Array(r).fill(null),o=new V(e),i=0;i<r;i++){var u=null;if(null!==t[i]){o.update(t[i]);try{u=o.getResult()}catch(t){u=null}}n[i]=u}return n};function kt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var Tt=function(t,e){return t===e},Mt=function(t,e){return t>e},xt=function(t,e){return t<e},Ct=function(t){var e=t.fast,r=t.high,n=t.low,o=t.slow,i=e.length;if(i==!o.length)throw Error("fast and slow do not have the same length");for(var u=new Array(i).fill(.5),l=0;l<i;l++){var a=(null==u?void 0:u[l-1])||.5,s=e[l],c=o[l],f=null==r?void 0:r[l],h=null==n?void 0:n[l];if(!r&&!n||void 0!==f&&void 0!==h){var p=o[l-1],v=null==r?void 0:r[l-1],y=null==n?void 0:n[l-1];if(!r&&!n||void 0!==v&&void 0!==y&&void 0!==p){var b=void 0;null===s||null===c?b=.5:Tt(s,c)?b=a:Mt(s,c)?b=xt(h,c)&&Mt(y,p)?0:1:xt(s,c)&&(b=Mt(f,c)&&xt(v,p)?1:0),u[l]=b}}}var d=It(u);return Dt(d)},Dt=function(t){var e=t.map((function(t){return t.length}));return t.map((function(t,r){var n=e[r];return t.map((function(t,e){var r=n-e;return.5===t&&(r=0),1===t&&(r*=1),0===t&&(r*=-1),r})).reverse()})).flat()},It=function(t){return 0===t.length?[]:t.reduce((function(t,e,r,n){if(0===r)t.push([e]);else{var o=n[r-1],i=t[t.length-1];e!==o?t.push([e]):i.push(e)}return t}),[])},Bt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1.5,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;if(null===t||null===e||null===r)return null;if(n<2)throw new Error("numLevels must be at least 2");for(var o=4*r/(n-1),i=[],u=0;u<n-1;u++)i.push(e-2*r+u*o);for(var l=i.length-1;l>=0;l--)if(t>i[l])return(l+1)/(n-1);return 0};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 Ft(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 Vt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ft(Object(r),!0).forEach((function(e){Nt(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ft(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function Nt(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Lt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Lt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Lt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ht(t){return Ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ht(t)}var qt={getSMA:Rt,getEMA:At},zt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"SMA",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:14,o=t.length;if(o<e)return[];for(var i=new Array(o).fill(null),u=new Pt(e),l=0;l<o;l++){var a=null;if(null!==t[l]){u.update(t[l]);try{a=u.getResult()}catch(t){a=null}}i[l]=a}var s,c,f,h=(s={},c="rsi_".concat(e),f=i,(c=function(t){var e=function(t,e){if("object"!=Ht(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Ht(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ht(e)?e:e+""}(c))in s?Object.defineProperty(s,c,{value:f,enumerable:!0,configurable:!0,writable:!0}):s[c]=f,s);if("string"==typeof r&&"number"==typeof n&&qt.hasOwnProperty("get".concat(r))){var p=qt["get".concat(r)](i,n);h["rsi_".concat(r,"_").concat(n)]=p,h["rsi_".concat(e,"_x_rsi_").concat(r,"_").concat(n)]=Ct({fast:i,slow:p})}return h};function Gt(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 Ut(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ut(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}function 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 $t={midPriceOpenClose:!1,midPriceHighLow:!1,sessionIndex:!1,sessionIntradayIndex:!1,dayOfTheWeek:!1,dayOfTheMonth:!1,weekOfTheMonth:!1},Wt=function(t){var e=new Date(t),r=e.getDay(),n=e.getDate(),o=new Date(e.getFullYear(),e.getMonth(),1).getDay();return{day_of_the_week:r,day_of_the_month:n,week_of_the_month:Math.ceil((n+o)/7)}},Jt=function(t,e){for(var r=t.length,n=new V(e),o=new Array(r),i=0,u=0,l=0,a=0;a<r;a++)if(n.update(t[a]),n.isStable){var s=n.getResult();o[a]=s,i+=s,u+=s*s,l++}else o[a]=null;var c=i/l,f=u/l-c*c,h=Math.sqrt(f);return o.map((function(t){return null!==t?(t-c)/h:null}))},Kt=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=Jt(t,r),o=Jt(e,r),i=t.length,u=[],l=0,a=0,s=0,c=0,f=0,h=0,p=-1,v=0;v<i;v++){if(null!==n[v]&&null!==o[v]){p=v;break}u.push(0)}if(-1===p)return new Array(i).fill(0);for(var y=p;y<i;y++){var b=n[y],d=o[y];if(null!==b&&null!==d)if(l+=b,a+=d,s+=b*d,c+=b*b,f+=d*d,++h<2)u.push(0);else{var m=h*s-l*a,g=Math.sqrt((h*c-l*l)*(h*f-a*a)),w=0===g?0:m/g;u.push(w)}else l=a=s=c=f=h=0,u.push(0)}return u};function Yt(t){return function(t){if(Array.isArray(t))return Zt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Xt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,u,l=[],a=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=i.call(r)).done)&&(l.push(n.value),l.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{if(!a&&null!=r.return&&(u=r.return(),Object(u)!==u))return}finally{if(s)throw o}}return l}}(t,e)||Xt(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 Xt(t,e){if(t){if("string"==typeof t)return Zt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Zt(t,e):void 0}}function Zt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var te=function(t){for(var e=t.input,r=t.inputParams,n=new(0,t.OHLCV_INDICATORS)({input:e,studyOptions:t.studyOptions}),o=0,i=Object.entries(r);o<i.length;o++){var u=Qt(i[o],2),l=u[0],a=u[1];if(!["crossPairs","lag"].includes(l)&&Array.isArray(a))for(var s=0;s<a.length;s++){var c=a[s];Array.isArray(c)&&(c.length>0?n[l].apply(n,Yt(c)):n[l]())}}for(var f=0,h=Object.entries(r);f<h.length;f++){var p=Qt(h[f],2),v=p[0],y=p[1];if(["crossPairs","lag"].includes(v)&&Array.isArray(y))for(var b=0;b<y.length;b++){var d=y[b];Array.isArray(d)&&(d.length>0?n[v].apply(n,Yt(d)):n[v]())}}return console.log(n.getLastValues()),n};function ee(t){return ee="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},ee(t)}function re(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,u,l=[],a=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=i.call(r)).done)&&(l.push(n.value),l.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{if(!a&&null!=r.return&&(u=r.return(),Object(u)!==u))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return ne(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)?ne(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 ne(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,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,ie(n.key),n)}}function ie(t){var e=function(t,e){if("object"!=ee(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=ee(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ee(e)?e:e+""}var ue=function(){return t=function t(e){var r=e.input,n=e.ticker,o=void 0===n?null:n,i=e.studyOptions,u=void 0===i?null: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.priceBased=["open","high","low","close","mid_price_open_close","mid_price_high_low"],this.len=r.length,this.crossPairsArr=[],this.inputOhlcv=r,this.studyOptions=null===u?$t:u,this.verticalOhlcv=function(t,e,r){if(Boolean(r))for(var n in r)if(!$t.hasOwnProperty(n))throw new Error("Key ".concat(n," not found in defaultStudyOptions. Available options: ").concat(Object.keys($t).join(", ")));var o=r.midPriceOpenClose,i=r.midPriceHighLow,u=r.sessionIndex,l=r.sessionIntradayIndex,a=r.dayOfTheWeek,s=r.dayOfTheMonth,c=r.weekOfTheMonth,f=["open","high","low","close","volume"];o&&f.push("mid_price_open_close"),i&&f.push("mid_price_high_low");for(var h=new Set(f),p={},v=0,y=f;v<y.length;v++)p[y[v]]=new Array(e);for(var b,d=[],m=0,g=Object.keys(t[0]);m<g.length;m++){var w=g[m];h.has(w)||(p[w]=new Array(e),d.push(w))}var O,_=0,P=0,j=(O=t)[0].hasOwnProperty("date")&&"string"==typeof O[0].date&&/^\d{4}-\d{2}-\d{2}/.test(O[0].date);j&&(u&&(p.session_index=new Array(e)),l&&(p.session_intraday_index=new Array(e)),a&&(p.day_of_the_week=new Array(e)),s&&(p.day_of_the_month=new Array(e)),c&&(p.week_of_the_month=new Array(e)),b=t[0].date.slice(0,10));for(var S=0;S<e;S++){var A=t[S];p.open[S]=A.open,p.high[S]=A.high,p.low[S]=A.low,p.close[S]=A.close,p.volume[S]=A.volume,o&&(p.mid_price_open_close[S]=(A.open+A.close)/2),i&&(p.mid_price_high_low[S]=(A.high+A.low)/2);var E,R=Gt(d);try{for(R.s();!(E=R.n()).done;){var k=E.value;p[k][S]=A[k]}}catch(t){R.e(t)}finally{R.f()}if(j){var T=A.date.slice(0,10);T!==b&&(b=T,_++,P=0);var M=Wt(T),x=M.day_of_the_week,C=M.day_of_the_month,D=M.week_of_the_month;a&&(p.day_of_the_week[S]=x),s&&(p.day_of_the_month[S]=C),c&&(p.week_of_the_month[S]=D),u&&(p.session_index[S]=_),l&&(p.session_intraday_index[S]=P),P++}}return p}(r,this.len,this.studyOptions),this.indicators={},this.studies={},this.utilities={correlation:Kt},this.inputParams={crossPairs:null,lag:null,relativeVolume:null,ema:null,sma:null,macd:null,orb:null,bollingerBands:null,rsi:null,donchianChannels:null,candlesStudies:null,volumeOscillator:null},this.setIndicatorsFromInputParams=te,this},e=[{key:"getData",value:function(){this.compute();for(var t=this.verticalOhlcv,e=Object.keys(t),r=t[e[0]].length,n=e.length,o=[],i=0;i<r;i++){for(var u={},l=!1,a=0;a<n;a++){var s=e[a],c=t[s][i];if(null==c){l=!0;break}u[s]=c}l||o.push(u)}return o}},{key:"getLastValues",value:function(){return this.getData()[this.getData().length-1]}},{key:"compute",value:function(){if(0===Object.keys(this.indicators).length)return this;for(var t=this.addColumn.bind(this),e=0,r=Object.entries(this.indicators);e<r.length;e++){var n=re(r[e],2),o=n[0],i=n[1];this.verticalOhlcv.hasOwnProperty(o)?delete this.indicators[o]:t(o,i)}return this}},{key:"addColumn",value:function(t,e){var r=this.len;if(t=t.toLowerCase(),e.length>r)throw new Error("Invalid column data: The length of the new column exceeds the length of the OHLCV data");if(e.length<r){var n=r-e.length;e=new Array(n).fill(null).concat(e)}this.verticalOhlcv[t]=e}},{key:"crossPairs",value:function(t){var e,r;null!==(r=(e=this.inputParams).crossPairs)&&void 0!==r||(e.crossPairs=[]),this.inputParams.crossPairs.push([t]),this.compute();var n=function(t,e){var r,n=t.verticalOhlcv,o=t.len,i={},u={},l={},a=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return kt(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)?kt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}(e);try{var s=function(){var t=r.value,e=t.fast,a=t.slow,s=t.count;if(!e||!a)return 1;"number"!=typeof a||i[a]||(i[a]=Array(o).fill(a));var c="".concat(e,"_x_").concat(a),f="".concat(e,"_c_").concat(a),h=function(t){return void 0!==s?t.slice(-s).filter((function(t){return 1===t||-1===t})).length:0};if(n[c]){var p=n[c];u[c]=p,void 0!==s&&(l[f]=h(p))}else if((n[e]||"price"===e)&&n[a]){var v=Ct("price"===e?{fast:n.close,high:n.high,low:n.low,slow:n[a]}:{fast:n[e],slow:n[a]});u[c]=v,void 0!==s&&(l[f]=h(v))}else{if(!n[e]||!i[a])throw Error("Missing ohlcv properties for ".concat(e," or ").concat(a));var y=Ct({fast:n[e],slow:i[a]});u[c]=y,void 0!==s&&(l[f]=h(y))}};for(a.s();!(r=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}return{x:u,c:l}}(this,t),o=n.x,i=n.c;return Object.assign(this.indicators,o),Object.assign(this.studies,i),this.compute(),this}},{key:"lag",value:function(){var t,e,r=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["close"],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!==(e=(t=this.inputParams).lag)&&void 0!==e||(t.lag=[]),this.inputParams.lag.push([n,o]),this.compute();for(var i=this.verticalOhlcv,u=this.priceBased,l=0;l<n.length;l++)for(var a=function(){var t,e,o,a="".concat(n[l],"_lag_").concat(s),c=i[n[l]].slice(0,-s);Object.assign(r.indicators,(t={},o=c,(e=ie(e=a))in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t)),u.find((function(t){return a.startsWith(t)}))&&r.priceBased.push(a)},s=1;s<=o;s++)a();return this.compute(),this}},{key:"relativeVolume",value:function(t){var e,r;null!==(r=(e=this.inputParams).relativeVolume)&&void 0!==r||(e.relativeVolume=[]),this.inputParams.relativeVolume.push([t]);var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,r=function(t,e){for(var r=new V(e),n=new Array(t.length).fill(null),o=new Array(t.length).fill(null),i=0;i<t.length;i++){var u=null;r.update(t[i]);try{u=r.getResult()}catch(t){u=null}n[i]=u,"number"==typeof n[i-1]&&(o[i]=t[i]/n[i-1])}return o}(t.verticalOhlcv.volume,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=jt(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=jt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==jt(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"relative_volume_".concat(e),r)}(this,t);return Object.assign(this.indicators,n),this}},{key:"ema",value:function(t){var e,r;null!==(r=(e=this.inputParams).ema)&&void 0!==r||(e.ema=[]),this.inputParams.ema.push([t]);var n=function(t,e){var r=t.verticalOhlcv.close,n=At(r,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=St(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=St(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==St(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"ema_".concat(e),n)}(this,t);return Object.assign(this.indicators,n),this.priceBased.push("ema_".concat(t)),this}},{key:"sma",value:function(t){var e,r;null!==(r=(e=this.inputParams).sma)&&void 0!==r||(e.sma=[]),this.inputParams.sma.push([t]);var n=function(t,e){var r=t.verticalOhlcv.close,n=Rt(r,e);return function(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=Et(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=Et(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Et(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}({},"sma_".concat(e),n)}(this,t);return Object.assign(this.indicators,n),this.priceBased.push("sma_".concat(t)),this}},{key:"macd",value:function(t,e,r){var n,o;null!==(o=(n=this.inputParams).macd)&&void 0!==o||(n.macd=[]),this.inputParams.macd.push([t,e,r]);var i=function(t,e,r,n){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:26,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:9,o=t.length,i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),a=new vt(new st(e),new st(r),new st(n)),s=0;s<o;s++){var c={};a.update(t[s]);try{c=a.getResult()}catch(t){c={macd:null,signal:null,histogram:null}}i[s]=c.macd,u[s]=c.signal,l[s]=c.histogram}return{macd_diff:i,macd_dea:u,macd_histogram:l,macd_diff_x_macd_dea:Ct({fast:i,slow:u})}}(t.verticalOhlcv.close,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,i),this}},{key:"bollingerBands",value:function(t,e,r){var n,o;null!==(o=(n=this.inputParams).bollingerBands)&&void 0!==o||(n.bollingerBands=[]),this.inputParams.bollingerBands.push([t,e,r]);var i=function(t,e,r,n){return function(t){var e,r,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,u=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l=t.length,a=Array(l).fill(null),s=Array(l).fill(null),c=Array(l).fill(null),f=null,h=null;u&&(e=Array(l).fill(null),r=Array(l).fill(null),n=new V(o));for(var p,v,y,b=new tt(o,i),d=0;d<l;d++){var m={};b.update(t[d]);var g=!1,w=void 0;try{m=b.getResult()}catch(t){g=!0,m={upper:null,middle:null,lower:null}}if(a[d]=m.upper,s[d]=m.middle,c[d]=m.lower,!1!==u){if(g)e[d]=null,r[d]=null;else{var O=(p=t[d],v=m.upper,{range:(p-(y=m.lower))/(v-y),height:v-y});f=O.range,h=O.height,n.update(h);try{w=n.getResult()}catch(t){w=null}}e[d]=f,r[d]=Bt(h,w,1.5)}}var _={bollinger_bands_upper:a,bollinger_bands_middle:s,bollinger_bands_lower:c};return u&&(_=Vt(Vt({},_),{},{bollinger_bands_range:e,bollinger_bands_height:r})),_}(t.verticalOhlcv.close,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,i),this.priceBased.push("bollinger_bands_middle","bollinger_bands_upper","bollinger_bands_lower"),this}},{key:"rsi",value:function(t,e,r){var n,o;null!==(o=(n=this.inputParams).rsi)&&void 0!==o||(n.rsi=[]),this.inputParams.rsi.push([t,e,r]);var i=function(t,e,r,n){var o=t.verticalOhlcv.close;return"number"==typeof e&&void 0===n&&(n=e),zt(o,e,r,n)}(this,t,e,r);return Object.assign(this.indicators,i),this}},{key:"orb",value:function(){var t,e;null!==(e=(t=this.inputParams).orb)&&void 0!==e||(t.orb=[]),this.inputParams.orb.push([]);var r=function(t,e){for(var r=new Array(e).fill(0),n=new Array(e).fill(0),o=0,i=null,u=0,l=0,a=0;a<e;a++){var s=t[a];if(0===a&&!s.hasOwnProperty("date"))throw Error("input ohlcv array must have a date property available in candle datapoint");var c=s.date.split(" ")[0];c!==i&&(i=c,u=s.high,l=s.low),r[o]=u,n[o]=l,o++}return{orb_high:r,orb_low:n}}(this.inputOhlcv,this.len);return Object.assign(this.indicators,r),this.priceBased.push("orb_high","orb_low"),this}},{key:"donchianChannels",value:function(t,e){var r,n;null!==(n=(r=this.inputParams).donchianChannels)&&void 0!==n||(r.donchianChannels=[]),this.inputParams.donchianChannels.push([t,e]);var o=function(t,e,r){var n=t.verticalOhlcv,o=t.len;return function(t,e,r,n,o){for(var i=new Array(o).fill(null),u=new Array(o).fill(null),l=new Array(o).fill(null),a=[],s=[],c=0;c<o;c++){for(;a.length&&a[0]<=c-r;)a.shift();for(;a.length&&t[a[a.length-1]]<=t[c];)a.pop();for(a.push(c);s.length&&s[0]<=c-r;)s.shift();for(;s.length&&e[s[s.length-1]]>=e[c];)s.pop();if(s.push(c),c>=r-1){var f=t[a[0]],h=e[s[0]],p=(f+h)/2,v=c+n;v>=0&&v<o&&(i[v]=f,u[v]=h,l[v]=p)}}return{donchian_channel_upper:i,donchian_channel_lower:u,donchian_channel_basis:l}}(n.high,n.low,e,r,o)}(this,t,e);return Object.assign(this.indicators,o),this.priceBased.push("donchian_channel_upper","donchian_channel_lower","donchian_channel_basis"),this}},{key:"candlesStudies",value:function(t,e,r){var n,o;null!==(o=(n=this.inputParams).candlesStudies)&&void 0!==o||(n.candlesStudies=[]),this.inputParams.candlesStudies.push([t,e,r]);var i=function(t,e,r,n){return function(t){var e,r,n,o,i,u,l,a,s,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,f=arguments.length>2?arguments[2]:void 0,h=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},v=p.changeLevel,y=void 0===v?7:v,b=p.sizeLevel,d=void 0===b?5:b,m=new Array(f).fill(null),g=new Array(f).fill(null),w=new Array(f).fill(null),O=new Array(f).fill(null),_=new Array(f).fill(null),P=new Array(f).fill(null),j=new Array(f).fill(null),S=new Array(f).fill(null),A=new Array(f).fill(null);h&&(e=new V(c),r=new V(c),n=new V(c),o=new V(c),i=new V(c),u=new V(c),l=new V(c),a=new V(c),s=new V(c));for(var E=0;E<f;E++){var R=t[E],k=t[E-1];if(void 0!==k){var T=R.open,M=R.high,x=R.low,C=R.close,D=null,I=null,B=null,L=null,F=null,N=null,H=null,q=null,z=null,G=C>T,U=Math.abs(C-T),$=Math.abs(R.high-R.low),W=M-Math.max(T,C),J=Math.min(T,C)-x,K=Math.abs(k.close-R.open),Y=Math.abs(R.close-k.close),Q=Math.abs(R.high-k.high),X=Math.abs(R.low-k.low),Z=Math.abs(R.open-k.open);if(h){e.update(Math.abs(W)),r.update(Math.abs(J)),i.update(Math.abs($)),n.update(K),o.update(U),u.update(Y),l.update(Q),a.update(X),s.update(Z);try{B=e.getResult(),I=r.getResult(),D=n.getResult(),L=o.getResult(),F=i.getResult(),N=u.getResult(),H=l.getResult(),q=a.getResult(),z=s.getResult()}catch(t){L=null,D=null,B=null,I=null,F=null,N=null,H=null,q=null,z=null}m[E]=G?Bt(U,L,2,y):-Math.abs(Bt(U,L,2,y))||0,O[E]=G?Bt(K,D,2,y):-Math.abs(Bt(K,D,2,y))||0,P[E]=G?Bt(Y,N,2,y):-Math.abs(Bt(Y,N,2,y))||0,j[E]=G?Bt(Q,H,2,y):-Math.abs(Bt(Q,H,2,y))||0,S[E]=G?Bt(X,q,2,y):-Math.abs(Bt(X,q,2,y))||0,A[E]=G?Bt(Z,z,2,y):-Math.abs(Bt(Z,z,2,y))||0,g[E]=Bt(W,B,.5,d),w[E]=Bt(J,I,.5,d),_[E]=Bt($,F,.5,d)}else m[E]=U,O[E]=K,P[E]=Y,j[E]=Q,S[E]=X,g[E]=W,w[E]=J,_[E]=$}}return{candle_gap_size:O,candle_body_size:m,candle_top_size:g,candle_bottom_size:w,candle_shadow_size:_,candle_close_direction:P,candle_high_direction:j,candle_low_direction:S,candle_open_direction:A}}(t.inputOhlcv,e,t.len,r,n)}(this,t,e,r);return Object.assign(this.indicators,i),this}},{key:"volumeOscillator",value:function(t,e){var r,n;null!==(n=(r=this.inputParams).volumeOscillator)&&void 0!==n||(r.volumeOscillator=[]),this.inputParams.volumeOscillator.push([t,e]);var o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10;return function(t,e,r){for(var n=new st(e),o=new st(r),i=new Array(t.length).fill(null),u=0;u<t.length;u++){n.update(t[u]),o.update(t[u]);var l=null,a=null;try{l=n.getResult()}catch(t){l=null}try{a=o.getResult()}catch(t){a=null}"number"==typeof l&&"number"==typeof a&&0!==a&&(i[u]=100*(l-a)/a)}return{volume_oscillator:i,volume_oscillator_x_0:Ct({fast:i,slow:new Array(t.length).fill(0)})}}(t.verticalOhlcv.volume,e,r)}(this,t,e);return Object.assign(this.indicators,o),this}}],e&&oe(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()})(),OHLCV_INDICATORS=e})();
|
package/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import { donchianChannels } from './src/moving-averages/donchianChannel.js'
|
|
|
10
10
|
import { parseOhlcvToVertical, defaultStudyOptions } from './src/utilities/parsing-utilities.js'
|
|
11
11
|
import { candlesStudies } from './src/studies/candleStudies.js'
|
|
12
12
|
import { correlation } from './src/studies/correlation.js'
|
|
13
|
+
import { volumeOscillator } from './src/oscillators/volumeOscillator.js'
|
|
14
|
+
import { setIndicatorsFromInputParams } from './src/utilities/setIndicatorsFromInputParams.js'
|
|
13
15
|
|
|
14
16
|
export default class OHLCV_INDICATORS {
|
|
15
17
|
constructor({input, ticker = null, studyOptions = null}) {
|
|
@@ -29,6 +31,23 @@ export default class OHLCV_INDICATORS {
|
|
|
29
31
|
this.utilities = {
|
|
30
32
|
correlation
|
|
31
33
|
}
|
|
34
|
+
this.inputParams = {
|
|
35
|
+
crossPairs: null,
|
|
36
|
+
lag: null,
|
|
37
|
+
relativeVolume: null,
|
|
38
|
+
ema: null,
|
|
39
|
+
sma: null,
|
|
40
|
+
macd: null,
|
|
41
|
+
orb: null,
|
|
42
|
+
bollingerBands: null,
|
|
43
|
+
rsi: null,
|
|
44
|
+
donchianChannels: null,
|
|
45
|
+
candlesStudies: null,
|
|
46
|
+
volumeOscillator: null,
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this.setIndicatorsFromInputParams = setIndicatorsFromInputParams
|
|
50
|
+
|
|
32
51
|
return this
|
|
33
52
|
}
|
|
34
53
|
|
|
@@ -120,6 +139,9 @@ export default class OHLCV_INDICATORS {
|
|
|
120
139
|
|
|
121
140
|
crossPairs(arr)
|
|
122
141
|
{
|
|
142
|
+
|
|
143
|
+
this.inputParams.crossPairs ??= []
|
|
144
|
+
this.inputParams.crossPairs.push([arr])
|
|
123
145
|
|
|
124
146
|
this.compute()
|
|
125
147
|
|
|
@@ -133,6 +155,11 @@ export default class OHLCV_INDICATORS {
|
|
|
133
155
|
}
|
|
134
156
|
|
|
135
157
|
lag(colKeys = ['close'], lags = 1) {
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
this.inputParams.lag ??= []
|
|
161
|
+
this.inputParams.lag.push([colKeys, lags])
|
|
162
|
+
|
|
136
163
|
this.compute();
|
|
137
164
|
const {verticalOhlcv, priceBased} = this;
|
|
138
165
|
|
|
@@ -158,6 +185,9 @@ export default class OHLCV_INDICATORS {
|
|
|
158
185
|
|
|
159
186
|
relativeVolume(size) {
|
|
160
187
|
|
|
188
|
+
this.inputParams.relativeVolume ??= []
|
|
189
|
+
this.inputParams.relativeVolume.push([size])
|
|
190
|
+
|
|
161
191
|
const result = relativeVolume(this, size)
|
|
162
192
|
Object.assign(this.indicators, result)
|
|
163
193
|
|
|
@@ -167,16 +197,21 @@ export default class OHLCV_INDICATORS {
|
|
|
167
197
|
|
|
168
198
|
ema(size) {
|
|
169
199
|
|
|
200
|
+
this.inputParams.ema ??= []
|
|
201
|
+
this.inputParams.ema.push([size])
|
|
170
202
|
|
|
171
|
-
|
|
172
|
-
|
|
203
|
+
const result = ema(this, size)
|
|
204
|
+
Object.assign(this.indicators, result)
|
|
173
205
|
|
|
174
|
-
|
|
206
|
+
this.priceBased.push(`ema_${size}`)
|
|
175
207
|
|
|
176
208
|
return this
|
|
177
209
|
}
|
|
178
210
|
sma(size) {
|
|
179
211
|
|
|
212
|
+
this.inputParams.sma ??= []
|
|
213
|
+
this.inputParams.sma.push([size])
|
|
214
|
+
|
|
180
215
|
const result = sma(this, size)
|
|
181
216
|
Object.assign(this.indicators, result)
|
|
182
217
|
|
|
@@ -186,6 +221,9 @@ export default class OHLCV_INDICATORS {
|
|
|
186
221
|
}
|
|
187
222
|
macd(fastLine, slowLine, signalLine) {
|
|
188
223
|
|
|
224
|
+
this.inputParams.macd ??= []
|
|
225
|
+
this.inputParams.macd.push([fastLine, slowLine, signalLine])
|
|
226
|
+
|
|
189
227
|
const result = macd(this, fastLine, slowLine, signalLine)
|
|
190
228
|
Object.assign(this.indicators, result)
|
|
191
229
|
|
|
@@ -195,6 +233,9 @@ export default class OHLCV_INDICATORS {
|
|
|
195
233
|
bollingerBands(size, times, bollingerBandsStudies)
|
|
196
234
|
{
|
|
197
235
|
|
|
236
|
+
this.inputParams.bollingerBands ??= []
|
|
237
|
+
this.inputParams.bollingerBands.push([size, times, bollingerBandsStudies])
|
|
238
|
+
|
|
198
239
|
const result = bollingerBands(this, size, times, bollingerBandsStudies)
|
|
199
240
|
Object.assign(this.indicators, result)
|
|
200
241
|
|
|
@@ -205,6 +246,9 @@ export default class OHLCV_INDICATORS {
|
|
|
205
246
|
rsi(period, movingAverage, movingAveragePeriod)
|
|
206
247
|
{
|
|
207
248
|
|
|
249
|
+
this.inputParams.rsi ??= []
|
|
250
|
+
this.inputParams.rsi.push([period, movingAverage, movingAveragePeriod])
|
|
251
|
+
|
|
208
252
|
const result = rsi(this, period, movingAverage, movingAveragePeriod)
|
|
209
253
|
Object.assign(this.indicators, result)
|
|
210
254
|
|
|
@@ -212,6 +256,10 @@ export default class OHLCV_INDICATORS {
|
|
|
212
256
|
}
|
|
213
257
|
orb()
|
|
214
258
|
{
|
|
259
|
+
|
|
260
|
+
this.inputParams.orb ??= []
|
|
261
|
+
this.inputParams.orb.push([])
|
|
262
|
+
|
|
215
263
|
const result = orb(this)
|
|
216
264
|
Object.assign(this.indicators, result)
|
|
217
265
|
|
|
@@ -221,6 +269,10 @@ export default class OHLCV_INDICATORS {
|
|
|
221
269
|
}
|
|
222
270
|
donchianChannels(period, offset)
|
|
223
271
|
{
|
|
272
|
+
|
|
273
|
+
this.inputParams.donchianChannels ??= []
|
|
274
|
+
this.inputParams.donchianChannels.push([period, offset])
|
|
275
|
+
|
|
224
276
|
const result = donchianChannels(this, period, offset)
|
|
225
277
|
Object.assign(this.indicators, result)
|
|
226
278
|
|
|
@@ -230,42 +282,26 @@ export default class OHLCV_INDICATORS {
|
|
|
230
282
|
}
|
|
231
283
|
candlesStudies(period, classify, classificationLevels)
|
|
232
284
|
{
|
|
285
|
+
|
|
286
|
+
this.inputParams.candlesStudies ??= []
|
|
287
|
+
this.inputParams.candlesStudies.push([period, classify, classificationLevels])
|
|
288
|
+
|
|
233
289
|
const result = candlesStudies(this, period, classify, classificationLevels)
|
|
234
290
|
Object.assign(this.indicators, result)
|
|
235
291
|
|
|
236
292
|
return this
|
|
237
293
|
}
|
|
238
294
|
|
|
239
|
-
|
|
295
|
+
volumeOscillator(fastPeriod, slowPeriod)
|
|
240
296
|
{
|
|
241
|
-
this.compute()
|
|
242
|
-
|
|
243
|
-
const keyNames = Object.keys(this.verticalOhlcv)
|
|
244
|
-
const result = {}
|
|
245
297
|
|
|
246
298
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
let row = {}
|
|
250
|
-
|
|
251
|
-
for(let k = 0; k < keyNames.length; k++)
|
|
252
|
-
{
|
|
253
|
-
Object.assign(row, {[keyNames[k]]: this.verticalOhlcv[keyNames[k]][x]})
|
|
254
|
-
}
|
|
299
|
+
this.inputParams.volumeOscillator ??= []
|
|
300
|
+
this.inputParams.volumeOscillator.push([fastPeriod, slowPeriod])
|
|
255
301
|
|
|
256
|
-
|
|
257
|
-
{
|
|
258
|
-
if(x === 0)
|
|
259
|
-
{
|
|
260
|
-
result[k] = new Array(this.len).fill(null)
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
result[k][x] = value
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
302
|
+
const result = volumeOscillator(this, fastPeriod, slowPeriod)
|
|
267
303
|
Object.assign(this.indicators, result)
|
|
268
304
|
|
|
269
|
-
return this
|
|
305
|
+
return this
|
|
270
306
|
}
|
|
271
307
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ohlcv-indicators",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.2",
|
|
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",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"test": "node test/test.js",
|
|
9
9
|
"study": "node test/study.js",
|
|
10
|
-
"
|
|
10
|
+
"count": "node test/countUps.js",
|
|
11
11
|
"build": "npx webpack"
|
|
12
12
|
},
|
|
13
13
|
"author": "https://jaimelias.com/",
|
package/src/oscillators/rsi.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getSMA } from "../moving-averages/sma.js";
|
|
2
2
|
import { getEMA } from "../moving-averages/ema.js";
|
|
3
3
|
import { findCrosses } from "../studies/findCrosses.js";
|
|
4
|
-
import {
|
|
4
|
+
import {FasterRSI} from 'trading-signals';
|
|
5
5
|
|
|
6
6
|
const ma = {getSMA, getEMA}
|
|
7
7
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { FasterEMA } from 'trading-signals'
|
|
2
|
+
import { findCrosses } from "../studies/findCrosses.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export const volumeOscillator = (main, fastPeriod = 5, slowPeriod = 10) => {
|
|
6
|
+
const { verticalOhlcv } = main;
|
|
7
|
+
const { volume } = verticalOhlcv;
|
|
8
|
+
|
|
9
|
+
return getVolumeOscillator(volume, fastPeriod, slowPeriod);
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const getVolumeOscillator = (volume, fastPeriod, slowPeriod) => {
|
|
14
|
+
const fastEMA = new FasterEMA(fastPeriod)
|
|
15
|
+
const slowEMA = new FasterEMA(slowPeriod)
|
|
16
|
+
const volume_oscillator = new Array(volume.length).fill(null)
|
|
17
|
+
|
|
18
|
+
for (let i = 0; i < volume.length; i++) {
|
|
19
|
+
|
|
20
|
+
fastEMA.update(volume[i])
|
|
21
|
+
slowEMA.update(volume[i])
|
|
22
|
+
|
|
23
|
+
let fastValue = null
|
|
24
|
+
let slowValue = null
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
fastValue = fastEMA.getResult()
|
|
28
|
+
} catch (err) {
|
|
29
|
+
fastValue = null
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
slowValue = slowEMA.getResult()
|
|
34
|
+
} catch (err) {
|
|
35
|
+
slowValue = null
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (typeof fastValue === 'number' && typeof slowValue === 'number' && slowValue !== 0) {
|
|
39
|
+
|
|
40
|
+
volume_oscillator[i] = 100 * (fastValue - slowValue) / slowValue
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const volume_oscillator_x_0 = findCrosses({fast: volume_oscillator, slow: new Array(volume.length).fill(0)})
|
|
45
|
+
|
|
46
|
+
return {volume_oscillator, volume_oscillator_x_0}
|
|
47
|
+
}
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
//true if first row date starts with yyyy-mm-dd date
|
|
5
5
|
const validateFirstDate = arr => arr[0].hasOwnProperty('date') && typeof arr[0].date === 'string' && /^\d{4}-\d{2}-\d{2}/.test(arr[0].date)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
7
|
export const defaultStudyOptions = {
|
|
11
8
|
midPriceOpenClose: false,
|
|
12
9
|
midPriceHighLow: false,
|
|
@@ -207,13 +204,4 @@ const getDateInfo = dateString => {
|
|
|
207
204
|
day_of_the_month,
|
|
208
205
|
week_of_the_month
|
|
209
206
|
};
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const normalizeArray = (array, min, max, range = [0, 1]) => {
|
|
214
|
-
const [rangeMin, rangeMax] = range;
|
|
215
|
-
const normalized = array.map(value =>
|
|
216
|
-
((value - min) / (max - min)) * (rangeMax - rangeMin) + rangeMin
|
|
217
|
-
);
|
|
218
|
-
return normalized;
|
|
219
207
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const setIndicatorsFromInputParams = ({ input, inputParams, OHLCV_INDICATORS, studyOptions }) => {
|
|
2
|
+
const indicators = new OHLCV_INDICATORS({ input, studyOptions });
|
|
3
|
+
|
|
4
|
+
for (const [key, technical] of Object.entries(inputParams)) {
|
|
5
|
+
|
|
6
|
+
if(['crossPairs', 'lag'].includes(key)) continue
|
|
7
|
+
|
|
8
|
+
if (Array.isArray(technical)) {
|
|
9
|
+
for (let i = 0; i < technical.length; i++) {
|
|
10
|
+
const params = technical[i];
|
|
11
|
+
|
|
12
|
+
if (Array.isArray(params)) {
|
|
13
|
+
if (params.length > 0) {
|
|
14
|
+
indicators[key](...params);
|
|
15
|
+
} else {
|
|
16
|
+
indicators[key]();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
for (const [key, technical] of Object.entries(inputParams)) {
|
|
24
|
+
|
|
25
|
+
if(!['crossPairs', 'lag'].includes(key)) continue
|
|
26
|
+
|
|
27
|
+
if (Array.isArray(technical)) {
|
|
28
|
+
for (let i = 0; i < technical.length; i++) {
|
|
29
|
+
const params = technical[i];
|
|
30
|
+
|
|
31
|
+
if (Array.isArray(params)) {
|
|
32
|
+
if (params.length > 0) {
|
|
33
|
+
indicators[key](...params);
|
|
34
|
+
} else {
|
|
35
|
+
indicators[key]();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
console.log(indicators.getLastValues());
|
|
43
|
+
|
|
44
|
+
return indicators;
|
|
45
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|