UNPKG

turingtrader.js

Version:
87 lines (67 loc) 3.12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.IndicatorsNum = exports.IndicatorsBar = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _ohlcv = require("./ohlcv"); var _trend = require("./trend"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var IndicatorsNum = function IndicatorsNum(sim, id0, promise0) { var lookup = null; return _objectSpread({ //---------- properties get id() { return id0; }, get data() { return promise0; }, //---------- methods t: function t(offset) { // NOTE: an indicator's time series may have a different length // than the simulator's, e.g. monthly bars. Therefore, we need // to spend some effort here to find the correct index return promise0.then(function (data) { var simTime = sim.t(0).getTime(); if (!lookup) { lookup = {}; data.t.forEach(function (t, idx) { return lookup[t.getTime()] = idx; }); } var idxNow = lookup[simTime]; //const idxNow = data.t.findIndex((t) => t.getTime() === simTime) var idxOffset = Math.min(data.t.length - 1, Math.max(0, idxNow - offset)); return data.x[idxOffset]; }); } }, (0, _trend.IndicatorsTrend)(sim, id0, promise0)); }; //------------------------------------------------------------------------------ exports.IndicatorsNum = IndicatorsNum; var IndicatorsBar = function IndicatorsBar(sim, id0, promise0) { return _objectSpread({ get id() { return id0; }, get data() { return promise0; }, alloc: function alloc(_alloc, type, price) { return { time: sim.t(0), id: id0, ticker: promise0.then(function (data) { return data.meta.ticker; }), data: (0, _ohlcv.IndicatorsOHLCV)(sim, id0, promise0), alloc: _alloc, type: type, price: price }; } }, (0, _ohlcv.IndicatorsOHLCV)(sim, id0, promise0)); }; //============================================================================== // end of file exports.IndicatorsBar = IndicatorsBar;