Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }