private void Init()
        {
            try
            {
                // суммарная статистика
                var blank = new SummaryStatItem(string.Empty, Color.Empty);
                gridSummaryStat.Columns.Add(new FastColumn(blank.Property(p => p.ValueString),
                                                           Localizer.GetString("TitleValue")));
                gridSummaryStat.colorFormatter = (object value, out Color? color, out Color? fontColor) =>
                {
                    color = null;
                    var rowData = (SummaryStatItem) value;
                    fontColor = rowData.RowColor;
                };
                gridSummaryStat.UserDrawCellText += GridSummaryStatUserDrawCellText;

                // обычная статистика
                singleParametersFastGrid.Columns.Add(new FastColumn("a", Localizer.GetString("TitleStatisticsIndex")));
                singleParametersFastGrid.Columns.Add(new FastColumn("b", " ")
                    {
                        colorColumnFormatter = (object value, out Color? color, out Color? fontColor) =>
                            {
                                color = null;
                                fontColor = null;
                                var strVal = value as string;
                                if (string.IsNullOrEmpty(strVal)) return;
                                fontColor = strVal[0] == '-'
                                                ? Color.Red
                                                : char.IsDigit(strVal[0]) ? Color.Blue : (Color?) null;
                            }
                    });

                SetupChart(chartProfit);
                SetupChart(chartProfit1000);

                SetupDealsGrid(openedDealsFastGrid, false);
                SetupDealsGrid(closedDealsFastGrid, true);

                var metadataSettings = TradeSharpDictionary.Instance.proxy.GetMetadataByCategory("UserInfoEx");
                if (metadataSettings != null)
                    photoPanel.Size = new Size((int) metadataSettings["BigAvatarMaxSize"],
                                               (int) metadataSettings["BigAvatarMaxSize"]);

                siteAccessor = new ForexInvestSiteAccessor(forecastsWebBrowser);
            }
            catch (Exception ex)
            {
                Logger.Info("PerformerStatistic.Init", ex);
            }
        }
        private void SetupGrids()
        {
            var blank = new PerformerStatEx();
            // участники
            performersFastGrid.LoadPerformersGridSelectedColumns += () => new List<string>
                {
                    blank.Property(p => p.ChartIndex),
                    blank.Property(p => p.TradeSignalTitle),
                    blank.Property(p => p.Profit),
                    blank.Property(p => p.SumProfitPoints),
                    blank.Property(p => p.ProfitLastMonthsAbs),
                };
            performersFastGrid.SetupGrid();
            // переименовываем и задаем подходящее форматирование
            var colTradeSignalTitle = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.TradeSignalTitle));
            if (colTradeSignalTitle != null)
            {
                colTradeSignalTitle.Title = Localizer.GetString("TitleTrader");
                colTradeSignalTitle.ShowClippedContent = true;
            }
            var column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.Profit));
            if (column != null)
            {
                column.Title = "%";
                column.cellFormatting = null; // отменяем дополнение цифр единицами измерения, которые выполняется в PerformersFastGrid
                column.colorColumnFormatter = DigitColorColumnFormatter;
            }
            column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.SumProfitPoints));
            if (column != null)
            {
                column.Title = Localizer.GetString("TitlePointsUnits");
                column.cellFormatting = null;
                column.colorColumnFormatter = DigitColorColumnFormatter;
            }
            column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.ProfitLastMonthsAbs));
            if (column != null)
            {
                column.Title = "$";
                column.cellFormatting = null;
                column.FormatString = "f0";
                column.colorColumnFormatter = DigitColorColumnFormatter;
            }
            performersFastGrid.Grid.CheckSize(true);

            // статистика
            statisticsFastGrid.SelectEnabled = false;
            statisticsFastGrid.Columns.Add(new FastColumn("a", Localizer.GetString("TitleStatisticsIndex"))
                {
                    ShowClippedContent = true,
                });
            statisticsFastGrid.Columns.Add(new FastColumn("b", " ")
                {
                    ColumnWidth = 50,
                    colorColumnFormatter = DigitColorColumnFormatter
                });

            // таблицы с позициями
            PerformerStatistic.SetupDealsGrid(openedOrdersFastGrid, false);
            PerformerStatistic.SetupDealsGrid(closedOrdersFastGrid, true);

            // суммарная статистика
            var blankSummaryStatItem = new SummaryStatItem(string.Empty, Color.Empty);
            gridSummaryStat.Columns.Add(new FastColumn(blankSummaryStatItem.Property(p => p.ValueString), Localizer.GetString("TitleValue")));
            gridSummaryStat.colorFormatter = (object value, out Color? color, out Color? fontColor) =>
                {
                    color = null;
                    var rowData = (SummaryStatItem) value;
                    fontColor = rowData.RowColor;
                };
            gridSummaryStat.UserDrawCellText += PerformerStatistic.GridSummaryStatUserDrawCellText;
        }