量化交易中指標(biāo)RSI的Python代碼實現(xiàn)

最近在學(xué)習(xí)量化交易肩民,需要自己實現(xiàn)RSI指標(biāo),參考了TA-LIB的實現(xiàn)方式肮塞。
RSI英文全稱:Relative Strength Index
RSI中文名稱:相對強(qiáng)弱指數(shù)
是衡量價格波動的一個重要指標(biāo)舟扎。

計算公式

UP_AVG = UP_AMOUNT/PERIODS (周期內(nèi)上漲數(shù)量平均)
DOWN_AVG = DOWN_AMOUNT/PERIODS(周期內(nèi)下跌數(shù)量平均)
RS = UP_AVG/DOWN_AVG(相對平均)
RSI  = 100 - 100 / (1 + RS)  (相對強(qiáng)弱指數(shù))

快速計算公式

利用前一個UP_AVG, DOWN_AVG快速計算當(dāng)前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代碼實現(xiàn)

def RSI(t, periods=10):
    length = len(t)
    rsies = [np.nan]*length
    #數(shù)據(jù)長度不超過周期,無法計算婿失;
    if length <= periods:
        return rsies
    #用于快速計算;
    up_avg = 0
    down_avg = 0

    #首先計算第一個RSI啄寡,用前periods+1個數(shù)據(jù)豪硅,構(gòu)成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  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挺物,一起剝皮案震驚了整個濱河市懒浮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌识藤,老刑警劉巖砚著,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痴昧,居然都是意外死亡稽穆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門赶撰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秧骑,“玉大人,你說我怎么就攤上這事扣囊『跽郏” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵侵歇,是天一觀的道長骂澄。 經(jīng)常有香客問我,道長惕虑,這世上最難降的妖魔是什么坟冲? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮溃蔫,結(jié)果婚禮上健提,老公的妹妹穿的比我還像新娘。我一直安慰自己伟叛,他們只是感情好私痹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般紊遵。 火紅的嫁衣襯著肌膚如雪账千。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天暗膜,我揣著相機(jī)與錄音匀奏,去河邊找鬼。 笑死学搜,一個胖子當(dāng)著我的面吹牛娃善,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瑞佩,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼聚磺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钉凌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捂人,失蹤者是張志新(化名)和其女友劉穎御雕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滥搭,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酸纲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瑟匆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闽坡。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖愁溜,靈堂內(nèi)的尸體忽然破棺而出疾嗅,到底是詐尸還是另有隱情,我是刑警寧澤冕象,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布代承,位于F島的核電站,受9級特大地震影響渐扮,放射性物質(zhì)發(fā)生泄漏论悴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一墓律、第九天 我趴在偏房一處隱蔽的房頂上張望膀估。 院中可真熱鬧,春花似錦耻讽、人聲如沸察纯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捐寥。三九已至笤昨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間握恳,已是汗流浹背瞒窒。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乡洼,地道東北人崇裁。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像束昵,于是被迫代替她去往敵國和親拔稳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容