/// <summary> /// Завершение асинхронной загрузки данных статистики с сервера /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (Parent == null) return; var userInfoExSource = new UserInfoExCache(TradeSharpAccountStatistics.Instance.proxy); var userInfo = userInfoExSource.GetUserInfo(Performer.UserId); if (userInfo != null) { photoPanel.BackgroundImageLayout = ImageLayout.Center; photoPanel.BackgroundImage = userInfo.AvatarBig; ContactListUtils.UnpackContacts(userInfo.Contacts, contactsList); aboutRichTextBox.Text = userInfo.About; } if (Efficiency == null) { profit1000tabPage.Enabled = false; profitTabPage.Enabled = false; openedDealsTabPage.Enabled = false; currenciesTabPage.Enabled = false; if (DataBindCompleted != null) DataBindCompleted(); return; } // суммарная статистика BindSummaryStatistics(gridSummaryStat, Performer, Efficiency, true); gridSummaryStat.CheckSize(true); var height = gridSummaryStat.CellHeight * gridSummaryStat.rows.Count + 1; gridSummaryStat.Height = height; summaryStatPanel.MinimumSize = new Size(0, (IsSubscribed ? 30 : 60) + height); // обычная статистика RebindStatisticsFastGrid(singleParametersFastGrid, Performer, null); singleParametersFastGrid.CheckSize(true); // подписать стоимость сигналов lblFee.Text = Performer.FeeUSD <= 0 ? Localizer.GetString("TitleFree") : Performer.FeeUSD.ToStringUniformMoneyFormat() + " / " + PaidService.GetMonthFeeFromDailyFee(Performer.FeeUSD).ToStringUniformMoneyFormat() + " USD"; lblFee.ForeColor = Performer.FeeUSD <= 0 ? SystemColors.ControlText : Color.Blue; // график доходности chartProfit.Graphs[0].Series[0].Clear(); chartProfit.Graphs[0].Series[1].Clear(); if (Efficiency.listEquity != null) { foreach (var pt in Efficiency.listEquity) chartProfit.Graphs[0].Series[0].Add(new TimeBalans(pt.time, pt.equity)); var hwm = GetHighWaterMarks(Efficiency.listEquity, Efficiency.listTransaction); foreach (var pt in hwm) chartProfit.Graphs[0].Series[1].Add(new TimeBalans(pt.time, pt.equity)); } chartProfit.Initialize(); // график доходности на 1000 chartProfit1000.Graphs[0].Series[0].Clear(); chartProfit1000.Graphs[0].Series[1].Clear(); if (Efficiency.listProfit1000 != null) { foreach (var pt in Efficiency.listProfit1000) chartProfit1000.Graphs[0].Series[0].Add(new TimeBalans(pt.time, pt.equity)); var hwm = GetHighWaterMarks(Efficiency.listProfit1000); foreach (var pt in hwm) chartProfit1000.Graphs[0].Series[1].Add(new TimeBalans(pt.time, pt.equity)); } chartProfit1000.Initialize(); // таблицы сделок if (Efficiency != null && Efficiency.openedDeals != null) BindDeals(true); if (Parent == null) return; try { var blank = new DealCountBySymbol(); chartCountByTicker.Series[0].Points.DataBind(GetDealCountBySymbol(Efficiency), blank.Property(p => p.Title), blank.Property(p => p.DealCount), null); } catch (Exception ex) { Logger.Info("PerformerStatistics.WorkerRunWorkerCompleted: error binding GetDealCountBySymbol to chart", ex); return; } // "Совокупные позиции" if (Efficiency != null) BindSummaryPositions(Efficiency, tickersAndVolumesBarControl); // прочие визуальные параметры txtSignalTitle.Text = SignalTitle; subscribeButton.Text = SubscriptionButtonTitle; btnInvest.Visible = !IsSubscribed; if (DataBindCompleted != null) DataBindCompleted(); }
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()); }