vue echarts macd指标 完整代码

news2024/11/16 13:49:16

1 逻辑

给指定的series两个对象
两个对象有相同的xAxisIndex: 2,yAxisIndex: 2,
不同的data
{
          name: "",
          type: "line",
          data: data1,
          xAxisIndex: 2,
          yAxisIndex: 2,
        },

        {
          name: "",
          type: "bar",
          data: data2,
          xAxisIndex: 2,
          yAxisIndex: 2,
        },

2 代码 html 代码 -> vscode 保存为html文件 F5运行

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>echarts example - Custom bar category</title>
  <script src="https://cdn.jsdelivr.net/npm/echarts@4.9.0/dist/echarts.min.js"></script>
  <style>
    html,body {
      height: 100%;
      margin: 0;
    }
    #chart {
      height: 600px;
    }
  </style>
</head>
<body>
  <div id="chart"></div>
  <script>
    // 数据
    let data = [
      ['2020/1/1', 247.75, 246.23, 248.73, 245.30],
      ['2020/1/2', 248.80, 247.32, 248.96, 246.37],
      ['2020/1/3', 253.11, 249.06, 253.11, 247.42],
      ['2020/1/4', 252.29, 249.63, 253.60, 249.05],
      ['2020/1/5', 251.23, 249.71, 252.59, 249.06],
      ['2020/1/6', 252.68, 249.36, 254.09, 249.20],
      ['2020/1/7', 254.39, 251.34, 254.67, 251.17],
      ['2020/1/8', 253.33, 250.53, 254.82, 249.85],
      ['2020/1/9', 253.87, 252.44, 254.30, 250.87],
      ['2020/1/10', 255.31, 253.31, 255.60, 252.90],
      ['2020/1/11', 255.99, 253.08, 256.65, 252.30],
      ['2020/1/12', 256.11, 251.15, 256.48, 251.02],
      ['2020/1/13', 255.38, 253.64, 255.75, 253.02],
      ['2020/1/14', 260.28, 256.36, 260.42, 256.18],
      ['2020/1/15', 262.10, 258.35, 262.15, 257.27],
      ['2020/1/16', 263.31, 261.25, 263.61, 259.96],
      ['2020/1/17', 262.99, 261.54, 264.47, 261.07],
      ['2020/1/18', 263.12, 259.03, 263.48, 258.40],
      ['2020/1/19', 263.23, 259.82, 263.63, 258.69],
      ['2020/1/20', 262.10, 261.43, 262.48, 259.51],
    ];

    // 计算 MACD 指标的函数
    function calculateMACD(data) {
      let SHORT = 12;
      let LONG = 26;
      let M = 9;
      let DIFF = 0;
      let DEA = 0;
      let MACD = 0;

      let emaShort = 0;
      let emaLong = 0;
      let emaDiff = 0;

      let macdData = [];
      let diffData = [];
      let deaData = [];

      for (let i = 0; i < data.length; i++) {
        let close = data[i][1];

        if (i === 0) {
          emaShort = close;
          emaLong = close;
        } else {
          emaShort = (2 * close + (SHORT - 1) * emaShort) / (SHORT + 1);
          emaLong = (2 * close + (LONG - 1) * emaLong) / (LONG + 1);
        }

        emaDiff = emaShort - emaLong;
        diffData.push(emaDiff.toFixed(2));

        if (i === 0) {
          DIFF = emaDiff;
        } else {
          DIFF = (emaDiff * 2 + (SHORT - 1) * DIFF) / (SHORT + 1);
        }

        if (i === 0) {
          DEA = DIFF;
        } else {
          DEA = (DIFF * 2 + (M - 1) * DEA) / (M + 1);
        }

        MACD = (DIFF - DEA) * 2;
        macdData.push(MACD.toFixed(2));
        deaData.push(DEA.toFixed(2));
      }

      return {
        macdData,
        diffData,
        deaData
      };
    }

    // 计算 MACD 指标
    let macdObj = calculateMACD(data);

    // 配置项
    let option = {
      title: {
        text: '股票 K 线图及 MACD 指标图'
      },
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          type: 'cross',
          crossStyle: {
            color: '#999'
          }
        }
      },
      legend: {
        data: ['日K', 'MACD', 'DIFF', 'DEA']
      },
      grid: [
        {
          left: 80,
          right: 80,
          top: 20,
          height: 320
        },
        {
          left: 80,
          right: 80,
          top: 380,
          height: 100
        }
      ],
      xAxis: [
        {
          type: 'category',
          data: data.map(item => item[0]),
          axisPointer: {
            type: 'shadow'
          }
        }
      ],
      yAxis: [
        {
          type: 'value',
          name: '日K',
          scale: true,
          splitArea: {
            show: true
          }
        },
        {
          type: 'value',
          name: 'MACD',
          position: 'right',
          offset: 80,
          axisLine: {
            show: false
          },
          axisTick: {
            show: false
          },
          splitLine: {
            show: false
          },
          axisPointer: {
            show: false
          }
        }
      ],
      series: [
        {
          name: '日K',
          type: 'candlestick',
          data: data,
          itemStyle: {
            color: '#FD1050',
            color0: '#0CF49B',
            borderColor: '#FD1050',
            borderColor0: '#0CF49B'
          }
        },
        {
          name: 'MACD',
          type: 'bar',
          xAxisIndex: 0,
          yAxisIndex: 1,
          data: macdObj.macdData,
          itemStyle: {
            color: '#FFAE57'
          }
        },
        {
          name: 'DIFF',
          type: 'line',
          xAxisIndex: 0,
          yAxisIndex: 1,
          showSymbol: false,
          data: macdObj.diffData,
          itemStyle: {
            color: '#FFC069'
          }
        },
        {
          name: 'DEA',
          type: 'line',
          xAxisIndex: 0,
          yAxisIndex: 1,
          showSymbol: false,
          data: macdObj.deaData,
          itemStyle: {
            color: '#722ED1'
          }
        }
      ]
    };

    // 画图
    let chart = echarts.init(document.getElementById('chart'));
    chart.setOption(option);
  </script>
</body>
</html>

3 代码测试网站

https://codepen.io/pen/?&editable=true&editors=101%2C111%2C110%2C115%2C114%2C112%2C113%2C109

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爱荷华州的一个学区正在使用ChatGPT来决定禁止哪些书籍

为了响应爱荷华州最近颁布的立法&#xff0c;管理员们正在从梅森市学校图书馆移除禁书&#xff0c;官员们正在使用ChatGPT帮助他们挑选书籍&#xff0c;根据公报和大众科学. 由州长金雷诺兹签署的禁令背后的新法律是教育改革浪潮的一部分&#xff0c;共和党立法者认为这是保护…

滑块验证码-接口返回base64数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言所需包图片示例使用方法提示前言 滑动验证码在实际爬虫开发过程中会遇到很多,不同网站返回的数据也是千奇百怪。这里分享一种接口返回base64格式的情况以及处理方式 所需包 opencv-python、…

【LangChain】Feature Store 特征库 一种新型存储方式 —— 功能存储

Feature Store 特征库 特征库的主要目的是什么&#xff1f;特征库的五个主要组件组成一&#xff1a;Serving 服务组成二&#xff1a;Storage 存储组成三&#xff1a;Transform 转换组成四&#xff1a;Monitoring 监控组成五&#xff1a;Feature Registry 功能注册表 Feature St…

简单学习MySQL

最近&#xff0c;再看数据库相关的知识&#xff0c;用不着学太深&#xff0c;先学一些基本知识&#xff0c;以后需要的时候有个基础&#xff0c;不至于像个无头苍蝇&#xff0c;我学习的网站如下&#xff08;MySQL 教程 | 菜鸟教程 (runoob.com)&#xff09; 对MySQL的介绍 My…

[oneAPI] 手写数字识别-VAE

[oneAPI] 手写数字识别-VAE oneAPIVAE模型实现手写数字识别任务定义使用包定义参数加载数据VAE模型与介绍训练过程结果 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/one…

go 中自定义包以及import

目录结构如下 注意ellis这个文件夹是在工作区的src目录下 testpackage.go package testpackageimport ("fmt" )func Test() {fmt.Println("test") }main.go package mainimport ("ellis/testpackage""fmt" )type Name struct {Fir…

电脑PDF转换成PPT?这篇文章给你答案

随着科技的不断发展和进步&#xff0c;电子文档已经成为我们日常工作和学习中不可或缺的一部分。PDF作为一种跨平台的文件格式&#xff0c;以其可靠性和易读性而备受推崇。然而&#xff0c;在某些情况下&#xff0c;我们可能需要电脑PDF转换成PPT&#xff0c;以便更好地展示和编…

塑料玩具en71检测标准

塑料玩具原材料大部是从一些油类中提炼出来的,熟悉的部分pc料是从石油中提炼出来的&#xff0c;pc料在烧的时候有一股汽油味, abs是从煤炭中提炼出来的, abs在烧完灭掉的时候会呈烟灰状&#xff0c;pom是从天然气提炼出来的, pom在烧完的时候会有一股非常臭的瓦斯味,塑料玩具是…

php+echarts实现数据可视化实例

效果&#xff1a; 代码&#xff1a; php <?php include(includes/session.inc); include(includes/SQL_CommonFunctions.inc); ?> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv&quo…

Azure存储账户

存储账户的概念 Azure存储账户是Azure提供的一种云存储解决方案&#xff0c;用于存储和访问各种类型的数据&#xff0c;包括文件、磁盘、队列、表格和Blob&#xff08;二进制大对象&#xff09;数据。存储账户可以基于访问模式和冗余需求来选择不同的类型&#xff0c;以满足应…

网络通信原理应用层(第五十一课)

1)DNS:域名解析系统,端口号TCP或UDP的53 2)域名注册网站 -新网 www.xinnet.com -万网-阿里云 www.net.cn -中国互联 hulian.top 配置通过域名访问网站(NETBASE第七课)_IHOPEDREAM的博客-CSDN博客 2、FTP 1)FTP概述 -文件传输协议 -控制连接:TCP 21 <

.NET6 System.Drawing.Common 通用解决办法

最近有不少小伙伴在升级 .NET 6 时遇到了 System.Drawing.Common 的问题&#xff0c;同时很多库的依赖还都是 System.Drawing.Common &#xff0c;而 .NET 6 默认情况下只在 Windows 上支持使用&#xff0c;Linux 上默认不支持这就导致在 Linux 环境上使用会有问题&#xff0c;…

【校招VIP】测试类型之兼容性测试分析

考点介绍&#xff1a; 兼容性是测试工作里面比较复杂的一种情况&#xff0c;也是校招里面考察的一个重点&#xff0c;需要从屏幕功能&#xff0c;数据&#xff0c;操作系统等多个维度进行分析。 『测试类型之兼容性测试分析』相关题目及解析内容可点击文章末尾链接查看&#x…

极光笔记 | 如何为您的业务开发和训练一个AI-BOT

生成式AI&#xff08;Generative AI&#xff09;是当今科技领域的前沿技术之一。随着数据量的不断增加和计算能力的不断提升&#xff0c;AI技术在企业和个人生活中的应用越来越广泛。AI-BOT&#xff08;以下简称BOT&#xff09;是生成式AI技术的其中一种重要的应用形式&#xf…

【PySide】QtWebEngine网页浏览器打开Flash网页

QWebEngineView 加载 flash插件,可成功显示Flash,如图 说明 QtWebEngine与Chromium版本对应关系 Chromium对Flash的支持 QtWebEngine模块 Qt WebEngine取代了Qt WebKit模块,后者基于WebKit项目,但自Qt 5.2以来没有主动与上游WebKit代码同步,并且在Qt 5.5中已被弃用。有…

智能温度采集器的优势与特点

温度是实验室和医院中最重要的参数之一&#xff0c;影响着设备、仪器、药品、血液等的使用寿命。如果温度不合格&#xff0c;这些物品就会变质&#xff0c;甚至危及人身安全。因此&#xff0c;监控实验室和医院的温度是非常重要的。 那么选择温湿度监控设备有哪些方便之处呢&a…

Ubuntu发布java版本

1、连接服务器 2、进入目录 cd /usr/safety/app/3、上传jar文件 4、杀掉原java进程 1. 查看当前java进程 2. ps -ef|grep java 3. ycmachine:/usr/safety/app$ ps -ef|grep java root 430007 1 6 01:11 pts/0 00:02:45 /usr/local/java/jdk1.8.0_341/bin/j…

创建用于跟踪任何设备位置的移动程序

我又来到我姥姥那里&#xff0c;这里有蚊子我整整一夜没睡&#xff0c;困死我了。 文章目录 前言一、开始总结 前言 来了啊&#xff0c;这是关于跟踪设备的文章所以我们如何快速创建一个移动应用程序&#xff0c;来帮助我们跟踪目标&#xff0c;当然&#xff0c;这是我的手机也…

React Native expo项目修改应用程序名称

https://expo.dev/accounts/xutongbao/projects npm install --global eas-cli && \eas init --id e32cf2c0-da5b-4a65-814a-4958d58f0ca7 eas init --id e32cf2c0-da5b-4a65-814a-4958d58f0ca7 app.config.js: export default {name: 学习,slug: learn-gpt,owner: x…

Sophnet介绍及云空间申请使用

Sophnet介绍及云空间申请使用 1 Sophnet简介 1.1 Sophnet是什么 SOPHNET 平台是基于SOPHON智算产品打造的云边统一的AI服务平台&#xff0c;是人工智能算力中心的基础设施&#xff0c;平台通过开放AI训练和AI推理两大核心能力&#xff0c;赋能千行百业。 1.2 Sophnet设计理…