private void BuildColumns() { DataColumn assetColumn = _table.Columns.Add("Asset", typeof(string)); assetColumn.Caption = "Asset"; DataColumn tradesColumn = _table.Columns.Add("Trades", typeof(int)); tradesColumn.Caption = "# Trades"; DataColumn averagePercentageGainColumn = _table.Columns.Add("AveragePercentGain", typeof(decimal)); averagePercentageGainColumn.Caption = "Avg Percent Gain"; DataColumn numberOfGainsOverTenPercent = _table.Columns.Add("NumberGainsOverTenPercent", typeof(int)); numberOfGainsOverTenPercent.Caption = "# Gains Over 10%"; DataColumn averageGainOverTenPercent = _table.Columns.Add("AveragePercentGainOverTenPercent", typeof(decimal)); averageGainOverTenPercent.Caption = "Avg Percent Gain Over 10%"; DataColumn tradeWinsCountColumn = _table.Columns.Add("TradeWinsCount", typeof(int)); tradeWinsCountColumn.Caption = "# Trade Wins"; DataColumn tradeLossesCountColumn = _table.Columns.Add("TradeLossesCount", typeof(int)); tradeLossesCountColumn.Caption = "# Trade Losses"; DataColumn averagePercentLossesColumn = _table.Columns.Add("AveragePercentLosses", typeof(decimal)); averagePercentLossesColumn.Caption = "Avg Percent Losses"; TimeSpan oneYear = new TimeSpan(365, 0, 0, 0); MonthIterator months = new MonthIterator(DateTime.Now.Subtract(oneYear)); int i = 0; foreach (DateTime dateTime in months) { string heading = _months[dateTime.Month - 1] + " " + dateTime.Year; DataColumn currentMonthColumn = new DataColumn("month" + i++) { Caption = heading, DataType = typeof(int) }; _table.Columns.Add(currentMonthColumn); } }
public AssetSummary GetSummary() { AssetSummary summary = new AssetSummary(); summary.Asset = Asset; summary.NumberOfTrades = _closedTrades.Count; IEnumerable <ClosedTrade> winningTrades = _closedTrades.Where(x => x.Percentage > 0).ToList(); IEnumerable <ClosedTrade> losingTrades = _closedTrades.Where(x => x.Percentage < 0).ToList(); IEnumerable <ClosedTrade> winsOverTenPercent = _closedTrades.Where(x => x.Percentage >= 10).ToList(); summary.AverageWinPercentage = !winningTrades.Any() ? 0 : winningTrades.Average(x => x.Percentage); summary.AverageLosingPercent = !losingTrades.Any() ? 0 : losingTrades.Average(x => x.Percentage); summary.NumberOfLosses = losingTrades.Count(); summary.NumberOfWins = winningTrades.Count(); summary.AveragePercentGainOverTenPercent = !winsOverTenPercent.Any() ? 0 : winsOverTenPercent.Average(x => x.Percentage); summary.NumberOfTradesOverTenPercent = winsOverTenPercent.Count(); summary.AverageWinPercentage = Math.Round(summary.AverageWinPercentage, 2); summary.AverageLosingPercent = Math.Round(summary.AverageLosingPercent, 2); summary.AveragePercentGainOverTenPercent = Math.Round(summary.AveragePercentGainOverTenPercent, 2); summary.NumberInMonth = new int[12]; TimeSpan oneYear = new TimeSpan(365, 0, 0, 0); MonthIterator months = new MonthIterator(DateTime.Now.Subtract(oneYear)); int i = 0; foreach (DateTime dateTime in months) { int count = _closedTrades.Count(x => x.DateOpened.Month == dateTime.Month && x.DateOpened.Year == dateTime.Year); summary.NumberInMonth[i] = count; i++; } return(summary); }