Initial commit of RSI indicator
This commit is contained in:
parent
ddab52ca4f
commit
23c96cdc9a
18
indicators/rsi.py
Normal file
18
indicators/rsi.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from numpy import where
|
||||||
|
from pandas import DataFrame, Series
|
||||||
|
|
||||||
|
def rsi(data: DataFrame, period: int = 2) -> Series:
|
||||||
|
"""
|
||||||
|
Calculate the RSI and return it as a Series.
|
||||||
|
"""
|
||||||
|
delta = data['Close'].diff().fillna(0)
|
||||||
|
gain = where(delta > 0, delta, 0)
|
||||||
|
loss = where(delta < 0, -delta, 0)
|
||||||
|
|
||||||
|
alpha = 1 / period
|
||||||
|
avg_gain = Series(gain).ewm(alpha = alpha, adjust = False).mean()
|
||||||
|
avg_loss = Series(loss).ewm(alpha = alpha, adjust = False).mean()
|
||||||
|
|
||||||
|
rs = avg_gain / avg_loss
|
||||||
|
rs = rs.fillna(0)
|
||||||
|
return 100 - (100 / (1 + rs))
|
Loading…
Reference in New Issue
Block a user