pricehistory
Version:
Series data with technical indicators.
59 lines (58 loc) • 1.88 kB
JavaScript
;
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;