跳到主要内容

移动平均值

Moving Average (MA) 移动平均,或者叫做移动平均线,是技术分析中一种分析时间序列数据的工具。最常见的就是利用股价,回报或交易量等变数计算出移动平均。可以利用移动平均反映出长期趋势或周期,在数学上这个也叫做卷积 Rolling Average。

还有一个概念叫做 SMA (Simple Moving Average 简单移动平均),是指某个变数之前 N 个数值的累加平均。比如,收市价的10日简单移动平均是指之前10日收市价的平均数,那么这里就可以使用 SMA 10 来表示。

以 先看看每月的销售额的情况 -

新建图形条件如下:

  • 数据源: Demo - FoodMart Model
  • 模型: Sales
  • 图形类型: Line
  • 度量: Sales
  • 维度: Time - Month Level

然后会看到每个月销售总额的趋势图, 接下来我们创建销售额的移动平均值.

创建计算度量"移动平均"

基于度量 Sales 创建一个最近 3 个月的移动平均值. 点击添加度量, 打开空度量的选择菜单, 点击创建计算按钮, 会打开创建计算的弹出框界面.

  • 选择类型为计算公式
  • 输入名称Sales_MA
  • 输入公式 AVG(LastPeriods(3, [Time].CurrentMember), [Measures].[Sales])
  • 点击应用, 返回到度量选择列表
  • 选择刚创建的计算度量 Sales_MA

会看到图形中多出一条线 Sales_MA 这就是销售额的 3 个月移动平均值走势线.

创建移动窗口大小参数

在运行时用户想要手动调节移动平均的窗口大小, 我们可以通过给计算公式加入参数来做到.

  • 点击编辑公式, 打开计算编辑器窗口中的右边栏, 切到参数页签
  • 点击添加参数按钮, 弹出创建参数窗口
  • 选择 Input 类型, 输入名称Sales_MA_Periods 和默认值 3
  • 点击应用, 返回到参数列表界面
  • 在编辑器中 3 的位置输入服务 @ 会带出提示可选的参数, 选择参数 Sales_MA_Periods, 点击 Tab 键或者鼠标点击输入到编辑器
  • 也可以手动输入格式为 [@ParameterName][@Sales_MA_Periods] 到编辑器
  • 点击应用, 返回故事仪表板页面
  • 点击刷新图形重新执行查询便会看到相同的线

想要更改参数值我们还要为参数创建输入组件, 点击菜单栏中创建输入控制器按钮, 在布局中添加一个输入控制器组件.

选中输入控制器组件, 在右侧属性编辑窗口输入以下信息:

  • 标题: 移动平均窗口大小
  • 数据源: Demo - FoodMart Model
  • 模型: Sales
  • 维度/度量: 参数Sales_MA_Periods

输入控制器组件中会出现一个输入框和默认值, 在这个输入框里便可以实时改变移动平均窗口大小来查看移动平均值的变化.

前后窗口移动平均

如果想要当前时间以后的多少个区间的移动平均值, 可以将 LastPeriods 函数的参数设置为负值.

如果想要计算往前和往后的移动平均值, 可以使用求并集的方式达到, 公式如下:

AVG({LastPeriods([@Sales_MA_Periods], [Time].CurrentMember), LastPeriods(-[@Sales_MA_Periods], [Time].CurrentMember)}, [Measures].[Sales])

显示开始期间属性

为了方便查看我们可以将移动窗口的开始期间显示在图形的提示框里. 步骤如下

  • 添加一个度量, 打开列表, 点击创建计算成员
  • 选择类型计算公式, 输入名称 Sales_MA_Start
  • 输入公式 LastPeriods([@Sales_MA_Periods], [Time].CurrentMember).Item(0).Caption
  • 点击应用, 选择创建的计算度量
  • 在度量属性菜单中将其角色设置为 Tooltip

这样 Sales_MA_Start 的值代表的移动窗口开始期间将显示在提示框中.

故事仪表板参考 Demo - Calculation / Moving Average 页内的看板.