rxjs-trading-signals
Version:
The user - defined operator helps users quickly output index values. base trading-signals library
23 lines • 1.22 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeKLine = void 0;
const big_js_1 = __importDefault(require("big.js"));
const rxjs_1 = require("rxjs");
const mergeKLine = (interval = 15) => {
return (0, rxjs_1.pipe)((0, rxjs_1.bufferCount)(interval), (0, rxjs_1.concatMap)((items) => {
const source$ = (0, rxjs_1.zip)((0, rxjs_1.from)(items).pipe((0, rxjs_1.max)((a, b) => (new big_js_1.default(a.high).lt(b.high) ? -1 : 1))), (0, rxjs_1.from)(items).pipe((0, rxjs_1.min)((a, b) => (new big_js_1.default(a.low).lt(b.low) ? -1 : 1))), (0, rxjs_1.from)(items).pipe((0, rxjs_1.scan)((a, b) => a.plus(b.volume), new big_js_1.default(0)), (0, rxjs_1.last)()));
return source$.pipe((0, rxjs_1.map)(([max, min, volume]) => ({
id: items[0].id,
open: items[0].open,
close: items[items.length - 1].close,
high: max.high,
low: min.low,
volume: volume.toNumber(),
})));
}));
};
exports.mergeKLine = mergeKLine;
//# sourceMappingURL=mergeKLine.js.map