У вас не стоит Flash Player
Настройки
#48327 - Tue Oct 30 2012 11:19 AM Реализация индикатора RSI
DetMstr Offline
stranger

Registered: Tue Oct 30 2012
Записи: 4
Добрый день, кто-нибудь может рассказать, как в ТСлабе реализован индикатор RSI? Мне нужно знать сами формулы, так как я программировал его по определению из википедии в си#, а значения не совпадают.

Наверх
#48331 - Tue Oct 30 2012 12:29 PM Re: Реализация индикатора RSI [Re: DetMstr]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143

Наверх
#48344 - Tue Oct 30 2012 02:42 PM Re: Реализация индикатора RSI [Re: ViL]
DetMstr Offline
stranger

Registered: Tue Oct 30 2012
Записи: 4
Странно, но там не нашел, или просто не понял, как реализовано Series.RSI?

Наверх
#48356 - Tue Oct 30 2012 05:26 PM Re: Реализация индикатора RSI [Re: DetMstr]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143
Helpers.zip - Series -
Click to reveal..
Code:
 public static IList<double> RSI(IList<double> candles, int period)
        {
            var count = candles.Count;
            var res = new double[count];
            if (count > 0)
            {
                var u = new double[count];
                var d = new double[count];
                u[0] = 0;
                d[0] = 0;
                for (int i = 1; i < count; i++)
                {
                    double tu = 0, td = 0;
                    if (candles[i - 1] < candles[i])
                    {
                        tu = candles[i] - candles[i - 1];
                    }
                    else if (candles[i - 1] > candles[i])
                    {
                        td = candles[i - 1] - candles[i];
                    }
                    u[i] = tu;
                    d[i] = td;
                }
                var eu = EMA(u, period);
                var ed = EMA(d, period);
                for (int i = 0; i < count; i++)
                {
                    if(ed[i] == 0.0)
                    {
                        res[i] = 100;
                    }
                    else if (eu[i] / ed[i] == 1.0)
                    {
                        res[i] = 0;
                    }
                    else
                    {
                        res[i] = 100 - 100 / (1 + eu[i] / ed[i]);
                    }
                }
            }
            return res;
        }


Отредактировано ViL (Tue Oct 30 2012 05:27 PM)

Наверх
#48404 - Wed Oct 31 2012 04:18 PM Re: Реализация индикатора RSI [Re: ViL]
DetMstr Offline
stranger

Registered: Tue Oct 30 2012
Записи: 4
Спасибо, очень помогло!

Наверх


Moderator:  ViL, sar