UNPKG

pricehistory

Version:
92 lines (91 loc) 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const simpul_1 = require("simpul"); function setCandlePrice(option, curr, candle, prev) { const open = option.open && curr[option.open]; const high = option.high && curr[option.high]; const low = option.low && curr[option.low]; const close = option.close && curr[option.close]; const prevClose = prev === null || prev === void 0 ? void 0 : prev.priceClose; // regular close or leveraged close const prevClose2 = prev === null || prev === void 0 ? void 0 : prev.priceClose2; // regular close const basePrice = option.basePrice; if (typeof open === "number") candle.priceOpen = open; if (typeof high === "number") candle.priceHigh = high; if (typeof low === "number") candle.priceLow = low; if (typeof close === "number") candle.priceClose = close; if (typeof option.leverage === "number" && typeof open === "number") { let levOpen = open; let levHigh; let levLow; let levClose; if (typeof prevClose === "number" && typeof prevClose2 === "number") { levOpen = calcLeverage(option.leverage, prevClose2, open, prevClose); } if (typeof levOpen === "number" && typeof high === "number") { levHigh = calcLeverage(option.leverage, open, high, levOpen); } if (typeof levOpen === "number" && typeof low === "number") { levLow = calcLeverage(option.leverage, open, low, levOpen); } if (typeof levOpen === "number" && typeof close === "number") { levClose = calcLeverage(option.leverage, open, close, levOpen); } if (typeof levOpen === "number") candle.priceOpen = levOpen; if (typeof levHigh === "number") candle.priceHigh = levHigh; if (typeof levLow === "number") candle.priceLow = levLow; if (typeof levClose === "number") candle.priceClose = levClose; if (typeof close === "number") candle.priceClose2 = close; if (typeof prevClose2 === "number") delete prev.priceClose2; } if (option.price !== true) return; if (typeof candle.priceOpen === "number" && typeof candle.priceClose === "number" && typeof candle.priceLow === "number" && typeof candle.priceHigh === "number") { candle.priceMean = simpul_1.math.mean([ candle.priceOpen, candle.priceHigh, candle.priceLow, candle.priceClose, ]); } if (typeof prevClose === "number" && typeof candle.priceClose === "number") { candle.priceChange = simpul_1.math.change.percent(prevClose, candle.priceClose); } if (typeof prevClose === "number" && typeof candle.priceOpen === "number") { candle.priceChangePremarket = simpul_1.math.change.percent(prevClose, candle.priceOpen); } if (typeof candle.priceOpen === "number" && typeof candle.priceClose === "number") { candle.priceChangeIntraday = simpul_1.math.change.percent(candle.priceOpen, candle.priceClose); } if (typeof basePrice === "number" && typeof candle.priceClose === "number") { candle.priceChangeCumulative = simpul_1.math.change.percent(basePrice, candle.priceClose); } if (typeof candle.priceLow === "number" && typeof candle.priceHigh === "number") { candle.priceRange = simpul_1.math.discrepancy(candle.priceLow, candle.priceHigh); candle.priceRangeDiff = simpul_1.math.change.percent(candle.priceLow, candle.priceHigh); candle.priceRangeMean = simpul_1.math.mean([candle.priceLow, candle.priceHigh]); } } function calcLeverage(lev, prev, curr, mark) { const change = simpul_1.math.change.percent(prev, curr); if (typeof change === "number") { const leveraged = simpul_1.math.num(mark + mark * ((change / 100) * lev)); if (typeof leveraged === "number") return leveraged; } } exports.default = setCandlePrice;