Example #1
0
        public void BuildSeries(ChartControl chart)
        {
            SignalLine.Data.Clear();
            MainLine.Data.Clear();
            FastEMALine.Clear();
            SlowEMALine.Clear();
            var start = Math.Max(FastEMA, SlowEMA);

            for (var j = 0; j < start; j++)
            {
                FastEMALine.Add(GetSourcePrice(j));
                SlowEMALine.Add(GetSourcePrice(j));
                SignalLine.Data.Add(0);
                MainLine.Data.Add(0);
            }

            var dataCount = GetSourceDataCount();

            if (dataCount < start)
            {
                return;
            }
            var i   = start;
            var sum = 0.0d;

            while (i < dataCount)
            {
                // вычисляем главную линию
                // FastEma
                FastEMALine.Add(FastEMALine[i - 1] + (2.0d / (FastEMA + 1) * (GetSourcePrice(i) - FastEMALine[i - 1])));
                // SlowEma
                SlowEMALine.Add(SlowEMALine[i - 1] + (2.0d / (SlowEMA + 1) * (GetSourcePrice(i) - SlowEMALine[i - 1])));
                // сама главная линия
                MainLine.Data.Add(FastEMALine[i] - SlowEMALine[i]);
                // Рассчитываем сигнальную линию
                sum = 0.0d;
                for (var j = 0; j < SignalSMA; j++)
                {
                    sum += (MainLine.Data[i - j]);
                }
                SignalLine.Data.Add(sum / SignalSMA);
                i++;
            }
        }