public IEnumerable <decimal> GetLastNumericData(int n, string refDate, MarketNumericInfo infoToRetrieve) { //last market data, from which retrieve the numeric data IEnumerable <MarketData> lastMData = from d in Dates where Dates.IndexOf(refDate) - Dates.IndexOf(d) < n orderby d select this[d]; IEnumerable <decimal> results = null; switch (infoToRetrieve) { case MarketNumericInfo.AVGPRICE: results = from m in lastMData select m.avgPrice; break; case MarketNumericInfo.CLOSEPRICE: results = from m in lastMData select m.closePrice; break; case MarketNumericInfo.MARKETTYPE: results = from m in lastMData select m.marketType; break; case MarketNumericInfo.MAXPRICE: results = from m in lastMData select m.maxPrice; break; case MarketNumericInfo.MINPRICE: results = from m in lastMData select m.minPrice; break; case MarketNumericInfo.NEGOTIATIONSNUMBER: results = from m in lastMData select m.nOfNegotiations; break; case MarketNumericInfo.OPENPRICE: results = from m in lastMData select m.openPrice; break; case MarketNumericInfo.PAPERSNUMBER: results = from m in lastMData select m.nOfPapersTraded; break; case MarketNumericInfo.VOLUME: results = from m in lastMData select m.volume; break; } return(results); }
public static decimal GetNumericInfo(string line, MarketNumericInfo infoToRetrieve) { int startPos = 0, finalPos = 0; switch (infoToRetrieve) { case MarketNumericInfo.AVGPRICE: startPos = 96; finalPos = 108; break; case MarketNumericInfo.CLOSEPRICE: startPos = 109; finalPos = 121; break; case MarketNumericInfo.MAXPRICE: startPos = 70; finalPos = 82; break; case MarketNumericInfo.MINPRICE: startPos = 83; finalPos = 95; break; case MarketNumericInfo.OPENPRICE: startPos = 57; finalPos = 69; break; case MarketNumericInfo.NEGOTIATIONSNUMBER: startPos = 148; finalPos = 152; break; case MarketNumericInfo.PAPERSNUMBER: startPos = 153; finalPos = 170; break; case MarketNumericInfo.VOLUME: startPos = 171; finalPos = 188; break; case MarketNumericInfo.MARKETTYPE: startPos = 25; finalPos = 27; break; } string str = ReadSubstring(line, startPos, finalPos).Trim(); decimal value = 0; switch (infoToRetrieve) { case MarketNumericInfo.NEGOTIATIONSNUMBER: case MarketNumericInfo.PAPERSNUMBER: case MarketNumericInfo.MARKETTYPE: value = decimal.Parse(str, new CultureInfo("pt-BR")); break; case MarketNumericInfo.VOLUME: value = decimal.Parse(str.Substring(0, str.Length - 2) + "," + str.Substring(str.Length - 2), new CultureInfo("pt-BR")); break; default: value = decimal.Parse(str.Substring(0, str.Length - 2) + "," + str.Substring(str.Length - 2), new CultureInfo("pt-BR")); break; } return(value); }