Esempio n. 1
0
        private void OpenedOrdersWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            efficiency.openedDeals = (List <MarketOrder>)e.Result;
            var openedDeals = efficiency.openedDeals; //.ToList();

            DalSpot.Instance.CalculateOpenedPositionsCurrentResult(openedDeals, QuoteStorage.Instance.ReceiveAllData(), efficiency.Statistics.DepoCurrency);
            openedOrdersFastGrid.DataBind(openedDeals);

            openedOrdersStandByControl.IsShown = false;
            openedOrdersStandByControl.Hide();
            openedOrdersFastGrid.Show();

            if (OpenedDealsLoaded != null)
            {
                OpenedDealsLoaded(this, new EventArgs());
            }

            UpdateSummaryStatistics();

            PerformerStatistic.BindSummaryPositions(efficiency, tickersAndVolumesBarControl);
            summaryPositionsStandByControl.IsShown = false;
            summaryPositionsStandByControl.Hide();
            summaryPositionsPanel.Show();

            if (LoadAllData && !closedOrdersWorker.IsBusy && !closedOrdersLoaded)
            {
                closedOrdersWorker.RunWorkerAsync(portfolio.ManagedAccount);
            }
        }
        private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            var selPerformer = (PerformerStatEx)grid.rows[rowIndex].ValueObject;

            if (col.PropertyName == selPerformer.Property(t => t.IsSubscribed))
            {
                PerformerStatistic.SubscribeOrUnsubscribe(selPerformer, true);
                if (PageTargeted != null)
                {
                    PageTargeted(SubscriptionControl.ActivePage.Subscription);
                }
            }
            else if ((col.PropertyName == selPerformer.Property(t => t.TradeSignalTitle) ||
                      col.PropertyName == selPerformer.Property(t => t.ChartIndex) ||
                      col.PropertyName == selPerformer.Property(t => t.Login)))
            {
                var form = new SubscriberStatisticsForm(selPerformer);
                form.EnterRoomRequested += OnEnterRoomRequested;
                form.pageTargeted       += p => { if (PageTargeted != null)
                                                  {
                                                      PageTargeted(p);
                                                  }
                };
                form.Show(this);
            }
            else if (col.PropertyName == selPerformer.Property(t => t.UserScore))
            {
                //ChangeCriteria();
            }
            else if (col.PropertyName == selPerformer.Property(t => t.Rooms))
            {
                var performer = (PerformerStatEx)grid.rows[rowIndex].ValueObject;
                if (EnterRoomRequested != null && !string.IsNullOrEmpty(performer.Rooms))
                {
                    var rooms = performer.Rooms.Split(new[] { ", " }, StringSplitOptions.None);
                    if (rooms.Length == 1)
                    {
                        EnterRoomRequested(rooms[0]);
                    }
                    else
                    {
                        var form = new ListSelectDialog();
                        form.Initialize(rooms.Select(o => o as object), "Выберите комнату чата:");
                        if (form.ShowDialog(this) == DialogResult.OK)
                        {
                            EnterRoomRequested(form.SelectedItem.ToString());
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        private void UpdateSummaryStatistics()
        {
            percentFinanceLabel.Amount  = portfolio.Statistics.Profit;
            currencyFinanceLabel.Amount = portfolio.Statistics.ProfitLastMonthsAbs;
            currencyFinanceLabel.Suffix = " " + portfolio.Statistics.DepoCurrency;
            pointFinanceLabel.Amount    = portfolio.Statistics.SumProfitPoints;
            PerformerStatistic.BindSummaryStatistics(gridSummaryStat, portfolio.Statistics, efficiency, showFullInfo);
            gridSummaryStat.CheckSize(true);
            gridSummaryStat.CalcSetTableMinWidth();
            if (gridSummaryStat.MinimumTableWidth.HasValue)
            {
                gridSummaryStat.MinimumSize = new Size(gridSummaryStat.MinimumTableWidth.Value, 0);
            }
            var gridHeight = gridSummaryStat.rows.Count * gridSummaryStat.CellHeight + 1;

            summaryTableLayoutPanel.Height = gridHeight;
        }
Esempio n. 4
0
        // создание детилизированных графиков доходности
        private void CreateDetailedCharts()
        {
            if (detailedChartsLoaded)
            {
                return;
            }

            SetupChart(profitFastMultiChart);
            SetupChart(profit1000FastMultiChart);

            profitFastMultiChart.Graphs[0].Series[0].Clear();
            if (efficiency.listEquity != null)
            {
                foreach (var pt in efficiency.listEquity)
                {
                    profitFastMultiChart.Graphs[0].Series[0].Add(new TimeBalans(pt.time, pt.equity));
                }
                var hwm = PerformerStatistic.GetHighWaterMarks(efficiency.listEquity, efficiency.listTransaction);
                foreach (var pt in hwm)
                {
                    profitFastMultiChart.Graphs[0].Series[1].Add(new TimeBalans(pt.time, pt.equity));
                }
            }
            profitFastMultiChart.Initialize();

            // график доходности на 1000$
            profit1000FastMultiChart.Graphs[0].Series[0].Clear();
            if (efficiency.listProfit1000 != null)
            {
                foreach (var pt in efficiency.listProfit1000)
                {
                    profit1000FastMultiChart.Graphs[0].Series[0].Add(new TimeBalans(pt.time, pt.equity));
                }
                var hwm = PerformerStatistic.GetHighWaterMarks(efficiency.listProfit1000);
                foreach (var pt in hwm)
                {
                    profit1000FastMultiChart.Graphs[0].Series[1].Add(new TimeBalans(pt.time, pt.equity));
                }
            }
            profit1000FastMultiChart.Initialize();

            detailedChartsLoaded = true;
        }
Esempio n. 5
0
 private void RebindStatisticsGrid()
 {
     PerformerStatistic.RebindStatisticsFastGrid(statisticsFastGrid, portfolio.Statistics, efficiency);
 }
Esempio n. 6
0
        private void ClosedOrdersWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            efficiency.closedDeals = (List <MarketOrder>)e.Result;
            if (efficiency.closedDeals == null)
            {
                return;
            }
            var closedDeals = efficiency.closedDeals.ToList();
            // суммарная закрытая сделка
            MarketOrder sumClosed = null;

            if (closedDeals.Count > 0)
            {
                var sumVolume = closedDeals.Sum(d => d.Volume * d.Side);
                sumClosed = new MarketOrder
                {
                    Symbol     = "Сумм",
                    Volume     = Math.Abs(sumVolume),
                    Side       = Math.Sign(sumVolume),
                    ResultDepo = closedDeals.Sum(d => d.ResultDepo),
                    TimeEnter  = closedDeals.Min(d => d.TimeEnter)
                };
                closedDeals.Add(sumClosed);
            }
            closedOrdersFastGrid.DataBind(closedDeals);
            if (sumClosed != null)
            {
                var lastRow = closedOrdersFastGrid.rows.First(r => r.ValueObject == sumClosed);
                lastRow.anchor = FastRow.AnchorPosition.AnchorBottom;
            }

            closedOrdersLoaded = true;
            closedOrdersStandByControl.IsShown = false;
            closedOrdersStandByControl.Hide();
            closedOrdersFastGrid.Show();

            // обновляем статистику
            RebindStatisticsGrid();

            // статистика по валютам
            try
            {
                // ReSharper disable AssignNullToNotNullAttribute
                var blank = new DealCountBySymbol();
                countByTickerChart.Series[0].Points.DataBind(PerformerStatistic.GetDealCountBySymbol(efficiency),
                                                             blank.Property(p => p.Title),
                                                             blank.Property(p => p.DealCount), null);
                // ReSharper restore AssignNullToNotNullAttribute
            }
            catch
            {
            }
            countByTickerStandByControl.IsShown = false;
            countByTickerStandByControl.Hide();
            countByTickerChart.Show();

            // строим диаграмму
            CreateDiagram();

            profitByMonthStandByControl.IsShown = false;
            profitByMonthStandByControl.Hide();
            profitByMonthChart.Show();

            if (ClosedDealsLoaded != null)
            {
                ClosedDealsLoaded(this, new EventArgs());
            }
        }
Esempio n. 7
0
        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;
        }