Exemplo n.º 1
0
        /********REPORT**********/
        public MarketReport GetMarketReport(int rounds)
        {
            var mr = new MarketReport();

            mr.strListGood       = "Commod\n\n";
            mr.strListGoodPrices = "Price\n\n";
            mr.strListGoodTrades = "Trades\n\n";
            mr.strListGoodAsks   = "Supply\n\n";
            mr.strListGoodBids   = "Demand\n\n";

            mr.strListAgent       = "Classes\n\n";
            mr.strListAgentCount  = "Count\n\n";
            mr.strListAgentProfit = "Profit\n\n";
            mr.strListAgentMoney  = "Money\n\n";

            mr.arrStrListInventory = new List <string>();

            foreach (var commodity in goodTypes)
            {
                mr.strListGood += commodity + "\n";

                var price = History.Prices.Average(commodity, rounds);
                mr.strListGoodPrices += Quick.NumToStr(price, 2) + "\n";

                var asks = History.Asks.Average(commodity, rounds);
                mr.strListGoodAsks += (int)(asks) + "\n";

                var bids = History.Bids.Average(commodity, rounds);
                mr.strListGoodBids += (int)(bids) + "\n";

                var trades = History.Trades.Average(commodity, rounds);
                mr.strListGoodTrades += (int)(trades) + "\n";

                mr.arrStrListInventory.Add(commodity + "\n\n");
            }
            foreach (var key in mapAgents.Keys)
            {
                var inventory = new List <double>();
                foreach (var str in goodTypes)
                {
                    inventory.Add(0);
                }
                mr.strListAgent += key + "\n";
                var profit = History.Profit.Average(key, rounds);
                mr.strListAgentProfit += Quick.NumToStr(profit, 2) + "\n";

                var    list  = agents;         //var list = _agents.filter(function(a:BasicAgent):Bool { return a.className == key; } );  dfs stub wtf
                int    count = 0;
                double money = 0;

                foreach (var a in list)
                {
                    if (a.ClassName == key)
                    {
                        count++;
                        money += a.Money;
                        for (int lic = 0; lic < goodTypes.Count; lic++)
                        {
                            inventory[lic] += a.QueryInventory(goodTypes[lic]);
                        }
                    }
                }

                money /= count;
                for (int lic = 0; lic < goodTypes.Count; lic++)
                {
                    inventory[lic] /= count;
                    mr.arrStrListInventory[lic] += Quick.NumToStr(inventory[lic], 1) + "\n";
                }

                mr.strListAgentCount += Quick.NumToStr(count, 0) + "\n";
                mr.strListAgentMoney += Quick.NumToStr(money, 0) + "\n";
            }
            return(mr);
        }