如果用Power Pivot统计股票大单成交量?

2020-03-24 15:24:49 浏览数 (1)

我们截取某只股票真实交易的部分行情数据如下:

目标要求统计可自定义大单含义的可视化图表:

(一) 分析需求

  • 首先我们要定义大单,什么样才叫大单,至少要有一个标准,一种以绝对值为区分标准;一种以相对值为区分标准,这里我们以相对值作为区分标准。
  • 我们要对成交量进行一个排名,才能根据相对值来计算动态成交排名用于定义大单。
  • 我们要计算大单净买入量,要分别求出大单买入量及大单卖出量。

(二) 实现需求

我们知道很多情况下大单的定义是模糊的,可能今天的小单就是昨天的大单,所以我们这里以相对数来进行定义。因为我们需要分析分钟为维度,但是目前的日期都是以秒为单位,所以我们需要添加一列作为小时分钟来进行分析,所以添加1列为小时分钟列。

基础度量值:

代码语言:javascript复制
总成交量:=Sum([成交量])买入成交量:=SumX(Filter('表1','表1'[类型]="买入"),[成交量])卖出成交量:= SumX(Filter('表1','表1'[类型]="卖出"),[成交量])

1. 当前分钟成交中最大一笔成交量作为大单。

代码语言:javascript复制
大单买入量:=var _top=TOPN(1, '表1',[买入成交量])returnSUMX(_top,[买入成交量])
代码语言:javascript复制
大单买入量优化:=if(HASONEFILTER([时间时分]),[大单买入量],sumx(all('表1'[时间时分]),[大单买入量]))

同理计算出大单卖出量。

2. 单独显示分钟级别的最大单笔买入量

代码语言:javascript复制
分钟单笔最大买入量:=var _top=TOPN(1,ALL('表1'[时间时分]),[买入成交量])returnCALCULATE(sumx(_top,[买入成交量]),            FILTER('表1','表1'[类型]="买入")            )

这里涉及到了一些上下文的转换,需要仔细品味。

3. 单独显示分钟级别中的最大单笔买入量

代码语言:javascript复制
分钟内单笔最买入量:=var _top=TOPN(1,ALL('表1'[时间时分], '表1'[时间]),[买入成交量])returnCALCULATE(sumx(_top,[买入成交量]),            FILTER('表1','表1'[类型]="买入")            )

请注意,这里在忽略上下文的时候多了一个[时间]列的写法,得出的结果不一样。

(三) 展现需求

通过条件格式,我们就可以实现最后的大单净量的表现方式,每分钟的最大一笔量作为大单从而进行分析。

此外我们在看下3种大单定义给出结果的差异。

此文中的上下文转换非常的多,虽然书写不算太复杂,但是实际的上下文比较复杂。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

0 人点赞