UNPKG

@thi.ng/transducers-stats

Version:

Transducers for statistical / technical analysis

22 lines (21 loc) 607 B
import { compR } from "@thi.ng/transducers/compr"; import { iterator1 } from "@thi.ng/transducers/iterator"; import { Deque } from "./deque.js"; function movingMaximum(period, src) { return src ? iterator1(movingMaximum(period), src) : (rfn) => { const samples = []; const deque = new Deque(samples, (a, b) => a <= b); return compR(rfn, (acc, x) => { const num = samples.push(x); deque.add(x); if (num > period) { samples.shift(); deque.shift(); } return num >= period ? rfn[2](acc, deque.head()) : acc; }); }; } export { movingMaximum };