dax和m的区别_动态股票K线图----从M语言到DAX表达式
偶然见别人画的股票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表达式相关推荐
- java+web+股票图表_基于Echarts的股票K线图展示
一.概述 这是一个简单的股票K线图展示,利用echarts第三方进行配置,用户可以进行放大缩小查看K线图,还可进行拖拽. 二.演示效果 三.目录结构 其中dist文件夹是echart插件,jquery ...
- java绘制均线图_利用JFreeChart绘制股票K线图完整解决方案
因为工作的需要,接触了一些股票图形绘制类的工作,其中最主要的还是股票K线图的绘制了,如果利用编程语言最底层的图形绘制方法去绘制这类图形,如果对编程语言不是特别熟悉的话,一般是有很大的困难的,通过在网上 ...
- python 绘制k线图_利用python numpy+matplotlib绘制股票k线图的方法
一.python numpy + matplotlib 画股票k线图 # -- coding: utf-8 -- import requests import numpy as np from mat ...
- Android版股票K线图实现方案
前言 本文将介绍股票K线图的实现方案,项目名为KLineChart,github地址https://github.com/zengzg/KLineChart. 介绍 K线图一般分为日K.周K.月K,显 ...
- html5绘制股票图形,股票数据分析(五):绘制股票k线图(js+canvas + Python + json)
本文介绍:利用 js+canvas 绘制股票k线图 HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来 ...
- Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】
用python实现全功能动态交互式K线图 手把手用`python`一步步实现动态交互式K线图 ` mplfinance`的基本K线图 目标 实现自定义风格和颜色 图表尺寸调整.相关信息的显示 添加完整 ...
- 如何使用Tushare和Echarts来画股票K线图
如何使用Tushare和Echarts来画股票K线图 技术支持 Tushare大数据社区官网 首先介绍一下这次要使用的两个工具,Tushare是一个基于Python的金融数据接口,拥有丰富的数据内 ...
- plotly基于dataframe数据绘制股票K线图并过滤非交易时间
plotly基于dataframe数据绘制股票K线图并过滤非交易时间 #ohlc过滤非交易时间: import plotly as py # 导入plotly库并命名为py import plotly ...
- 利用JFreeChart绘制股票K线图
因为工作的需要,接触了一些股票图形绘制类的工作,其中最主要的还是股票K线图的绘制了,如果利用编程语言最底层的图形绘制方法去绘制这类图形,如果对编程语言不是特别熟悉的话,一般是有很大的困难的,通过在网上 ...
最新文章
- 微信企业号 JS-SDK:上传图片
- 初识jvm-1.Java类的加载机制
- CentOS 6.4 安装RBTools 报错 ImportError: Entry point ('console_scripts', 'easy_install') not found...
- MySQL中索引的分类和基本操作
- SAP Spartacus在某些屏幕尺寸下无法正常工作的原因分析
- 深度解析LSTM神经网络的设计原理
- spss文件 服务器登录,spss连接远程服务器
- Python科学计算——前期准备
- seajs的模块化开发--实践笔记
- 百面机器学习!算法工程师面试宝典!| 码书
- Spring Boot 项目启动的七种方式
- Spring Boot整合Admin
- 如何把团队带成一盘散沙?
- windows10删除$WINDOWS.~BT文件
- java的graphics2d_Java Graphics2D类的绘图方法
- 2022年为什么降薪也要跳槽?机会比涨薪很重要?
- 计算机表格用计算公式百分百,excel表格怎么算数据的阳性比率-计算机一级用excel表格计算增长比例该怎么算?...
- rfc959 FTP传输协议
- 9000多的电脑matlab卡,2017 MSI/微星热销6000-9000笔记本型号,使用点评
- 【algods】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、散列表...
热门文章
- windows显示.repo隐藏文件夹
- 微信 米聊 导游 服务器 李白,【文化】千古“第一导游”,我只服李白!
- 记录AK7739-TDM调试
- ZZULIOJ:1141: 进制转换
- Java绘制正态分布统计图
- 河海大学 专业课838 数据结构最强攻略
- nmea-0183数据处理matlab,Matlab分析NMEA0183报文源代码(含高斯6度带投影计算)
- 百格活动独家推出执行者晋升管理层的必备指南——《活动执行手册-思维篇》
- 可视化 | 用Python分析近5000个旅游景点,告诉你假期应该去哪玩
- sql语句:简写拼音查询