UNPKG

trading-signals

Version:

Technical indicators to run technical analysis with JavaScript / TypeScript.

41 lines 1.69 kB
import { TradingSignal, TrendIndicatorSeries } from '../../base/Indicator.js'; import { pushUpdate } from '../../util/pushUpdate.js'; export class PVT extends TrendIndicatorSeries { state = { candles: [] }; getRequiredInputs() { return 2; } update(candle, replace) { this.trackState(replace); pushUpdate({ array: this.state.candles, item: candle, maxLength: 2, replace: false }); if (this.state.candles.length < 2) { return null; } const previousClose = this.state.candles[0].close; const previousPVT = (replace ? this.previousResult : this.result) ?? 0; if (previousClose === 0) { return this.setResult(previousPVT, replace); } const priceChangeRatio = (candle.close - previousClose) / previousClose; const pvt = previousPVT + candle.volume * priceChangeRatio; return this.setResult(pvt, replace); } 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=PVT.js.map