- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
类似于create an OHLC data from Date, time, price using C# ,如何将基本交易数据转换为 OHLC(或开盘价、最高价、最低价、收盘价)的理论并将其应用于这种不同的情况?
var data = [{
"tid": 283945,
"date": 1384934366,
"amount": "0.08180000",
"price": "501.30"
}, {
"tid": 283947,
"date": 1384934066,
"amount": "0.06110000",
"price": "490.66"
},
...
];
function convertToOHLC(data) {
// What goes here?
}
convertToOHLC(data);
这是 fiddle :https://jsfiddle.net/5dfjhnLw/
最佳答案
这是将数据转换为 OHLC 的工作函数:
function convertToOHLC(data) {
data.sort((a, b) => d3.ascending(a.date, b.date));
var result = [];
var format = d3.timeFormat("%Y-%m-%d");
data.forEach(d => d.date = format(new Date(d.date * 1000)));
var allDates = [...new Set(data.map(d => d.date))];
allDates.forEach(d => {
var tempObject = {};
var filteredData = data.filter(e => e.date === d);
tempObject.date = d;
tempObject.open = filteredData[0].price;
tempObject.close = filteredData[filteredData.length - 1].price;
tempObject.high = d3.max(filteredData, e => e.price);
tempObject.low = d3.min(filteredData, e => e.price);
result.push(tempObject);
});
return result;
};
这是您更新的 fiddle :https://jsfiddle.net/mg9v89r2/
首先,我们按日期对原始数据数组进行排序:
data.sort((a, b) => d3.ascending(a.date, b.date));
当我们稍后处理open
和close
时,这是一个重要的步骤。
之后,我们将毫秒转换为日期,作为字符串:
var format = d3.timeFormat("%Y-%m-%d");
data.forEach(d => d.date = format(new Date(d.date * 1000)));
这样做,我们可以过滤属于给定日期的所有对象。首先,我们在您的数据中创建一个包含所有不同日期的数组:
var allDates = [...new Set(data.map(d => d.date))];
对于该数组的每一天,我们将调用一个函数来填充一个名为 results
的空数组:
allDates.forEach(d => {
var tempObject = {};
var filteredData = data.filter(e => e.date === d);
tempObject.date = d;
tempObject.open = filteredData[0].price;
tempObject.close = filteredData[filteredData.length - 1].price;
tempObject.high = d3.max(filteredData, e => e.price);
tempObject.low = d3.min(filteredData, e => e.price);
result.push(tempObject);
});
在上面的 forEach
中,我们创建了一个空对象,并为我们的 allDates
数组中的每一天过滤数据:
var filteredData = data.filter(e => e.date === d);
并用它填充一个临时对象:
var tempObject = {};
tempObject.date = d;
tempObject.open = filteredData[0].price;
tempObject.close = filteredData[filteredData.length - 1].price;
tempObject.high = d3.max(filteredData, e => e.price);
tempObject.low = d3.min(filteredData, e => e.price);
每次迭代后,我们将该临时对象推送到results
:
result.push(tempObject);
最后,我们返回结果
。
令人惊讶的是,您 fiddle 中的庞大数据数组只有 2 天的数据。
关于javascript - 在 JavaScript 中将数据转换为 OHLC(开盘价、最高价、最低价、收盘价)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064703/
我有一个表,如下所示: dpTicker dpDate dpOpen dpHigh dpLow dpClose dpVolume dpAd
我正在处理烛台图表数据。我有一个数据库表(MySql) created value 2017-09-25 17:55:04 3322.09 2017-09-25
类似于create an OHLC data from Date, time, price using C# ,如何将基本交易数据转换为 OHLC(或开盘价、最高价、最低价、收盘价)的理论并将其应用于
我有以下格式的连续数据流,我想根据定义的时间片(如 5 分钟、10 分钟、30 分钟等)将其转换为开盘价、最高价、最低价和收盘价。同时 buy_quantity sell_quantity 也应该根据
我正在尝试使用 Convert data to OHLC (Open, High, Low, Close) in JavaScript? 中的脚本将一些图表数据转换为 OHLC。唯一的问题是我的数据与
我有什么 1。我的域“User_Order” CREATE TABLE `user_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `cre
我是一名优秀的程序员,十分优秀!