예제 #1
0
 public StockPanelViewModel()
 {
     this.createEquityCommand = new DelegateCommand(this.CreateEquity);
     this.createBondCommand   = new DelegateCommand(this.CreateBond);
     this.addCommand          = new DelegateCommand(this.AddStock);
     this.cancelCommand       = new DelegateCommand(this.CancelStock);
     this.stockCreator        = new StockCreator();
 }
예제 #2
0
        public void GenerateName_ForEquity_UnderZero()
        {
            //Arrange
            var stockManager = new StockCreator();

            //Act
            var result = stockManager.GenerateName(StockType.Equity, -3);
        }
예제 #3
0
파일: Ticker.cs 프로젝트: riyanhax/Maui
        private double FetchCurrentPrice(string isin)
        {
            var stockCreator = new StockCreator();
            var stock        = stockCreator.Create(new StockDescriptor(isin, "F"));

            var result = DatumLocatorDefinitions.CurrentPrice.FetchSingle <double>(stock);

            return(result.Value);
        }
예제 #4
0
        public void GenerateName_ForBond_NotEmptyCollection()
        {
            //Arrange
            var stockManager = new StockCreator();

            //Act
            var result = stockManager.GenerateName(StockType.Bond, 2);

            //Assert
            Assert.AreEqual(result, "Bond3");
        }
예제 #5
0
        public void GenerateName_ForEquity_NotEmptyCollection()
        {
            //Arrange
            var stockManager = new StockCreator();

            //Act
            var result = stockManager.GenerateName(StockType.Equity, 1);

            //Assert
            Assert.AreEqual(result, "Equity2");
        }
예제 #6
0
        public void GenerateStockWeight_NotZeroMarkedValue_EmptyCollection()
        {
            //Arrange
            var stockManager = new StockCreator();

            //Act
            var result = stockManager.GenerateStockWeight(1.0, null);

            //Assert
            Assert.AreEqual(result, 0);
        }
예제 #7
0
        public void GenerateTransactionCost_ForBond()
        {
            //Arrange
            var stockManager = new StockCreator();
            var marketValue  = 200.0;

            //Act
            var result = stockManager.GenerateTransactionCost(StockType.Bond, marketValue);

            //Assert
            Assert.AreEqual(result, 4);
        }
예제 #8
0
        public void GenerateMarketValue_QuantityBelowZero()
        {
            //Arrange
            var    stockManager = new StockCreator();
            double price        = 5.0;
            int    quantity     = -10;

            //Act
            var result = stockManager.GenerateMarketValue(price, quantity);

            //Assert
            Assert.AreEqual(result, -50.0);
        }
예제 #9
0
        public void GenerateColor_ForEBondAndHighTransactionCost_ReturnsRed()
        {
            //Arrange
            var stockManager    = new StockCreator();
            var marketValue     = 5;
            var transactionCost = 100001;

            //Act
            var result = stockManager.GenerateColor(StockType.Bond, marketValue, transactionCost);

            //Assert
            Assert.AreEqual(result, Brushes.Red);
        }
예제 #10
0
        public void GenerateColor_MarketValueAboveZeroOrZero_ReturnsBlack()
        {
            //Arrange
            var stockManager    = new StockCreator();
            var marketValue     = 5;
            var transactionCost = 0;

            //Act
            var result = stockManager.GenerateColor(StockType.Equity, marketValue, transactionCost);

            //Assert
            Assert.AreEqual(result, Brushes.Black);
        }
예제 #11
0
        public void GenerateStockWeight_ZeroMarkedValue_NotEmptyCollection()
        {
            //Arrange
            var stockManager = new StockCreator();
            var collection   = new ObservableCollection <Stock>();

            collection.Add(new Stock {
                MarketValue = 0.0
            });

            //Act
            var result = stockManager.GenerateStockWeight(0.0, collection);

            //Assert
            Assert.AreEqual(result, 0);
        }
예제 #12
0
        protected override void Run()
        {
            var creator      = new StockCreator();
            var tradedStocks = new List <TradedStock>();

            foreach (var stock in StockArgs.Stocks)
            {
                try
                {
                    tradedStocks.Add(creator.Create(stock).TradedStock);
                }
                catch (Exception ex)
                {
                    myLogger.Error(ex, "Failed to create stock: {0}", stock.Isin);
                }
            }

            AddStocksToCatalog(tradedStocks, StockArgs.Catalog.Name);
        }
예제 #13
0
        protected override void Run()
        {
            var creator = new StockCreator();

            using (var tom = Engine.ServiceProvider.CreateEntityRepository())
            {
                var stocksToDelete = StockArgs.Stocks
                                     .SelectMany(stockDesc => tom.Stocks.Where(s => s.Isin == stockDesc.Isin).ToList())
                                     .ToList();

                if (!stocksToDelete.Any())
                {
                    Console.WriteLine("no stocks found to delete");
                    return;
                }

                Console.WriteLine("We are going to remove the following stocks: ");
                foreach (var stock in stocksToDelete)
                {
                    Console.WriteLine("  Name: {0,-40} Isin: {1}", stock.Company.Name, stock.Isin);
                }
                Console.Write("Are you sure [y/n]:");
                var answer = Console.ReadLine();

                if (!answer.Equals("y", StringComparison.OrdinalIgnoreCase))
                {
                    Console.WriteLine("aborted");
                    return;
                }

                foreach (var stock in stocksToDelete)
                {
                    // TODO: actually we should have a cascading delete
                    foreach (var ts in stock.TradedStocks.ToList())
                    {
                        tom.DeleteObject(ts);
                    }
                    tom.DeleteObject(stock);
                }

                tom.SaveChanges();
            }
        }
        //Read and provide the current price change
        internal static IList <IStock> ReadPriceChanges(string file)
        {
            CultureInfo  provider  = CultureInfo.InvariantCulture;
            StreamReader reader    = new StreamReader(File.OpenRead(file));
            var          allStocks = new List <IStock>();

            string   ticker                = null;
            string   exchange              = null;
            decimal  price                 = decimal.MinValue;
            decimal  priceChange           = decimal.MinValue;
            decimal  percentagePriceChange = decimal.MinValue;
            DateTime date = default(DateTime);

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();

                #region Search For Identifiers
                if (line.Contains(tickerIdentifier))
                {
                    ticker = ExtractValueFromString(line, tickerIdentifier);
                }
                else if (line.Contains(exchangeIdentifier))
                {
                    exchange = ExtractValueFromString(line, exchangeIdentifier);
                }
                else if (line.Contains(dateIdentifier))
                {
                    string dateTimeAsString = ExtractValueFromString(line, dateIdentifier);
                    date = DateTime.Parse(dateTimeAsString, null, DateTimeStyles.RoundtripKind);
                }
                else if (line.Contains(priceIdentifier))
                {
                    string a = ExtractValueFromString(line, priceIdentifier);
                    price = decimal.Parse(a);
                }
                else if (line.Contains(priceChangeIdentifier))
                {
                    priceChange = decimal.Parse(ExtractValueFromString(line, priceChangeIdentifier));
                }
                else if (line.Contains(percentagePriceChangeIdentifier))
                {
                    percentagePriceChange = decimal.Parse(ExtractValueFromString(line, percentagePriceChangeIdentifier));
                }
                #endregion

                #region If all the data is collected
                //Check if all the necessary data is collected
                if (!string.IsNullOrEmpty(ticker) &&
                    !string.IsNullOrEmpty(exchange) &&
                    price != decimal.MinValue &&
                    priceChange != decimal.MinValue &&
                    percentagePriceChange != decimal.MinValue &&
                    date != default(DateTime))
                {
                    //having the full information we can create the stock
                    IStock currentStock = StockCreator.CreateStock
                                              (ticker, exchange, date, price, priceChange, percentagePriceChange);
                    allStocks.Add(currentStock);

                    //clear the variables for the next stock
                    ticker                = null;
                    exchange              = null;
                    price                 = decimal.MinValue;
                    priceChange           = decimal.MinValue;
                    percentagePriceChange = decimal.MinValue;
                }
                #endregion
            }

            reader.Close();
            File.Delete(file);
            return(allStocks);
        }