UNPKG

trading-signals

Version:

Technical indicators to run technical analysis with JavaScript / TypeScript.

43 lines 1.7 kB
import { TrendIndicatorSeries, TradingSignal } from '../../base/Indicator.js'; import { pushUpdate } from '../../util/pushUpdate.js'; export class OBV extends TrendIndicatorSeries { candles = []; interval; constructor(interval) { super(); this.interval = interval; } getRequiredInputs() { return this.interval; } update(candle, replace) { pushUpdate(this.candles, replace, candle, this.getRequiredInputs()); if (this.candles.length < this.getRequiredInputs()) { return null; } const prevCandle = this.candles[this.candles.length - 2]; const prevPrice = prevCandle.close; const prevResult = this.result ?? 0; const currentPrice = candle.close; const nextResult = currentPrice > prevPrice ? candle.volume : currentPrice < prevPrice ? -candle.volume : 0; return this.setResult(prevResult + nextResult, false); } calculateSignalState(result) { const hasResult = result !== null && result !== undefined; const previousResult = this.previousResult; const hasPreviousResult = previousResult !== undefined; const isBullish = hasResult && hasPreviousResult && result > previousResult; const isBearish = hasResult && hasPreviousResult && result < previousResult; switch (true) { case !hasResult: return TradingSignal.UNKNOWN; case isBullish: return TradingSignal.BULLISH; case isBearish: return TradingSignal.BEARISH; default: return TradingSignal.SIDEWAYS; } } } //# sourceMappingURL=OBV.js.map