data = {
const startValue = 115.0;
function naiveRandomWalk(value, maxStep = 3) {
if (Math.random() > 0.5) {
return value + Math.random() * maxStep;
}
return value - Math.random() * maxStep;
}
const dates = d3.timeDays(new Date("2017-01-01"), new Date("2017-12-31"));
let data = [];
dates.filter(date => date.getDay() != 0 && date.getDay() != 6).forEach((date, i) => {
if (i === 0) {
data.push({
date,
open: startValue,
high: generateHighPrice(startValue, startValue),
low: generateLowPrice(startValue, startValue),
close: naiveRandomWalk(startValue),
})
} else {
const open = naiveRandomWalk(data[i-1].close);
const close = naiveRandomWalk(open);
data.push({
date,
open,
high: generateHighPrice(open, open),
low: generateLowPrice(close, close),
close
})
}
})
return data;
}