Код: Выделить всё
public static double CalculateRsi(IEnumerable closePrices)
{
var prices = closePrices as double[] ?? closePrices.ToArray();
double sumGain = 0;
double sumLoss = 0;
for (int i = 1; i < prices.Length; i++)
{
var difference = prices[i] - prices[i - 1];
if (difference >= 0)
{
sumGain += difference;
}
else
{
sumLoss -= difference;
}
}
if (sumGain == 0) return 0;
if (Math.Abs(sumLoss) < Tolerance) return 100;
var relativeStrength = sumGain / sumLoss;
return 100.0 - (100.0 / (1 + relativeStrength));
}
Похоже, это чистый RSI без сглаживания. Как рассчитывается сглаженный RSI? Я попытался изменить его, чтобы он соответствовал определениям этих двух сайтов, однако результат оказался неправильным. Его едва сгладили.
(У меня недостаточно репутации, чтобы размещать ссылки)
Код: Выделить всё
tc2000 -> Indicators -> RSI_and_Wilder_s_RSI (Wilder's smoothing = Previous MA value + (1/n periods * (Close - Previous MA)))
priceactionlab -> wilders-cutlers-and-harris-relative-strength-index (RS = EMA(Gain(n), n)/EMA(Loss(n), n))
RSI Уайлдера против RSI
< img alt="введите здесь описание изображения" src="https://i.sstatic.net/4FAe0.png" />
Подробнее здесь: https://stackoverflow.com/questions/384 ... n-problems