@rylorin/technicalindicators
Advanced tools
Comparing version 3.1.20 to 3.1.21
@@ -1,1 +0,1 @@ | ||
class e{constructor(e,t,r){this.next=r,r&&(r.prev=this),this.prev=t,t&&(t.next=this),this.data=e}}class t{constructor(){this._length=0}get head(){return this._head&&this._head.data}get tail(){return this._tail&&this._tail.data}get current(){return this._current&&this._current.data}get length(){return this._length}push(t){this._tail=new e(t,this._tail),0===this._length&&(this._head=this._tail,this._current=this._head,this._next=this._head),this._length++}pop(){var e=this._tail;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._tail=e.prev,this._tail.next=void 0,this._current===e&&(this._current=this._tail,this._next=void 0),e.data)}shift(){var e=this._head;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._head=this._head.next,this._current===e&&(this._current=this._head,this._next=this._current.next),e.data)}unshift(t){this._head=new e(t,void 0,this._head),0===this._length&&(this._tail=this._head,this._next=this._head),this._length++}unshiftCurrent(){var e=this._current;return e===this._head||this._length<2?e&&e.data:(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.next=this._head,e.prev=void 0,this._head.prev=e,this._head=e,e.data)}removeCurrent(){var e=this._current;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):e===this._head?(this._head=e.next,this._head.prev=void 0,this._current=this._head):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.data)}resetCursor(){return this._current=this._next=this._head,this}next(){var e=this._next;if(void 0!==e)return this._next=e.next,this._current=e,e.data}}class r extends t{constructor(e,t,r,s){if(super(),this.size=e,this.maintainHigh=t,this.maintainLow=r,this.maintainSum=s,this.totalPushed=0,this.periodHigh=0,this.periodLow=1/0,this.periodSum=0,!e||"number"!=typeof e)throw"Size required and should be a number.";this._push=this.push,this.push=function(e){this.add(e),this.totalPushed++}}add(e){this.length===this.size?(this.lastShift=this.shift(),this._push(e),this.maintainHigh&&this.lastShift==this.periodHigh&&this.calculatePeriodHigh(),this.maintainLow&&this.lastShift==this.periodLow&&this.calculatePeriodLow(),this.maintainSum&&(this.periodSum=this.periodSum-this.lastShift)):this._push(e),this.maintainHigh&&this.periodHigh<=e&&(this.periodHigh=e),this.maintainLow&&this.periodLow>=e&&(this.periodLow=e),this.maintainSum&&(this.periodSum=this.periodSum+e)}*iterator(){for(this.resetCursor();this.next();)yield this.current}calculatePeriodHigh(){for(this.resetCursor(),this.next()&&(this.periodHigh=this.current);this.next();)this.periodHigh<=this.current&&(this.periodHigh=this.current)}calculatePeriodLow(){for(this.resetCursor(),this.next()&&(this.periodLow=this.current);this.next();)this.periodLow>=this.current&&(this.periodLow=this.current)}}class s{}class n{constructor(){this.open=[],this.high=[],this.low=[],this.close=[],this.volume=[],this.timestamp=[]}}let i={};function l(e,t){i[e]=t}function o(e){return i[e]}function u(e){let t=o("precision");return t?parseFloat(e.toPrecision(t)):e}class a{}class h{constructor(e){this.format=e.format||u}static reverseInputs(e){e.reversedInput&&(e.values&&e.values.reverse(),e.open&&e.open.reverse(),e.high&&e.high.reverse(),e.low&&e.low.reverse(),e.close&&e.close.reverse(),e.volume&&e.volume.reverse(),e.timestamp&&e.timestamp.reverse())}getResult(){return this.result}}class c extends h{constructor(e){super(e),this.period=e.period,this.price=e.values;this.generator=function*(e){var r,s=new t,n=0,i=1,l=yield;for(s.push(0);;)i<e?(i++,s.push(l),n+=l):(r=(n=n-s.shift()+l)/e,s.push(l)),l=yield r}(this.period),this.generator.next(),this.result=[],this.price.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function v(e){h.reverseInputs(e);var t=new c(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}c.calculate=v;class p extends h{constructor(e){super(e);var t,r=e.period,s=e.values,n=2/(r+1);this.result=[],t=new c({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*n+e,r=yield e):(r=yield,(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function d(e){h.reverseInputs(e);var t=new p(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}p.calculate=d;class g extends h{constructor(e){super(e);var r=e.period,s=e.values;this.result=[],this.generator=function*(){let e=new t,s=r*(r+1)/2;for(;;)if(e.length<r)e.push(yield);else{e.resetCursor();let t=0;for(let n=1;n<=r;n++)t+=e.next()*n/s;var n=yield t;e.shift(),e.push(n)}}(),this.generator.next(),s.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(this.format(r.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function w(e){h.reverseInputs(e);var t=new g(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}g.calculate=w;class f extends h{constructor(e){super(e);var t,r=e.period,s=e.values,n=1/r;this.result=[],t=new c({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*n+e,r=yield e):(r=yield,void 0!==(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function x(e){h.reverseInputs(e);var t=new f(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}f.calculate=x;class m extends h{constructor(e){super(e),this.period=e.period,this.price=e.values;this.generator=function*(e){new t;for(var r=0,s=1,n=yield,i=0;;)s<e?(s++,r+=n,i=void 0):s==e?(s++,i=r+=n):i=i-i/e+n,n=yield i}(this.period),this.generator.next(),this.result=[],this.price.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function I(e){h.reverseInputs(e);var t=new m(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}m.calculate=I;class y extends h{constructor(e){super(e);var t=e.SimpleMAOscillator?c:p,r=e.SimpleMASignal?c:p,s=new t({period:e.fastPeriod,values:[],format:e=>e}),n=new t({period:e.slowPeriod,values:[],format:e=>e}),i=new r({period:e.signalPeriod,values:[],format:e=>e}),l=this.format;this.result=[],this.generator=function*(){for(var t,r,o,u,a,h,c=0;;)c<e.slowPeriod?(t=yield,a=s.nextValue(t),h=n.nextValue(t),c++):(a&&h&&(r=a-h,o=i.nextValue(r)),u=r-o,t=yield{MACD:l(r),signal:o?l(o):void 0,histogram:isNaN(u)?void 0:l(u)},a=s.nextValue(t),h=n.nextValue(t))}(),this.generator.next(),e.values.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function P(e){h.reverseInputs(e);var t=new y(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}y.calculate=P;class _ extends h{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,n=yield,i=1,l=0,o=n;for(n=yield;;)(r=(r=n-o)>0?r:0)>0&&(l+=r),i<e?i++:t=void 0===t?l/e:(t*(e-1)+r)/e,o=n,t=void 0!==t?s(t):void 0,n=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function V(e){h.reverseInputs(e);var t=new _(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}_.calculate=V;class q extends h{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,n=yield,i=1,l=0,o=n;for(n=yield;;)(r=(r=o-n)>0?r:0)>0&&(l+=r),i<e?i++:t=void 0===t?l/e:(t*(e-1)+r)/e,o=n,t=void 0!==t?s(t):void 0,n=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function C(e){h.reverseInputs(e);var t=new q(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}q.calculate=C;class E extends h{constructor(e){super(e);var t=e.period,r=e.values,s=new _({period:t,values:[]}),n=new q({period:t,values:[]});this.generator=function*(e){for(var t,r,i,l,o=yield;;)t=s.nextValue(o),r=n.nextValue(o),void 0!==t&&void 0!==r&&(0===r?l=100:0===t?l=0:(i=t/r,i=isNaN(i)?0:i,l=parseFloat((100-100/(1+i)).toFixed(2)))),o=yield l}(),this.generator.next(),this.result=[],r.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function b(e){h.reverseInputs(e);var t=new E(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}E.calculate=b;class S extends h{constructor(e){super(e);var t=e.period,s=e.values,n=new c({period:t,values:[],format:e=>e});this.result=[],this.generator=function*(){var e,s,i,l=new r(t);for(e=yield;;){if(l.push(e),s=n.nextValue(e)){let e=0;for(let t of l.iterator())e+=Math.pow(t-s,2);i=Math.sqrt(e/t)}e=yield i}}(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return this.format(t.value)}}function M(e){h.reverseInputs(e);var t=new S(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}S.calculate=M;class B extends h{constructor(e){super(e);var t,r,s=e.period,n=e.values,i=e.stdDev,l=this.format;this.result=[],t=new c({period:s,values:[],format:e=>e}),r=new S({period:s,values:[],format:e=>e}),this.generator=function*(){var e,s,n,o;for(s=yield;;){if(n=t.nextValue(s),o=r.nextValue(s),n){let t=l(n),r=l(n+o*i),u=l(n-o*i);e={middle:t,upper:r,lower:u,pb:l((s-u)/(r-u))}}s=yield e}}(),this.generator.next(),n.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function H(e){h.reverseInputs(e);var t=new B(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}B.calculate=H;class A extends h{constructor(e){super(e);var t=e.low,r=e.high,s=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;){if(t){let n=r.high-t.high,i=t.low-r.low;e=s(i>n&&i>0?i:0)}t=r,r=yield e}}(),this.generator.next(),t.forEach(((e,s)=>{var n=this.generator.next({high:r[s],low:t[s]});void 0!==n.value&&this.result.push(n.value)}))}static calculate(e){h.reverseInputs(e);var t=new A(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}nextValue(e){return this.generator.next(e).value}}class k extends h{constructor(e){super(e);var t=e.low,r=e.high,s=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;){if(t){let n=r.high-t.high,i=t.low-r.low;e=s(n>i&&n>0?n:0)}t=r,r=yield e}}(),this.generator.next(),t.forEach(((e,s)=>{var n=this.generator.next({high:r[s],low:t[s]});void 0!==n.value&&this.result.push(n.value)}))}static calculate(e){h.reverseInputs(e);var t=new k(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}nextValue(e){return this.generator.next(e).value}}class z extends h{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;)void 0===e&&(e=r.close,r=yield t),t=Math.max(r.high-r.low,isNaN(Math.abs(r.high-e))?0:Math.abs(r.high-e),isNaN(Math.abs(r.low-e))?0:Math.abs(r.low-e)),e=r.close,null!=t&&(t=n(t)),r=yield t}(),this.generator.next(),t.forEach(((e,n)=>{var i=this.generator.next({high:r[n],low:t[n],close:s[n]});null!=i.value&&this.result.push(i.value)}))}nextValue(e){return this.generator.next(e).value}}function T(e){h.reverseInputs(e);var t=new z(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}z.calculate=T;class L extends h{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=e.period,i=this.format,l=new k({high:[],low:[]}),o=new A({high:[],low:[]}),u=new m({period:n,values:[],format:e=>e}),a=new m({period:n,values:[],format:e=>e}),h=new m({period:n,values:[],format:e=>e}),c=new f({period:n,values:[],format:e=>e}),v=new z({low:[],high:[],close:[]});if(t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r,s,n=yield;;){let i=v.nextValue(n),p=l.nextValue(n),d=o.nextValue(n);if(void 0===i){n=yield;continue}let g=h.nextValue(i),w=u.nextValue(p),f=a.nextValue(d);if(null!=g&&null!=w&&null!=f){e=100*w/g,t=100*f/g,r=Math.abs(e-t)/(e+t)*100,s=c.nextValue(r)}n=yield{adx:s,pdi:e,mdi:t}}}(),this.generator.next(),t.forEach(((e,n)=>{var l=this.generator.next({high:r[n],low:t[n],close:s[n]});null!=l.value&&null!=l.value.adx&&this.result.push({adx:i(l.value.adx),pdi:i(l.value.pdi),mdi:i(l.value.mdi)})}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t&&null!=t.adx)return{adx:this.format(t.adx),pdi:this.format(t.pdi),mdi:this.format(t.mdi)}}}function D(e){h.reverseInputs(e);var t=new L(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}L.calculate=D;class N extends h{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=e.period,i=this.format;if(t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";var l=new z({low:[],high:[],close:[]}),o=new f({period:n,values:[],format:e=>e});this.result=[],this.generator=function*(){for(var e,t,r=yield;;)e=void 0===(t=l.nextValue({low:r.low,high:r.high,close:r.close}))?void 0:o.nextValue(t),r=yield e}(),this.generator.next(),t.forEach(((e,n)=>{var l=this.generator.next({high:r[n],low:t[n],close:s[n]});void 0!==l.value&&this.result.push(i(l.value))}))}nextValue(e){return this.generator.next(e).value}}function F(e){h.reverseInputs(e);var t=new N(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}N.calculate=F;class R extends h{constructor(e){super(e);var t=e.period,s=e.values;this.result=[],this.generator=function*(){let e=1;for(var s,n=new r(t),i=yield;;)n.push(i),e<t?e++:s=(i-n.lastShift)/n.lastShift*100,i=yield s}(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null==t.value||isNaN(t.value)||this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value&&!isNaN(t.value))return this.format(t.value)}}function j(e){h.reverseInputs(e);var t=new R(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}R.calculate=j;class O extends h{constructor(e){super(e);let t=e.values,r=e.ROCPer1,s=e.ROCPer2,n=e.ROCPer3,i=e.ROCPer4,l=e.SMAROCPer1,o=e.SMAROCPer2,u=e.SMAROCPer3,a=e.SMAROCPer4,h=e.signalPeriod,v=new R({period:r,values:[]}),p=new R({period:s,values:[]}),d=new R({period:n,values:[]}),g=new R({period:i,values:[]}),w=new c({period:l,values:[],format:e=>e}),f=new c({period:o,values:[],format:e=>e}),x=new c({period:u,values:[],format:e=>e}),m=new c({period:a,values:[],format:e=>e}),I=new c({period:h,values:[],format:e=>e});var y=this.format;this.result=[];let P=Math.max(r+l,s+o,n+u,i+a);this.generator=function*(){let e,t,r,s,n,i,l,o=1,u=yield;for(;;){let a=v.nextValue(u),h=p.nextValue(u),c=d.nextValue(u),_=g.nextValue(u);t=void 0!==a?w.nextValue(a):void 0,r=void 0!==h?f.nextValue(h):void 0,s=void 0!==c?x.nextValue(c):void 0,n=void 0!==_?m.nextValue(_):void 0,o<P?o++:e=1*t+2*r+3*s+4*n,i=void 0!==e?I.nextValue(e):void 0,l=void 0!==e?{kst:y(e),signal:i?y(i):void 0}:void 0,u=yield l}}(),this.generator.next(),t.forEach((e=>{let t=this.generator.next(e);null!=t.value&&this.result.push(t.value)}))}nextValue(e){let t=this.generator.next(e);if(null!=t.value)return t.value}}function U(e){h.reverseInputs(e);var t=new O(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}O.calculate=U;class G extends h{constructor(e){super(e);let t=e.high||[],r=e.low||[];this.result=[],this.generator=function*(e,t){let r,s,n,i,l=!0,o=e,u=yield;for(;;)r?(n+=o*(s-n),l?(n=Math.min(n,i.low,u.low),r.high>s&&(s=r.high,o=Math.min(o+e,t))):(n=Math.max(n,i.high,u.high),r.low<s&&(s=r.low,o=Math.min(o+e,t))),(l&&r.low<n||!l&&r.high>n)&&(o=e,n=s,l=!l,s=l?r.high:r.low)):(n=u.low,s=u.high),i=u,r&&(u=r),r=yield n}(e.step,e.max),this.generator.next(),r.forEach(((e,s)=>{var n=this.generator.next({high:t[s],low:r[s]});void 0!==n.value&&this.result.push(n.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function W(e){h.reverseInputs(e);var t=new G(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}G.calculate=W;class J extends h{constructor(e){super(e);let t=e.low,s=e.high,n=e.close,i=e.period,l=e.signalPeriod,o=this.format;if(t.length!==s.length||s.length!==n.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e,t,s=1,n=new r(i,!0,!1),u=new r(i,!1,!0),a=new c({period:l,values:[],format:e=>e});for(var h=yield;;){if(n.push(h.high),u.push(h.low),s<i){s++,h=yield;continue}let r=u.periodLow;e=(h.close-r)/(n.periodHigh-r)*100,e=isNaN(e)?0:e,t=a.nextValue(e),h=yield{k:o(e),d:void 0!==t?o(t):void 0}}}(),this.generator.next(),t.forEach(((e,r)=>{var i=this.generator.next({high:s[r],low:t[r],close:n[r]});void 0!==i.value&&this.result.push(i.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function K(e){h.reverseInputs(e);var t=new J(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}J.calculate=K;class Q extends h{constructor(e){super(e);let t=e.low,s=e.high,n=e.close,i=e.period,l=this.format;if(t.length!==s.length||s.length!==n.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e,t,s=1,n=new r(i,!0,!1),o=new r(i,!1,!0);var u=yield;let a;for(;;)n.push(u.high),o.push(u.low),s<i?(s++,u=yield):(e=o.periodLow,t=n.periodHigh,a=l((t-u.close)/(t-e)*-100),u=yield a)}(),this.generator.next(),t.forEach(((e,r)=>{var i=this.generator.next({high:s[r],low:t[r],close:n[r]});void 0!==i.value&&this.result.push(i.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return this.format(t.value)}}function X(e){h.reverseInputs(e);var t=new Q(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}Q.calculate=X;class Y extends h{constructor(e){super(e);var t=e.high,r=e.low,s=e.close,n=e.volume;if(r.length!==t.length||t.length!==s.length||t.length!==n.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[],this.generator=function*(){var e,t=0;for(e=yield;;){let r=(e.close-e.low-(e.high-e.close))/(e.high-e.low);r=isNaN(r)?1:r,t+=r*e.volume,e=yield Math.round(t)}}(),this.generator.next(),t.forEach(((e,t)=>{var i={high:e,low:r[t],close:s[t],volume:n[t]},l=this.generator.next(i);null!=l.value&&this.result.push(l.value)}))}nextValue(e){return this.generator.next(e).value}}function Z(e){h.reverseInputs(e);var t=new Y(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}Y.calculate=Z;class $ extends h{constructor(e){super(e);var t=e.close,r=e.volume;this.result=[],this.generator=function*(){var e,t,r=0;for((e=yield).close&&"number"==typeof e.close&&(t=e.close,e=yield);;)t<e.close?r+=e.volume:e.close<t&&(r-=e.volume),t=e.close,e=yield r}(),this.generator.next(),t.forEach(((e,s)=>{let n={close:t[s],volume:r[s]},i=this.generator.next(n);null!=i.value&&this.result.push(i.value)}))}nextValue(e){return this.generator.next(e).value}}function ee(e){h.reverseInputs(e);var t=new $(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}$.calculate=ee;class te extends h{constructor(e){super(e);let t=e.values,r=e.period,s=this.format,n=new p({period:r,values:[],format:e=>e}),i=new p({period:r,values:[],format:e=>e}),l=new p({period:r,values:[],format:e=>e}),o=new R({period:1,values:[],format:e=>e});this.result=[],this.generator=function*(){let e=yield;for(;;){let t=n.nextValue(e),r=t?i.nextValue(t):void 0,u=r?l.nextValue(r):void 0,a=u?o.nextValue(u):void 0;e=yield a?s(a):void 0}}(),this.generator.next(),t.forEach((e=>{let t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function re(e){h.reverseInputs(e);var t=new te(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}te.calculate=re;class se extends h{constructor(e){super(e);var t=e.close,r=e.volume,s=e.period||1;if(r.length!==t.length)throw"Inputs(volume, close) not of equal size";let n=new p({values:[],period:s});this.result=[],this.generator=function*(){var e=yield,t=yield;let r;for(;;)r=(t.close-e.close)*t.volume,e=t,t=yield n.nextValue(r)}(),this.generator.next(),r.forEach(((e,s)=>{var n=this.generator.next({close:t[s],volume:r[s]});null!=n.value&&this.result.push(n.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function ne(e){h.reverseInputs(e);var t=new se(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}se.calculate=ne;class ie extends h{constructor(e){super(e);var t=e.low,s=e.high,n=e.close,i=e.period;this.format;var l=new r(i),o=new c({period:i,values:[],format:e=>e});if(t.length!==s.length||s.length!==n.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){for(var e=yield;;){let t=(e.high+e.low+e.close)/3;l.push(t);let r,s=o.nextValue(t),n=null,u=0;if(null!=s){for(let e of l.iterator())u+=Math.abs(e-s);n=u/i,r=(t-s)/(.015*n)}e=yield r}}(),this.generator.next(),t.forEach(((e,r)=>{var i=this.generator.next({high:s[r],low:t[r],close:n[r]});null!=i.value&&this.result.push(i.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function le(e){h.reverseInputs(e);var t=new ie(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}ie.calculate=le;class oe extends h{constructor(e){super(e);var t=e.high,r=e.low,s=e.fastPeriod,n=e.slowPeriod,i=new c({values:[],period:n}),l=new c({values:[],period:s});this.result=[],this.generator=function*(){var e,t,r,s,n;for(t=yield;;)r=(t.high+t.low)/2,s=i.nextValue(r),n=l.nextValue(r),void 0!==s&&void 0!==n&&(e=n-s),t=yield e}(),this.generator.next(),t.forEach(((e,t)=>{var s={high:e,low:r[t]},n=this.generator.next(s);null!=n.value&&this.result.push(this.format(n.value))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return this.format(t.value)}}function ue(e){h.reverseInputs(e);var t=new oe(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}oe.calculate=ue;class ae extends h{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=e.volume;if(this.format,t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e=yield,t=0,r=0;for(;;){let s=(e.high+e.low+e.close)/3;t+=e.volume*s,r+=e.volume,e=yield t/r}}(),this.generator.next(),t.forEach(((e,i)=>{let l=this.generator.next({high:r[i],low:t[i],close:s[i],volume:n[i]});null!=l.value&&this.result.push(l.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function he(e){h.reverseInputs(e);var t=new ae(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}ae.calculate=he;class ce extends h{constructor(e){super(e);var t=e.high,r=e.low,s=e.close,n=e.open,i=e.volume,l=e.noOfBars;if(r.length!==t.length||t.length!==s.length||t.length!==i.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[];var o,u,a,h,c=Math.max(...t,...r,...s,...n),v=Math.min(...t,...r,...s,...n),p=(c-v)/l,d=v;for(let e=0;e<l;e++){let e=d,l=e+p;d=l;let c=0,v=0,g=0;for(let p=0;p<t.length;p++){let d=r[p],w=t[p],f=n[p],x=s[p],m=i[p];u=l,h=w,((o=e)<=(a=d)&&u>=a||a<=o&&h>=o)&&(g+=m,f>x?v+=m:c+=m)}this.result.push({rangeStart:e,rangeEnd:l,bullishVolume:c,bearishVolume:v,totalVolume:g})}}nextValue(e){throw"Next value not supported for volume profile"}}function ve(e){h.reverseInputs(e);var t=new ce(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}ce.calculate=ve;class pe extends h{constructor(e){super(e),this.result=[],this.generator=function*(){let e=yield;for(;;)e=yield(e.high+e.low+e.close)/3}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({high:e.high[r],low:e.low[r],close:e.close[r]});this.result.push(s.value)}))}nextValue(e){return this.generator.next(e).value}}pe.calculate=function(e){h.reverseInputs(e);var t=new pe(e).result;e.reversedInput&&t.reverse();return h.reverseInputs(e),t};class de extends h{constructor(e){super(e);var t=e.high,s=e.low,n=e.close,i=e.volume,l=e.period,o=new pe({low:[],high:[],close:[]}),u=new r(l,!1,!1,!0),a=new r(l,!1,!1,!0);if(s.length!==t.length||t.length!==n.length||t.length!==i.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[],this.generator=function*(){var e,t,r,s,n=0;let i=null,h=null;for((t=yield).close,t=yield;;){var{high:c,low:v,close:p,volume:d}=t,g=0,w=0;i=o.nextValue({high:c,low:v,close:p}),n=i*d,null!=i&&null!=h&&(i>h?g=n:w=n,u.push(g),a.push(w),r=u.periodSum,s=a.periodSum,u.totalPushed>=l&&u.totalPushed>=l&&(e=100-100/(1+r/s))),h=i,t=yield e}}(),this.generator.next(),t.forEach(((e,t)=>{var r={high:e,low:s[t],close:n[t],volume:i[t]},l=this.generator.next(r);null!=l.value&&this.result.push(parseFloat(l.value.toFixed(2)))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return parseFloat(t.value.toFixed(2))}}function ge(e){h.reverseInputs(e);var t=new de(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}de.calculate=ge;class we extends h{constructor(e){super(e);let t=e.values,r=e.rsiPeriod,s=e.stochasticPeriod,n=e.kPeriod,i=e.dPeriod;this.format,this.result=[],this.generator=function*(){let e,t,l,o,u=new E({period:r,values:[]}),a=new J({period:s,high:[],low:[],close:[],signalPeriod:n}),h=new c({period:i,values:[],format:e=>e});for(var v=yield;;){if(e=u.nextValue(v),void 0!==e){var p={high:e,low:e,close:e};t=a.nextValue(p),void 0!==t&&void 0!==t.d&&(l=h.nextValue(t.d),void 0!==l&&(o={stochRSI:t.k,k:t.d,d:l}))}v=yield o}}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);void 0!==r.value&&this.result.push(r.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function fe(e){h.reverseInputs(e);var t=new we(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}we.calculate=fe;class xe extends h{constructor(e){super(e);var t=e.values,s=e.period;this.result=[];var n=new r(s,!0,!1,!1);this.generator=function*(){var e,t;for(e=yield;;)n.push(e),n.totalPushed>=s&&(t=n.periodHigh),e=yield t}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(r.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function me(e){h.reverseInputs(e);var t=new xe(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}xe.calculate=me;class Ie extends h{constructor(e){super(e);var t=e.values,s=e.period;this.result=[];var n=new r(s,!1,!0,!1);this.generator=function*(){var e,t;for(e=yield;;)n.push(e),n.totalPushed>=s&&(t=n.periodLow),e=yield t}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(r.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function ye(e){h.reverseInputs(e);var t=new Ie(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}Ie.calculate=ye;class Pe extends h{constructor(e){super(e);var t=e.values,s=e.period;this.result=[];var n=new r(s,!1,!1,!0);this.generator=function*(){var e,t;for(e=yield;;)n.push(e),n.totalPushed>=s&&(t=n.periodSum),e=yield t}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(r.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function _e(e){h.reverseInputs(e);var t=new Pe(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}Pe.calculate=_e;class Ve extends h{constructor(e){super(e),this.format;let t=e.useATR,r=e.brickSize||0;if(t){let t=F(Object.assign({},e));r=t[t.length-1]}if(this.result=new n,0===r)return void console.error("Not enough data to calculate brickSize for renko when using ATR");let s=0,i=0,l=1/0,o=0,u=0;this.generator=function*(){let e=yield;for(;;){if(0===s){s=e.close,i=e.high,l=e.low,o=e.close,u=e.volume,e.timestamp,e=yield;continue}let t=Math.abs(e.close-o),n=Math.abs(e.close-s);if(t>=r&&n>=r){let a=t>n?s:o,h={open:a,high:i>e.high?i:e.high,low:l<e.low?l:e.low,close:a>e.close?a-r:a+r,volume:u+e.volume,timestamp:e.timestamp};s=h.open,i=h.close,l=h.close,o=h.close,u=0,e=yield h}else i=i>e.high?i:e.high,l=l<e.low?l:e.low,u+=e.volume,e.timestamp,e=yield}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume[r],timestamp:e.timestamp[r]});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return console.error("Cannot calculate next value on Renko, Every value has to be recomputed for every change, use calcualte method"),null}}function qe(e){h.reverseInputs(e);var t=new Ve(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),h.reverseInputs(e),t}Ve.calculate=qe;class Ce extends h{constructor(e){super(e),this.format,this.result=new n;let t=null,r=0,s=1/0,i=0;this.generator=function*(){let e=yield,n=null;for(;;){if(null===t)t=(e.close+e.open)/2,r=e.high,s=e.low,i=(e.close+e.open+e.high+e.low)/4,e.volume,e.timestamp,n={open:t,high:r,low:s,close:i,volume:e.volume||0,timestamp:e.timestamp||0};else{let l=(e.close+e.open+e.high+e.low)/4,o=(t+i)/2,u=Math.max(o,l,e.high),a=Math.min(e.low,o,l);n={close:l,open:o,high:u,low:a,volume:e.volume||0,timestamp:e.timestamp||0},i=l,t=o,r=u,s=a}e=yield n}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume?e.volume[r]:e.volume,timestamp:e.timestamp?e.timestamp[r]:e.timestamp});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return this.generator.next(e).value}}function Ee(e){h.reverseInputs(e);var t=new Ce(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),h.reverseInputs(e),t}Ce.calculate=Ee;class be{constructor(){}approximateEqual(e,t){return 1*parseFloat(Math.abs(e-t).toPrecision(4))<=1*parseFloat((.001*e).toPrecision(4))}logic(e){throw"this has to be implemented"}getAllPatternIndex(e){if(e.close.length<this.requiredCount)return console.warn("Data count less than data required for the strategy ",this.name),[];e.reversedInput&&(e.open.reverse(),e.high.reverse(),e.low.reverse(),e.close.reverse());let t=this.logic;return this._generateDataForCandleStick(e).map(((e,r)=>t.call(this,e)?r:void 0)).filter((e=>e))}hasPattern(e){if(e.close.length<this.requiredCount)return console.warn("Data count less than data required for the strategy ",this.name),!1;return e.reversedInput&&(e.open.reverse(),e.high.reverse(),e.low.reverse(),e.close.reverse()),this.logic.call(this,this._getLastDataForCandleStick(e))}_getLastDataForCandleStick(e){let t=this.requiredCount;if(e.close.length===t)return e;{let r={open:[],high:[],low:[],close:[]},s=0,n=e.close.length-t;for(;s<t;)r.open.push(e.open[n+s]),r.high.push(e.high[n+s]),r.low.push(e.low[n+s]),r.close.push(e.close[n+s]),s++;return r}}_generateDataForCandleStick(e){let t=this.requiredCount;return e.close.map((function(r,s){let n=0,i={open:[],high:[],low:[],close:[]};for(;n<t;)i.open.push(e.open[s+n]),i.high.push(e.high[s+n]),i.low.push(e.low[s+n]),i.close.push(e.close[s+n]),n++;return i})).filter(((r,s)=>s<=e.close.length-t))}}class Se extends be{constructor(){super(),this.name="MorningStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0];e.open[1];let n=e.close[1],i=e.high[1],l=e.low[1],o=e.open[2],u=e.close[2];return e.high[2],e.low[2],r<t&&(s>l&&s>i)&&(i<s&&l<s&&o>i&&n<o)&&o<u&&u>(t+r)/2}}function Me(e){return(new Se).hasPattern(e)}class Be extends be{constructor(){super(),this.name="BullishEngulfingPattern",this.requiredCount=2}logic(e){let t=e.open[0],r=e.close[0];e.high[0],e.low[0];let s=e.open[1],n=e.close[1];return e.high[1],e.low[1],r<t&&t>s&&r>s&&t<n}}function He(e){return(new Be).hasPattern(e)}class Ae extends be{constructor(){super(),this.requiredCount=2,this.name="BullishHarami"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1];return t>n&&r<n&&r<i&&t>o&&s>l}}function ke(e){return(new Ae).hasPattern(e)}class ze extends be{constructor(){super(),this.requiredCount=2,this.name="BullishHaramiCross"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=t>n&&r<n&&r<i&&t>o&&s>l,a=this.approximateEqual(n,i);return u&&a}}function Te(e){return(new ze).hasPattern(e)}class Le extends be{constructor(){super(),this.name="Doji",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=this.approximateEqual(t,r),l=i&&this.approximateEqual(t,s),o=i&&this.approximateEqual(r,n);return i&&l==o}}function De(e){return(new Le).hasPattern(e)}class Ne extends be{constructor(){super(),this.name="MorningDojiStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=e.open[2],a=e.close[2];e.high[2],e.low[2];let h=(t+r)/2,c=r<t,v=(new Le).hasPattern({open:[n],close:[i],high:[l],low:[o]});return c&&v&&u<a&&(l<s&&o<s&&u>l&&i<u)&&a>h}}function Fe(e){return(new Ne).hasPattern(e)}class Re extends be{constructor(){super(),this.requiredCount=3,this.name="DownsideTasukiGap"}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1],l=e.high[1];e.low[1];let o=e.open[2],u=e.close[2];return e.high[2],e.low[2],r<t&&i<n&&u>o&&l<s&&(n>o&&i<o&&u>n&&u<r)}}function je(e){return(new Re).hasPattern(e)}class Oe extends be{constructor(){super(),this.name="BullishMarubozu",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0];return this.approximateEqual(r,s)&&this.approximateEqual(n,t)&&t<r&&t<s}}function Ue(e){return(new Oe).hasPattern(e)}class Ge extends be{constructor(){super(),this.requiredCount=2,this.name="PiercingLine"}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1];return e.high[1],e.low[1]<s&&r<t&&(s>n&&i>(t+r)/2)&&i>n}}function We(e){return(new Ge).hasPattern(e)}class Je extends be{constructor(){super(),this.name="ThreeWhiteSoldiers",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1];e.low[1];let o=e.open[2],u=e.close[2],a=e.high[2];return e.low[2],l>s&&a>l&&(t<r&&n<i&&o<u)&&(r>n&&n<s&&l>o&&o<i)}}function Ke(e){return(new Je).hasPattern(e)}class Qe extends be{constructor(){super(),this.name="BullishHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=r>t;return i=i&&this.approximateEqual(r,s),i=i&&r-t<=2*(t-n),i}}function Xe(e){return(new Qe).hasPattern(e)}class Ye extends be{constructor(){super(),this.name="BullishInvertedHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=r>t;return i=i&&this.approximateEqual(t,n),i=i&&r-t<=2*(s-r),i}}function Ze(e){return(new Ye).hasPattern(e)}class $e extends be{constructor(){super(),this.name="BearishHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=t>r;return i=i&&this.approximateEqual(t,s),i=i&&t-r<=2*(r-n),i}}function et(e){return(new $e).hasPattern(e)}class tt extends be{constructor(){super(),this.name="BearishInvertedHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=t>r;return i=i&&this.approximateEqual(r,n),i=i&&t-r<=2*(s-t),i}}function rt(e){return(new tt).hasPattern(e)}class st extends be{constructor(){super(),this.name="HammerPattern",this.requiredCount=5}logic(e){let t=this.downwardTrend(e);return t=t&&this.includesHammer(e),t=t&&this.hasConfirmation(e),t}downwardTrend(e,t=!0){let r=t?3:4,s=V({values:e.close.slice(0,r),period:r-1});return C({values:e.close.slice(0,r),period:r-1})>s}includesHammer(e,t=!0){let r=t?3:4,s=t?4:void 0,n={open:e.open.slice(r,s),close:e.close.slice(r,s),low:e.low.slice(r,s),high:e.high.slice(r,s)},i=et(n);return i=i||rt(n),i=i||Xe(n),i=i||Ze(n),i}hasConfirmation(e){e.open[3];let t=e.close[3],r=(e.low[3],e.high[3],e.open[4]),s=e.close[4];e.low[4],e.high[4];return r<s&&t<s}}function nt(e){return(new st).hasPattern(e)}class it extends st{constructor(){super(),this.name="HammerPatternUnconfirmed"}logic(e){let t=this.downwardTrend(e,!1);return t=t&&this.includesHammer(e,!1),t}}function lt(e){return(new it).hasPattern(e)}class ot extends be{constructor(){super(),this.name="TweezerBottom",this.requiredCount=5}logic(e){return this.downwardTrend(e)&&e.low[3]==e.low[4]}downwardTrend(e){let t=V({values:e.close.slice(0,3),period:2});return C({values:e.close.slice(0,3),period:2})>t}}function ut(e){return(new ot).hasPattern(e)}let at=[new Be,new Re,new Ae,new ze,new Ne,new Se,new Oe,new Ge,new Je,new Qe,new Ye,new st,new it,new ot];class ht extends be{constructor(){super(),this.name="Bullish Candlesticks"}hasPattern(e){return at.reduce((function(t,r){let s=r.hasPattern(e);return t||s}),!1)}}function ct(e){return(new ht).hasPattern(e)}class vt extends be{constructor(){super(),this.name="BearishEngulfingPattern",this.requiredCount=2}logic(e){let t=e.open[0],r=e.close[0];e.high[0],e.low[0];let s=e.open[1],n=e.close[1];return e.high[1],e.low[1],r>t&&t<s&&r<s&&t>n}}function pt(e){return(new vt).hasPattern(e)}class dt extends be{constructor(){super(),this.requiredCount=2,this.name="BearishHarami"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1];return t<n&&r>n&&r>i&&t<o&&s>l}}function gt(e){return(new dt).hasPattern(e)}class wt extends be{constructor(){super(),this.requiredCount=2,this.name="BearishHaramiCross"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=t<n&&r>n&&r>i&&t<o&&s>l,a=this.approximateEqual(n,i);return u&&a}}function ft(e){return(new wt).hasPattern(e)}class xt extends be{constructor(){super(),this.name="EveningDojiStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=e.open[2],a=e.close[2];e.high[2],e.low[2];let h=(t+r)/2,c=r>t,v=(new Le).hasPattern({open:[n],close:[i],high:[l],low:[o]});return c&&v&&(l>s&&o>s&&u<o&&i>u)&&u>a&&a<h}}function mt(e){return(new xt).hasPattern(e)}class It extends be{constructor(){super(),this.name="EveningStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0],e.open[1];let n=e.close[1],i=e.high[1],l=e.low[1],o=e.open[2],u=e.close[2];return e.high[2],e.low[2],r>t&&(s<l&&s<i)&&(i>s&&l>s&&o<l&&n>o)&&o>u&&u<(t+r)/2}}function yt(e){return(new It).hasPattern(e)}class Pt extends be{constructor(){super(),this.name="BearishMarubozu",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0];return this.approximateEqual(t,s)&&this.approximateEqual(n,r)&&t>r&&t>n}}function _t(e){return(new Pt).hasPattern(e)}class Vt extends be{constructor(){super(),this.name="ThreeBlackCrows",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1];e.high[1];let l=e.low[1],o=e.open[2],u=e.close[2];e.high[2];let a=e.low[2];return s>l&&l>a&&(t>r&&n>i&&o>u)&&(t>n&&n>r&&n>o&&o>i)}}function qt(e){return(new Vt).hasPattern(e)}class Ct extends be{constructor(){super(),this.name="HangingMan",this.requiredCount=5}logic(e){let t=this.upwardTrend(e);return t=t&&this.includesHammer(e),t=t&&this.hasConfirmation(e),t}upwardTrend(e,t=!0){let r=t?3:4;return V({values:e.close.slice(0,r),period:r-1})>C({values:e.close.slice(0,r),period:r-1})}includesHammer(e,t=!0){let r=t?3:4,s=t?4:void 0,n={open:e.open.slice(r,s),close:e.close.slice(r,s),low:e.low.slice(r,s),high:e.high.slice(r,s)},i=et(n);return i=i||Xe(n),i}hasConfirmation(e){e.open[3];let t=e.close[3],r=(e.low[3],e.high[3],e.open[4]),s=e.close[4];e.low[4],e.high[4];return r>s&&t>s}}function Et(e){return(new Ct).hasPattern(e)}class bt extends Ct{constructor(){super(),this.name="HangingManUnconfirmed"}logic(e){let t=this.upwardTrend(e,!1);return t=t&&this.includesHammer(e,!1),t}}function St(e){return(new bt).hasPattern(e)}class Mt extends be{constructor(){super(),this.name="ShootingStar",this.requiredCount=5}logic(e){let t=this.upwardTrend(e);return t=t&&this.includesHammer(e),t=t&&this.hasConfirmation(e),t}upwardTrend(e,t=!0){let r=t?3:4;return V({values:e.close.slice(0,r),period:r-1})>C({values:e.close.slice(0,r),period:r-1})}includesHammer(e,t=!0){let r=t?3:4,s=t?4:void 0,n={open:e.open.slice(r,s),close:e.close.slice(r,s),low:e.low.slice(r,s),high:e.high.slice(r,s)},i=rt(n);return i=i||Ze(n),i}hasConfirmation(e){e.open[3];let t=e.close[3],r=(e.low[3],e.high[3],e.open[4]),s=e.close[4];e.low[4],e.high[4];return r>s&&t>s}}function Bt(e){return(new Mt).hasPattern(e)}class Ht extends Mt{constructor(){super(),this.name="ShootingStarUnconfirmed"}logic(e){let t=this.upwardTrend(e,!1);return t=t&&this.includesHammer(e,!1),t}}function At(e){return(new Ht).hasPattern(e)}class kt extends be{constructor(){super(),this.name="TweezerTop",this.requiredCount=5}logic(e){return this.upwardTrend(e)&&e.high[3]==e.high[4]}upwardTrend(e){return V({values:e.close.slice(0,3),period:2})>C({values:e.close.slice(0,3),period:2})}}function zt(e){return(new kt).hasPattern(e)}let Tt=[new vt,new dt,new wt,new xt,new It,new Pt,new Vt,new $e,new tt,new Ct,new bt,new Mt,new Ht,new kt];class Lt extends be{constructor(){super(),this.name="Bearish Candlesticks"}hasPattern(e){return Tt.reduce((function(t,r){return t||r.hasPattern(e)}),!1)}}function Dt(e){return(new Lt).hasPattern(e)}class Nt extends be{constructor(){super(),this.name="AbandonedBaby",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=e.open[2],a=e.close[2],h=e.high[2],c=e.low[2],v=r<t,p=(new Le).hasPattern({open:[n],close:[i],high:[l],low:[o]});return v&&p&&(l<s&&c>l&&a>u)&&h<t}}function Ft(e){return(new Nt).hasPattern(e)}class Rt extends be{constructor(){super(),this.name="DarkCloudCover",this.requiredCount=2}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1];return e.high[1],e.low[1],r>t&&i<n&&(n>s&&i<(r+t)/2&&i>t)}}function jt(e){return(new Rt).hasPattern(e)}class Ot extends be{constructor(){super(),this.requiredCount=1,this.name="DragonFlyDoji"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=this.approximateEqual(t,r),l=i&&this.approximateEqual(t,s),o=i&&this.approximateEqual(r,n);return i&&l&&!o}}function Ut(e){return(new Ot).hasPattern(e)}class Gt extends be{constructor(){super(),this.requiredCount=1,this.name="GraveStoneDoji"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=this.approximateEqual(t,r),l=i&&this.approximateEqual(t,s),o=i&&this.approximateEqual(r,n);return i&&o&&!l}}function Wt(e){return(new Gt).hasPattern(e)}class Jt extends be{constructor(){super(),this.name="BullishSpinningTop",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=Math.abs(r-t),l=Math.abs(s-r),o=Math.abs(t-n);return i<l&&i<o}}function Kt(e){return(new Jt).hasPattern(e)}class Qt extends be{constructor(){super(),this.name="BearishSpinningTop",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=Math.abs(r-t),l=Math.abs(s-t),o=Math.abs(s-n);return i<l&&i<o}}function Xt(e){return(new Qt).hasPattern(e)}class Yt extends be{constructor(){super(),this.name="BullishFractal",this.requiredCount=5}logic(e){let t=e.open[2],r=e.close[2],s=e.high[2],n=e.low[2],i=t>r;return i=i&&this.approximateEqual(t,s),i=i&&n<e.low[0],i=i&&n<e.low[1],i=i&&n<e.low[3],i}}function Zt(e){return(new Yt).hasPattern(e)}class $t extends be{constructor(){super(),this.name="BearishFractal",this.requiredCount=5}logic(e){let t=e.open[2],r=e.close[2],s=e.high[2];e.low[2];let n=t>r;return n=n&&this.approximateEqual(t,s),n=n&&s>e.high[0],n=n&&s>e.high[1],n=n&&s>e.high[3],n}}function er(e){return(new $t).hasPattern(e)}function tr(e,t){let r,s=[0,23.6,38.2,50,61.8,78.6,100,127.2,161.8,261.8,423.6];return r=e<t?s.map((function(r){let s=t-Math.abs(e-t)*r/100;return s>0?s:0})):s.map((function(r){let s=t+Math.abs(e-t)*r/100;return s>0?s:0})),r}class rr extends h{constructor(e){super(e),this.result=[];var t=Object.assign({},{conversionPeriod:9,basePeriod:26,spanPeriod:52,displacement:26},e),s=new r(2*t.conversionPeriod,!0,!0,!1),n=new r(2*t.basePeriod,!0,!0,!1),i=new r(2*t.spanPeriod,!0,!0,!1);this.generator=function*(){let e,r,l=Math.max(t.conversionPeriod,t.basePeriod,t.spanPeriod,t.displacement),o=1;for(r=yield;;){if(s.push(r.high),s.push(r.low),n.push(r.high),n.push(r.low),i.push(r.high),i.push(r.low),o<l)o++;else{let t=(s.periodHigh+s.periodLow)/2,r=(n.periodHigh+n.periodLow)/2;e={conversion:t,base:r,spanA:(t+r)/2,spanB:(i.periodHigh+i.periodLow)/2}}r=yield e}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({high:e.high[r],low:e.low[r]});s.value&&this.result.push(s.value)}))}nextValue(e){return this.generator.next(e).value}}function sr(e){h.reverseInputs(e);var t=new rr(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}rr.calculate=sr;class nr extends a{constructor(){super(...arguments),this.maPeriod=20,this.atrPeriod=10,this.useSMA=!1,this.multiplier=1}}class ir extends a{}class lr extends h{constructor(e){super(e);var t,r=new(e.useSMA?c:p)({period:e.maPeriod,values:[],format:e=>e}),s=new N({period:e.atrPeriod,high:[],low:[],close:[],format:e=>e});this.result=[],this.generator=function*(){var n;for(t=yield;;){var{close:i}=t,l=r.nextValue(i),o=s.nextValue(t);null!=l&&null!=o&&(n={middle:l,upper:l+e.multiplier*o,lower:l-e.multiplier*o}),t=yield n}}(),this.generator.next(),e.high.forEach(((t,r)=>{var s={high:t,low:e.low[r],close:e.close[r]},n=this.generator.next(s);null!=n.value&&this.result.push(n.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function or(e){h.reverseInputs(e);var t=new lr(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}lr.calculate=or;class ur extends a{constructor(){super(...arguments),this.period=22,this.multiplier=3}}class ar extends a{}class hr extends h{constructor(e){super(e);var t=e.high,s=e.low,n=e.close;this.result=[];var i=new N({period:e.period,high:[],low:[],close:[],format:e=>e}),l=new r(2*e.period,!0,!0,!1);this.generator=function*(){for(var t,r,s=yield{high:n,low:o};;){var{high:n,low:o}=s;l.push(n),l.push(o),r=i.nextValue(s),l.totalPushed>=2*e.period&&null!=r&&(t={exitLong:l.periodHigh-r*e.multiplier,exitShort:l.periodLow+r*e.multiplier}),s=yield t}}(),this.generator.next(),t.forEach(((e,t)=>{var r={high:e,low:s[t],close:n[t]},i=this.generator.next(r);null!=i.value&&this.result.push(i.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function cr(e){h.reverseInputs(e);var t=new hr(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}hr.calculate=cr;class vr extends h{constructor(e){super(e),this.lineA=e.lineA,this.lineB=e.lineB;var t=[],r=[];this.generator=function*(){for(var e=yield,s=!1;;){t.unshift(e.valueA),r.unshift(e.valueB),s=e.valueA>e.valueB;for(var n=1;!0===s&&t[n]>=r[n];)t[n]>r[n]?s=!1:t[n]<r[n]?s=!0:t[n]===r[n]&&(n+=1);!0===s&&(t=[e.valueA],r=[e.valueB]),e=yield s}}(),this.generator.next(),this.result=[],this.lineA.forEach(((e,t)=>{var r=this.generator.next({valueA:this.lineA[t],valueB:this.lineB[t]});void 0!==r.value&&this.result.push(r.value)}))}static reverseInputs(e){e.reversedInput&&(e.lineA&&e.lineA.reverse(),e.lineB&&e.lineB.reverse())}nextValue(e,t){return this.generator.next({valueA:e,valueB:t}).value}}function pr(e){h.reverseInputs(e);var t=new vr(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}vr.calculate=pr;class dr extends h{constructor(e){super(e),this.lineA=e.lineA,this.lineB=e.lineB;var t=[],r=[];this.generator=function*(){for(var e=yield,s=!1;;){t.unshift(e.valueA),r.unshift(e.valueB),s=e.valueA<e.valueB;for(var n=1;!0===s&&t[n]<=r[n];)t[n]<r[n]?s=!1:t[n]>r[n]?s=!0:t[n]===r[n]&&(n+=1);!0===s&&(t=[e.valueA],r=[e.valueB]),e=yield s}}(),this.generator.next(),this.result=[],this.lineA.forEach(((e,t)=>{var r=this.generator.next({valueA:this.lineA[t],valueB:this.lineB[t]});void 0!==r.value&&this.result.push(r.value)}))}static reverseInputs(e){e.reversedInput&&(e.lineA&&e.lineA.reverse(),e.lineB&&e.lineB.reverse())}nextValue(e,t){return this.generator.next({valueA:e,valueB:t}).value}}function gr(e){h.reverseInputs(e);var t=new dr(e).result;return e.reversedInput&&t.reverse(),h.reverseInputs(e),t}function wr(){let e=[];return e.push("sma"),e.push("ema"),e.push("wma"),e.push("wema"),e.push("macd"),e.push("rsi"),e.push("bollingerbands"),e.push("adx"),e.push("atr"),e.push("truerange"),e.push("roc"),e.push("kst"),e.push("psar"),e.push("stochastic"),e.push("williamsr"),e.push("adl"),e.push("obv"),e.push("trix"),e.push("cci"),e.push("awesomeoscillator"),e.push("forceindex"),e.push("vwap"),e.push("volumeprofile"),e.push("renko"),e.push("heikinashi"),e.push("stochasticrsi"),e.push("mfi"),e.push("averagegain"),e.push("averageloss"),e.push("highest"),e.push("lowest"),e.push("sum"),e.push("FixedSizeLinkedList"),e.push("sd"),e.push("bullish"),e.push("bearish"),e.push("abandonedbaby"),e.push("doji"),e.push("bearishengulfingpattern"),e.push("bullishengulfingpattern"),e.push("darkcloudcover"),e.push("downsidetasukigap"),e.push("dragonflydoji"),e.push("gravestonedoji"),e.push("bullishharami"),e.push("bearishharami"),e.push("bullishharamicross"),e.push("bearishharamicross"),e.push("eveningdojistar"),e.push("eveningstar"),e.push("morningdojistar"),e.push("morningstar"),e.push("bullishmarubozu"),e.push("bearishmarubozu"),e.push("piercingline"),e.push("bullishspinningtop"),e.push("bearishspinningtop"),e.push("threeblackcrows"),e.push("threewhitesoldiers"),e.push("bullishhammerstick"),e.push("bearishhammerstick"),e.push("bullishinvertedhammerstick"),e.push("bearishinvertedhammerstick"),e.push("hammerpattern"),e.push("hammerpatternunconfirmed"),e.push("hangingman"),e.push("hangingmanunconfirmed"),e.push("shootingstar"),e.push("shootingstarunconfirmed"),e.push("tweezertop"),e.push("tweezerbottom"),e.push("predictPattern"),e.push("hasDoubleBottom"),e.push("hasDoubleTop"),e.push("hasHeadAndShoulder"),e.push("hasInverseHeadAndShoulder"),e.push("isTrendingUp"),e.push("isTrendingDown"),e.push("ichimokucloud"),e.push("keltnerchannels"),e.push("chandelierexit"),e.push("crossup"),e.push("crossdown"),e.push("crossover"),e}dr.calculate=gr;let fr=wr();export{Y as ADL,L as ADX,N as ATR,fr as AvailableIndicators,_ as AverageGain,q as AverageLoss,oe as AwesomeOscillator,B as BollingerBands,ie as CCI,s as CandleData,n as CandleList,hr as ChandelierExit,ur as ChandelierExitInput,ar as ChandelierExitOutput,dr as CrossDown,vr as CrossUp,p as EMA,r as FixedSizeLinkedList,se as ForceIndex,Ce as HeikinAshi,xe as Highest,rr as IchimokuCloud,O as KST,lr as KeltnerChannels,nr as KeltnerChannelsInput,ir as KeltnerChannelsOutput,Ie as Lowest,y as MACD,de as MFI,$ as OBV,G as PSAR,R as ROC,E as RSI,S as SD,c as SMA,J as Stochastic,we as StochasticRSI,Pe as Sum,te as TRIX,z as TrueRange,ae as VWAP,ce as VolumeProfile,f as WEMA,g as WMA,m as WilderSmoothing,Q as WilliamsR,Ft as abandonedbaby,Z as adl,D as adx,F as atr,V as averagegain,C as averageloss,ue as awesomeoscillator,Dt as bearish,pt as bearishengulfingpattern,er as bearishfractal,et as bearishhammerstick,gt as bearishharami,ft as bearishharamicross,rt as bearishinvertedhammerstick,_t as bearishmarubozu,Xt as bearishspinningtop,H as bollingerbands,ct as bullish,He as bullishengulfingpattern,Zt as bullishfractal,Xe as bullishhammerstick,ke as bullishharami,Te as bullishharamicross,Ze as bullishinvertedhammerstick,Ue as bullishmarubozu,Kt as bullishspinningtop,le as cci,cr as chandelierexit,gr as crossDown,pr as crossUp,jt as darkcloudcover,De as doji,je as downsidetasukigap,Ut as dragonflydoji,d as ema,mt as eveningdojistar,yt as eveningstar,tr as fibonacciretracement,ne as forceindex,wr as getAvailableIndicators,o as getConfig,Wt as gravestonedoji,nt as hammerpattern,lt as hammerpatternunconfirmed,Et as hangingman,St as hangingmanunconfirmed,Ee as heikinashi,me as highest,sr as ichimokucloud,or as keltnerchannels,U as kst,ye as lowest,P as macd,ge as mfi,Fe as morningdojistar,Me as morningstar,ee as obv,We as piercingline,W as psar,qe as renko,j as roc,b as rsi,M as sd,l as setConfig,Bt as shootingstar,At as shootingstarunconfirmed,v as sma,K as stochastic,fe as stochasticrsi,_e as sum,qt as threeblackcrows,Ke as threewhitesoldiers,re as trix,T as truerange,ut as tweezerbottom,zt as tweezertop,ve as volumeprofile,he as vwap,x as wema,I as wildersmoothing,X as williamsr,w as wma}; | ||
var window=function(e){"use strict";class t{constructor(e,t,r){this.next=r,r&&(r.prev=this),this.prev=t,t&&(t.next=this),this.data=e}}class r{constructor(){this._length=0}get head(){return this._head&&this._head.data}get tail(){return this._tail&&this._tail.data}get current(){return this._current&&this._current.data}get length(){return this._length}push(e){this._tail=new t(e,this._tail),0===this._length&&(this._head=this._tail,this._current=this._head,this._next=this._head),this._length++}pop(){var e=this._tail;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._tail=e.prev,this._tail.next=void 0,this._current===e&&(this._current=this._tail,this._next=void 0),e.data)}shift(){var e=this._head;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._head=this._head.next,this._current===e&&(this._current=this._head,this._next=this._current.next),e.data)}unshift(e){this._head=new t(e,void 0,this._head),0===this._length&&(this._tail=this._head,this._next=this._head),this._length++}unshiftCurrent(){var e=this._current;return e===this._head||this._length<2?e&&e.data:(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.next=this._head,e.prev=void 0,this._head.prev=e,this._head=e,e.data)}removeCurrent(){var e=this._current;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):e===this._head?(this._head=e.next,this._head.prev=void 0,this._current=this._head):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.data)}resetCursor(){return this._current=this._next=this._head,this}next(){var e=this._next;if(void 0!==e)return this._next=e.next,this._current=e,e.data}}class s extends r{constructor(e,t,r,s){if(super(),this.size=e,this.maintainHigh=t,this.maintainLow=r,this.maintainSum=s,this.totalPushed=0,this.periodHigh=0,this.periodLow=1/0,this.periodSum=0,!e||"number"!=typeof e)throw"Size required and should be a number.";this._push=this.push,this.push=function(e){this.add(e),this.totalPushed++}}add(e){this.length===this.size?(this.lastShift=this.shift(),this._push(e),this.maintainHigh&&this.lastShift==this.periodHigh&&this.calculatePeriodHigh(),this.maintainLow&&this.lastShift==this.periodLow&&this.calculatePeriodLow(),this.maintainSum&&(this.periodSum=this.periodSum-this.lastShift)):this._push(e),this.maintainHigh&&this.periodHigh<=e&&(this.periodHigh=e),this.maintainLow&&this.periodLow>=e&&(this.periodLow=e),this.maintainSum&&(this.periodSum=this.periodSum+e)}*iterator(){for(this.resetCursor();this.next();)yield this.current}calculatePeriodHigh(){for(this.resetCursor(),this.next()&&(this.periodHigh=this.current);this.next();)this.periodHigh<=this.current&&(this.periodHigh=this.current)}calculatePeriodLow(){for(this.resetCursor(),this.next()&&(this.periodLow=this.current);this.next();)this.periodLow>=this.current&&(this.periodLow=this.current)}}class n{constructor(){this.open=[],this.high=[],this.low=[],this.close=[],this.volume=[],this.timestamp=[]}}let i={};function l(e){return i[e]}function o(e){let t=l("precision");return t?parseFloat(e.toPrecision(t)):e}class u{}class a{constructor(e){this.format=e.format||o}static reverseInputs(e){e.reversedInput&&(e.values&&e.values.reverse(),e.open&&e.open.reverse(),e.high&&e.high.reverse(),e.low&&e.low.reverse(),e.close&&e.close.reverse(),e.volume&&e.volume.reverse(),e.timestamp&&e.timestamp.reverse())}getResult(){return this.result}}class h extends a{constructor(e){super(e),this.period=e.period,this.price=e.values;this.generator=function*(e){var t,s=new r,n=0,i=1,l=yield;for(s.push(0);;)i<e?(i++,s.push(l),n+=l):(t=(n=n-s.shift()+l)/e,s.push(l)),l=yield t}(this.period),this.generator.next(),this.result=[],this.price.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function c(e){a.reverseInputs(e);var t=new h(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}h.calculate=c;class p extends a{constructor(e){super(e);var t,r=e.period,s=e.values,n=2/(r+1);this.result=[],t=new h({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*n+e,r=yield e):(r=yield,(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function v(e){a.reverseInputs(e);var t=new p(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}p.calculate=v;class d extends a{constructor(e){super(e);var t=e.period,s=e.values;this.result=[],this.generator=function*(){let e=new r,s=t*(t+1)/2;for(;;)if(e.length<t)e.push(yield);else{e.resetCursor();let r=0;for(let n=1;n<=t;n++)r+=e.next()*n/s;var n=yield r;e.shift(),e.push(n)}}(),this.generator.next(),s.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(this.format(r.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function g(e){a.reverseInputs(e);var t=new d(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}d.calculate=g;class w extends a{constructor(e){super(e);var t,r=e.period,s=e.values,n=1/r;this.result=[],t=new h({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*n+e,r=yield e):(r=yield,void 0!==(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function f(e){a.reverseInputs(e);var t=new w(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}w.calculate=f;class m extends a{constructor(e){super(e),this.period=e.period,this.price=e.values;this.generator=function*(e){for(var t=0,r=1,s=yield,n=0;;)r<e?(r++,t+=s,n=void 0):r==e?(r++,n=t+=s):n=n-n/e+s,s=yield n}(this.period),this.generator.next(),this.result=[],this.price.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}function x(e){a.reverseInputs(e);var t=new m(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}m.calculate=x;class I extends a{constructor(e){super(e);var t=e.SimpleMAOscillator?h:p,r=e.SimpleMASignal?h:p,s=new t({period:e.fastPeriod,values:[],format:e=>e}),n=new t({period:e.slowPeriod,values:[],format:e=>e}),i=new r({period:e.signalPeriod,values:[],format:e=>e}),l=this.format;this.result=[],this.generator=function*(){for(var t,r,o,u,a,h,c=0;;)c<e.slowPeriod?(t=yield,a=s.nextValue(t),h=n.nextValue(t),c++):(a&&h&&(r=a-h,o=i.nextValue(r)),u=r-o,t=yield{MACD:l(r),signal:o?l(o):void 0,histogram:isNaN(u)?void 0:l(u)},a=s.nextValue(t),h=n.nextValue(t))}(),this.generator.next(),e.values.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function y(e){a.reverseInputs(e);var t=new I(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}I.calculate=y;class P extends a{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,n=yield,i=1,l=0,o=n;for(n=yield;;)(r=(r=n-o)>0?r:0)>0&&(l+=r),i<e?i++:t=void 0===t?l/e:(t*(e-1)+r)/e,o=n,t=void 0!==t?s(t):void 0,n=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function _(e){a.reverseInputs(e);var t=new P(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}P.calculate=_;class b extends a{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,n=yield,i=1,l=0,o=n;for(n=yield;;)(r=(r=o-n)>0?r:0)>0&&(l+=r),i<e?i++:t=void 0===t?l/e:(t*(e-1)+r)/e,o=n,t=void 0!==t?s(t):void 0,n=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function V(e){a.reverseInputs(e);var t=new b(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}b.calculate=V;class C extends a{constructor(e){super(e);var t=e.period,r=e.values,s=new P({period:t,values:[]}),n=new b({period:t,values:[]});this.generator=function*(e){for(var t,r,i,l,o=yield;;)t=s.nextValue(o),r=n.nextValue(o),void 0!==t&&void 0!==r&&(0===r?l=100:0===t?l=0:(i=t/r,i=isNaN(i)?0:i,l=parseFloat((100-100/(1+i)).toFixed(2)))),o=yield l}(),this.generator.next(),this.result=[],r.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function q(e){a.reverseInputs(e);var t=new C(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}C.calculate=q;class E extends a{constructor(e){super(e);var t=e.period,r=e.values,n=new h({period:t,values:[],format:e=>e});this.result=[],this.generator=function*(){var e,r,i,l=new s(t);for(e=yield;;){if(l.push(e),r=n.nextValue(e)){let e=0;for(let t of l.iterator())e+=Math.pow(t-r,2);i=Math.sqrt(e/t)}e=yield i}}(),this.generator.next(),r.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return this.format(t.value)}}function S(e){a.reverseInputs(e);var t=new E(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}E.calculate=S;class A extends a{constructor(e){super(e);var t,r,s=e.period,n=e.values,i=e.stdDev,l=this.format;this.result=[],t=new h({period:s,values:[],format:e=>e}),r=new E({period:s,values:[],format:e=>e}),this.generator=function*(){var e,s,n,o;for(s=yield;;){if(n=t.nextValue(s),o=r.nextValue(s),n){let t=l(n),r=l(n+o*i),u=l(n-o*i);e={middle:t,upper:r,lower:u,pb:l((s-u)/(r-u))}}s=yield e}}(),this.generator.next(),n.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function M(e){a.reverseInputs(e);var t=new A(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}A.calculate=M;class k extends a{constructor(e){super(e);var t=e.low,r=e.high,s=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;){if(t){let n=r.high-t.high,i=t.low-r.low;e=s(i>n&&i>0?i:0)}t=r,r=yield e}}(),this.generator.next(),t.forEach(((e,s)=>{var n=this.generator.next({high:r[s],low:t[s]});void 0!==n.value&&this.result.push(n.value)}))}static calculate(e){a.reverseInputs(e);var t=new k(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}nextValue(e){return this.generator.next(e).value}}class B extends a{constructor(e){super(e);var t=e.low,r=e.high,s=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;){if(t){let n=r.high-t.high,i=t.low-r.low;e=s(n>i&&n>0?n:0)}t=r,r=yield e}}(),this.generator.next(),t.forEach(((e,s)=>{var n=this.generator.next({high:r[s],low:t[s]});void 0!==n.value&&this.result.push(n.value)}))}static calculate(e){a.reverseInputs(e);var t=new B(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}nextValue(e){return this.generator.next(e).value}}class H extends a{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;)void 0===e&&(e=r.close,r=yield t),t=Math.max(r.high-r.low,isNaN(Math.abs(r.high-e))?0:Math.abs(r.high-e),isNaN(Math.abs(r.low-e))?0:Math.abs(r.low-e)),e=r.close,null!=t&&(t=n(t)),r=yield t}(),this.generator.next(),t.forEach(((e,n)=>{var i=this.generator.next({high:r[n],low:t[n],close:s[n]});null!=i.value&&this.result.push(i.value)}))}nextValue(e){return this.generator.next(e).value}}function z(e){a.reverseInputs(e);var t=new H(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}H.calculate=z;class L extends a{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=e.period,i=this.format,l=new B({high:[],low:[]}),o=new k({high:[],low:[]}),u=new m({period:n,values:[],format:e=>e}),a=new m({period:n,values:[],format:e=>e}),h=new m({period:n,values:[],format:e=>e}),c=new w({period:n,values:[],format:e=>e}),p=new H({low:[],high:[],close:[]});if(t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r,s,n=yield;;){let i=p.nextValue(n),v=l.nextValue(n),d=o.nextValue(n);if(void 0===i){n=yield;continue}let g=h.nextValue(i),w=u.nextValue(v),f=a.nextValue(d);if(null!=g&&null!=w&&null!=f){e=100*w/g,t=100*f/g,r=Math.abs(e-t)/(e+t)*100,s=c.nextValue(r)}n=yield{adx:s,pdi:e,mdi:t}}}(),this.generator.next(),t.forEach(((e,n)=>{var l=this.generator.next({high:r[n],low:t[n],close:s[n]});null!=l.value&&null!=l.value.adx&&this.result.push({adx:i(l.value.adx),pdi:i(l.value.pdi),mdi:i(l.value.mdi)})}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t&&null!=t.adx)return{adx:this.format(t.adx),pdi:this.format(t.pdi),mdi:this.format(t.mdi)}}}function T(e){a.reverseInputs(e);var t=new L(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}L.calculate=T;class D extends a{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=e.period,i=this.format;if(t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";var l=new H({low:[],high:[],close:[]}),o=new w({period:n,values:[],format:e=>e});this.result=[],this.generator=function*(){for(var e,t,r=yield;;)e=void 0===(t=l.nextValue({low:r.low,high:r.high,close:r.close}))?void 0:o.nextValue(t),r=yield e}(),this.generator.next(),t.forEach(((e,n)=>{var l=this.generator.next({high:r[n],low:t[n],close:s[n]});void 0!==l.value&&this.result.push(i(l.value))}))}nextValue(e){return this.generator.next(e).value}}function R(e){a.reverseInputs(e);var t=new D(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}D.calculate=R;class F extends a{constructor(e){super(e);var t=e.period,r=e.values;this.result=[],this.generator=function*(){let e=1;for(var r,n=new s(t),i=yield;;)n.push(i),e<t?e++:r=(i-n.lastShift)/n.lastShift*100,i=yield r}(),this.generator.next(),r.forEach((e=>{var t=this.generator.next(e);null==t.value||isNaN(t.value)||this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value&&!isNaN(t.value))return this.format(t.value)}}function N(e){a.reverseInputs(e);var t=new F(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}F.calculate=N;class j extends a{constructor(e){super(e);let t=e.values,r=e.ROCPer1,s=e.ROCPer2,n=e.ROCPer3,i=e.ROCPer4,l=e.SMAROCPer1,o=e.SMAROCPer2,u=e.SMAROCPer3,a=e.SMAROCPer4,c=e.signalPeriod,p=new F({period:r,values:[]}),v=new F({period:s,values:[]}),d=new F({period:n,values:[]}),g=new F({period:i,values:[]}),w=new h({period:l,values:[],format:e=>e}),f=new h({period:o,values:[],format:e=>e}),m=new h({period:u,values:[],format:e=>e}),x=new h({period:a,values:[],format:e=>e}),I=new h({period:c,values:[],format:e=>e});var y=this.format;this.result=[];let P=Math.max(r+l,s+o,n+u,i+a);this.generator=function*(){let e,t,r,s,n,i,l,o=1,u=yield;for(;;){let a=p.nextValue(u),h=v.nextValue(u),c=d.nextValue(u),_=g.nextValue(u);t=void 0!==a?w.nextValue(a):void 0,r=void 0!==h?f.nextValue(h):void 0,s=void 0!==c?m.nextValue(c):void 0,n=void 0!==_?x.nextValue(_):void 0,o<P?o++:e=1*t+2*r+3*s+4*n,i=void 0!==e?I.nextValue(e):void 0,l=void 0!==e?{kst:y(e),signal:i?y(i):void 0}:void 0,u=yield l}}(),this.generator.next(),t.forEach((e=>{let t=this.generator.next(e);null!=t.value&&this.result.push(t.value)}))}nextValue(e){let t=this.generator.next(e);if(null!=t.value)return t.value}}function O(e){a.reverseInputs(e);var t=new j(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}j.calculate=O;class U extends a{constructor(e){super(e);let t=e.high||[],r=e.low||[];this.result=[],this.generator=function*(e,t){let r,s,n,i,l=!0,o=e,u=yield;for(;;)r?(n+=o*(s-n),l?(n=Math.min(n,i.low,u.low),r.high>s&&(s=r.high,o=Math.min(o+e,t))):(n=Math.max(n,i.high,u.high),r.low<s&&(s=r.low,o=Math.min(o+e,t))),(l&&r.low<n||!l&&r.high>n)&&(o=e,n=s,l=!l,s=l?r.high:r.low)):(n=u.low,s=u.high),i=u,r&&(u=r),r=yield n}(e.step,e.max),this.generator.next(),r.forEach(((e,s)=>{var n=this.generator.next({high:t[s],low:r[s]});void 0!==n.value&&this.result.push(n.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function W(e){a.reverseInputs(e);var t=new U(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}U.calculate=W;class K extends a{constructor(e){super(e);let t=e.low,r=e.high,n=e.close,i=e.period,l=e.signalPeriod,o=this.format;if(t.length!==r.length||r.length!==n.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e,t,r=1,n=new s(i,!0,!1),u=new s(i,!1,!0),a=new h({period:l,values:[],format:e=>e});for(var c=yield;;){if(n.push(c.high),u.push(c.low),r<i){r++,c=yield;continue}let s=u.periodLow;e=(c.close-s)/(n.periodHigh-s)*100,e=isNaN(e)?0:e,t=a.nextValue(e),c=yield{k:o(e),d:void 0!==t?o(t):void 0}}}(),this.generator.next(),t.forEach(((e,s)=>{var i=this.generator.next({high:r[s],low:t[s],close:n[s]});void 0!==i.value&&this.result.push(i.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function G(e){a.reverseInputs(e);var t=new K(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}K.calculate=G;class X extends a{constructor(e){super(e);let t=e.low,r=e.high,n=e.close,i=e.period,l=this.format;if(t.length!==r.length||r.length!==n.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e,t,r=1,n=new s(i,!0,!1),o=new s(i,!1,!0);var u=yield;let a;for(;;)n.push(u.high),o.push(u.low),r<i?(r++,u=yield):(e=o.periodLow,t=n.periodHigh,a=l((t-u.close)/(t-e)*-100),u=yield a)}(),this.generator.next(),t.forEach(((e,s)=>{var i=this.generator.next({high:r[s],low:t[s],close:n[s]});void 0!==i.value&&this.result.push(i.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return this.format(t.value)}}function J(e){a.reverseInputs(e);var t=new X(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}X.calculate=J;class Q extends a{constructor(e){super(e);var t=e.high,r=e.low,s=e.close,n=e.volume;if(r.length!==t.length||t.length!==s.length||t.length!==n.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[],this.generator=function*(){var e,t=0;for(e=yield;;){let r=(e.close-e.low-(e.high-e.close))/(e.high-e.low);r=isNaN(r)?1:r,t+=r*e.volume,e=yield Math.round(t)}}(),this.generator.next(),t.forEach(((e,t)=>{var i={high:e,low:r[t],close:s[t],volume:n[t]},l=this.generator.next(i);null!=l.value&&this.result.push(l.value)}))}nextValue(e){return this.generator.next(e).value}}function Y(e){a.reverseInputs(e);var t=new Q(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}Q.calculate=Y;class Z extends a{constructor(e){super(e);var t=e.close,r=e.volume;this.result=[],this.generator=function*(){var e,t,r=0;for((e=yield).close&&"number"==typeof e.close&&(t=e.close,e=yield);;)t<e.close?r+=e.volume:e.close<t&&(r-=e.volume),t=e.close,e=yield r}(),this.generator.next(),t.forEach(((e,s)=>{let n={close:t[s],volume:r[s]},i=this.generator.next(n);null!=i.value&&this.result.push(i.value)}))}nextValue(e){return this.generator.next(e).value}}function $(e){a.reverseInputs(e);var t=new Z(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}Z.calculate=$;class ee extends a{constructor(e){super(e);let t=e.values,r=e.period,s=this.format,n=new p({period:r,values:[],format:e=>e}),i=new p({period:r,values:[],format:e=>e}),l=new p({period:r,values:[],format:e=>e}),o=new F({period:1,values:[],format:e=>e});this.result=[],this.generator=function*(){let e=yield;for(;;){let t=n.nextValue(e),r=t?i.nextValue(t):void 0,u=r?l.nextValue(r):void 0,a=u?o.nextValue(u):void 0;e=yield a?s(a):void 0}}(),this.generator.next(),t.forEach((e=>{let t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function te(e){a.reverseInputs(e);var t=new ee(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}ee.calculate=te;class re extends a{constructor(e){super(e);var t=e.close,r=e.volume,s=e.period||1;if(r.length!==t.length)throw"Inputs(volume, close) not of equal size";let n=new p({values:[],period:s});this.result=[],this.generator=function*(){var e=yield,t=yield;let r;for(;;)r=(t.close-e.close)*t.volume,e=t,t=yield n.nextValue(r)}(),this.generator.next(),r.forEach(((e,s)=>{var n=this.generator.next({close:t[s],volume:r[s]});null!=n.value&&this.result.push(n.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function se(e){a.reverseInputs(e);var t=new re(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}re.calculate=se;class ne extends a{constructor(e){super(e);var t=e.low,r=e.high,n=e.close,i=e.period;this.format;var l=new s(i),o=new h({period:i,values:[],format:e=>e});if(t.length!==r.length||r.length!==n.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){for(var e=yield;;){let t=(e.high+e.low+e.close)/3;l.push(t);let r,s=o.nextValue(t),n=null,u=0;if(null!=s){for(let e of l.iterator())u+=Math.abs(e-s);n=u/i,r=(t-s)/(.015*n)}e=yield r}}(),this.generator.next(),t.forEach(((e,s)=>{var i=this.generator.next({high:r[s],low:t[s],close:n[s]});null!=i.value&&this.result.push(i.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function ie(e){a.reverseInputs(e);var t=new ne(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}ne.calculate=ie;class le extends a{constructor(e){super(e);var t=e.high,r=e.low,s=e.fastPeriod,n=e.slowPeriod,i=new h({values:[],period:n}),l=new h({values:[],period:s});this.result=[],this.generator=function*(){var e,t,r,s,n;for(t=yield;;)r=(t.high+t.low)/2,s=i.nextValue(r),n=l.nextValue(r),void 0!==s&&void 0!==n&&(e=n-s),t=yield e}(),this.generator.next(),t.forEach(((e,t)=>{var s={high:e,low:r[t]},n=this.generator.next(s);null!=n.value&&this.result.push(this.format(n.value))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return this.format(t.value)}}function oe(e){a.reverseInputs(e);var t=new le(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}le.calculate=oe;class ue extends a{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,n=e.volume;if(this.format,t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e=yield,t=0,r=0;for(;;){let s=(e.high+e.low+e.close)/3;t+=e.volume*s,r+=e.volume,e=yield t/r}}(),this.generator.next(),t.forEach(((e,i)=>{let l=this.generator.next({high:r[i],low:t[i],close:s[i],volume:n[i]});null!=l.value&&this.result.push(l.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function ae(e){a.reverseInputs(e);var t=new ue(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}ue.calculate=ae;class he extends a{constructor(e){super(e);var t=e.high,r=e.low,s=e.close,n=e.open,i=e.volume,l=e.noOfBars;if(r.length!==t.length||t.length!==s.length||t.length!==i.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[];var o,u,a,h,c=Math.max(...t,...r,...s,...n),p=Math.min(...t,...r,...s,...n),v=(c-p)/l,d=p;for(let e=0;e<l;e++){let e=d,l=e+v;d=l;let c=0,p=0,g=0;for(let v=0;v<t.length;v++){let d=r[v],w=t[v],f=n[v],m=s[v],x=i[v];u=l,h=w,((o=e)<=(a=d)&&u>=a||a<=o&&h>=o)&&(g+=x,f>m?p+=x:c+=x)}this.result.push({rangeStart:e,rangeEnd:l,bullishVolume:c,bearishVolume:p,totalVolume:g})}}nextValue(e){throw"Next value not supported for volume profile"}}function ce(e){a.reverseInputs(e);var t=new he(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}he.calculate=ce;class pe extends a{constructor(e){super(e),this.result=[],this.generator=function*(){let e=yield;for(;;)e=yield(e.high+e.low+e.close)/3}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({high:e.high[r],low:e.low[r],close:e.close[r]});this.result.push(s.value)}))}nextValue(e){return this.generator.next(e).value}}pe.calculate=function(e){a.reverseInputs(e);var t=new pe(e).result;e.reversedInput&&t.reverse();return a.reverseInputs(e),t};class ve extends a{constructor(e){super(e);var t=e.high,r=e.low,n=e.close,i=e.volume,l=e.period,o=new pe({low:[],high:[],close:[]}),u=new s(l,!1,!1,!0),a=new s(l,!1,!1,!0);if(r.length!==t.length||t.length!==n.length||t.length!==i.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[],this.generator=function*(){var e,t,r,s,n=0;let i=null,h=null;for((t=yield).close,t=yield;;){var{high:c,low:p,close:v,volume:d}=t,g=0,w=0;i=o.nextValue({high:c,low:p,close:v}),n=i*d,null!=i&&null!=h&&(i>h?g=n:w=n,u.push(g),a.push(w),r=u.periodSum,s=a.periodSum,u.totalPushed>=l&&u.totalPushed>=l&&(e=100-100/(1+r/s))),h=i,t=yield e}}(),this.generator.next(),t.forEach(((e,t)=>{var s={high:e,low:r[t],close:n[t],volume:i[t]},l=this.generator.next(s);null!=l.value&&this.result.push(parseFloat(l.value.toFixed(2)))}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return parseFloat(t.value.toFixed(2))}}function de(e){a.reverseInputs(e);var t=new ve(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}ve.calculate=de;class ge extends a{constructor(e){super(e);let t=e.values,r=e.rsiPeriod,s=e.stochasticPeriod,n=e.kPeriod,i=e.dPeriod;this.format,this.result=[],this.generator=function*(){let e,t,l,o,u=new C({period:r,values:[]}),a=new K({period:s,high:[],low:[],close:[],signalPeriod:n}),c=new h({period:i,values:[],format:e=>e});for(var p=yield;;){if(e=u.nextValue(p),void 0!==e){var v={high:e,low:e,close:e};t=a.nextValue(v),void 0!==t&&void 0!==t.d&&(l=c.nextValue(t.d),void 0!==l&&(o={stochRSI:t.k,k:t.d,d:l}))}p=yield o}}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);void 0!==r.value&&this.result.push(r.value)}))}nextValue(e){let t=this.generator.next(e);if(void 0!==t.value)return t.value}}function we(e){a.reverseInputs(e);var t=new ge(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}ge.calculate=we;class fe extends a{constructor(e){super(e);var t=e.values,r=e.period;this.result=[];var n=new s(r,!0,!1,!1);this.generator=function*(){var e,t;for(e=yield;;)n.push(e),n.totalPushed>=r&&(t=n.periodHigh),e=yield t}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(r.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function me(e){a.reverseInputs(e);var t=new fe(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}fe.calculate=me;class xe extends a{constructor(e){super(e);var t=e.values,r=e.period;this.result=[];var n=new s(r,!1,!0,!1);this.generator=function*(){var e,t;for(e=yield;;)n.push(e),n.totalPushed>=r&&(t=n.periodLow),e=yield t}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(r.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function Ie(e){a.reverseInputs(e);var t=new xe(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}xe.calculate=Ie;class ye extends a{constructor(e){super(e);var t=e.values,r=e.period;this.result=[];var n=new s(r,!1,!1,!0);this.generator=function*(){var e,t;for(e=yield;;)n.push(e),n.totalPushed>=r&&(t=n.periodSum),e=yield t}(),this.generator.next(),t.forEach(((e,t)=>{var r=this.generator.next(e);null!=r.value&&this.result.push(r.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function Pe(e){a.reverseInputs(e);var t=new ye(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}ye.calculate=Pe;class _e extends a{constructor(e){super(e),this.format;let t=e.useATR,r=e.brickSize||0;if(t){let t=R(Object.assign({},e));r=t[t.length-1]}if(this.result=new n,0===r)return void console.error("Not enough data to calculate brickSize for renko when using ATR");let s=0,i=0,l=1/0,o=0,u=0;this.generator=function*(){let e=yield;for(;;){if(0===s){s=e.close,i=e.high,l=e.low,o=e.close,u=e.volume,e.timestamp,e=yield;continue}let t=Math.abs(e.close-o),n=Math.abs(e.close-s);if(t>=r&&n>=r){let a=t>n?s:o,h={open:a,high:i>e.high?i:e.high,low:l<e.low?l:e.low,close:a>e.close?a-r:a+r,volume:u+e.volume,timestamp:e.timestamp};s=h.open,i=h.close,l=h.close,o=h.close,u=0,e=yield h}else i=i>e.high?i:e.high,l=l<e.low?l:e.low,u+=e.volume,e.timestamp,e=yield}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume[r],timestamp:e.timestamp[r]});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return console.error("Cannot calculate next value on Renko, Every value has to be recomputed for every change, use calcualte method"),null}}function be(e){a.reverseInputs(e);var t=new _e(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),a.reverseInputs(e),t}_e.calculate=be;class Ve extends a{constructor(e){super(e),this.format,this.result=new n;let t=null,r=0,s=1/0,i=0;this.generator=function*(){let e=yield,n=null;for(;;){if(null===t)t=(e.close+e.open)/2,r=e.high,s=e.low,i=(e.close+e.open+e.high+e.low)/4,e.volume,e.timestamp,n={open:t,high:r,low:s,close:i,volume:e.volume||0,timestamp:e.timestamp||0};else{let l=(e.close+e.open+e.high+e.low)/4,o=(t+i)/2,u=Math.max(o,l,e.high),a=Math.min(e.low,o,l);n={close:l,open:o,high:u,low:a,volume:e.volume||0,timestamp:e.timestamp||0},i=l,t=o,r=u,s=a}e=yield n}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume?e.volume[r]:e.volume,timestamp:e.timestamp?e.timestamp[r]:e.timestamp});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return this.generator.next(e).value}}function Ce(e){a.reverseInputs(e);var t=new Ve(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),a.reverseInputs(e),t}Ve.calculate=Ce;class qe{constructor(){}approximateEqual(e,t){return 1*parseFloat(Math.abs(e-t).toPrecision(4))<=1*parseFloat((.001*e).toPrecision(4))}logic(e){throw"this has to be implemented"}getAllPatternIndex(e){if(e.close.length<this.requiredCount)return console.warn("Data count less than data required for the strategy ",this.name),[];e.reversedInput&&(e.open.reverse(),e.high.reverse(),e.low.reverse(),e.close.reverse());let t=this.logic;return this._generateDataForCandleStick(e).map(((e,r)=>t.call(this,e)?r:void 0)).filter((e=>e))}hasPattern(e){if(e.close.length<this.requiredCount)return console.warn("Data count less than data required for the strategy ",this.name),!1;return e.reversedInput&&(e.open.reverse(),e.high.reverse(),e.low.reverse(),e.close.reverse()),this.logic.call(this,this._getLastDataForCandleStick(e))}_getLastDataForCandleStick(e){let t=this.requiredCount;if(e.close.length===t)return e;{let r={open:[],high:[],low:[],close:[]},s=0,n=e.close.length-t;for(;s<t;)r.open.push(e.open[n+s]),r.high.push(e.high[n+s]),r.low.push(e.low[n+s]),r.close.push(e.close[n+s]),s++;return r}}_generateDataForCandleStick(e){let t=this.requiredCount;return e.close.map((function(r,s){let n=0,i={open:[],high:[],low:[],close:[]};for(;n<t;)i.open.push(e.open[s+n]),i.high.push(e.high[s+n]),i.low.push(e.low[s+n]),i.close.push(e.close[s+n]),n++;return i})).filter(((r,s)=>s<=e.close.length-t))}}class Ee extends qe{constructor(){super(),this.name="MorningStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0];e.open[1];let n=e.close[1],i=e.high[1],l=e.low[1],o=e.open[2],u=e.close[2];return e.high[2],e.low[2],r<t&&(s>l&&s>i)&&(i<s&&l<s&&o>i&&n<o)&&o<u&&u>(t+r)/2}}class Se extends qe{constructor(){super(),this.name="BullishEngulfingPattern",this.requiredCount=2}logic(e){let t=e.open[0],r=e.close[0];e.high[0],e.low[0];let s=e.open[1],n=e.close[1];return e.high[1],e.low[1],r<t&&t>s&&r>s&&t<n}}class Ae extends qe{constructor(){super(),this.requiredCount=2,this.name="BullishHarami"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1];return t>n&&r<n&&r<i&&t>o&&s>l}}class Me extends qe{constructor(){super(),this.requiredCount=2,this.name="BullishHaramiCross"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=t>n&&r<n&&r<i&&t>o&&s>l,a=this.approximateEqual(n,i);return u&&a}}class ke extends qe{constructor(){super(),this.name="Doji",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=this.approximateEqual(t,r),l=i&&this.approximateEqual(t,s),o=i&&this.approximateEqual(r,n);return i&&l==o}}class Be extends qe{constructor(){super(),this.name="MorningDojiStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=e.open[2],a=e.close[2];e.high[2],e.low[2];let h=(t+r)/2,c=r<t,p=(new ke).hasPattern({open:[n],close:[i],high:[l],low:[o]});return c&&p&&u<a&&(l<s&&o<s&&u>l&&i<u)&&a>h}}class He extends qe{constructor(){super(),this.requiredCount=3,this.name="DownsideTasukiGap"}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1],l=e.high[1];e.low[1];let o=e.open[2],u=e.close[2];return e.high[2],e.low[2],r<t&&i<n&&u>o&&l<s&&(n>o&&i<o&&u>n&&u<r)}}class ze extends qe{constructor(){super(),this.name="BullishMarubozu",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0];return this.approximateEqual(r,s)&&this.approximateEqual(n,t)&&t<r&&t<s}}class Le extends qe{constructor(){super(),this.requiredCount=2,this.name="PiercingLine"}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1];return e.high[1],e.low[1]<s&&r<t&&(s>n&&i>(t+r)/2)&&i>n}}class Te extends qe{constructor(){super(),this.name="ThreeWhiteSoldiers",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1];e.low[1];let o=e.open[2],u=e.close[2],a=e.high[2];return e.low[2],l>s&&a>l&&(t<r&&n<i&&o<u)&&(r>n&&n<s&&l>o&&o<i)}}class De extends qe{constructor(){super(),this.name="BullishHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=r>t;return i=i&&this.approximateEqual(r,s),i=i&&r-t<=2*(t-n),i}}function Re(e){return(new De).hasPattern(e)}class Fe extends qe{constructor(){super(),this.name="BullishInvertedHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=r>t;return i=i&&this.approximateEqual(t,n),i=i&&r-t<=2*(s-r),i}}function Ne(e){return(new Fe).hasPattern(e)}class je extends qe{constructor(){super(),this.name="BearishHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=t>r;return i=i&&this.approximateEqual(t,s),i=i&&t-r<=2*(r-n),i}}function Oe(e){return(new je).hasPattern(e)}class Ue extends qe{constructor(){super(),this.name="BearishInvertedHammerStick",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=t>r;return i=i&&this.approximateEqual(r,n),i=i&&t-r<=2*(s-t),i}}function We(e){return(new Ue).hasPattern(e)}class Ke extends qe{constructor(){super(),this.name="HammerPattern",this.requiredCount=5}logic(e){let t=this.downwardTrend(e);return t=t&&this.includesHammer(e),t=t&&this.hasConfirmation(e),t}downwardTrend(e,t=!0){let r=t?3:4,s=_({values:e.close.slice(0,r),period:r-1});return V({values:e.close.slice(0,r),period:r-1})>s}includesHammer(e,t=!0){let r=t?3:4,s=t?4:void 0,n={open:e.open.slice(r,s),close:e.close.slice(r,s),low:e.low.slice(r,s),high:e.high.slice(r,s)},i=Oe(n);return i=i||We(n),i=i||Re(n),i=i||Ne(n),i}hasConfirmation(e){e.open[3];let t=e.close[3],r=(e.low[3],e.high[3],e.open[4]),s=e.close[4];e.low[4],e.high[4];return r<s&&t<s}}class Ge extends Ke{constructor(){super(),this.name="HammerPatternUnconfirmed"}logic(e){let t=this.downwardTrend(e,!1);return t=t&&this.includesHammer(e,!1),t}}class Xe extends qe{constructor(){super(),this.name="TweezerBottom",this.requiredCount=5}logic(e){return this.downwardTrend(e)&&e.low[3]==e.low[4]}downwardTrend(e){let t=_({values:e.close.slice(0,3),period:2});return V({values:e.close.slice(0,3),period:2})>t}}let Je=[new Se,new He,new Ae,new Me,new Be,new Ee,new ze,new Le,new Te,new De,new Fe,new Ke,new Ge,new Xe];class Qe extends qe{constructor(){super(),this.name="Bullish Candlesticks"}hasPattern(e){return Je.reduce((function(t,r){let s=r.hasPattern(e);return t||s}),!1)}}class Ye extends qe{constructor(){super(),this.name="BearishEngulfingPattern",this.requiredCount=2}logic(e){let t=e.open[0],r=e.close[0];e.high[0],e.low[0];let s=e.open[1],n=e.close[1];return e.high[1],e.low[1],r>t&&t<s&&r<s&&t>n}}class Ze extends qe{constructor(){super(),this.requiredCount=2,this.name="BearishHarami"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1];return t<n&&r>n&&r>i&&t<o&&s>l}}class $e extends qe{constructor(){super(),this.requiredCount=2,this.name="BearishHaramiCross"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=t<n&&r>n&&r>i&&t<o&&s>l,a=this.approximateEqual(n,i);return u&&a}}class et extends qe{constructor(){super(),this.name="EveningDojiStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=e.open[2],a=e.close[2];e.high[2],e.low[2];let h=(t+r)/2,c=r>t,p=(new ke).hasPattern({open:[n],close:[i],high:[l],low:[o]});return c&&p&&(l>s&&o>s&&u<o&&i>u)&&u>a&&a<h}}class tt extends qe{constructor(){super(),this.name="EveningStar",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0],e.open[1];let n=e.close[1],i=e.high[1],l=e.low[1],o=e.open[2],u=e.close[2];return e.high[2],e.low[2],r>t&&(s<l&&s<i)&&(i>s&&l>s&&o<l&&n>o)&&o>u&&u<(t+r)/2}}class rt extends qe{constructor(){super(),this.name="BearishMarubozu",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0];return this.approximateEqual(t,s)&&this.approximateEqual(n,r)&&t>r&&t>n}}class st extends qe{constructor(){super(),this.name="ThreeBlackCrows",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1];e.high[1];let l=e.low[1],o=e.open[2],u=e.close[2];e.high[2];let a=e.low[2];return s>l&&l>a&&(t>r&&n>i&&o>u)&&(t>n&&n>r&&n>o&&o>i)}}class nt extends qe{constructor(){super(),this.name="HangingMan",this.requiredCount=5}logic(e){let t=this.upwardTrend(e);return t=t&&this.includesHammer(e),t=t&&this.hasConfirmation(e),t}upwardTrend(e,t=!0){let r=t?3:4;return _({values:e.close.slice(0,r),period:r-1})>V({values:e.close.slice(0,r),period:r-1})}includesHammer(e,t=!0){let r=t?3:4,s=t?4:void 0,n={open:e.open.slice(r,s),close:e.close.slice(r,s),low:e.low.slice(r,s),high:e.high.slice(r,s)},i=Oe(n);return i=i||Re(n),i}hasConfirmation(e){e.open[3];let t=e.close[3],r=(e.low[3],e.high[3],e.open[4]),s=e.close[4];e.low[4],e.high[4];return r>s&&t>s}}class it extends nt{constructor(){super(),this.name="HangingManUnconfirmed"}logic(e){let t=this.upwardTrend(e,!1);return t=t&&this.includesHammer(e,!1),t}}class lt extends qe{constructor(){super(),this.name="ShootingStar",this.requiredCount=5}logic(e){let t=this.upwardTrend(e);return t=t&&this.includesHammer(e),t=t&&this.hasConfirmation(e),t}upwardTrend(e,t=!0){let r=t?3:4;return _({values:e.close.slice(0,r),period:r-1})>V({values:e.close.slice(0,r),period:r-1})}includesHammer(e,t=!0){let r=t?3:4,s=t?4:void 0,n={open:e.open.slice(r,s),close:e.close.slice(r,s),low:e.low.slice(r,s),high:e.high.slice(r,s)},i=We(n);return i=i||Ne(n),i}hasConfirmation(e){e.open[3];let t=e.close[3],r=(e.low[3],e.high[3],e.open[4]),s=e.close[4];e.low[4],e.high[4];return r>s&&t>s}}class ot extends lt{constructor(){super(),this.name="ShootingStarUnconfirmed"}logic(e){let t=this.upwardTrend(e,!1);return t=t&&this.includesHammer(e,!1),t}}class ut extends qe{constructor(){super(),this.name="TweezerTop",this.requiredCount=5}logic(e){return this.upwardTrend(e)&&e.high[3]==e.high[4]}upwardTrend(e){return _({values:e.close.slice(0,3),period:2})>V({values:e.close.slice(0,3),period:2})}}let at=[new Ye,new Ze,new $e,new et,new tt,new rt,new st,new je,new Ue,new nt,new it,new lt,new ot,new ut];class ht extends qe{constructor(){super(),this.name="Bearish Candlesticks"}hasPattern(e){return at.reduce((function(t,r){return t||r.hasPattern(e)}),!1)}}class ct extends qe{constructor(){super(),this.name="AbandonedBaby",this.requiredCount=3}logic(e){let t=e.open[0],r=e.close[0];e.high[0];let s=e.low[0],n=e.open[1],i=e.close[1],l=e.high[1],o=e.low[1],u=e.open[2],a=e.close[2],h=e.high[2],c=e.low[2],p=r<t,v=(new ke).hasPattern({open:[n],close:[i],high:[l],low:[o]});return p&&v&&(l<s&&c>l&&a>u)&&h<t}}class pt extends qe{constructor(){super(),this.name="DarkCloudCover",this.requiredCount=2}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0];e.low[0];let n=e.open[1],i=e.close[1];return e.high[1],e.low[1],r>t&&i<n&&(n>s&&i<(r+t)/2&&i>t)}}class vt extends qe{constructor(){super(),this.requiredCount=1,this.name="DragonFlyDoji"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=this.approximateEqual(t,r),l=i&&this.approximateEqual(t,s),o=i&&this.approximateEqual(r,n);return i&&l&&!o}}class dt extends qe{constructor(){super(),this.requiredCount=1,this.name="GraveStoneDoji"}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=this.approximateEqual(t,r),l=i&&this.approximateEqual(t,s),o=i&&this.approximateEqual(r,n);return i&&o&&!l}}class gt extends qe{constructor(){super(),this.name="BullishSpinningTop",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=Math.abs(r-t),l=Math.abs(s-r),o=Math.abs(t-n);return i<l&&i<o}}class wt extends qe{constructor(){super(),this.name="BearishSpinningTop",this.requiredCount=1}logic(e){let t=e.open[0],r=e.close[0],s=e.high[0],n=e.low[0],i=Math.abs(r-t),l=Math.abs(s-t),o=Math.abs(s-n);return i<l&&i<o}}class ft extends qe{constructor(){super(),this.name="BullishFractal",this.requiredCount=5}logic(e){let t=e.open[2],r=e.close[2],s=e.high[2],n=e.low[2],i=t>r;return i=i&&this.approximateEqual(t,s),i=i&&n<e.low[0],i=i&&n<e.low[1],i=i&&n<e.low[3],i}}class mt extends qe{constructor(){super(),this.name="BearishFractal",this.requiredCount=5}logic(e){let t=e.open[2],r=e.close[2],s=e.high[2];e.low[2];let n=t>r;return n=n&&this.approximateEqual(t,s),n=n&&s>e.high[0],n=n&&s>e.high[1],n=n&&s>e.high[3],n}}class xt extends a{constructor(e){super(e),this.result=[];var t=Object.assign({},{conversionPeriod:9,basePeriod:26,spanPeriod:52,displacement:26},e),r=new s(2*t.conversionPeriod,!0,!0,!1),n=new s(2*t.basePeriod,!0,!0,!1),i=new s(2*t.spanPeriod,!0,!0,!1);this.generator=function*(){let e,s,l=Math.max(t.conversionPeriod,t.basePeriod,t.spanPeriod,t.displacement),o=1;for(s=yield;;){if(r.push(s.high),r.push(s.low),n.push(s.high),n.push(s.low),i.push(s.high),i.push(s.low),o<l)o++;else{let t=(r.periodHigh+r.periodLow)/2,s=(n.periodHigh+n.periodLow)/2;e={conversion:t,base:s,spanA:(t+s)/2,spanB:(i.periodHigh+i.periodLow)/2}}s=yield e}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({high:e.high[r],low:e.low[r]});s.value&&this.result.push(s.value)}))}nextValue(e){return this.generator.next(e).value}}function It(e){a.reverseInputs(e);var t=new xt(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}xt.calculate=It;class yt extends a{constructor(e){super(e);var t,r=new(e.useSMA?h:p)({period:e.maPeriod,values:[],format:e=>e}),s=new D({period:e.atrPeriod,high:[],low:[],close:[],format:e=>e});this.result=[],this.generator=function*(){var n;for(t=yield;;){var{close:i}=t,l=r.nextValue(i),o=s.nextValue(t);null!=l&&null!=o&&(n={middle:l,upper:l+e.multiplier*o,lower:l-e.multiplier*o}),t=yield n}}(),this.generator.next(),e.high.forEach(((t,r)=>{var s={high:t,low:e.low[r],close:e.close[r]},n=this.generator.next(s);null!=n.value&&this.result.push(n.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function Pt(e){a.reverseInputs(e);var t=new yt(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}yt.calculate=Pt;class _t extends a{constructor(e){super(e);var t=e.high,r=e.low,n=e.close;this.result=[];var i=new D({period:e.period,high:[],low:[],close:[],format:e=>e}),l=new s(2*e.period,!0,!0,!1);this.generator=function*(){for(var t,r,s=yield{high:n,low:o};;){var{high:n,low:o}=s;l.push(n),l.push(o),r=i.nextValue(s),l.totalPushed>=2*e.period&&null!=r&&(t={exitLong:l.periodHigh-r*e.multiplier,exitShort:l.periodLow+r*e.multiplier}),s=yield t}}(),this.generator.next(),t.forEach(((e,t)=>{var s={high:e,low:r[t],close:n[t]},i=this.generator.next(s);null!=i.value&&this.result.push(i.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function bt(e){a.reverseInputs(e);var t=new _t(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}_t.calculate=bt;class Vt extends a{constructor(e){super(e),this.lineA=e.lineA,this.lineB=e.lineB;var t=[],r=[];this.generator=function*(){for(var e=yield,s=!1;;){t.unshift(e.valueA),r.unshift(e.valueB),s=e.valueA>e.valueB;for(var n=1;!0===s&&t[n]>=r[n];)t[n]>r[n]?s=!1:t[n]<r[n]?s=!0:t[n]===r[n]&&(n+=1);!0===s&&(t=[e.valueA],r=[e.valueB]),e=yield s}}(),this.generator.next(),this.result=[],this.lineA.forEach(((e,t)=>{var r=this.generator.next({valueA:this.lineA[t],valueB:this.lineB[t]});void 0!==r.value&&this.result.push(r.value)}))}static reverseInputs(e){e.reversedInput&&(e.lineA&&e.lineA.reverse(),e.lineB&&e.lineB.reverse())}nextValue(e,t){return this.generator.next({valueA:e,valueB:t}).value}}function Ct(e){a.reverseInputs(e);var t=new Vt(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}Vt.calculate=Ct;class qt extends a{constructor(e){super(e),this.lineA=e.lineA,this.lineB=e.lineB;var t=[],r=[];this.generator=function*(){for(var e=yield,s=!1;;){t.unshift(e.valueA),r.unshift(e.valueB),s=e.valueA<e.valueB;for(var n=1;!0===s&&t[n]<=r[n];)t[n]<r[n]?s=!1:t[n]>r[n]?s=!0:t[n]===r[n]&&(n+=1);!0===s&&(t=[e.valueA],r=[e.valueB]),e=yield s}}(),this.generator.next(),this.result=[],this.lineA.forEach(((e,t)=>{var r=this.generator.next({valueA:this.lineA[t],valueB:this.lineB[t]});void 0!==r.value&&this.result.push(r.value)}))}static reverseInputs(e){e.reversedInput&&(e.lineA&&e.lineA.reverse(),e.lineB&&e.lineB.reverse())}nextValue(e,t){return this.generator.next({valueA:e,valueB:t}).value}}function Et(e){a.reverseInputs(e);var t=new qt(e).result;return e.reversedInput&&t.reverse(),a.reverseInputs(e),t}function St(){let e=[];return e.push("sma"),e.push("ema"),e.push("wma"),e.push("wema"),e.push("macd"),e.push("rsi"),e.push("bollingerbands"),e.push("adx"),e.push("atr"),e.push("truerange"),e.push("roc"),e.push("kst"),e.push("psar"),e.push("stochastic"),e.push("williamsr"),e.push("adl"),e.push("obv"),e.push("trix"),e.push("cci"),e.push("awesomeoscillator"),e.push("forceindex"),e.push("vwap"),e.push("volumeprofile"),e.push("renko"),e.push("heikinashi"),e.push("stochasticrsi"),e.push("mfi"),e.push("averagegain"),e.push("averageloss"),e.push("highest"),e.push("lowest"),e.push("sum"),e.push("FixedSizeLinkedList"),e.push("sd"),e.push("bullish"),e.push("bearish"),e.push("abandonedbaby"),e.push("doji"),e.push("bearishengulfingpattern"),e.push("bullishengulfingpattern"),e.push("darkcloudcover"),e.push("downsidetasukigap"),e.push("dragonflydoji"),e.push("gravestonedoji"),e.push("bullishharami"),e.push("bearishharami"),e.push("bullishharamicross"),e.push("bearishharamicross"),e.push("eveningdojistar"),e.push("eveningstar"),e.push("morningdojistar"),e.push("morningstar"),e.push("bullishmarubozu"),e.push("bearishmarubozu"),e.push("piercingline"),e.push("bullishspinningtop"),e.push("bearishspinningtop"),e.push("threeblackcrows"),e.push("threewhitesoldiers"),e.push("bullishhammerstick"),e.push("bearishhammerstick"),e.push("bullishinvertedhammerstick"),e.push("bearishinvertedhammerstick"),e.push("hammerpattern"),e.push("hammerpatternunconfirmed"),e.push("hangingman"),e.push("hangingmanunconfirmed"),e.push("shootingstar"),e.push("shootingstarunconfirmed"),e.push("tweezertop"),e.push("tweezerbottom"),e.push("predictPattern"),e.push("hasDoubleBottom"),e.push("hasDoubleTop"),e.push("hasHeadAndShoulder"),e.push("hasInverseHeadAndShoulder"),e.push("isTrendingUp"),e.push("isTrendingDown"),e.push("ichimokucloud"),e.push("keltnerchannels"),e.push("chandelierexit"),e.push("crossup"),e.push("crossdown"),e.push("crossover"),e}qt.calculate=Et;let At=St();return e.ADL=Q,e.ADX=L,e.ATR=D,e.AvailableIndicators=At,e.AverageGain=P,e.AverageLoss=b,e.AwesomeOscillator=le,e.BollingerBands=A,e.CCI=ne,e.CandleData=class{},e.CandleList=n,e.ChandelierExit=_t,e.ChandelierExitInput=class extends u{constructor(){super(...arguments),this.period=22,this.multiplier=3}},e.ChandelierExitOutput=class extends u{},e.CrossDown=qt,e.CrossUp=Vt,e.EMA=p,e.FixedSizeLinkedList=s,e.ForceIndex=re,e.HeikinAshi=Ve,e.Highest=fe,e.IchimokuCloud=xt,e.KST=j,e.KeltnerChannels=yt,e.KeltnerChannelsInput=class extends u{constructor(){super(...arguments),this.maPeriod=20,this.atrPeriod=10,this.useSMA=!1,this.multiplier=1}},e.KeltnerChannelsOutput=class extends u{},e.Lowest=xe,e.MACD=I,e.MFI=ve,e.OBV=Z,e.PSAR=U,e.ROC=F,e.RSI=C,e.SD=E,e.SMA=h,e.Stochastic=K,e.StochasticRSI=ge,e.Sum=ye,e.TRIX=ee,e.TrueRange=H,e.VWAP=ue,e.VolumeProfile=he,e.WEMA=w,e.WMA=d,e.WilderSmoothing=m,e.WilliamsR=X,e.abandonedbaby=function(e){return(new ct).hasPattern(e)},e.adl=Y,e.adx=T,e.atr=R,e.averagegain=_,e.averageloss=V,e.awesomeoscillator=oe,e.bearish=function(e){return(new ht).hasPattern(e)},e.bearishengulfingpattern=function(e){return(new Ye).hasPattern(e)},e.bearishfractal=function(e){return(new mt).hasPattern(e)},e.bearishhammerstick=Oe,e.bearishharami=function(e){return(new Ze).hasPattern(e)},e.bearishharamicross=function(e){return(new $e).hasPattern(e)},e.bearishinvertedhammerstick=We,e.bearishmarubozu=function(e){return(new rt).hasPattern(e)},e.bearishspinningtop=function(e){return(new wt).hasPattern(e)},e.bollingerbands=M,e.bullish=function(e){return(new Qe).hasPattern(e)},e.bullishengulfingpattern=function(e){return(new Se).hasPattern(e)},e.bullishfractal=function(e){return(new ft).hasPattern(e)},e.bullishhammerstick=Re,e.bullishharami=function(e){return(new Ae).hasPattern(e)},e.bullishharamicross=function(e){return(new Me).hasPattern(e)},e.bullishinvertedhammerstick=Ne,e.bullishmarubozu=function(e){return(new ze).hasPattern(e)},e.bullishspinningtop=function(e){return(new gt).hasPattern(e)},e.cci=ie,e.chandelierexit=bt,e.crossDown=Et,e.crossUp=Ct,e.darkcloudcover=function(e){return(new pt).hasPattern(e)},e.doji=function(e){return(new ke).hasPattern(e)},e.downsidetasukigap=function(e){return(new He).hasPattern(e)},e.dragonflydoji=function(e){return(new vt).hasPattern(e)},e.ema=v,e.eveningdojistar=function(e){return(new et).hasPattern(e)},e.eveningstar=function(e){return(new tt).hasPattern(e)},e.fibonacciretracement=function(e,t){let r,s=[0,23.6,38.2,50,61.8,78.6,100,127.2,161.8,261.8,423.6];return r=e<t?s.map((function(r){let s=t-Math.abs(e-t)*r/100;return s>0?s:0})):s.map((function(r){let s=t+Math.abs(e-t)*r/100;return s>0?s:0})),r},e.forceindex=se,e.getAvailableIndicators=St,e.getConfig=l,e.gravestonedoji=function(e){return(new dt).hasPattern(e)},e.hammerpattern=function(e){return(new Ke).hasPattern(e)},e.hammerpatternunconfirmed=function(e){return(new Ge).hasPattern(e)},e.hangingman=function(e){return(new nt).hasPattern(e)},e.hangingmanunconfirmed=function(e){return(new it).hasPattern(e)},e.heikinashi=Ce,e.highest=me,e.ichimokucloud=It,e.keltnerchannels=Pt,e.kst=O,e.lowest=Ie,e.macd=y,e.mfi=de,e.morningdojistar=function(e){return(new Be).hasPattern(e)},e.morningstar=function(e){return(new Ee).hasPattern(e)},e.obv=$,e.piercingline=function(e){return(new Le).hasPattern(e)},e.psar=W,e.renko=be,e.roc=N,e.rsi=q,e.sd=S,e.setConfig=function(e,t){i[e]=t},e.shootingstar=function(e){return(new lt).hasPattern(e)},e.shootingstarunconfirmed=function(e){return(new ot).hasPattern(e)},e.sma=c,e.stochastic=G,e.stochasticrsi=we,e.sum=Pe,e.threeblackcrows=function(e){return(new st).hasPattern(e)},e.threewhitesoldiers=function(e){return(new Te).hasPattern(e)},e.trix=te,e.truerange=z,e.tweezerbottom=function(e){return(new Xe).hasPattern(e)},e.tweezertop=function(e){return(new ut).hasPattern(e)},e.volumeprofile=ce,e.vwap=ae,e.wema=f,e.wildersmoothing=x,e.williamsr=J,e.wma=g,e}({}); |
@@ -1,15 +0,1 @@ | ||
declare class VWAPInput extends IndicatorInput { | ||
high: number[]; | ||
low: number[]; | ||
close: number[]; | ||
volume: number[]; | ||
} | ||
declare class VWAP extends Indicator { | ||
result: number[]; | ||
generator: IterableIterator<number>; | ||
constructor(input: VWAPInput); | ||
static calculate: typeof vwap; | ||
nextValue(price: CandleData): number; | ||
} | ||
declare function vwap(input: VWAPInput): number[]; | ||
declare class ForceIndexInput extends IndicatorInput { | ||
@@ -28,21 +14,2 @@ close: number[]; | ||
declare function forceindex(input: ForceIndexInput): number[]; | ||
/** | ||
* Created by AAravindan on 5/4/16. | ||
*/ | ||
declare class HeikinAshiInput extends IndicatorInput { | ||
low?: number[]; | ||
open?: number[]; | ||
volume?: number[]; | ||
high?: number[]; | ||
close?: number[]; | ||
timestamp?: number[]; | ||
} | ||
declare class HeikinAshi extends Indicator { | ||
result: CandleList; | ||
generator: IterableIterator<CandleData | undefined>; | ||
constructor(input: HeikinAshiInput); | ||
static calculate: typeof heikinashi; | ||
nextValue(price: CandleData): CandleData | undefined; | ||
} | ||
declare function heikinashi(input: HeikinAshiInput): CandleList; | ||
declare class VolumeProfileInput extends IndicatorInput { | ||
@@ -70,21 +37,73 @@ high: number[]; | ||
declare function volumeprofile(input: VolumeProfileInput): number[]; | ||
declare class ChandelierExitInput extends IndicatorInput { | ||
declare class AvgGainInput extends IndicatorInput { | ||
period: number; | ||
multiplier: number; | ||
values: number[]; | ||
} | ||
declare class AverageGain extends Indicator { | ||
generator: IterableIterator<number | undefined>; | ||
constructor(input: AvgGainInput); | ||
static calculate: typeof averagegain; | ||
nextValue(price: number): number | undefined; | ||
} | ||
declare function averagegain(input: AvgGainInput): number[]; | ||
declare class VWAPInput extends IndicatorInput { | ||
high: number[]; | ||
low: number[]; | ||
close: number[]; | ||
volume: number[]; | ||
} | ||
declare class ChandelierExitOutput extends IndicatorInput { | ||
exitLong: number; | ||
exitShort: number; | ||
declare class VWAP extends Indicator { | ||
result: number[]; | ||
generator: IterableIterator<number>; | ||
constructor(input: VWAPInput); | ||
static calculate: typeof vwap; | ||
nextValue(price: CandleData): number; | ||
} | ||
declare class ChandelierExit extends Indicator { | ||
generator: IterableIterator<ChandelierExitOutput | undefined>; | ||
constructor(input: ChandelierExitInput); | ||
static calculate: typeof chandelierexit; | ||
nextValue(price: ChandelierExitInput): ChandelierExitOutput | undefined; | ||
declare function vwap(input: VWAPInput): number[]; | ||
declare class AvgLossInput extends IndicatorInput { | ||
values: number[]; | ||
period: number; | ||
} | ||
declare function chandelierexit(input: ChandelierExitInput): number[]; | ||
declare class AverageLoss extends Indicator { | ||
generator: IterableIterator<number | undefined>; | ||
constructor(input: AvgLossInput); | ||
static calculate: typeof averageloss; | ||
nextValue(price: number): number | undefined; | ||
} | ||
declare function averageloss(input: AvgLossInput): number[]; | ||
/** | ||
* Created by AAravindan on 5/4/16. | ||
*/ | ||
declare class RenkoInput extends IndicatorInput { | ||
period?: number; | ||
brickSize?: number; | ||
useATR?: boolean; | ||
low?: number[]; | ||
open?: number[]; | ||
volume?: number[]; | ||
high?: number[]; | ||
close?: number[]; | ||
timestamp?: number[]; | ||
} | ||
declare function renko(input: RenkoInput): CandleList; | ||
/** | ||
* Created by AAravindan on 5/4/16. | ||
*/ | ||
declare class HeikinAshiInput extends IndicatorInput { | ||
low?: number[]; | ||
open?: number[]; | ||
volume?: number[]; | ||
high?: number[]; | ||
close?: number[]; | ||
timestamp?: number[]; | ||
} | ||
declare class HeikinAshi extends Indicator { | ||
result: CandleList; | ||
generator: IterableIterator<CandleData | undefined>; | ||
constructor(input: HeikinAshiInput); | ||
static calculate: typeof heikinashi; | ||
nextValue(price: CandleData): CandleData | undefined; | ||
} | ||
declare function heikinashi(input: HeikinAshiInput): CandleList; | ||
/** | ||
* Calcaultes the fibonacci retracements for given start and end points | ||
@@ -102,13 +121,2 @@ * | ||
declare function fibonacciretracement(start: number, end: number): number[]; | ||
declare class AvgLossInput extends IndicatorInput { | ||
values: number[]; | ||
period: number; | ||
} | ||
declare class AverageLoss extends Indicator { | ||
generator: IterableIterator<number | undefined>; | ||
constructor(input: AvgLossInput); | ||
static calculate: typeof averageloss; | ||
nextValue(price: number): number | undefined; | ||
} | ||
declare function averageloss(input: AvgLossInput): number[]; | ||
declare class IchimokuCloudInput extends IndicatorInput { | ||
@@ -158,28 +166,20 @@ high: number[]; | ||
declare function keltnerchannels(input: KeltnerChannelsInput): KeltnerChannelsOutput[]; | ||
/** | ||
* Created by AAravindan on 5/4/16. | ||
*/ | ||
declare class RenkoInput extends IndicatorInput { | ||
period?: number; | ||
brickSize?: number; | ||
useATR?: boolean; | ||
low?: number[]; | ||
open?: number[]; | ||
volume?: number[]; | ||
high?: number[]; | ||
close?: number[]; | ||
timestamp?: number[]; | ||
} | ||
declare function renko(input: RenkoInput): CandleList; | ||
declare class AvgGainInput extends IndicatorInput { | ||
declare class ChandelierExitInput extends IndicatorInput { | ||
period: number; | ||
values: number[]; | ||
multiplier: number; | ||
high: number[]; | ||
low: number[]; | ||
close: number[]; | ||
} | ||
declare class AverageGain extends Indicator { | ||
generator: IterableIterator<number | undefined>; | ||
constructor(input: AvgGainInput); | ||
static calculate: typeof averagegain; | ||
nextValue(price: number): number | undefined; | ||
declare class ChandelierExitOutput extends IndicatorInput { | ||
exitLong: number; | ||
exitShort: number; | ||
} | ||
declare function averagegain(input: AvgGainInput): number[]; | ||
declare class ChandelierExit extends Indicator { | ||
generator: IterableIterator<ChandelierExitOutput | undefined>; | ||
constructor(input: ChandelierExitInput); | ||
static calculate: typeof chandelierexit; | ||
nextValue(price: ChandelierExitInput): ChandelierExitOutput | undefined; | ||
} | ||
declare function chandelierexit(input: ChandelierExitInput): number[]; | ||
class StockData { | ||
@@ -229,22 +229,2 @@ open: number[]; | ||
} | ||
declare class IndicatorInput { | ||
reversedInput?: boolean; | ||
format?: (data: number) => number; | ||
} | ||
declare class AllInputs { | ||
values?: number[]; | ||
open?: number[]; | ||
high?: number[]; | ||
low?: number[]; | ||
close?: number[]; | ||
volume?: number[]; | ||
timestamp?: number[]; | ||
} | ||
declare class Indicator { | ||
result: any; | ||
format: (data: number) => number; | ||
constructor(input: IndicatorInput); | ||
static reverseInputs(input: any): void; | ||
getResult(): any; | ||
} | ||
declare class EMA extends Indicator { | ||
@@ -275,2 +255,22 @@ period: number; | ||
declare function sma(input: MAInput): number[]; | ||
declare class IndicatorInput { | ||
reversedInput?: boolean; | ||
format?: (data: number) => number; | ||
} | ||
declare class AllInputs { | ||
values?: number[]; | ||
open?: number[]; | ||
high?: number[]; | ||
low?: number[]; | ||
close?: number[]; | ||
volume?: number[]; | ||
timestamp?: number[]; | ||
} | ||
declare class Indicator { | ||
result: any; | ||
format: (data: number) => number; | ||
constructor(input: IndicatorInput); | ||
static reverseInputs(input: any): void; | ||
getResult(): any; | ||
} | ||
declare class ATRInput extends IndicatorInput { | ||
@@ -277,0 +277,0 @@ low: number[]; |
@@ -1,1 +0,1 @@ | ||
let e={};function t(t){let r=e["precision"];return r?parseFloat(t.toPrecision(r)):t}class r{}class s{constructor(e){this.format=e.format||t}static reverseInputs(e){e.reversedInput&&(e.values&&e.values.reverse(),e.open&&e.open.reverse(),e.high&&e.high.reverse(),e.low&&e.low.reverse(),e.close&&e.close.reverse(),e.volume&&e.volume.reverse(),e.timestamp&&e.timestamp.reverse())}getResult(){return this.result}}class i{constructor(e,t,r){this.next=r,r&&(r.prev=this),this.prev=t,t&&(t.next=this),this.data=e}}class h{constructor(){this._length=0}get head(){return this._head&&this._head.data}get tail(){return this._tail&&this._tail.data}get current(){return this._current&&this._current.data}get length(){return this._length}push(e){this._tail=new i(e,this._tail),0===this._length&&(this._head=this._tail,this._current=this._head,this._next=this._head),this._length++}pop(){var e=this._tail;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._tail=e.prev,this._tail.next=void 0,this._current===e&&(this._current=this._tail,this._next=void 0),e.data)}shift(){var e=this._head;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._head=this._head.next,this._current===e&&(this._current=this._head,this._next=this._current.next),e.data)}unshift(e){this._head=new i(e,void 0,this._head),0===this._length&&(this._tail=this._head,this._next=this._head),this._length++}unshiftCurrent(){var e=this._current;return e===this._head||this._length<2?e&&e.data:(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.next=this._head,e.prev=void 0,this._head.prev=e,this._head=e,e.data)}removeCurrent(){var e=this._current;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):e===this._head?(this._head=e.next,this._head.prev=void 0,this._current=this._head):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.data)}resetCursor(){return this._current=this._next=this._head,this}next(){var e=this._next;if(void 0!==e)return this._next=e.next,this._current=e,e.data}}class l extends s{constructor(e){super(e),this.period=e.period,this.price=e.values;this.generator=function*(e){var t,r=new h,s=0,i=1,l=yield;for(r.push(0);;)i<e?(i++,r.push(l),s+=l):(t=(s=s-r.shift()+l)/e,r.push(l)),l=yield t}(this.period),this.generator.next(),this.result=[],this.price.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}l.calculate=function(e){s.reverseInputs(e);var t=new l(e).result;e.reversedInput&&t.reverse();return s.reverseInputs(e),t};class n extends s{constructor(e){super(e);var t,r=e.period,s=e.values,i=2/(r+1);this.result=[],t=new l({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*i+e,r=yield e):(r=yield,(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}n.calculate=function(e){s.reverseInputs(e);var t=new n(e).result;e.reversedInput&&t.reverse();return s.reverseInputs(e),t};class o extends s{constructor(e){super(e);var t=e.close,r=e.volume,s=e.period||1;if(r.length!==t.length)throw"Inputs(volume, close) not of equal size";let i=new n({values:[],period:s});this.result=[],this.generator=function*(){var e=yield,t=yield;let r;for(;;)r=(t.close-e.close)*t.volume,e=t,t=yield i.nextValue(r)}(),this.generator.next(),r.forEach(((e,s)=>{var i=this.generator.next({close:t[s],volume:r[s]});null!=i.value&&this.result.push(i.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function u(e){s.reverseInputs(e);var t=new o(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}o.calculate=u;class a extends s{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,i=e.volume;if(this.format,t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e=yield,t=0,r=0;for(;;){let s=(e.high+e.low+e.close)/3;t+=e.volume*s,r+=e.volume,e=yield t/r}}(),this.generator.next(),t.forEach(((e,h)=>{let l=this.generator.next({high:r[h],low:t[h],close:s[h],volume:i[h]});null!=l.value&&this.result.push(l.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function v(e){s.reverseInputs(e);var t=new a(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}a.calculate=v;class c extends s{constructor(e){super(e);var t=e.high,r=e.low,s=e.close,i=e.open,h=e.volume,l=e.noOfBars;if(r.length!==t.length||t.length!==s.length||t.length!==h.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[];var n,o,u,a,v=Math.max(...t,...r,...s,...i),c=Math.min(...t,...r,...s,...i),p=(v-c)/l,d=c;for(let e=0;e<l;e++){let e=d,l=e+p;d=l;let v=0,c=0,g=0;for(let p=0;p<t.length;p++){let d=r[p],m=t[p],x=i[p],f=s[p],w=h[p];o=l,a=m,((n=e)<=(u=d)&&o>=u||u<=n&&a>=n)&&(g+=w,x>f?c+=w:v+=w)}this.result.push({rangeStart:e,rangeEnd:l,bullishVolume:v,bearishVolume:c,totalVolume:g})}}nextValue(e){throw"Next value not supported for volume profile"}}function p(e){s.reverseInputs(e);var t=new c(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}c.calculate=p;class d extends s{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,i=yield,h=1,l=0,n=i;for(i=yield;;)(r=(r=i-n)>0?r:0)>0&&(l+=r),h<e?h++:t=void 0===t?l/e:(t*(e-1)+r)/e,n=i,t=void 0!==t?s(t):void 0,i=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function g(e){s.reverseInputs(e);var t=new d(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}d.calculate=g;class m extends s{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,i=yield,h=1,l=0,n=i;for(i=yield;;)(r=(r=n-i)>0?r:0)>0&&(l+=r),h<e?h++:t=void 0===t?l/e:(t*(e-1)+r)/e,n=i,t=void 0!==t?s(t):void 0,i=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function x(e){s.reverseInputs(e);var t=new m(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}m.calculate=x;class f{constructor(){this.open=[],this.high=[],this.low=[],this.close=[],this.volume=[],this.timestamp=[]}}class w extends s{constructor(e){super(e);var t,r=e.period,s=e.values,i=1/r;this.result=[],t=new l({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*i+e,r=yield e):(r=yield,void 0!==(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}w.calculate=function(e){s.reverseInputs(e);var t=new w(e).result;e.reversedInput&&t.reverse();return s.reverseInputs(e),t};class _ extends s{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,i=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;)void 0===e&&(e=r.close,r=yield t),t=Math.max(r.high-r.low,isNaN(Math.abs(r.high-e))?0:Math.abs(r.high-e),isNaN(Math.abs(r.low-e))?0:Math.abs(r.low-e)),e=r.close,null!=t&&(t=i(t)),r=yield t}(),this.generator.next(),t.forEach(((e,i)=>{var h=this.generator.next({high:r[i],low:t[i],close:s[i]});null!=h.value&&this.result.push(h.value)}))}nextValue(e){return this.generator.next(e).value}}_.calculate=function(e){s.reverseInputs(e);var t=new _(e).result;e.reversedInput&&t.reverse();return s.reverseInputs(e),t};class I extends s{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,i=e.period,h=this.format;if(t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";var l=new _({low:[],high:[],close:[]}),n=new w({period:i,values:[],format:e=>e});this.result=[],this.generator=function*(){for(var e,t,r=yield;;)e=void 0===(t=l.nextValue({low:r.low,high:r.high,close:r.close}))?void 0:n.nextValue(t),r=yield e}(),this.generator.next(),t.forEach(((e,i)=>{var l=this.generator.next({high:r[i],low:t[i],close:s[i]});void 0!==l.value&&this.result.push(h(l.value))}))}nextValue(e){return this.generator.next(e).value}}function y(e){s.reverseInputs(e);var t=new I(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}I.calculate=y;class V extends s{constructor(e){super(e),this.format;let t=e.useATR,r=e.brickSize||0;if(t){let t=y(Object.assign({},e));r=t[t.length-1]}if(this.result=new f,0===r)return void console.error("Not enough data to calculate brickSize for renko when using ATR");let s=0,i=0,h=1/0,l=0,n=0;this.generator=function*(){let e=yield;for(;;){if(0===s){s=e.close,i=e.high,h=e.low,l=e.close,n=e.volume,e.timestamp,e=yield;continue}let t=Math.abs(e.close-l),o=Math.abs(e.close-s);if(t>=r&&o>=r){let u=t>o?s:l,a={open:u,high:i>e.high?i:e.high,low:h<e.low?h:e.low,close:u>e.close?u-r:u+r,volume:n+e.volume,timestamp:e.timestamp};s=a.open,i=a.close,h=a.close,l=a.close,n=0,e=yield a}else i=i>e.high?i:e.high,h=h<e.low?h:e.low,n+=e.volume,e.timestamp,e=yield}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume[r],timestamp:e.timestamp[r]});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return console.error("Cannot calculate next value on Renko, Every value has to be recomputed for every change, use calcualte method"),null}}function b(e){s.reverseInputs(e);var t=new V(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),s.reverseInputs(e),t}V.calculate=b;class P extends s{constructor(e){super(e),this.format,this.result=new f;let t=null,r=0,s=1/0,i=0;this.generator=function*(){let e=yield,h=null;for(;;){if(null===t)t=(e.close+e.open)/2,r=e.high,s=e.low,i=(e.close+e.open+e.high+e.low)/4,e.volume,e.timestamp,h={open:t,high:r,low:s,close:i,volume:e.volume||0,timestamp:e.timestamp||0};else{let l=(e.close+e.open+e.high+e.low)/4,n=(t+i)/2,o=Math.max(n,l,e.high),u=Math.min(e.low,n,l);h={close:l,open:n,high:o,low:u,volume:e.volume||0,timestamp:e.timestamp||0},i=l,t=n,r=o,s=u}e=yield h}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume?e.volume[r]:e.volume,timestamp:e.timestamp?e.timestamp[r]:e.timestamp});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return this.generator.next(e).value}}function S(e){s.reverseInputs(e);var t=new P(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),s.reverseInputs(e),t}function L(e,t){let r,s=[0,23.6,38.2,50,61.8,78.6,100,127.2,161.8,261.8,423.6];return r=e<t?s.map((function(r){let s=t-Math.abs(e-t)*r/100;return s>0?s:0})):s.map((function(r){let s=t+Math.abs(e-t)*r/100;return s>0?s:0})),r}P.calculate=S;class E extends h{constructor(e,t,r,s){if(super(),this.size=e,this.maintainHigh=t,this.maintainLow=r,this.maintainSum=s,this.totalPushed=0,this.periodHigh=0,this.periodLow=1/0,this.periodSum=0,!e||"number"!=typeof e)throw"Size required and should be a number.";this._push=this.push,this.push=function(e){this.add(e),this.totalPushed++}}add(e){this.length===this.size?(this.lastShift=this.shift(),this._push(e),this.maintainHigh&&this.lastShift==this.periodHigh&&this.calculatePeriodHigh(),this.maintainLow&&this.lastShift==this.periodLow&&this.calculatePeriodLow(),this.maintainSum&&(this.periodSum=this.periodSum-this.lastShift)):this._push(e),this.maintainHigh&&this.periodHigh<=e&&(this.periodHigh=e),this.maintainLow&&this.periodLow>=e&&(this.periodLow=e),this.maintainSum&&(this.periodSum=this.periodSum+e)}*iterator(){for(this.resetCursor();this.next();)yield this.current}calculatePeriodHigh(){for(this.resetCursor(),this.next()&&(this.periodHigh=this.current);this.next();)this.periodHigh<=this.current&&(this.periodHigh=this.current)}calculatePeriodLow(){for(this.resetCursor(),this.next()&&(this.periodLow=this.current);this.next();)this.periodLow>=this.current&&(this.periodLow=this.current)}}class H extends s{constructor(e){super(e),this.result=[];var t=Object.assign({},{conversionPeriod:9,basePeriod:26,spanPeriod:52,displacement:26},e),r=new E(2*t.conversionPeriod,!0,!0,!1),s=new E(2*t.basePeriod,!0,!0,!1),i=new E(2*t.spanPeriod,!0,!0,!1);this.generator=function*(){let e,h,l=Math.max(t.conversionPeriod,t.basePeriod,t.spanPeriod,t.displacement),n=1;for(h=yield;;){if(r.push(h.high),r.push(h.low),s.push(h.high),s.push(h.low),i.push(h.high),i.push(h.low),n<l)n++;else{let t=(r.periodHigh+r.periodLow)/2,h=(s.periodHigh+s.periodLow)/2;e={conversion:t,base:h,spanA:(t+h)/2,spanB:(i.periodHigh+i.periodLow)/2}}h=yield e}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({high:e.high[r],low:e.low[r]});s.value&&this.result.push(s.value)}))}nextValue(e){return this.generator.next(e).value}}function M(e){s.reverseInputs(e);var t=new H(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}H.calculate=M;class z extends r{constructor(){super(...arguments),this.maPeriod=20,this.atrPeriod=10,this.useSMA=!1,this.multiplier=1}}class C extends r{}class q extends s{constructor(e){super(e);var t,r=new(e.useSMA?l:n)({period:e.maPeriod,values:[],format:e=>e}),s=new I({period:e.atrPeriod,high:[],low:[],close:[],format:e=>e});this.result=[],this.generator=function*(){var i;for(t=yield;;){var{close:h}=t,l=r.nextValue(h),n=s.nextValue(t);null!=l&&null!=n&&(i={middle:l,upper:l+e.multiplier*n,lower:l-e.multiplier*n}),t=yield i}}(),this.generator.next(),e.high.forEach(((t,r)=>{var s={high:t,low:e.low[r],close:e.close[r]},i=this.generator.next(s);null!=i.value&&this.result.push(i.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function N(e){s.reverseInputs(e);var t=new q(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}q.calculate=N;class A extends r{constructor(){super(...arguments),this.period=22,this.multiplier=3}}class k extends r{}class R extends s{constructor(e){super(e);var t=e.high,r=e.low,s=e.close;this.result=[];var i=new I({period:e.period,high:[],low:[],close:[],format:e=>e}),h=new E(2*e.period,!0,!0,!1);this.generator=function*(){for(var t,r,s=yield{high:l,low:n};;){var{high:l,low:n}=s;h.push(l),h.push(n),r=i.nextValue(s),h.totalPushed>=2*e.period&&null!=r&&(t={exitLong:h.periodHigh-r*e.multiplier,exitShort:h.periodLow+r*e.multiplier}),s=yield t}}(),this.generator.next(),t.forEach(((e,t)=>{var i={high:e,low:r[t],close:s[t]},h=this.generator.next(i);null!=h.value&&this.result.push(h.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function O(e){s.reverseInputs(e);var t=new R(e).result;return e.reversedInput&&t.reverse(),s.reverseInputs(e),t}R.calculate=O;export{R as ChandelierExit,A as ChandelierExitInput,k as ChandelierExitOutput,q as KeltnerChannels,z as KeltnerChannelsInput,C as KeltnerChannelsOutput,g as averagegain,x as averageloss,O as chandelierexit,L as fibonacciretracement,u as forceindex,S as heikinashi,M as ichimokucloud,N as keltnerchannels,b as renko,p as volumeprofile,v as vwap}; | ||
var window=function(e){"use strict";let t={};function r(e){let r=t["precision"];return r?parseFloat(e.toPrecision(r)):e}class s{}class i{constructor(e){this.format=e.format||r}static reverseInputs(e){e.reversedInput&&(e.values&&e.values.reverse(),e.open&&e.open.reverse(),e.high&&e.high.reverse(),e.low&&e.low.reverse(),e.close&&e.close.reverse(),e.volume&&e.volume.reverse(),e.timestamp&&e.timestamp.reverse())}getResult(){return this.result}}class n{constructor(e,t,r){this.next=r,r&&(r.prev=this),this.prev=t,t&&(t.next=this),this.data=e}}class l{constructor(){this._length=0}get head(){return this._head&&this._head.data}get tail(){return this._tail&&this._tail.data}get current(){return this._current&&this._current.data}get length(){return this._length}push(e){this._tail=new n(e,this._tail),0===this._length&&(this._head=this._tail,this._current=this._head,this._next=this._head),this._length++}pop(){var e=this._tail;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._tail=e.prev,this._tail.next=void 0,this._current===e&&(this._current=this._tail,this._next=void 0),e.data)}shift(){var e=this._head;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(this._head=this._head.next,this._current===e&&(this._current=this._head,this._next=this._current.next),e.data)}unshift(e){this._head=new n(e,void 0,this._head),0===this._length&&(this._tail=this._head,this._next=this._head),this._length++}unshiftCurrent(){var e=this._current;return e===this._head||this._length<2?e&&e.data:(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.next=this._head,e.prev=void 0,this._head.prev=e,this._head=e,e.data)}removeCurrent(){var e=this._current;if(0!==this._length)return this._length--,0===this._length?(this._head=this._tail=this._current=this._next=void 0,e.data):(e===this._tail?(this._tail=e.prev,this._tail.next=void 0,this._current=this._tail):e===this._head?(this._head=e.next,this._head.prev=void 0,this._current=this._head):(e.next.prev=e.prev,e.prev.next=e.next,this._current=e.prev),this._next=this._current.next,e.data)}resetCursor(){return this._current=this._next=this._head,this}next(){var e=this._next;if(void 0!==e)return this._next=e.next,this._current=e,e.data}}class h extends i{constructor(e){super(e),this.period=e.period,this.price=e.values;this.generator=function*(e){var t,r=new l,s=0,i=1,n=yield;for(r.push(0);;)i<e?(i++,r.push(n),s+=n):(t=(s=s-r.shift()+n)/e,r.push(n)),n=yield t}(this.period),this.generator.next(),this.result=[],this.price.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}h.calculate=function(e){i.reverseInputs(e);var t=new h(e).result;e.reversedInput&&t.reverse();return i.reverseInputs(e),t};class o extends i{constructor(e){super(e);var t,r=e.period,s=e.values,i=2/(r+1);this.result=[],t=new h({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*i+e,r=yield e):(r=yield,(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}o.calculate=function(e){i.reverseInputs(e);var t=new o(e).result;e.reversedInput&&t.reverse();return i.reverseInputs(e),t};class u extends i{constructor(e){super(e);var t=e.close,r=e.volume,s=e.period||1;if(r.length!==t.length)throw"Inputs(volume, close) not of equal size";let i=new o({values:[],period:s});this.result=[],this.generator=function*(){var e=yield,t=yield;let r;for(;;)r=(t.close-e.close)*t.volume,e=t,t=yield i.nextValue(r)}(),this.generator.next(),r.forEach(((e,s)=>{var i=this.generator.next({close:t[s],volume:r[s]});null!=i.value&&this.result.push(i.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function a(e){i.reverseInputs(e);var t=new u(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}u.calculate=a;class v extends i{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,i=e.volume;if(this.format,t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";this.result=[],this.generator=function*(){let e=yield,t=0,r=0;for(;;){let s=(e.high+e.low+e.close)/3;t+=e.volume*s,r+=e.volume,e=yield t/r}}(),this.generator.next(),t.forEach(((e,n)=>{let l=this.generator.next({high:r[n],low:t[n],close:s[n],volume:i[n]});null!=l.value&&this.result.push(l.value)}))}nextValue(e){let t=this.generator.next(e).value;if(null!=t)return t}}function c(e){i.reverseInputs(e);var t=new v(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}v.calculate=c;class p extends i{constructor(e){super(e);var t=e.high,r=e.low,s=e.close,i=e.open,n=e.volume,l=e.noOfBars;if(r.length!==t.length||t.length!==s.length||t.length!==n.length)throw"Inputs(low,high, close, volumes) not of equal size";this.result=[];var h,o,u,a,v=Math.max(...t,...r,...s,...i),c=Math.min(...t,...r,...s,...i),p=(v-c)/l,d=c;for(let e=0;e<l;e++){let e=d,l=e+p;d=l;let v=0,c=0,g=0;for(let p=0;p<t.length;p++){let d=r[p],m=t[p],x=i[p],f=s[p],w=n[p];o=l,a=m,((h=e)<=(u=d)&&o>=u||u<=h&&a>=h)&&(g+=w,x>f?c+=w:v+=w)}this.result.push({rangeStart:e,rangeEnd:l,bullishVolume:v,bearishVolume:c,totalVolume:g})}}nextValue(e){throw"Next value not supported for volume profile"}}function d(e){i.reverseInputs(e);var t=new p(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}p.calculate=d;class g extends i{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,i=yield,n=1,l=0,h=i;for(i=yield;;)(r=(r=i-h)>0?r:0)>0&&(l+=r),n<e?n++:t=void 0===t?l/e:(t*(e-1)+r)/e,h=i,t=void 0!==t?s(t):void 0,i=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function m(e){i.reverseInputs(e);var t=new g(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}g.calculate=m;class x extends i{constructor(e){super(e);let t=e.values,r=e.period,s=this.format;this.generator=function*(e){var t,r,i=yield,n=1,l=0,h=i;for(i=yield;;)(r=(r=h-i)>0?r:0)>0&&(l+=r),n<e?n++:t=void 0===t?l/e:(t*(e-1)+r)/e,h=i,t=void 0!==t?s(t):void 0,i=yield t}(r),this.generator.next(),this.result=[],t.forEach((e=>{var t=this.generator.next(e);void 0!==t.value&&this.result.push(t.value)}))}nextValue(e){return this.generator.next(e).value}}function f(e){i.reverseInputs(e);var t=new x(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}x.calculate=f;class w{constructor(){this.open=[],this.high=[],this.low=[],this.close=[],this.volume=[],this.timestamp=[]}}class _ extends i{constructor(e){super(e);var t,r=e.period,s=e.values,i=1/r;this.result=[],t=new h({period:r,values:[]});this.generator=function*(){for(var e,r=yield;;)void 0!==e&&void 0!==r?(e=(r-e)*i+e,r=yield e):(r=yield,void 0!==(e=t.nextValue(r))&&(r=yield e))}(),this.generator.next(),this.generator.next(),s.forEach((e=>{var t=this.generator.next(e);null!=t.value&&this.result.push(this.format(t.value))}))}nextValue(e){var t=this.generator.next(e).value;if(null!=t)return this.format(t)}}_.calculate=function(e){i.reverseInputs(e);var t=new _(e).result;e.reversedInput&&t.reverse();return i.reverseInputs(e),t};class I extends i{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,i=this.format;if(t.length!=r.length)throw"Inputs(low,high) not of equal size";this.result=[],this.generator=function*(){for(var e,t,r=yield;;)void 0===e&&(e=r.close,r=yield t),t=Math.max(r.high-r.low,isNaN(Math.abs(r.high-e))?0:Math.abs(r.high-e),isNaN(Math.abs(r.low-e))?0:Math.abs(r.low-e)),e=r.close,null!=t&&(t=i(t)),r=yield t}(),this.generator.next(),t.forEach(((e,i)=>{var n=this.generator.next({high:r[i],low:t[i],close:s[i]});null!=n.value&&this.result.push(n.value)}))}nextValue(e){return this.generator.next(e).value}}I.calculate=function(e){i.reverseInputs(e);var t=new I(e).result;e.reversedInput&&t.reverse();return i.reverseInputs(e),t};class y extends i{constructor(e){super(e);var t=e.low,r=e.high,s=e.close,i=e.period,n=this.format;if(t.length!==r.length||r.length!==s.length)throw"Inputs(low,high, close) not of equal size";var l=new I({low:[],high:[],close:[]}),h=new _({period:i,values:[],format:e=>e});this.result=[],this.generator=function*(){for(var e,t,r=yield;;)e=void 0===(t=l.nextValue({low:r.low,high:r.high,close:r.close}))?void 0:h.nextValue(t),r=yield e}(),this.generator.next(),t.forEach(((e,i)=>{var l=this.generator.next({high:r[i],low:t[i],close:s[i]});void 0!==l.value&&this.result.push(n(l.value))}))}nextValue(e){return this.generator.next(e).value}}function V(e){i.reverseInputs(e);var t=new y(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}y.calculate=V;class b extends i{constructor(e){super(e),this.format;let t=e.useATR,r=e.brickSize||0;if(t){let t=V(Object.assign({},e));r=t[t.length-1]}if(this.result=new w,0===r)return void console.error("Not enough data to calculate brickSize for renko when using ATR");let s=0,i=0,n=1/0,l=0,h=0;this.generator=function*(){let e=yield;for(;;){if(0===s){s=e.close,i=e.high,n=e.low,l=e.close,h=e.volume,e.timestamp,e=yield;continue}let t=Math.abs(e.close-l),o=Math.abs(e.close-s);if(t>=r&&o>=r){let u=t>o?s:l,a={open:u,high:i>e.high?i:e.high,low:n<e.low?n:e.low,close:u>e.close?u-r:u+r,volume:h+e.volume,timestamp:e.timestamp};s=a.open,i=a.close,n=a.close,l=a.close,h=0,e=yield a}else i=i>e.high?i:e.high,n=n<e.low?n:e.low,h+=e.volume,e.timestamp,e=yield}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume[r],timestamp:e.timestamp[r]});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return console.error("Cannot calculate next value on Renko, Every value has to be recomputed for every change, use calcualte method"),null}}function P(e){i.reverseInputs(e);var t=new b(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),i.reverseInputs(e),t}b.calculate=P;class E extends i{constructor(e){super(e),this.format,this.result=new w;let t=null,r=0,s=1/0,i=0;this.generator=function*(){let e=yield,n=null;for(;;){if(null===t)t=(e.close+e.open)/2,r=e.high,s=e.low,i=(e.close+e.open+e.high+e.low)/4,e.volume,e.timestamp,n={open:t,high:r,low:s,close:i,volume:e.volume||0,timestamp:e.timestamp||0};else{let l=(e.close+e.open+e.high+e.low)/4,h=(t+i)/2,o=Math.max(h,l,e.high),u=Math.min(e.low,h,l);n={close:l,open:h,high:o,low:u,volume:e.volume||0,timestamp:e.timestamp||0},i=l,t=h,r=o,s=u}e=yield n}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({open:e.open[r],high:e.high[r],low:e.low[r],close:e.close[r],volume:e.volume?e.volume[r]:e.volume,timestamp:e.timestamp?e.timestamp[r]:e.timestamp});s.value&&(this.result.open.push(s.value.open),this.result.high.push(s.value.high),this.result.low.push(s.value.low),this.result.close.push(s.value.close),this.result.volume.push(s.value.volume),this.result.timestamp.push(s.value.timestamp))}))}nextValue(e){return this.generator.next(e).value}}function S(e){i.reverseInputs(e);var t=new E(e).result;return e.reversedInput&&(t.open.reverse(),t.high.reverse(),t.low.reverse(),t.close.reverse(),t.volume.reverse(),t.timestamp.reverse()),i.reverseInputs(e),t}E.calculate=S;class L extends l{constructor(e,t,r,s){if(super(),this.size=e,this.maintainHigh=t,this.maintainLow=r,this.maintainSum=s,this.totalPushed=0,this.periodHigh=0,this.periodLow=1/0,this.periodSum=0,!e||"number"!=typeof e)throw"Size required and should be a number.";this._push=this.push,this.push=function(e){this.add(e),this.totalPushed++}}add(e){this.length===this.size?(this.lastShift=this.shift(),this._push(e),this.maintainHigh&&this.lastShift==this.periodHigh&&this.calculatePeriodHigh(),this.maintainLow&&this.lastShift==this.periodLow&&this.calculatePeriodLow(),this.maintainSum&&(this.periodSum=this.periodSum-this.lastShift)):this._push(e),this.maintainHigh&&this.periodHigh<=e&&(this.periodHigh=e),this.maintainLow&&this.periodLow>=e&&(this.periodLow=e),this.maintainSum&&(this.periodSum=this.periodSum+e)}*iterator(){for(this.resetCursor();this.next();)yield this.current}calculatePeriodHigh(){for(this.resetCursor(),this.next()&&(this.periodHigh=this.current);this.next();)this.periodHigh<=this.current&&(this.periodHigh=this.current)}calculatePeriodLow(){for(this.resetCursor(),this.next()&&(this.periodLow=this.current);this.next();)this.periodLow>=this.current&&(this.periodLow=this.current)}}class H extends i{constructor(e){super(e),this.result=[];var t=Object.assign({},{conversionPeriod:9,basePeriod:26,spanPeriod:52,displacement:26},e),r=new L(2*t.conversionPeriod,!0,!0,!1),s=new L(2*t.basePeriod,!0,!0,!1),i=new L(2*t.spanPeriod,!0,!0,!1);this.generator=function*(){let e,n,l=Math.max(t.conversionPeriod,t.basePeriod,t.spanPeriod,t.displacement),h=1;for(n=yield;;){if(r.push(n.high),r.push(n.low),s.push(n.high),s.push(n.low),i.push(n.high),i.push(n.low),h<l)h++;else{let t=(r.periodHigh+r.periodLow)/2,n=(s.periodHigh+s.periodLow)/2;e={conversion:t,base:n,spanA:(t+n)/2,spanB:(i.periodHigh+i.periodLow)/2}}n=yield e}}(),this.generator.next(),e.low.forEach(((t,r)=>{var s=this.generator.next({high:e.high[r],low:e.low[r]});s.value&&this.result.push(s.value)}))}nextValue(e){return this.generator.next(e).value}}function M(e){i.reverseInputs(e);var t=new H(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}H.calculate=M;class C extends i{constructor(e){super(e);var t,r=new(e.useSMA?h:o)({period:e.maPeriod,values:[],format:e=>e}),s=new y({period:e.atrPeriod,high:[],low:[],close:[],format:e=>e});this.result=[],this.generator=function*(){var i;for(t=yield;;){var{close:n}=t,l=r.nextValue(n),h=s.nextValue(t);null!=l&&null!=h&&(i={middle:l,upper:l+e.multiplier*h,lower:l-e.multiplier*h}),t=yield i}}(),this.generator.next(),e.high.forEach(((t,r)=>{var s={high:t,low:e.low[r],close:e.close[r]},i=this.generator.next(s);null!=i.value&&this.result.push(i.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function z(e){i.reverseInputs(e);var t=new C(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}C.calculate=z;class k extends i{constructor(e){super(e);var t=e.high,r=e.low,s=e.close;this.result=[];var i=new y({period:e.period,high:[],low:[],close:[],format:e=>e}),n=new L(2*e.period,!0,!0,!1);this.generator=function*(){for(var t,r,s=yield{high:l,low:h};;){var{high:l,low:h}=s;n.push(l),n.push(h),r=i.nextValue(s),n.totalPushed>=2*e.period&&null!=r&&(t={exitLong:n.periodHigh-r*e.multiplier,exitShort:n.periodLow+r*e.multiplier}),s=yield t}}(),this.generator.next(),t.forEach(((e,t)=>{var i={high:e,low:r[t],close:s[t]},n=this.generator.next(i);null!=n.value&&this.result.push(n.value)}))}nextValue(e){var t=this.generator.next(e);if(null!=t.value)return t.value}}function q(e){i.reverseInputs(e);var t=new k(e).result;return e.reversedInput&&t.reverse(),i.reverseInputs(e),t}return k.calculate=q,e.ChandelierExit=k,e.ChandelierExitInput=class extends s{constructor(){super(...arguments),this.period=22,this.multiplier=3}},e.ChandelierExitOutput=class extends s{},e.KeltnerChannels=C,e.KeltnerChannelsInput=class extends s{constructor(){super(...arguments),this.maPeriod=20,this.atrPeriod=10,this.useSMA=!1,this.multiplier=1}},e.KeltnerChannelsOutput=class extends s{},e.averagegain=m,e.averageloss=f,e.chandelierexit=q,e.fibonacciretracement=function(e,t){let r,s=[0,23.6,38.2,50,61.8,78.6,100,127.2,161.8,261.8,423.6];return r=e<t?s.map((function(r){let s=t-Math.abs(e-t)*r/100;return s>0?s:0})):s.map((function(r){let s=t+Math.abs(e-t)*r/100;return s>0?s:0})),r},e.forceindex=a,e.heikinashi=S,e.ichimokucloud=M,e.keltnerchannels=z,e.renko=P,e.volumeprofile=d,e.vwap=c,e}({}); |
{ | ||
"name": "@rylorin/technicalindicators", | ||
"version": "3.1.20", | ||
"version": "3.1.21", | ||
"description": "Techincal Indicators written in javascript", | ||
@@ -132,3 +132,3 @@ "keywords": [ | ||
"rimraf": "^5.0.5", | ||
"rollup": "^2.79.1", | ||
"rollup": "^4.13.0", | ||
"rollup-plugin-commonjs": "^10.1.0", | ||
@@ -135,0 +135,0 @@ "rollup-plugin-ignore": "^1.0.3", |
@@ -1,2 +0,7 @@ | ||
[![Travis CI](https://img.shields.io/travis/rylorin/technicalindicators.svg?style=flat-square)](https://travis-ci.org/rylorin/technicalindicators) | ||
<div style="display: flex;justify-content:center;" align="center"> | ||
<img src="https://img.shields.io/github/package-json/v/rylorin/technicalindicators" /> | ||
<img src="https://https://github.com/rylorin/technicalindicators/workflows/publish/badge.svg?branch=master" /> | ||
<img src="https://img.shields.io/badge/License-MIT-blue.svg" /> | ||
<img src="https://img.shields.io/npm/dt/@rylorin/technicalindicators.svg" /> | ||
</div> | ||
@@ -3,0 +8,0 @@ # TechnicalIndicators |
@@ -23,4 +23,2 @@ import babel from "@rollup/plugin-babel"; | ||
resolve({ | ||
// jsnext: true, | ||
// main: true, | ||
browser: true, | ||
@@ -43,5 +41,3 @@ mainFields: ["main", "jsnext:main", "browser"], | ||
}), | ||
minify({ | ||
// comments: false, | ||
}), | ||
minify({}), | ||
], | ||
@@ -54,6 +50,5 @@ external: ["@babel/polyfill"], | ||
banner: "/* APP */", | ||
// dest: "dist/browser.js", | ||
output: { file: "dist/browser.js", name: "window" }, | ||
file: "dist/browser.js", | ||
name: "window", | ||
format: "iife", | ||
// moduleName: "window", | ||
globals: { | ||
@@ -111,4 +106,2 @@ "@babel/polyfill": "window", | ||
resolve({ | ||
// jsnext: true, | ||
// main: true, | ||
browser: true, | ||
@@ -118,5 +111,3 @@ mainFields: ["main", "jsnext:main", "browser"], | ||
commonjs({}), | ||
minify({ | ||
// comments: false, | ||
}), | ||
minify({}), | ||
], | ||
@@ -129,6 +120,5 @@ external: ["@babel/polyfill"], | ||
banner: "/* APP */", | ||
// dest: "dist/custom.js", | ||
output: { file: "dist/custom.js", name: "window" }, | ||
file: "dist/custom.js", | ||
name: "window", | ||
format: "iife", | ||
// moduleName: "window", | ||
globals: { | ||
@@ -149,4 +139,2 @@ "@babel/polyfill": "window", | ||
resolve({ | ||
// jsnext: true, | ||
// main: true, | ||
browser: true, | ||
@@ -156,5 +144,3 @@ mainFields: ["main", "jsnext:main", "browser"], | ||
commonjs({}), | ||
minify({ | ||
// comments: false, | ||
}), | ||
minify({}), | ||
], | ||
@@ -167,6 +153,5 @@ external: ["@babel/polyfill"], | ||
banner: "/* APP */", | ||
// dest: "dist/browser.es6.js", | ||
output: { file: "dist/browser.es6.js", name: "window" }, | ||
file: "dist/browser.es6.js", | ||
name: "window", | ||
format: "iife", | ||
// moduleName: "window", | ||
globals: { | ||
@@ -185,6 +170,5 @@ "@babel/polyfill": "window", | ||
banner: "/* APP */", | ||
// dest: "dist/index.js", | ||
output: { file: "dist/index.js" }, | ||
file: "dist/index.js", | ||
format: "cjs", | ||
sourceMap: true, | ||
sourcemap: true, | ||
}); | ||
@@ -191,0 +175,0 @@ } catch (e) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
302
2372972
225
14622