javascript - 在 JavaScript 中将报价数据转换为 1 分钟 OHLC(开盘价、最高价、最低价、收盘价)?
问题描述
类似于使用 Javascript 从日期、时间、价格创建 OHLC 数据,如何将基本交易数据转换为 OHLC(或 Open、High、Low、Close)的理论并将其应用于生成 1 分钟 OHLC?除此之外,我在使用提供的代码将纪元时间戳调整为 ISODate 时也遇到了问题。
var data = [{
"tid": 283945,
"date": 2018-08-02T04:24:53Z,
"amount": "0.08180000",
"price": "501.30"
}, {
"tid": 283947,
"date": 2018-08-02T04:24:53Z,
"amount": "0.06110000",
"price": "490.66"
},
...
];
function convertToOHLC(data) {
// What goes here?
}
convertToOHLC(data);
这是以前代码的小提琴:https ://jsfiddle.net/5dfjhnLw/
解决方案
我创建了一个示例,根据您的要求如何将数据转换为 ohlc:
function convertToOHLC(data) {
var parsedData = JSON.parse(data),
pointStart = parsedData[0].date,
range = [],
low,
high,
ranges = [],
dataOHLC = [],
interval = 60 * 1000;
parsedData.sort(function(a, b) {
return a.date - b.date
});
$.each(parsedData, function(i, el) {
if (pointStart + interval < el.date) {
ranges.push(range.slice());
range = [];
range.push(el);
pointStart = pointStart + interval;
} else {
range.push(el);
}
if (i === parsedData.length - 1) {
ranges.push(range);
}
});
$.each(ranges, function(i, range) {
low = range[0].price;
high = range[0].price;
$.each(range, function(i, el) {
low = Math.min(low, el.price);
high = Math.max(high, el.price);
});
dataOHLC.push({
x: range[0].date + 30 * 1000,
open: Number(range[0].price),
high: high,
low: low,
close: Number(range[range.length - 1].price)
});
});
return dataOHLC
}
推荐阅读
- flutter - 如何在 Flutter Web 中添加插件?
- node.js - 在自定义 serviceWorker 中调度 redux 操作
- python - Python2.7 - 安装 Python3 后解释器语法错误
- c - C编程:Stackoverflow是突然终止的原因
- kubernetes - Kubernetes:gcePersistentDisk 不工作
- python - 字符串索引超出范围?- Python
- node.js - SSL 警报编号 46。警报证书未知。如何忽略此异常?
- javascript - 是否可以在浏览器化的 Web 应用程序中生成本地服务器
- android - 在一些延迟之后,如何从一个活动重定向到另一个活动?
- git - Git Gui“未检测到差异”