public void PerfectMatchTest()
        {
            FIFOTradeMatcher matcher = new FIFOTradeMatcher();
            List<Trade> matches = new List<Trade>();

            Equity p = new Equity("Google","GOOG");
            Order order1 = new Order(p, 10, Order.Side.BUY);
            Order order2 = new Order(p, 10, Order.Side.SELL);

            Fill fill1 = new Fill();
            fill1.price = 100;
            fill1.qty = 10;
            fill1.originalOrder = order1;

            Fill fill2 = new Fill();
            fill2.price = 100;
            fill2.qty = 10;
            fill2.originalOrder = order2;

            List<Fill> fills = new List<Fill>();
            fills.Add(fill1);
            fills.Add(fill2);

            matches = matcher.match(fills);

            Assert.IsTrue(matches.Count == 1 && fills.Count == 0);
        }
        public void LopsidedMatchTest()
        {
            FIFOTradeMatcher matcher = new FIFOTradeMatcher();
            List<Trade> matches = new List<Trade>();

            Equity p = new Equity("Google", "GOOG");
            Order order1 = new Order(p, 10, Order.Side.BUY);
            Order order2 = new Order(p, 5, Order.Side.SELL);
            Order order3 = new Order(p, 25, Order.Side.BUY);
            Order order4 = new Order(p, 7, Order.Side.SELL);
            Order order5 = new Order(p, 12, Order.Side.SELL);

            Fill fill1 = new Fill();
            fill1.price = 100;
            fill1.qty = 10;
            fill1.originalOrder = order1;

            Fill fill2 = new Fill();
            fill2.price = 100;
            fill2.qty = 5;
            fill2.originalOrder = order2;

            Fill fill3 = new Fill();
            fill3.price = 100;
            fill3.qty = 20;
            fill3.originalOrder = order3;

            Fill fill4 = new Fill();
            fill4.price = 100;
            fill4.qty = 6;
            fill4.originalOrder = order4;

            Fill fill5 = new Fill();
            fill5.price = 100;
            fill5.qty = 12;
            fill5.originalOrder = order5;

            List<Fill> fills = new List<Fill>();
            fills.Add(fill1);
            fills.Add(fill2);
            fills.Add(fill3);
            fills.Add(fill4);
            fills.Add(fill5); 

            matches = matcher.match(fills);

            Assert.IsTrue(matches.Count == 1 && fills.Count == 3);
        }
        //start strategy
        private void startStrategy(int id, Dictionary<PARMS, String> parms)
        {
            if (runningStrategy == null)
            {
                Equity eq1 = new Equity(parms[PARMS.Ticker1], parms[PARMS.Ticker1]);

                List<Product> products = new List<Product>();
                products.Add(eq1);

                switch (id)
                {
                    case 0:
                        runningStrategy = new PairStrategy(products, brokers, Int32.Parse(parms[PARMS.BuyQty]));
                        break;
                    case 1:
                        runningStrategy = new BasicPairTradeStrategy();
                        break;
                }

                runningStrategy.start();
            }
        }