UNPKG

pricehistory

Version:
59 lines (58 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const simpul_1 = require("simpul"); function setCandleVWAP(option, candle, series, period) { if (option.vwap !== true) return; let p = 0; let pv = 0; let v = 0; for (const i of series) { if (typeof i.priceHigh === "number" && typeof i.priceLow === "number" && typeof i.priceClose === "number" && typeof i.volume === "number") { p = (i.priceHigh + i.priceLow + i.priceClose) / 3; pv += p * i.volume; v += i.volume; } } if (v === 0) return; const vwap = simpul_1.math.num(pv / v); const vwapValue = simpul_1.math.num(pv); let vwapSignal, volValue; if (typeof vwap === "number") vwapSignal = simpul_1.math.change.percent(vwap, p); if (typeof candle.volume === "number") volValue = simpul_1.math.num(p * candle.volume); if ((option.sma === true && typeof period === "number") || period === 1) { if (typeof vwap === "number") { candle[`sma${period}Vwap`] = vwap; } if (typeof vwapSignal === "number") { candle[`sma${period}VwapSignal`] = vwapSignal; } if (typeof vwapValue === "number") { candle[`sma${period}VwapValue`] = vwapValue; } } else { if (typeof vwap === "number") { candle.vwap = vwap; } if (typeof vwapSignal === "number") { candle.vwapSignal = vwapSignal; } if (typeof vwapValue === "number") { candle.vwapValue = vwapValue; } if (typeof v === "number") { candle.volumeTotal = v; } if (typeof volValue === "number") { candle.volumeValue = volValue; } } } exports.default = setCandleVWAP;