怎么根据日K线美股数据算出5日,周K线 月K线数据,给出具体javascript 代码

时间: 2023-10-31 12:13:36 浏览: 30
以下是根据日K线美股数据计算5日,周K线和月K线数据的JavaScript代码: ```javascript // 假设原始数据存储在一个数组中,每个元素包含日期、开盘价、最高价、最低价和收盘价等信息 const data = [ { date: '2021-01-01', open: 100, high: 110, low: 90, close: 95 }, { date: '2021-01-02', open: 95, high: 105, low: 85, close: 100 }, { date: '2021-01-03', open: 98, high: 115, low: 95, close: 110 }, // ... ]; // 计算5日均线 const calc5MA = (index) => { if (index < 4) { // 前4个数据无法计算5日均线 return null; } let sum = 0; for (let i = index - 4; i <= index; i++) { sum += data[i].close; } return sum / 5; }; // 计算周K线和月K线数据 let weekData = []; let monthData = []; let lastWeek = null; let lastMonth = null; for (let i = 0; i < data.length; i++) { const item = data[i]; const date = new Date(item.date); const week = date.getWeek(); // 获取当前日期所在的周 const month = date.getMonth(); // 获取当前日期所在的月 if (!lastWeek || week !== lastWeek) { // 如果当前日期所在的周不同于上一个数据,则需新建一条周K线数据 weekData.push({ date: item.date, open: item.open, high: item.high, low: item.low, close: item.close, ma5: calc5MA(i), }); lastWeek = week; } else { // 否则,更新上一条周K线数据的最高价、最低价和收盘价,并重新计算5日均线 const lastItem = weekData[weekData.length - 1]; lastItem.high = Math.max(lastItem.high, item.high); lastItem.low = Math.min(lastItem.low, item.low); lastItem.close = item.close; lastItem.ma5 = calc5MA(i); } if (!lastMonth || month !== lastMonth) { // 如果当前日期所在的月不同于上一个数据,则需新建一条月K线数据 monthData.push({ date: item.date, open: item.open, high: item.high, low: item.low, close: item.close, ma5: calc5MA(i), }); lastMonth = month; } else { // 否则,更新上一条月K线数据的最高价、最低价和收盘价,并重新计算5日均线 const lastItem = monthData[monthData.length - 1]; lastItem.high = Math.max(lastItem.high, item.high); lastItem.low = Math.min(lastItem.low, item.low); lastItem.close = item.close; lastItem.ma5 = calc5MA(i); } } // 获取当前日期所在的周数 Date.prototype.getWeek = function() { const target = new Date(this.valueOf()); const firstDayOfWeek = 1; // 假设一周的第一天是星期一 const dayOfWeek = (this.getDay() + 6) % 7; // 将周日转换为7,方便计算 target.setDate(target.getDate() - dayOfWeek + firstDayOfWeek - 1); const yearStart = new Date(target.getFullYear(), 0, 1); const weekNo = Math.ceil(((target - yearStart) / 86400000 + 1) / 7); return weekNo; }; ``` 上述代码中,`calc5MA` 函数用于计算5日均线,它接受一个参数 `index`,表示当前数据在原始数组中的索引。`weekData` 和 `monthData` 数组分别用于存储周K线和月K线数据,`lastWeek` 和 `lastMonth` 变量记录上一个数据所在的周和月。在循环中,我们根据当前日期所在的周和月来判断是否需要新建一条K线数据,如果需要,则新建一条K线数据并存入相应的数组中;否则,更新上一个K线数据的最高价、最低价和收盘价,并重新计算5日均线。最后,我们还定义了一个 `getWeek` 函数,用于获取当前日期所在的周数。

相关推荐

最新推荐

recommend-type

USB7002中文数据手册.pdf

• 4端口USB智能集线器具有: - 支持原生USB Type-C™的上行端口 - 支持原生USB Type-C的下行端口1和2 - 两个标准USB 2.0下行端口 - 内部集线器功能控制器,可实现: - USB转I2C/SPI/UART/I2S/GPIO桥接器端点支持 - ...
recommend-type

校园导游-数据结构课程设计(附源代码)

设计一个校园导游,提供行走线路查询、选择、介绍的帮助。具体功能如下: (1)根据用户需求智能推荐相关地点。 (2)粗略展示校园平面图。...(4)给出到某个景点的最佳路线。 (5)管理员可以修改景点信息。
recommend-type

PyQT5 QTableView显示绑定数据的实例详解

今天小编就为大家分享一篇PyQT5 QTableView显示绑定数据的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Python爬取股票信息,并可视化数据的示例

截止2019年年底我国股票投资者数量为15975.24万户, 如此多的股民热衷于炒股,首先抛开炒股技术不说, 那么多股票数据是不是非常难找, 找到之后是不是看着密密麻麻的数据是不是头都大了? 今天带大家爬取雪球平台的股票...
recommend-type

TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结

主要介绍了TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法,结合实例形式总结分析了thinkPHP5使用ajax与后台数据交互的两种实现方法及相关操作技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

get() { return this.photoState },

这是一个 JavaScript 中的方法定义,它定义了一个名为 `get` 的方法。这个方法没有参数,它返回了 `this.photoState`。在这个方法中,`this` 是指当前对象,而 `photoState` 是该对象的一个属性。通常情况下,`get` 方法用于获取对象的属性值,并且可以在获取属性值之前进行一些逻辑操作。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。