UNPKG

trading-cycle

Version:

A lightweight, modular core library designed for backtesting trading strategies in financial markets.

2 lines 9.01 kB
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("TradingCycleFull",[],e):"object"==typeof exports?exports.TradingCycleFull=e():t.TradingCycleFull=e()}(self,(()=>(()=>{"use strict";var t={88:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(966)),r=i(s(915)),u=i(s(363)),a=i(s(775)),o=i(s(548)),l=i(s(234)),h=i(s(903)),c=i(s(324)),d=i(s(343)),f=i(s(439)),v=i(s(567));e.default={Candles:n.default,PositiveValues:r.default,NegativeValues:u.default,Renko:a.default,TimeRenko:o.default,TestLogic:l.default,PositiveTimeLength:h.default,NegativeTimeLength:c.default,FakeTrader:d.default,LogCandle:f.default,RenkoCounter:v.default}},234:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(){super(...arguments),this.started=!1}doExecute(){const t=this.s.candle;if(!(t&&t.length<10))return this.started&&!this.v.candle?{signal:!0}:t[t.length-1].c>t[t.length-1].o&&Math.abs(t[t.length-1].c-t[t.length-1].o)<2?(this.started=!0,{signal:!0}):void(this.started=!1)}}e.default=r},284:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(587)),r=i(s(742)),u=i(s(88)),a=i(s(999));e.default={TradingCycle:n.default,AbstractHandler:r.default,handlers:u.default,config:a.default}},324:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.prev=void 0,this.val=0}doExecute(){if(this.v.input)return this.v.input.c<this.v.input.o?(this.val=this.val+1/this.v.input.len,{val:this.val}):void 0}}e.default=r},343:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.price=null,this.cum=0,this.cnt=0}doExecute(){if(this.v.input&&this.v.input.signal&&"number"!=typeof this.price&&(this.price=this.v.tick.c),!(this.v.input&&this.v.input.signal||"number"!=typeof this.price)){const t=this.v.tick.c-this.price,e=this.cum;return this.cum+=t,this.cnt++,this.price=null,{cnt:this.cnt,delta:t,cum:this.cum,o:e,c:this.cum,h:Math.max(this.cum,e),l:Math.min(this.cum,e),t:this.v.tick.t}}}}e.default=r},363:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.prev=void 0}doExecute(){if(!this.v.input)return;const t=this.prev&&this.v.input.c<this.prev.c;return this.prev=this.v.input,t?this.v.input:void 0}}e.default=r},439:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{doExecute(){if(!this.v.candle)return;const t=Object.assign({},this.v.candle);return t.o=Math.log(t.o),t.c=Math.log(t.c),t.h=Math.log(t.h),t.l=Math.log(t.l),t}}e.default=r},548:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.prev={o:0,c:0,h:0,l:0,t:1}}doExecute(){if(!this.v.input)return;const t=this.prev.c,e=this.prev.c+(this.v.input.c>this.v.input.o?this.v.input.len:-this.v.input.len),s=Math.max(t,e),i=Math.min(t,e);return this.prev={o:t,c:e,h:s,l:i,t:this.v.input.t},this.prev}}e.default=r},567:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.val=0}doExecute(){if(this.v.candle)return this.v.candle.c<this.v.candle.o?this.val++:this.val=0,{val:this.val}}}e.default=r},587:function(t,e){var s,i,n,r=this&&this.__classPrivateFieldGet||function(t,e,s,i){if("a"===s&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?i:"a"===s?i.call(t):i?i.value:e.get(t)};Object.defineProperty(e,"__esModule",{value:!0}),s=new WeakSet,i=function(t){r(this,s,"m",n).call(this,t),this.handlers[t.name]=new this.handlerClasses[t.handler](this.state,t),this.state[t.name]=[]},n=function(t){if(!t.name.trim().length)throw new Error("No Handler's name found.");if("tick"===t.name)throw new Error("Handler's name is reserved.");if(this.handlers[t.name])throw new Error(`${t.name} already exists`)},e.default=class{constructor(t,e){s.add(this),this.handlers={},this.state={},this.handlerClasses=t,e.forEach((t=>{r(this,s,"m",i).call(this,t)}))}execute(t){const e={tick:t};Object.keys(this.handlers).forEach((t=>{const s=this.handlers[t];e[t]=s.execute(e),e[t]&&this.state[t].push(e[t])}))}}},742:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=class{constructor(t,e){this.defaults=e.defaults,this.name=e.name,this._inputs=e.inputs,this._state=t,this._v={},this._s={}}get calculated(){return this._state[this.name]}get v(){return this._v}get s(){return this._s}execute(t){return this._v={tick:t.tick},this._s={},Object.entries(this._inputs).forEach((([e,s])=>{this._v[e]=t[s],this._s[e]=this._state[s]})),this.doExecute()}}},775:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e);const s=this.defaults??{},i=s.size??1;this.brickSizeLong=s.sizeLong??i,this.brickSizeShort=s.sizeShort??i,this.renko=null,this.val=0}doExecute(){if(!this.v.candle)return;this.renko?(this.renko.len++,this.renko.c=this.v.candle.c,this.renko.h=Math.max(this.renko.h,this.v.candle.h),this.renko.l=Math.min(this.renko.l,this.v.candle.l),this.v.candle.c>this.renko.o&&this.renko.up++,this.v.tick.c<this.renko.o&&this.renko.down++):this.renko={o:this.v.candle.o,c:this.v.candle.c,h:this.v.candle.h,l:this.v.candle.l,up:0,down:0,len:1};const t=Math.max(this.renko.c,this.renko.o),e=Math.min(this.renko.c,this.renko.o),s=Math.abs(t-e)/e,i=this.renko.c>this.renko.o&&s>=this.brickSizeLong,n=this.renko.c<this.renko.o&&s>=this.brickSizeShort;if(i||n){const t=this.renko;return t.t=this.v.tick.t,this.val=this.val+(t.c>t.o?1:-1),t.val=this.val,this.renko={o:t.c,c:t.c,h:t.c,l:t.c,len:0,up:0,down:0,t:this.v.tick.t,val:this.val},t}}}e.default=r},903:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.prev=void 0,this.val=0}doExecute(){if(this.v.input)return this.v.input.c>this.v.input.o?(this.val=this.val+1/this.v.input.len,{val:this.val}):void 0}}e.default=r},915:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{constructor(t,e){super(t,e),this.prev=void 0}doExecute(){if(!this.v.input)return;const t=this.prev&&this.v.input.c>this.prev.c;return this.prev=this.v.input,t?this.v.input:void 0}}e.default=r},966:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(742));class r extends n.default{doExecute(){return this.v.tick}}e.default=r},977:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=[{name:"candles",handler:"Candles",defaults:{},inputs:{}},{name:"log-candles",handler:"LogCandle",defaults:{},inputs:{candle:"candles"}},{name:"renko-0.05",handler:"Renko",defaults:{size:.05},inputs:{candle:"candles"}},{name:"time-renko",handler:"TimeRenko",defaults:{},inputs:{input:"renko-0.05"}},{name:"renko-counter",handler:"RenkoCounter",defaults:{},inputs:{candle:"renko-0.05"}},{name:"test-logic",handler:"TestLogic",inputs:{candle:"renko-0.05"}},{name:"fake-trader",handler:"FakeTrader",inputs:{input:"test-logic"}}]},999:function(t,e,s){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});const n=i(s(977));e.default={defaultTradingCycle:n.default}}},e={};return function s(i){var n=e[i];if(void 0!==n)return n.exports;var r=e[i]={exports:{}};return t[i].call(r.exports,r,r.exports,s),r.exports}(284)})())); //# sourceMappingURL=trading-cycle-full.bundle.js.map