偶然见别人画的股票K线图,不禁见猎心喜,也来模仿一番.原图是不能动的,一动MACD移动平滑趋势线就没有了.这是微软excel的一个缺陷.

所以我想了一个办法弥补这个缺陷.由于手头没有数据,开始实施网抓数据.

先构造如下一个表.表1

365行数据,正好抓一年的股票数据.为什么不在power query里直接构造呢?这是因为这个表不光用来抓取数据,到时也是用来载入power pivot,做为里面的一张纬度表使用的.而且最方便的,假如我想要的不是一年的数据,而是两年数据,那把表格直接往下再拉三百多行就行了.将表1加载进power query.然后将如下代码复制进去,

let

源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

测试 = let 测试=(x)=>

let

源 = Web.Page(Web.Contents("http://vip.stock.finance.sina.com.cn/quotes_service/view/vMS_tradehistory.php?symbol=sz002069&date="&x&"")){2}[Data]

in

in

测试,

已添加自定义 = Table.AddColumn(源, "自定义", each 测试([文本日期])),

#"展开的“自定义”" = Table.ExpandTableColumn(已添加自定义, "自定义", {"Column1", "Column2"}, {"自定义.Column1", "自定义.Column2"}),

删除的列 = Table.RemoveColumns(#"展开的“自定义”",{"日期"}),

已透视列 = Table.Pivot(删除的列, List.Distinct(删除的列[自定义.Column1]), "自定义.Column1", "自定义.Column2"),

筛选的行 = Table.SelectRows(已透视列, each ([#"收盘价:"] <> "0.00")),

更改的类型 = Table.TransformColumnTypes(筛选的行,{{"文本日期", type date}, {"收盘价:", type number}, {"前收价:", type number}, {"开盘价:", type number}, {"最高价:", type number}, {"最低价:", type number}, {"成交量(手):", type number}, {"成交额(千元):", type number}, {"涨跌幅:", type number}})

in

更改的类型

正好生成我们需要的一年数据.

当然可以多抓几只股票,不过用power query时间太慢了.一只股票的数据勉强还在我忍受的时间范围,出去上个厕所或吃包辣条,就数据抓完了.数据量小,用powerquery或VBA可以抓一抓,胜在属于excel内置的功能,比较方便(不过VBA抓数据的速度又比powerquery快不少.).数据量大还是用python.

将抓来的数据还有表1加载进power pivot.设置如下图所示:

注意关系之间的方向箭头.纬度表属于一端,事实表属于多端.设置好后就是写计算字段.计算字段与度量公式的区别就是,计算字段写在红框框里,根据行上下文,生成许多行,而度量公式只有一行.先写试题公式,收盘平均价:

收盘价平均:=AVERAGE([收盘价:])

接下来写计算字段,每过五天计算一次平均收盘价,与及每十天计算一次平均收盘价

排名=COUNTROWS (FILTER ('表1','表1'[文本日期]<=EARLIER('表1'[文本日期])))

五天=CALCULATE(AVERAGE('表1'[文本日期]),FILTER('表1','表1'[排名]=(EARLIER([排名])-5)))

五天移动=IF([五天]=BLANK(),BLANK(),CALCULATE([收盘价平均],FILTER('表1','表1'[文本日期]>=EARLIER('表1'[五天])&&'表1'[文本日期]<=EARLIER([文本日期]))))

十天=CALCULATE(AVERAGE('表1'[文本日期]),FILTER('表1','表1'[排名]=(EARLIER([排名])-10)))

=IF([十天]=BLANK(),BLANK(),CALCULATE([收盘价平均],FILTER('表1','表1'[文本日期]>=EARLIER('表1'[十天])&&'表1'[文本日期]<=EARLIER([文本日期]))))

需要说明的是,这两条平均线从开始写公式开始,就已经算好了,不是单纯的在日期纬度上单纯的向未来日期移动,而是已经考虑到了,股票如果没有发生交易行为的日期,自动会忽略掉.这是非常精准的计算只发生交易的平均移动.

其次要申明的,在第280页里采用的公式是VALUES进行公式编写,可能存在关系循环依赖的错误.

而使用AVERAGE或其它聚合函数进行构造,没出问题.真是灵异现像.这个问题我也是反复深思许久.让我吃几包辣条思索一下再做回答。

这本书是国内关于DAX数据建模唯一的一本最具深度的书.值得反复一读再读,如果你需要从DAX初级选手迈入中级甚至专家级的话.DAX数据建模的好处就是能使得excel处理几百万行的数据,建立商业数据分析模型.同样在power bi里也能使用,在sql server里同样能使用.在sql server里建立用DAX做出的表格模型,能构建立高达几十亿乃至上百亿行的商业数据分析模型,恐怕这是SQL SERVER的趋势.而MDX表达式无人问津,使用的人太少了,会越来越萎缩.

写完公式,返回excel工作界面,生成两张数据透视表.

由于直接用数据透视表作图,会生成数据透视图表.而透视图表是没有股票图的,所以必须使用写函数技巧了,做进名称管理器里.一张用来做股价图,一张用来做折线图,两张图做好,X轴与Y轴刻度都设置成一模一样的,两张图表互相对齐,互相吻合,就是一张带MACD移动平均线的图表了啦.如下图所示

这样就具有动态效果.这样做确实挺麻烦的.不过有个好消息就是excel365居然改进了这一措施.也就是趋势线居然也能动态移动了,随着数据.

我一直不知道,搞得我用DAX去构造两条平均移动线,后来使用了K线图自带的趋势线,居然也能数据动态移动,真是意外的惊喜.呵呵.不过如果你使用的office2016及其它版本,恐怕还是不行.只有office365才可以.office365每年都会更新好几次版本,增加新功能或弥补一些缺陷,所以我也不知道他几时将趋势线的缺陷弥补的.所以还是使用office365吧.以前一些技术随着新版本就过时了.比如这种技术:

接下来再讲使用excel 365的情况下,怎么用一张图表做动态带有MACD移动线的K线图.刚才说了,由于使用数据透视表的数据直接做图,无法生成K线图.所以得使用函数+名称管理器构造.这里为什么不将数据透视表转化为OLAP数据集呢?

OLAP数据集确实好用,但行标签日期的数据是往下延展的,一旦改成OLAP数据集,日期就无法往下延展了.如果日期不需要向下延展,那使用OLAP数据集是最好的选择.因此接下来在这里使用函数+名称管理器巧妙的做出使用数据透视表里数据做K线图的思路.

如图所示,利用函数offset+counta构造的函数组合具有往下延展的特性.对日期,开盘价,最高价,最低价,收盘价等都利用这个公式.公式如下:

=OFFSET(Sheet5!$C$3,1,,COUNTA(Sheet5!$C:$C)-1,)

=OFFSET(Sheet5!$B$3,1,,COUNTA(Sheet5!$B:$B)-1,)

=OFFSET(Sheet5!$F$3,1,,COUNTA(Sheet5!$F:$F)-1,)

=OFFSET(Sheet5!$E$3,1,,COUNTA(Sheet5!$E:$E)-1,)

=OFFSET(Sheet5!$D$3,1,,COUNTA(Sheet5!$D:$D)-1,)

公式写好后,先选择K线图图表类型,然后就可以填入进图表公式里.

再插入

添加两条移动平均线,一条设置为五天平均,一条设置为十天平均.

整个动态MACDE移动平均股份K线图效果如下.用power pivot的好处就是可以在里面放上好多支股票,切换不同的股票来观察K线图.只是这里我只抓取了一只股票.

EasyCharts团队出品

帅的人都关注了EasyCharts团队^..^~

QQ交流群:553270834

微信公众号:EasyCharts

dax和m的区别_动态股票K线图----从M语言到DAX表达式相关推荐

  1. java+web+股票图表_基于Echarts的股票K线图展示

    一.概述 这是一个简单的股票K线图展示,利用echarts第三方进行配置,用户可以进行放大缩小查看K线图,还可进行拖拽. 二.演示效果 三.目录结构 其中dist文件夹是echart插件,jquery ...

  2. java绘制均线图_利用JFreeChart绘制股票K线图完整解决方案

    因为工作的需要,接触了一些股票图形绘制类的工作,其中最主要的还是股票K线图的绘制了,如果利用编程语言最底层的图形绘制方法去绘制这类图形,如果对编程语言不是特别熟悉的话,一般是有很大的困难的,通过在网上 ...

  3. python 绘制k线图_利用python numpy+matplotlib绘制股票k线图的方法

    一.python numpy + matplotlib 画股票k线图 # -- coding: utf-8 -- import requests import numpy as np from mat ...

  4. Android版股票K线图实现方案

    前言 本文将介绍股票K线图的实现方案,项目名为KLineChart,github地址https://github.com/zengzg/KLineChart. 介绍 K线图一般分为日K.周K.月K,显 ...

  5. html5绘制股票图形,股票数据分析(五):绘制股票k线图(js+canvas + Python + json)

    本文介绍:利用 js+canvas 绘制股票k线图 HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来 ...

  6. Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】

    用python实现全功能动态交互式K线图 手把手用`python`一步步实现动态交互式K线图 ` mplfinance`的基本K线图 目标 实现自定义风格和颜色 图表尺寸调整.相关信息的显示 添加完整 ...

  7. 如何使用Tushare和Echarts来画股票K线图

    如何使用Tushare和Echarts来画股票K线图 技术支持 Tushare大数据社区官网 ​ 首先介绍一下这次要使用的两个工具,Tushare是一个基于Python的金融数据接口,拥有丰富的数据内 ...

  8. plotly基于dataframe数据绘制股票K线图并过滤非交易时间

    plotly基于dataframe数据绘制股票K线图并过滤非交易时间 #ohlc过滤非交易时间: import plotly as py # 导入plotly库并命名为py import plotly ...

  9. 利用JFreeChart绘制股票K线图

    因为工作的需要,接触了一些股票图形绘制类的工作,其中最主要的还是股票K线图的绘制了,如果利用编程语言最底层的图形绘制方法去绘制这类图形,如果对编程语言不是特别熟悉的话,一般是有很大的困难的,通过在网上 ...

最新文章

  1. 微信企业号 JS-SDK:上传图片
  2. 初识jvm-1.Java类的加载机制
  3. CentOS 6.4 安装RBTools 报错 ImportError: Entry point ('console_scripts', 'easy_install') not found...
  4. MySQL中索引的分类和基本操作
  5. SAP Spartacus在某些屏幕尺寸下无法正常工作的原因分析
  6. 深度解析LSTM神经网络的设计原理
  7. spss文件 服务器登录,spss连接远程服务器
  8. Python科学计算——前期准备
  9. seajs的模块化开发--实践笔记
  10. 百面机器学习!算法工程师面试宝典!| 码书
  11. Spring Boot 项目启动的七种方式
  12. Spring Boot整合Admin
  13. 如何把团队带成一盘散沙?
  14. windows10删除$WINDOWS.~BT文件
  15. java的graphics2d_Java Graphics2D类的绘图方法
  16. 2022年为什么降薪也要跳槽?机会比涨薪很重要?
  17. 计算机表格用计算公式百分百,excel表格怎么算数据的阳性比率-计算机一级用excel表格计算增长比例该怎么算?...
  18. rfc959 FTP传输协议
  19. 9000多的电脑matlab卡,2017 MSI/微星热销6000-9000笔记本型号,使用点评
  20. 【algods】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、散列表...

热门文章

  1. windows显示.repo隐藏文件夹
  2. 微信 米聊 导游 服务器 李白,【文化】千古“第一导游”,我只服李白!
  3. 记录AK7739-TDM调试
  4. ZZULIOJ:1141: 进制转换
  5. Java绘制正态分布统计图
  6. 河海大学 专业课838 数据结构最强攻略
  7. nmea-0183数据处理matlab,Matlab分析NMEA0183报文源代码(含高斯6度带投影计算)
  8. 百格活动独家推出执行者晋升管理层的必备指南——《活动执行手册-思维篇》
  9. 可视化 | 用Python分析近5000个旅游景点,告诉你假期应该去哪玩
  10. sql语句:简写拼音查询