2022年 11月 13日

python:talib 计算 RSI

RSI指标解释:baike.baidu.com/item/rsi顺势指标

talib_rsi.py

  1. # -*- coding: utf-8 -*-
  2. import os, sys
  3. import tushare as ts
  4. import pandas as pd
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7. import talib
  8. if len(sys.argv) ==2:
  9. code = sys.argv[1]
  10. else:
  11. print('usage: python talib_rsi.py stockcode ')
  12. sys.exit(1)
  13. if len(code) !=6:
  14. print('stock code length: 6')
  15. sys.exit(2)
  16. df = ts.get_k_data(code)
  17. if df.empty ==True:
  18. print(" df is empty ")
  19. sys.exit(2)
  20. df = df[ df['date'] > '2020-01-01']
  21. if len(df) <10:
  22. print(" len(df) <10 ")
  23. sys.exit(2)
  24. df['ma10'] = df['close'].rolling(window=10).mean()
  25. df.index = pd.to_datetime(df.date)
  26. dw = pd.DataFrame()
  27. # baike.baidu.com/item/rsi顺势指标
  28. dw['rsi6'] = talib.RSI(df.close, timeperiod=6)
  29. dw['rsi14'] = talib.RSI(df.close, timeperiod=14)
  30. print("rsi6={0:.1f} , rsi14={1:.1f}".format(dw['rsi6'][-1], dw['rsi14'][-1]))
  31. # 画股票收盘价图
  32. fig,axes = plt.subplots(2,1)
  33. df[['close', 'ma10']].plot(ax=axes[0], grid=True, title=code)
  34. # 画 RSI 曲线图
  35. dw[['rsi6', 'rsi14']].plot(ax=axes[1], grid=True)
  36. plt.legend(loc='best', shadow=True)
  37. plt.show()

运行 python talib_rsi.py 000001

000001_RSI.png