vue echarts macd指标 完整代码

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip 基于echarts封装的H5移动端、门户网站股票行情图表合集(分时图、K线图、MACD等技术指标附图).zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值