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++;
            }
        }
Example #2
0
    private SeriesData GetSeriesInfo(DI_MapDataColumns mapDataColumns, DataTable SeriesDataTable, bool isMyData, string dbNid, string LanguageCode)
    {
        SeriesData RetVal = null;
        Hashtable Indicators = new Hashtable();
        DataTable dtDistinctIUSs = null;
        DataTable dtDistinctIndicatorNIds = null;
        Hashtable IUSs = null;
        SeriesInfo seriesInfo;
        List<string> distinctIUSNIds = new List<string>();
        List<string> columnsToSkipFilter = new List<string>();
        List<string> distinctColumns = new List<string>();
        string SeriesName = string.Empty;

        try
        {
            if (SeriesDataTable.Rows.Count > 0)
            {
                seriesInfo = new SeriesInfo();
                RetVal = new SeriesData();
                if (!isMyData)
                {
                    //get theme name IndicatorUnitSubgroup from Database

                    _DBCon = Global.GetDbConnection(int.Parse(dbNid));
                    dtDistinctIndicatorNIds = SeriesDataTable.DefaultView.ToTable(true, mapDataColumns.SeriesNid);
                    dtDistinctIUSs = SeriesDataTable.DefaultView.ToTable(true, mapDataColumns.SeriesNid);
                    this.SetTimeLogIntoFile("Start getting IUSs Nmaes from Procedure sp_getIUSNames_-> " + DateTime.Now.ToLongTimeString());
                    IUSs = getIUSNames(dtDistinctIUSs, LanguageCode);
                    this.SetTimeLogIntoFile("Ends getting IUSs Nmaes from Procedure sp_getIUSNames_-> " + DateTime.Now.ToLongTimeString());
                    foreach (object key in IUSs.Keys)
                    {
                        seriesInfo = new SeriesInfo();
                        seriesInfo.SeriesID = key.ToString();
                        seriesInfo.SeriesName = IUSs[key].ToString();
                        RetVal.Add(seriesInfo);
                    }
                }
                else
                {
                    columnsToSkipFilter.Add(mapDataColumns.AreaID);
                    columnsToSkipFilter.Add(mapDataColumns.AreaName);
                    columnsToSkipFilter.Add(mapDataColumns.DataValue);
                    columnsToSkipFilter.Add(mapDataColumns.NumericData);
                    columnsToSkipFilter.Add(mapDataColumns.TimePeriod);
                    columnsToSkipFilter.Add(mapDataColumns.isMRD);

                    //set row filter
                    foreach (DataColumn column in SeriesDataTable.Columns)
                    {
                        if (!columnsToSkipFilter.Contains(column.ColumnName))
                        {
                            distinctColumns.Add(column.ColumnName);
                        }
                    }

                    dtDistinctIndicatorNIds = SeriesDataTable.DefaultView.ToTable(true, distinctColumns.ToArray());
                    foreach (DataRow row in dtDistinctIndicatorNIds.Rows)
                    {
                        seriesInfo = new SeriesInfo();
                        SeriesName = string.Empty;
                        seriesInfo.SeriesID = Convert.ToString(row[mapDataColumns.SeriesNid]);
                        foreach (string columnName in distinctColumns)
                        {
                            if (columnName != mapDataColumns.SeriesNid)
                            {
                                SeriesName += Convert.ToString(row[columnName]) + ", ";
                            }
                        }

                        seriesInfo.SeriesName = SeriesName.TrimEnd(", ".ToCharArray());
                        RetVal.Add(seriesInfo);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);

            throw;
        }

        return RetVal;
    }