Пример #1
0
 public void WatchListItemParams()
 {
     Symbol s = new Symbol("GOOG");
     WatchListItem wli = new WatchListItem(s, "Default");
     Assert.AreEqual(wli.ListName, "Default");
     Assert.AreEqual(wli.SymbolName, "GOOG");
 }
Пример #2
0
 public void RemoveFromList()
 {
     WatchList w = new WatchList();
     WatchListItem item = new WatchListItem(new Symbol("GOOG"), "Default");
     w.Items.Add(item);
     w.Items.Remove(item);
     Assert.IsTrue(w.Items.Count == 0);
 }
Пример #3
0
 public void WatchListItemNoParams()
 {
     WatchListItem wli = new WatchListItem();
     Assert.IsTrue(wli.Symbol == null);
     Assert.IsTrue(wli.ListName == null);
     Assert.IsTrue(wli.SymbolName == null);
     Assert.IsTrue(wli.WatchList == null);
 }
Пример #4
0
 public void WatchListItems()
 {
     WatchList w = new WatchList();
     WatchListItem item = new WatchListItem();
     item.ListName = "Default";
     item.Symbol = new Symbol("GOOG");
     w.Items.Add(item);
     Assert.IsTrue(w.Items.Count == 1);
     Assert.AreEqual(w.Items[0], item);
 }
Пример #5
0
        static void Main(string[] args)
        {
            Console.WriteLine("Testing the entity framework...");
            TraderContext db = new TraderContext();

            Console.WriteLine("Clearing the database...");
            var d_quotes = from q in db.Quotes select q;
            foreach (var i in d_quotes) db.Quotes.Remove(i);
            var d_symbol = from s in db.Symbols select s;
            foreach (var i in d_symbol) db.Symbols.Remove(i);
            var d_position = from p in db.Positions select p;
            foreach (var i in d_position) db.Positions.Remove(i);
            var d_trade = from t in db.Trades select t;
            foreach (var i in d_trade) db.Trades.Remove(i);

            Console.WriteLine("Adding records to database...");
            db.Symbols.Add(new Symbol("GOOG"));
            db.Symbols.Add(new Symbol("LNC"));

            db.SaveChanges();

            Quote q1 = new Quote();
            q1.timestamp = DateTime.Now;
            q1.price = 50.47;
            q1.Symbol = db.Symbols.First();
            db.Quotes.Add(q1);

            Position p1 = new Position();
            p1.SymbolName = "GOOG";
            p1.price = 5000;
            p1.quantity = 150;
            p1.status = positionStatus.Open;
            db.Positions.Add(p1);

            db.SaveChanges();

            Trade t1 = new Trade();
            t1.timestamp = DateTime.Now;
            t1.quantity = 40;
            t1.price = 10.10;
            t1.type = tradeTypes.Buy;
            t1.SymbolName = "GOOG";
            db.Trades.Add(t1);

            var q_addtopos = from p in db.Positions.Include("Trades") where p.SymbolName == "GOOG" select p;
            Position goog_pos = q_addtopos.FirstOrDefault();
            goog_pos.Trades.Add(t1);

            db.SaveChanges();

            WatchList w = new WatchList();
            w.ListName = "Default";
            db.WatchLists.Add(w);
            db.SaveChanges();

            WatchListItem wi1 = new WatchListItem();
            wi1.ListName = "Default";
            wi1.SymbolName = "GOOG";
            db.WatchListItems.Add(wi1);

            WatchListItem wi2 = new WatchListItem();
            wi2.ListName = "Default";
            wi2.SymbolName = "LNC";
            db.WatchListItems.Add(wi2);

            db.SaveChanges();

            Console.WriteLine("Retrieving records from database...");
            Console.WriteLine("\nSymbols");
            var query = from s in db.Symbols orderby s.name select s;
            foreach (var i in query)
            {
                Console.WriteLine("Symbol: " + i.name);
            }

            Console.WriteLine("\nQuotes");
            var q_search = from q in db.Quotes select q;
            foreach (var i in q_search)
            {
                Console.WriteLine("Record: " + i.QuoteId.ToString());
                Console.WriteLine("Symbol: " + i.Symbol.name);
                Console.WriteLine("Timestamp: " + i.timestamp.ToString());
                Console.WriteLine("Price: " + i.price.ToString());
            }

            Console.WriteLine("\nPositions");
            var p_search = from p in db.Positions select p;
            foreach (var i in p_search)
            {
                Console.WriteLine("Record: " + i.PositionId.ToString());
                Console.WriteLine("Symbol: " + i.Symbol.name);
                Console.WriteLine("Trade count: " + i.Trades.Count.ToString());
                foreach (var t in i.Trades)
                {
                    Console.WriteLine("\tTrade Id: " + t.TradeId.ToString());
                    Console.WriteLine("\tType: " + t.type.ToString());
                    Console.WriteLine("\tPrice: " + t.price.ToString());
                    Console.WriteLine("\tQuantity: " + t.quantity.ToString());
                    Console.WriteLine("\tTimestamp: " + t.timestamp.ToString());
                }
            }

            Console.WriteLine("\nWatchlist");
            var wlist = from l in db.WatchLists.Include("Items") select l;
            WatchList deflist = wlist.FirstOrDefault();
            foreach (var i in deflist.Items)
            {
                Console.WriteLine("\t" + i.Symbol.name);
            }
            Console.WriteLine("\nTesting complete.");
            Console.ReadLine();
            db.Dispose();
        }
        protected override void Seed(TraderContext context)
        {
            Portfolio portfolio = new Portfolio();

            portfolio.Cash = 10000;
            context.Portfolios.Add(portfolio);
            context.SaveChanges();

            Symbol s = new Symbol("GOOG");

            context.Symbols.Add(s);
            context.SaveChanges();

            Position pos1 = new Position();

            pos1.price     = 100;
            pos1.quantity  = 5;
            pos1.status    = positionStatus.Open;
            pos1.Symbol    = s;
            pos1.Portfolio = portfolio;
            context.Positions.Add(pos1);
            context.SaveChanges();

            Trade t1 = new Trade();

            t1.Symbol        = s;
            t1.Position      = pos1;
            t1.price         = 20;
            t1.quantity      = 5;
            t1.type          = tradeTypes.Buy;
            t1.TransactionId = Guid.NewGuid().ToString();
            t1.timestamp     = DateTime.Now;
            context.Trades.Add(t1);
            context.SaveChanges();

            Quote q1 = new Quote();

            q1.Symbol    = s;
            q1.timestamp = DateTime.Now;
            q1.price     = 20.15;
            context.Quotes.Add(q1);
            context.SaveChanges();

            Alert a1 = new Alert();

            a1.AlertId      = Guid.NewGuid();
            a1.Symbol       = s;
            a1.Timestamp    = DateTime.Now;
            a1.Type         = tradeTypes.Buy;
            a1.Quantity     = 100;
            a1.SentTo       = "*****@*****.**";
            a1.Price        = 10.45;
            a1.ResponseCode = responseCodes.Pending;
            context.Alerts.Add(a1);
            context.SaveChanges();

            SystemSetting emailaddress = new SystemSetting();

            emailaddress.Module = "UserAgent";
            emailaddress.Name   = "ALERTS_EMAIL_ADDRESS_TO";
            emailaddress.Value  = "*****@*****.**";
            context.SystemSettings.Add(emailaddress);
            context.SaveChanges();

            //ThreeDuckStrategy
            context.SystemSettings.Add(new SystemSetting("ThreeDuckStrategy", "FIRST_DUCK_SECONDS", "604800"));
            context.SystemSettings.Add(new SystemSetting("ThreeDuckStrategy", "SECOND_DUCK_SECONDS", "86400"));
            context.SystemSettings.Add(new SystemSetting("ThreeDuckStrategy", "THIRD_DUCK_SECONDS", "43200"));
            context.SystemSettings.Add(new SystemSetting("ThreeDuckStrategy", "MOVING_AVERAGE_WINDOW", "10"));
            context.SaveChanges();

            // Adam's stuff to fill in db tables
            string[] symbols    = { "AAPL", "VZ", "INTC", "MSFT", "HP", "PANL", "NVDA", "QCOM", "AMD", "FB", "LNKD", "ZNGA" };
            string[] watchlists = { "", "Other", "Test List", "Future Purchases" };
            Random   rand       = new Random();

            for (int i = 0; i < watchlists.Length; i++)
            {
                WatchList w = new WatchList(watchlists[i]);
                context.WatchLists.Add(w);
            }
            context.SaveChanges();

            for (int i = 0; i < symbols.Length; i++)
            {
                Symbol symbol = new Symbol(symbols[i]);
                symbol.CompanyName = "Random Company Name, Inc.";
                context.Symbols.Add(symbol);

                WatchListItem wli = new WatchListItem(symbol, watchlists[rand.Next(0, watchlists.Length)]);
                context.WatchListItems.Add(wli);

                for (int k = 0; k < 10; k++)
                {
                    Quote quote1 = new Quote();
                    quote1.price      = Math.Round((rand.NextDouble() * (200 - 5) + 5), 2);
                    quote1.timestamp  = DateTime.Now.AddDays(-k);
                    quote1.SymbolName = symbol.name;
                    context.Quotes.Add(quote1);
                }

                Alert alert1 = new Alert();
                alert1.AlertId      = Guid.NewGuid();
                alert1.Symbol       = symbol;
                alert1.Timestamp    = DateTime.Now.AddDays(-2);
                alert1.Type         = tradeTypes.Buy;
                alert1.Quantity     = 100;
                alert1.SentTo       = "*****@*****.**";
                alert1.Price        = 20.00;
                alert1.ResponseCode = responseCodes.Pending;
                context.Alerts.Add(alert1);

                Alert alert2 = new Alert();
                alert2.AlertId      = Guid.NewGuid();
                alert2.Symbol       = symbol;
                alert2.Timestamp    = DateTime.Now;
                alert2.Type         = tradeTypes.Buy;
                alert2.Quantity     = 100;
                alert2.SentTo       = "*****@*****.**";
                alert2.Price        = 20.00;
                alert2.ResponseCode = responseCodes.Pending;
                context.Alerts.Add(alert2);

                Alert alert3 = new Alert();
                alert3.AlertId      = Guid.NewGuid();
                alert3.Symbol       = symbol;
                alert3.Timestamp    = DateTime.Now.AddHours(-1);
                alert3.Type         = tradeTypes.Buy;
                alert3.Quantity     = 100;
                alert3.SentTo       = "*****@*****.**";
                alert3.Price        = 20.00;
                alert3.ResponseCode = responseCodes.Pending;
                context.Alerts.Add(alert3);
                context.SaveChanges();

                Position p = new Position();
                p.status    = positionStatus.Open;
                p.Symbol    = symbol;
                p.Portfolio = portfolio;

                for (int j = 0; j < new Random().Next(1, 10); j++)
                {
                    Trade t = new Trade();
                    t.Symbol        = symbol;
                    t.Position      = p;
                    t.price         = Math.Round((rand.NextDouble() * (200 - 5) + 5), 2);
                    t.quantity      = rand.Next(1, 20);
                    t.type          = tradeTypes.Buy;
                    t.TransactionId = Guid.NewGuid().ToString();
                    t.timestamp     = DateTime.Now.AddSeconds(rand.Next(1, (60 * 60 * 24 * 60) + 1) * -1);                 // any time between 60 days ago
                    p.price        += t.price;
                    context.Trades.Add(t);
                }
                p.Recalculate();
                context.Positions.Add(p);
            }
            context.SaveChanges();
        }