test1 = {
const data = getData(btcRawData)
const close = data.c
const high = data.h
const low = data.l
const vol = data.v
const cum = (array) => array.reduce((a, x, i) => [...a, a.length > 0 ? x + a[i-1] : x], [])
const cumulative = array => {
return array.map((n, i, arr) => {
let j = i - 24 + 1
if(j > 0){
return arr.slice(j, i + 1).reduce((a, x, i) => [...a, a.length > 0 ? x + a[i-1] : x], []).slice(-1)[0]
}
return n
})
}
const VP = close.map((_, i) => {
const avgP = (high[i] + low[i] + close[i]) / 3
return (avgP * vol[i])
})
const cumVol = cumulative(vol)
const cumP = cumulative(VP)
const VWAP = cumP.map((c, i) => c / cumVol[i])
const VWAP_O = VWAP.map((n, i, arr) => {
let j = i - 24 + 1
if(j > 0){
let window = arr.slice(j, i + 1)
let mean = average(window)
let std = standardDeviation(window)
return [(VWAP[i] - mean) / std || 0, VWAP[i], close[i]]
}
return 0
})
return VWAP_O
}