public static List <Trade> Excel() { string path = @"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0"; var physicalPath = HostingEnvironment.MapPath("~/xlsx"); var fileName = @"file.xlsx"; string localPath = string.Format(@"{0}/{1}", physicalPath, fileName); WebClient wc = new WebClient(); var request = (HttpWebRequest)WebRequest.Create(path); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; request.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate"; using (var response = request.GetResponse()) using (var stream = response.GetResponseStream()) using (var output = File.Create(localPath)) { stream.CopyTo(output); } DataTable rs = new DataTable(); var list = new List <Trade>(); using (var odConnection = new OleDbConnection(string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';", localPath))) { odConnection.Open(); using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = odConnection; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM [دیده بان بازار$]"; using (OleDbDataAdapter oleda = new OleDbDataAdapter(cmd)) { oleda.Fill(rs); } } odConnection.Close(); string username = "******"; string password = "******"; var days = new TseDayCollectionGenerator().GenerateToday(); list = GetLastDayTrades(username, password, 1).ToList(); rs.Rows[0].Delete(); rs.Rows[1].Delete(); rs.AcceptChanges(); foreach (var row in rs.Rows.Cast <DataRow>()) { var trade = list.Where(t => t.LVal18AFC.Contains(row[0].ToString())).FirstOrDefault(); if (trade != null) { trade.PbE = string.IsNullOrEmpty(row[16].ToString()) ? 0 : Convert.ToDecimal(row[16].ToString().Replace('/', '.')); trade.EPS = string.IsNullOrEmpty(row[15].ToString()) ? 0 : Convert.ToDecimal(row[15].ToString()); } } } return(list); }
public List <Trade> GetAllowed(AllowedMarketFilter filter) { var days = new TseDayCollectionGenerator().GenerateToday(); var todayTrades = GetLastDayTrades(username, password, filter.Market).ToList(); var twoDaysAgoTrades = GetSpecdayTrades(username, password, days.TwoDaysAgo, filter.Market).ToList(); var yesterdayTrades = GetSpecdayTrades(username, password, days.Yesterday, filter.Market).ToList(); var twoDaysAgoAllowed = twoDaysAgoTrades.Where(t => t.DailyChange < filter.YesterdayAllowedChange).ToList(); var yesterdayAllowed = yesterdayTrades.Where(t => twoDaysAgoAllowed.Contains(t) && t.DailyChange > filter.YesterdayAllowedChange).ToList(); var todayAllowedTrades = todayTrades.Where(t => yesterdayAllowed.Contains(t) && t.DailyChange > filter.PositiveMinChange && t.DailyChange < filter.PositiveMaxChange).ToList(); return(todayAllowedTrades); }
public List <Trade> GetAllowed(FilterByPBEParamModel filter) { var allSymbolInfo = ExcelParser.Excel(); var days = new TseDayCollectionGenerator().GenerateToday(); var todayTrades = GetLastDayTrades(username, password, filter.Market).ToList(); var yesterdayTrades = GetSpecdayTrades(username, password, days.Yesterday, filter.Market).ToList(); var twodaysagoTrades = GetSpecdayTrades(username, password, days.TwoDaysAgo, filter.Market).ToList(); var threedaysagoTrades = GetSpecdayTrades(username, password, days.ThreeDaysAgo, filter.Market).ToList(); var threedaysagoAllowed = threedaysagoTrades.Where(t => t.DailyChange < filter.LastDaysAllowedChange).ToList(); var twodaysagoAllowed = twodaysagoTrades.Where(t => threedaysagoAllowed.Contains(t) && t.DailyChange < filter.LastDaysAllowedChange).ToList(); var yesterdayAllowed = yesterdayTrades.Where(t => twodaysagoAllowed.Contains(t) && t.DailyChange < filter.LastDaysAllowedChange).ToList(); var todayAllowedTrades = todayTrades.Where(t => yesterdayAllowed.Contains(t) && t.DailyChange < filter.TodayAllowedChange).ToList(); var allowed = allSymbolInfo.Where(t => todayAllowedTrades.Contains(t) && t.PbE > filter.PbeMinChange && t.PbE < filter.PbeMaxChange).OrderByDescending(o => o.PbE).ThenByDescending(o => o.DailyChange).ToList(); return(allowed); }