local function RSI(data, period, overbought, oversold)
local delta = {}
for i = 2, #data do
delta[i] = data[i] - data[i - 1]
end
local gain = {}
local loss = {}
for i = 1, period do
gain[i] = math.max(delta[i], 0)
loss[i] = math.abs(math.min(delta[i], 0))
end
for i = period + 1, #delta do
gain[i] = (gain[i - 1] * (period - 1) + gain[i]) / period
loss[i] = (loss[i - 1] * (period - 1) + loss[i]) / period
end
local rs = {}
for i = 1, #gain do
rs[i] = gain[i] / loss[i]
end
local rsi = {}
for i = 1, #rs do
rsi[i] = 100 - (100 / (1 + rs[i]))
end
return rsi
end