bfx-api-node-util
Version:
Utilities for the Bitfinex node API
39 lines (32 loc) • 1.04 kB
JavaScript
/**
* Fills in missing (0 volume) candles on the provided dataset. The result is a
* new array (does not mutate)
*
* @param {Array[]} candles - array-format candles
* @param {number} candleWidth - in ms
* @return {Array[]} paddedCandles
*/
const padCandles = (candles, candleWidth) => {
const paddedCandles = [...candles].reverse()
for (let i = 0; i < paddedCandles.length - 1; i += 1) {
const candle = paddedCandles[i]
const nextCandle = paddedCandles[i + 1]
const candlesToFill = ((nextCandle[0] - candle[0]) / candleWidth) - 1
if (candlesToFill > 0) {
const fillerCandles = Array.apply(null, Array(candlesToFill)).map((c, i) => {
return [
candle[0] + (candleWidth * (i + 1)), // mts
candle[2], // open
candle[2], // close
candle[2], // high
candle[2], // low
0 // vol
]
})
paddedCandles.splice(i + 1, 0, ...fillerCandles)
}
}
return paddedCandles.reverse()
}
module.exports = padCandles