UNPKG

@thuantan2060/technicalindicators

Version:
66 lines (65 loc) 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PDMInput = exports.PDM = void 0; var _indicator = require("../indicator/indicator"); /** * Created by AAravindan on 5/8/16. */ class PDMInput extends _indicator.IndicatorInput { low; high; } exports.PDMInput = PDMInput; ; class PDM extends _indicator.Indicator { result; generator; constructor(input) { super(input); var lows = input.low; var highs = input.high; var format = this.format; if (lows.length != highs.length) { throw 'Inputs(low,high) not of equal size'; } this.result = []; this.generator = function* () { var plusDm; var current = yield; var last; while (true) { if (last) { let upMove = current.high - last.high; let downMove = last.low - current.low; plusDm = format(upMove > downMove && upMove > 0 ? upMove : 0); } last = current; current = yield plusDm; } }(); this.generator.next(); lows.forEach((tick, index) => { var result = this.generator.next({ high: highs[index], low: lows[index] }); if (result.value !== undefined) this.result.push(result.value); }); } static calculate(input) { _indicator.Indicator.reverseInputs(input); var result = new PDM(input).result; if (input.reversedInput) { result.reverse(); } _indicator.Indicator.reverseInputs(input); return result; } nextValue(price) { return this.generator.next(price).value; } } exports.PDM = PDM; //# sourceMappingURL=PlusDM.js.map