126_Power BI中使用DAX计算股票RSI及股票均线相关

2020年3月5日14:48:44 评论 400 2278字阅读7分35秒

焦棚子的文章目录

请在文末下载附件

 

一、背景

前些日子,有朋友在交流股票RSI用DAX处理的问题,由于RSI股票软件的算法几乎都是需要用到股票从上市第一天开始的所有数据。当期RSI的大小影响因素【close】随着时间往前推,时间越早影响因素会越小(后面会通过公式推导验证该结论),所以往往在计算RSI的时候也不会取从上市到当期的所有数据,对结果不造成绝对的影响。

先看下结果啥样子(其实就是股票软件的样子)

126_Power BI中使用DAX计算股票RSI及股票均线相关

需要说明的是,笔者并非股票行业从业者,本案例目的是分享DAX如何处理RSI,我们不研究RSI如何用。

二、数据源&计算逻辑

1、数据源

126_Power BI中使用DAX计算股票RSI及股票均线相关

2、RSI计算公式

参考(维基百科,如果打不开你懂得):

126_Power BI中使用DAX计算股票RSI及股票均线相关

变形得到(笔者自定义变形,能看懂就好,其中up表示上涨,down表示下跌,ABS表示求绝对值,all表示上涨和下跌)

126_Power BI中使用DAX计算股票RSI及股票均线相关

3、计算逻辑

LC表示昨日【close】

数据源中【diff】=close-LC

如下对6天的EMA做分解计算,

1、Y表示当期EMA结果,

2、在EMA(up)中X=MAX(close-LC,0),

3、在EMA(down)中X=ABS(MIN(close-LC,0)),

4、在EMA(all)中X=ABS(close-LC,0)。

 

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

126_Power BI中使用DAX计算股票RSI及股票均线相关
temp

其中X的角标和temp表中的【INDEX】相对应的。
要想计算EMA结果,就需要递归,但在DAX中目前笔者还没有找到办法来处理递归的问题。

于是我们加以思考

将上述表达式分别带入得到:126_Power BI中使用DAX计算股票RSI及股票均线相关

提一个1/6出来后得到

126_Power BI中使用DAX计算股票RSI及股票均线相关

发现规律了吗?

126_Power BI中使用DAX计算股票RSI及股票均线相关

最终推导得到k天指数平均6天的EMA

126_Power BI中使用DAX计算股票RSI及股票均线相关

说明

这里补充文章最开始说的结论,不难看出,随着k的增加,时间越早126_Power BI中使用DAX计算股票RSI及股票均线相关值越小,我们带入k=30, 126_Power BI中使用DAX计算股票RSI及股票均线相关 =0.00421,和 5/6比起已经可以忽略不计了。所以“当期RSI的大小影响因素【close】随着时间往前推,时间越早影响因素会越小(后面会通过公式推导验证该结论),所以往往在计算RSI的时候也不会取从上市到当期的所有数据,对结果不造成绝对的影响。”

同时我们可以推导得出 天中 天指数平均EMA值

126_Power BI中使用DAX计算股票RSI及股票均线相关

EMA的值可以通过X的迭代得到了,迭代在DAX中就好处理了。

三、上DAX

1、上面的temp表,中间过程便于观察,实际应用中不需要。

temp = 
VAR T1 = ADDCOLUMNS (
        ALL ( data ),
        "INDEX",
        VAR DATEAC1 = data[date]
        VAR TP =FILTER ( ALL ( data ), data[date] < DATEAC1 )
        RETURN
            COUNTROWS ( TP )
    )
VAR T2 =ADDCOLUMNS (
        T1,
        "diff",
        VAR I = [INDEX] - 1
        VAR PRE =CALCULATE ( SUM ( data[close] ), FILTER ( T1, [INDEX] = I ) )
        RETURN IF ( PRE = BLANK (), BLANK (), data[close] - PRE )
    )
return
T2

2、RSI6,其中N=12,N=24即可求得RSI12、RS24。

RSI6 = 
VAR N = 6
VAR BN = ( N - 1 ) / N
VAR DATE_SELECT = MAX ( 'data'[date] )
VAR T1 = ADDCOLUMNS (
        ALL ( data ),
        "INDEX",
        VAR DATEAC1 = data[date]
        VAR TP =FILTER ( ALL ( data ), data[date] < DATEAC1 )
        RETURN
            COUNTROWS ( TP )
    )
VAR T2 =ADDCOLUMNS (
        T1,
        "diff",
        VAR I = [INDEX] - 1
        VAR PRE =CALCULATE ( SUM ( data[close] ), FILTER ( T1, [INDEX] = I ) )
        RETURN IF ( PRE = BLANK (), BLANK (), data[close] - PRE )
    )
VAR T3 =FILTER ( T2, [date] <= DATE_SELECT )
VAR K =COUNTROWS ( T3 ) - 1
VAR T4 =ADDCOLUMNS (
        T3,
        "UP",
        VAR X = [diff]
        VAR K1 = [INDEX]
        RETURN
            IF ( X > 0 || X = BLANK (), POWER ( BN, K - K1 ) * X, BLANK () ),
        "ALL",
        VAR X = [diff]
        VAR K1 = [INDEX]
        RETURN
            IF ( X = BLANK (), BLANK (), POWER ( BN, K - K1 ) * ABS ( X ) )
    )
RETURN
    ROUND(DIVIDE ( SUMX ( T4, [UP] ), SUMX ( T4, [ALL] ) ) * 100,2)

3、5均线,其中n=10,20,60即可得到10均线、20均线、60均线。

5均线 = 
var n=5
var date1=max('data'[date])
var date2=filter(all('data'[date]),'data'[date]<=date1)
var T=topn(n,date2,'data'[date],DESC)
VAR R=CALCULATE(SUM(data[close]),T)
RETURN
DIVIDE( R,COUNTROWS(T))

四、总结

1、DAX中基本没有难度,就是迭代;

2、主要是数据公式推导后即可迎刃而解;

3、为了更好理解,做了个excel逻辑分解

126_Power BI中使用DAX计算股票RSI及股票均线相关

4、最后验证下我们的计算结果

DAX计算出的RSI结果

126_Power BI中使用DAX计算股票RSI及股票均线相关

股票软件结果(RSI24有一点点差异,主要是软件起始天数或者是小数保留问题,不影响使用。)

126_Power BI中使用DAX计算股票RSI及股票均线相关

5、数据源是通过python的tushare包得到,pbix文件可以当个查询工具使用。

126_Power BI中使用DAX计算股票RSI及股票均线相关

 

by 焦棚子

焦棚子的文章目录

请点击【立即购买】或者【升级VIP】获得案例附件。

隐藏内容需要支付:¥10
立即购买 升级VIP
126_Power BI中使用DAX计算股票RSI及股票均线相关
焦棚子
  • 本文由 发表于 2020年3月5日14:48:44
  • 除非特殊声明,本站文章均为焦棚子原创,转载请务必保留本文链接
142_Power BI之同比预测 Power BI

142_Power BI之同比预测

焦棚子的文章目录 请在文末下载附件 一、背景 最近刚好在做一个简单同比预测的模型,预测方法很简单,就是累计同比预测,把MTD展示出来。 二、数据源 1、日期表:Calendar 2、事实表1:Data...
140_Power BI&Power Pivot之降维展示同类型比较 Power BI

140_Power BI&Power Pivot之降维展示同类型比较

焦棚子的文章目录 请在文末下载附件 一、背景 最近一段时间比较忙,几乎没有时间更新网站内容,今天刚好周末,更新一个简单的需求。 上效果图: 在我们日常做对比分析的时候,经常几个相同维度(比如省份、区域...