UNPKG

trading-signals

Version:

Technical indicators to run technical analysis with JavaScript / TypeScript.

45 lines 1.61 kB
import { TradingSignal, TrendIndicatorSeries } from '../../base/Indicator.js'; import { getMaximum } from '../../util/getMaximum.js'; import { getMinimum } from '../../util/getMinimum.js'; import { pushUpdate } from '../../util/pushUpdate.js'; export class ER extends TrendIndicatorSeries { #closes = []; #highs = []; #lows = []; interval; #trending; constructor(interval, { trending = 0.5 } = {}) { super(); this.interval = interval; this.#trending = trending; } getRequiredInputs() { return this.interval; } update(candle, replace) { pushUpdate(this.#closes, replace, candle.close, this.interval); pushUpdate(this.#highs, replace, candle.high, this.interval); pushUpdate(this.#lows, replace, candle.low, this.interval); if (this.#closes.length < this.interval) { return null; } const netChange = Math.abs(this.#closes[this.#closes.length - 1] - this.#closes[0]); const highestHigh = getMaximum(this.#highs); const lowestLow = getMinimum(this.#lows); const range = highestHigh - lowestLow; if (range === 0) { return this.setResult(0, replace); } return this.setResult(netChange / range, replace); } calculateSignalState(result) { if (result === null || result === undefined) { return TradingSignal.UNKNOWN; } if (result >= this.#trending) { return TradingSignal.BULLISH; } return TradingSignal.SIDEWAYS; } } //# sourceMappingURL=ER.js.map