def rsi(obj, start=-14, end=-1, price_feature='Close'):
if isinstance(obj, str):
obj = prices(obj, start, end, price_feature)
start = 0
end = -1
if end < 0:
end += len(obj)
if start < 0:
start += len(obj)
_data = np.diff(obj[start: (end + 1)])
len_gain = len(_data[_data > 0.0])
len_loss = len(_data[_data < 0.0])
if len_gain == 0 or len_loss == 0:
return 50
average_gain = np.mean(_data[_data > 0.0])
average_loss = np.abs(np.mean(_data[_data < 0.0]))
first_rs = average_gain / average_loss
rsi = 100 - 100 / (1 + first_rs)
return rsi
评论列表
文章目录