Ejemplo n.º 1
0
        private void ParseSecuritiesHolding(string[] lineFields, ref Portfolio portfolio)
        {
            string symbol = lineFields[0];
            decimal lastPrice = Convert.ToDecimal(lineFields[1]);
            decimal quantity = Convert.ToDecimal(lineFields[5]);

            portfolio.AddHolding(m_SymbolMapper.GetAllocationType(symbol), symbol, lastPrice, quantity);
        }
Ejemplo n.º 2
0
        private void ParseCashHolding(string[] lineFields, ref Portfolio portfolio)
        {
            string symbol = lineFields[0];
            decimal price = new decimal(1.0);
            decimal cashValue = Convert.ToDecimal(lineFields[1]);

            portfolio.AddHolding(AllocationType.Cash, symbol, price, cashValue);
        }
Ejemplo n.º 3
0
        private void ParseHolding(string[] lineFields, ref Portfolio portfolio)
        {
            switch(lineFields.Length)
            {
                case 2:
                    ParseCashHolding(lineFields, ref portfolio);
                    break;

                case 10:
                    ParseSecuritiesHolding(lineFields, ref portfolio);
                    break;
            };
        }
Ejemplo n.º 4
0
        public Portfolio LoadPortfolioFromCsv(string filePath, DesiredPortfolio desiredPortfolio)
        {
            string[] fileLines = ReadFileLines(filePath);

            Portfolio portfolio = new Portfolio(desiredPortfolio);

            // Allocations begin at line #11
            const int allocationStartLine = 11;
            string[] splitStrings = new[] { "\",\"", "\",", ",\"", "\"", ";"};

            for (int index = allocationStartLine; index < fileLines.Length; ++index)
            {
                // Clean up the lines
                string line = fileLines[index];
                string[] lineFields = line.Split(splitStrings, StringSplitOptions.RemoveEmptyEntries);

                // Try to parse them into the portfolio
                ParseHolding(lineFields, ref portfolio);
            }

            return portfolio;
        }