股票公式中close是什么意思,股票公式软件

  

  博客:www.jiaopengzi.com 1。背景前几天有个朋友在讲如何用DAX处理股票RSI,因为RSI股票软件的算法几乎都需要用到股票从上市第一天开始的所有数据。影响当前RSI大小的因素【接近】随着时间的推移,时间越早,影响因素越小(这个结论后面会通过公式推导来验证)。所以在计算RSI时,不会取上市到当期的所有数据,不会对结果产生绝对影响。   

  

  先来看看结果(其实股票软件长什么样)   

  

     

  

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

  

  二、数据源计算逻辑   

  

  1、数据源   

  

     

  

  2、RSI计算公式   

  

  参考(维基百科,打不开就知道):   

  

     

  

  得到变形量(作者定义了变形量,可以理解,其中up表示向上,down表示向下,ABS表示绝对值,all表示上下)   

  

     

  

  3、计算逻辑   

  

  信用证的意思是昨天[收盘]   

  

  [diff]=数据源中的close-LC   

  

  分解计算接下来6天的EMA,   

  

  1.y代表当前的EMA结果,   

  

  2.在EMA中(上涨),X=MAX(收盘-LC,0),   

  

  3.x=EMA(向下)中的ABS(MIN(close-LC,0)),   

  

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

  

     

  

     

  

     

  

     

  

     

  

     

  

     

  

  临时x的角标对应于临时表中的[索引]。计算EMA结果需要递归,但目前作者还没有找到在DAX中处理递归的方法。   

  

  所以我们考虑了一下。   

  

  把上面的表达式分别拿来得到:   

  

     

  

  带一把1/6去拿吧。   

  

     

  

  找到规律了吗?   

  

     

  

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

  

  

说明

  

这里补充文章最开始说的结论,不难看出,随着k的增加,时间越早

  

  

值越小,我们带入k=30,

  

  

=0.00421,和 5/6比起已经可以忽略不计了。所以“当期RSI的大小影响因素【close】随着时间往前推,时间越早影响因素会越小(后面会通过公式推导验证该结论),所以往往在计算RSI的时候也不会取从上市到当期的所有数据,对结果不造成绝对的影响。”

  

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

  

  

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

  

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

  

temp = VAR T1 = ADDCOLUMNS ( ALL ( data ), "INDEX", VAR DATEAC1 = data VAR TP =FILTER ( ALL ( data ), data < DATEAC1 ) RETURN COUNTROWS ( TP ) )VAR T2 =ADDCOLUMNS ( T1, "diff", VAR I = - 1 VAR PRE =CALCULATE ( SUM ( data ), FILTER ( T1, = I ) ) RETURN IF ( PRE = BLANK (), BLANK (), data - PRE ) )returnT2 2、RSI6,其中N=12,N=24即可求得RSI12、RS24。

  

RSI6 = VAR N = 6VAR BN = ( N - 1 ) / NVAR DATE_SELECT = MAX ( 'data' )VAR T1 = ADDCOLUMNS ( ALL ( data ), "INDEX", VAR DATEAC1 = data VAR TP =FILTER ( ALL ( data ), data < DATEAC1 ) RETURN COUNTROWS ( TP ) )VAR T2 =ADDCOLUMNS ( T1, "diff", VAR I = - 1 VAR PRE =CALCULATE ( SUM ( data ), FILTER ( T1, = I ) ) RETURN IF ( PRE = BLANK (), BLANK (), data - PRE ) )VAR T3 =FILTER ( T2, <= DATE_SELECT )VAR K =COUNTROWS ( T3 ) - 1VAR T4 =ADDCOLUMNS ( T3, "UP", VAR X = VAR K1 = RETURN IF ( X > 0 || X = BLANK (), POWER ( BN, K - K1 ) * X, BLANK () ), "ALL", VAR X = VAR K1 = RETURN IF ( X = BLANK (), BLANK (), POWER ( BN, K - K1 ) * ABS ( X ) ) )RETURN ROUND(DIVIDE ( SUMX ( T4, ), SUMX ( T4, ) ) * 100,2) 3、5均线,其中n=10,20,60即可得到10均线、20均线、60均线。

  

5均线 = var n=5var date1=max('data')var date2=filter(all('data'),'data'<=date1)var T=topn(n,date2,'data',DESC)VAR R=CALCULATE(SUM(data),T)RETURNDIVIDE( R,COUNTROWS(T))四、总结 1、DAX中基本没有难度,就是迭代;

  

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

  

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

  

  

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

  

DAX计算出的RSI结果

  

  

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

  

  

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

  

  

by 焦棚子

相关文章