楼主: 万木青
4968 4

[问答] Python第三方库TALIB对RSI的EMA算法,有偿求解答! [推广有奖]

  • 4关注
  • 1粉丝

已卖:165份资源

博士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
2895 个
通用积分
5.7446
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
2168 点
帖子
136
精华
0
在线时间
195 小时
注册时间
2014-10-20
最后登录
2021-4-12

楼主
万木青 发表于 2019-4-19 16:04:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
数据:
rsidata.head(10)
DateClosePrcChangeupPrcdownPrc

2014/1/3

3.79

-0.03

0

0.03

2014/1/6

3.75

-0.04

0

0.04

2014/1/7

3.77

0.02

0.02

0

2014/1/8

3.8

0.03

0.03

0

2014/1/9

3.79

-0.01

0

0.01

2014/1/10

3.8

0.01

0.01

0

2014/1/13

3.82

0.02

0.02

0

2014/1/14

3.79

-0.03

0

0.03

2014/1/15

3.76

-0.03

0

0.03

2014/1/16

3.76

0

0

0

6日RSI
ta.RSI(BOCMclp,6)

2014/1/2

NaN

2014/1/3

NaN

2014/1/6

NaN

2014/1/7

NaN

2014/1/8

NaN

2014/1/9

NaN

2014/1/10

42.85714

2014/1/13

51.21951

2014/1/14

40.54054

2014/1/15

32.42742

2014/1/16

32.42742

求解其中的具体算法,网上的EMA公式 Y=[2*X+(N-1)*Y’]/(N+1) ,自已套了多次,得不到相同的结果,请前辈指点一下,万谢!如有人能解出来,我发个小红包作为奖励。

数据是经过一阶差分平移整理后的
DateClosePrcChangeupPrcdownPrc

2014/1/3

3.79

-0.03

0

0.03

2014/1/6

3.75

-0.04

0

0.04

2014/1/7

3.77

0.02

0.02

0

2014/1/8

3.8

0.03

0.03

0

2014/1/9

3.79

-0.01

0

0.01

2014/1/10

3.8

0.01

0.01

0

2014/1/13

3.82

0.02

0.02

0

2014/1/14

3.79

-0.03

0

0.03

2014/1/15

3.76

-0.03

0

0.03

2014/1/16

3.76

0

0

0


通过这两列就可以计算出6日RSI

2014/1/10

42.85714

2014/1/13

61.53847

2014/1/14

66.66667

2014/1/15

46.15385

2014/1/16

30

第1项计算
avgUP=(0.02+0.03+0.01)/6=0.06/6=0.01
avgDown=(0.03+0.04+0.01)/6=0.08/6=0.04/3
RS=0.01/(0.04/3)=3/4
RSI=3/7 *100 =  42.857143
第2项传统算法
avgUP=(0.02+0.03+0.01+0.02)/6=0.08/6
avgDown=(0.04+0.01)/6=0.05/6
RS=0.08/0.05=8/5
RSI=8/13 *100 =  61.53847
第3项传统算法
avgUP=(0.02+0.03+0.01+0.02)/6=0.08/6
avgDown=(0.01+0.03)/6=0.04/6
RS=0.08/0.04=8/4
RSI=8/12 *100 = 66.66666666

据了解第三方TALIB包是采用EMA计算,所以跟传统的计算方不同,但首项是一样的,因为作为基数

2014/1/10

42.85714

2014/1/13

51.21951

2014/1/14

40.54054

2014/1/15

32.42742

2014/1/16

32.42742



我查过公式,也套了数据,但发现对应不上,有人能解出来?
这个是网上的解说链接,但也套不通https://www.*/community/topic/292/%E6%B1%82%E5%8A%A9talib%E7%9A%84rsi%E6%8C%87%E6%A0%87%E8%AE%A1%E7%AE%97
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:得不到

029.rar
下载链接: https://bbs.pinggu.org/a-2801484.html

6.63 KB

相关数据文件和参考脚本

沙发
万木青 发表于 2019-4-29 09:20:08
数据脚本文件已上传,再求解答!

藤椅
詹惠儿 发表于 2019-5-30 09:21:11
您好,如果您的求助没有解决,请到项目交易发布需求,会有更快更专业的用户帮助您 https://bbs.pinggu.org/z_prj.php

板凳
齐物论pi 学生认证  发表于 2019-6-2 07:41:22 来自手机
你好,我感觉你这写错了,首先第一步要对close做差分,然后通过这个差分与0的大小关系来进一步计算,我感觉你代码里没有这个判断(我是门外汉,我也不清楚,希望可以帮到你)

def rsi(price,period=6):
    import pandas as pd
    import numpy as np

    clprcChange=price-price.shift(1)
    clprcChange=clprcChange.dropna()

    indexprc=clprcChange.index
    upPrc=pd.Series(0,index=indexprc)
    upPrc[clprcChange>0]=clprcChange[clprcChange>0]

    downPrc=pd.Series(0,index=indexprc)
    downPrc[clprcChange<0]=-clprcChange[clprcChange<0]
    rsidata=pd.concat([price,clprcChange,upPrc,downPrc])
    rsidata.columns=[\'price\',\'PrcChange\',\'upPrc\',\'downPrc\']
    rsidata=rsidata.dropna()

    SMUP=[]
    SMDOWN=[]
    for i in range(period,len(upPrc)+1):
        SMUP.append(np.mean(upPrc.values[(i-period):i],dtype=np.float32))
        SMDOWN.append(np.mean(downPrc.values[(i-period):i],dtype=np.float32))
        rsi=[100*SMUP[i]/(SMUP[i]+SMDOWN[i]) for i in range(0,len(SMUP))]

    indexRsi=indexprc[(period-1):]
    rsi=pd.Series(rsi,index=indexRsi)
    return(rsi)

报纸
凸你起床 发表于 2020-3-13 19:05:54
RSI default 是EMA,指数平均值。所以算出来会跟simple moving average有点不一样。

股价 1, -1, 1, -1, 1, -1
波动nan -2, 2, -2, 2, -2

你的设定RSI需要3个波动,所以day4 开始才有数值

Day4 : 这天是EMA的base 情况,所以用simple moving average
up: 2/3
down: (2+2)/3 = 4/3
RS = 1/2
RSI = 1/3*100 = 33.333333

Day5: 这天开始,up 和 down 的平均值要用指数平均值 系数为2/(N+1)
up = 2/3up(day4) + 1/3 * 2 = 10/9
down = 2/3down(day4) + 1/3 * 0 = 8/9
RS = 5/4
RSI = 5/9*100 = 55.55555

这里看出哪怕是不在3天window里面的价格也会对后面的平均值产生影响。后果就是如果取值时间很短,前面的指数移动平均值会很不稳定,所以通常可以看到我们observe的window要大于calculation window, 这样会更加平滑准确些。

关于这项说明,在这里:

http://ta-lib.org/d_api/ta_setunstableperiod.html

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 02:46