public void TestCalculateGBCEAllSharedIndex()
 {
     TestMakingValidTrade();
     Trade tr = new Trade(DateTime.Now, 20, ETradeType.Sell, 34, PreferredStock.StockSymbol);
     Inst.MakeTrade(tr);
     tr = new Trade(DateTime.Now, 24, ETradeType.Sell, 63, PreferredStock.StockSymbol);
     Inst.MakeTrade(tr);
     tr = new Trade(DateTime.Now, 26, ETradeType.Sell, 51, PreferredStock.StockSymbol);
     Inst.MakeTrade(tr);
     Assert.IsTrue(Inst.CalculateGBCEAllSharedIndex() > 0);
 }
        private decimal CalculateVolumeWeightedStockPriceInternal(Trade[] stockTrades)
        {
            if (stockTrades.Length == 0)
                return 0;

            decimal u, d;
            u = d = 0;
            foreach (Trade item in stockTrades)
            {
                u += item.TradePrice * item.Quantity;
                d += item.Quantity;
            }

            return u/d;
        }
        public void TestMakingValidTrade()
        {
            Trade tr = new Trade(DateTime.Now, 20, ETradeType.Buy, 34, CommonStock.StockSymbol);
            Inst.MakeTrade(tr);

            tr = new Trade(DateTime.Now, 1, ETradeType.Buy, 41, CommonStock.StockSymbol);
            Inst.MakeTrade(tr);

            tr = new Trade(DateTime.Now, 1, ETradeType.Buy, 41, CommonStock.StockSymbol);
            Inst.MakeTrade(tr);
        }
        public void MakeTrade(Trade trade)
        {
            if (trade == null)
                throw new ArgumentNullException("Parameter trade cannot be null");
            if (trade.TimeStamp > DateTime.Now)
                throw new ArgumentException("Trade time stamp is invalid");
            if (!stocks.ContainsKey(trade.TradedStock))
                throw new ArgumentException("Trade stock is unknown");

            tradesMade.Add(trade);
        }