美文网首页量化交易量化交易技术
量化交易中指标RSI的Python代码实现

量化交易中指标RSI的Python代码实现

作者: 北冥Master | 来源:发表于2018-03-27 14:56 被阅读35次

最近在学习量化交易,需要自己实现RSI指标,参考了TA-LIB的实现方式。
RSI英文全称:Relative Strength Index
RSI中文名称:相对强弱指数
是衡量价格波动的一个重要指标。

计算公式

UP_AVG = UP_AMOUNT/PERIODS (周期内上涨数量平均)
DOWN_AVG = DOWN_AMOUNT/PERIODS(周期内下跌数量平均)
RS = UP_AVG/DOWN_AVG(相对平均)
RSI  = 100 - 100 / (1 + RS)  (相对强弱指数)

快速计算公式

利用前一个UP_AVG, DOWN_AVG快速计算当前UP_AVG, DOWN_AVG

UP_AVG = (UP_AVG_PREV * (PERIODS - 1) + UP) / PERIODS
DOWN_AVG = (UP_AVG_PREV * (PERIODS - 1) + DOWN) / PERIODS
RS = UP_AVG/DOWN_AVG
RSI  = 100 - 100 / (1 + RS)  

Python代码实现

def RSI(t, periods=10):
    length = len(t)
    rsies = [np.nan]*length
    #数据长度不超过周期,无法计算;
    if length <= 10:
        return rsies
    #用于快速计算;
    up_avg = 0
    down_avg = 0

    #首先计算第一个RSI,用前periods+1个数据,构成periods个价差序列;
    first_t = t[:periods+1]
    for i in range(1, len(first_t)):
        #价格上涨;
        if first_t[i] >= first_t[i-1]:
            up_avg += first_t[i] - first_t[i-1]
        #价格下跌;
        else:
            down_avg += first_t[i-1] - first_t[i]
    up_avg = up_avg / periods
    down_avg = down_avg / periods
    rs = up_avg / down_avg
    rsies[periods] = 100 - 100/(1+rs)

    #后面的将使用快速计算;
    for j in range(periods+1, length):
        up = 0
        down = 0
        if t[j] >= t[j-1]:
            up = t[j] - t[j-1]
            down = 0
        else:
            up = 0
            down = t[j-1] - t[j]
        #类似移动平均的计算公式;
        up_avg = (up_avg*(periods - 1) + up)/periods
        down_avg = (down_avg*(periods - 1) + down)/periods
        rs = up_avg/down_avg
        rsies[j] = 100 - 100/(1+rs)
    return rsies  

相关文章

  • 量化交易中指标RSI的Python代码实现

    最近在学习量化交易,需要自己实现RSI指标,参考了TA-LIB的实现方式。RSI英文全称:Relative Str...

  • RSI指标基础教学

    RSI RSI也叫相对强弱指标,一开始RSI被用于期货交易,后来被引入股市,再后来慢慢推广至其他金融产品中。 RS...

  • <股票知识买入>形态76:RSI指标超卖后出现金叉

    技术特征当短期RSI指标线和中期RSI指标线都小于20时,短期RSI指标线向上突破了中期RSI指标线。RSI指标是...

  • 2020-03-11

    使用Python实现量化交易机器人定时启动或停止小工具 作为全网功能强大、灵活易用的量化交易平台,发明者量化交易平...

  • 交易策略大宝库NO.001:RSIOMA外汇交易系统 --- 2

    交易策略大宝库NO.001 RSIOMA外汇交易系统 RSIOMA指标是RSI指标的高级版本。 适用货币对:EUR...

  • 2019-08-22 day1

    1、量化交易简介 1.2 量化交易(投资)分类 趋势性交易:适合主观交易高手、技术指标,很少编程—— [金融专业出...

  • 技术指标RSI

    RSI称之为相对强弱指标,最早应用于期货交易中,现在已成为股民应用最广泛地技术指标之一。 投资的一般原理认为,行情...

  • 量化金融分析师AQF实训项目

    Python与量化投资入门 python金融数据分析 清华学霸尹成Python量化交易 量化金融分析师AQF实训项...

  • 量化投资

    Python与量化投资入门 python金融数据分析 清华学霸尹成Python量化交易 量化金融分析师AQF实训项...

  • julia-计算k线的【相对强弱指标RSI】

    一、RSI指标介绍 相对强弱指标RSI 是由韦尔斯.怀尔德(Welles Wilder)提出的,是衡量证券自身内在...

网友评论

  • 00f5b696ebc8:我也贡献一下用pandas的写法

    def RSI(df, period=14):
    """
    Relative Strength Index
    """
    series = df['close']
    delta = series.diff().dropna()
    u = delta * 0
    d = u.copy()
    u[delta > 0] = delta[delta > 0]
    d[delta < 0] = -delta[delta < 0]
    u[u.index[period - 1]] = np.mean(u[:period]) # first value is sum of avg gains
    u = u.drop(u.index[:(period - 1)])
    d[d.index[period - 1]] = np.mean(d[:period]) # first value is sum of avg losses
    d = d.drop(d.index[:(period - 1)])
    avgGain = u.ewm(com=period - 1, adjust=False).mean()
    avgLoss = d.ewm(com=period - 1, adjust=False).mean()
    rs = avgGain / avgLoss
    result = 100 - 100 / (1 + rs)
    return result
  • IT人故事会:我会持续关注的!

本文标题:量化交易中指标RSI的Python代码实现

本文链接:https://www.haomeiwen.com/subject/bwzjcftx.html