Я создаю функцию для вычисления кода индекса относительной силы (RSI), используя python. Функция работает правильно при генерации значений RSI, хотя с небольшим отличием от значения на mt4.
Я хочу, чтобы RSI был проиндексирован с соответствующей датой / временем для RSI. Код, который мне удалось создать для генерации значений, приведен ниже:
import pandas as pd
import numpy as np
df = pd.read_csv('Data/EURUSD.csv')
df.columns = ['date','open','high','low','close','AskVol']
df.date = pd.to_datetime(df.date,format='%d.%m.%Y %H:%M:%S.%f')
df = df.set_index(df.date)
df = df[['open','high','low','close','AskVol']]
df = df.drop_duplicates(keep=False)
def rsi(prices, periods=14):
deltas = np.diff(prices)
seed = deltas[:periods + 1]
U = seed[seed >= 0].sum() / periods
D = -seed[seed < 0].sum() / periods
rs = U / D
rsi = np.zeros_like(prices)
rsi[:periods] = 100. - 100. / (1.+rs)
for i in range(periods, len(prices)):
delta = deltas[i - 1]
if delta > 0:
U_val = delta
D_val = 0.
else:
U_val = 0.
D_val = -delta
U = (U * (periods - 1) + U_val) / periods
D = (D * (periods - 1) + D_val) / periods
rs = U / D
rsi[i] = 100. - 100. / (1.+rs)
return rsi
RSI = rsi(df.close,14)
print(RSI)
Я получаю;
[27.02149437 27.02149437 27.02149437 ... 36.83424327 33.12870442
26.38605386]
Но на самом деле я хочу;
date
2020-01-01 23:00:00 | 27.02149437
2020-01-02 00:00:00 | 27.02149437
2020-01-02 01:00:00 | 27.02149437
...
2020-05-06 06:00:00 | 36.83424327
2020-05-06 07:00:00 | 33.12870442
2020-05-06 08:00:00 | 26.38605386
Я очень благодарен за любую помощь, которую я могу получить для достижения этой цели.
Спасибо