trading-signals
Version:
Technical indicators to run technical analysis with JavaScript / TypeScript.
41 lines • 1.69 kB
JavaScript
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