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()); } } } } }
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; }
// создание детилизированных графиков доходности 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; }
private void RebindStatisticsGrid() { PerformerStatistic.RebindStatisticsFastGrid(statisticsFastGrid, portfolio.Statistics, efficiency); }
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()); } }
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; }