public async Task <StockSummary> GetStockQuote(string ticker) { var securities = await Yahoo.Symbols(ticker).Fields(Field.LongName, Field.RegularMarketPrice, Field.RegularMarketChange, Field.RegularMarketChangePercent, Field.FiftyTwoWeekHigh, Field.FiftyTwoWeekLow, Field.RegularMarketDayLow, Field.RegularMarketDayHigh, Field.RegularMarketOpen, Field.RegularMarketPreviousClose, Field.RegularMarketVolume, Field.Bid, Field.BidSize, Field.Ask, Field.AskSize, Field.EarningsTimestamp, Field.EpsForward, Field.FinancialCurrency, Field.MarketCap).QueryAsync(); var security = securities[ticker.ToUpper()]; security.Fields.TryGetValue(ticker, out dynamic key); StockSummary models = new StockSummary() { Ticker = ticker, Name = security.LongName, Change = security.RegularMarketChange, ChangePercent = security.RegularMarketChangePercent, weekHigh = security.FiftyTwoWeekHigh, weekLow = security.FiftyTwoWeekLow, dayHigh = security.RegularMarketDayHigh, dayLow = security.RegularMarketDayLow, Open = Convert.ToDecimal(security.RegularMarketOpen), Close = Convert.ToDecimal(security.RegularMarketPreviousClose), Bid = security.Bid, Ask = security.Ask, BidSize = security.BidSize, AskSize = security.AskSize, market = security.MarketCap, Currency = security.Currency, Volume = security.RegularMarketVolume }; return(models); }
/// <summary> /// Analyze stock base upper and lower trend line. We first find the highPrice/lowprice for the latest 7 days, then starting from the horizontal line, /// we rotate the trend line until it can be higher than the highPrice/lowPrice in 60 days /// </summary> /// <param name="summary"></param> public static void AnalyseStockTrendLine(ref StockSummary summary) { List <StockPoint> points = summary.CacheData[Constant.DAILYCHART] as List <StockPoint>; double[] boundaries = new double[4]; double startHigh = Double.MinValue; double startLow = Double.MaxValue; int indexHigh = 0; int indexLow = 0; for (int i = 0; i < 7; i++) { if (startHigh < points[i].HighPrice) { startHigh = points[i].HighPrice; indexHigh = i; } if (startLow > points[i].LowPrice) { startLow = points[i].LowPrice; indexLow = i; } } boundaries[0] = GetDeltaForStock(startHigh, points, true, summary.Trends[2] > 0, indexHigh, startHigh / (points.Count * 500)); boundaries[1] = indexHigh; boundaries[2] = GetDeltaForStock(startLow, points, false, summary.Trends[2] > 0, indexLow, startHigh / (points.Count * 500)); boundaries[3] = indexLow; Console.WriteLine("the high trend delta: " + boundaries[0]); Console.WriteLine("the low trend delta: " + boundaries[2]); summary.SerializedProperties.Add("boundaries", boundaries); }
/// <summary> /// Currently, we may either insert the stock summary data or update the existing stock summary data /// </summary> /// <param name="summary"></param> /// <param name="operation"></param> public void UpdateStockAnalysis(StockSummary summary, int operation) { if (StockConn.ConnectionString == String.Empty) { StockConn = new SqlConnection(Conn); } if (operation == 0) { string query = "INSERT INTO [Stock].[dbo].[StockAnalysis]([symbol],[dayTrend14],[dayTrend30],[dayTrend60],[dayTrend180],[patternData],[timeStamp]) VALUES(@symbol,@dayTrend14,@dayTrend30,@dayTrend60,@dayTrend180,@patternData,@timeStamp)"; StockConn.Open(); SqlCommand cmd = new SqlCommand(query, StockConn); cmd.Parameters.Add("@symbol", System.Data.SqlDbType.Char); cmd.Parameters.Add("@dayTrend14", System.Data.SqlDbType.Float); cmd.Parameters.Add("@dayTrend30", System.Data.SqlDbType.Float); cmd.Parameters.Add("@dayTrend60", System.Data.SqlDbType.Float); cmd.Parameters.Add("@dayTrend180", System.Data.SqlDbType.Float); cmd.Parameters.Add("@patternData", System.Data.SqlDbType.NText); cmd.Parameters.Add("@timeStamp", System.Data.SqlDbType.DateTime); // set values to parameters from textboxes cmd.Parameters["@symbol"].Value = summary.Symbol; cmd.Parameters["@dayTrend14"].Value = summary.Trends[0]; cmd.Parameters["@dayTrend30"].Value = summary.Trends[1]; cmd.Parameters["@dayTrend60"].Value = summary.Trends[2]; cmd.Parameters["@dayTrend180"].Value = summary.Trends[3]; cmd.Parameters["@patternData"].Value = JsonConvert.SerializeObject(summary.SerializedProperties); cmd.Parameters["@timeStamp"].Value = summary.LastUpdate; cmd.ExecuteNonQuery(); StockConn.Close(); } else if (operation == 1) { string query = "UPDATE [Stock].[dbo].[StockAnalysis] SET [dayTrend14] = @dayTrend14, [dayTrend30] = @dayTrend30, [dayTrend60] = @dayTrend60,[dayTrend180] = @dayTrend180,[patternData] = @patternData, [timeStamp] = @timeStamp where [symbol] = @symbol"; StockConn.Open(); SqlCommand cmd = new SqlCommand(query, StockConn); cmd.Parameters.Add("@symbol", System.Data.SqlDbType.Char); cmd.Parameters.Add("@dayTrend14", System.Data.SqlDbType.Float); cmd.Parameters.Add("@dayTrend30", System.Data.SqlDbType.Float); cmd.Parameters.Add("@dayTrend60", System.Data.SqlDbType.Float); cmd.Parameters.Add("@dayTrend180", System.Data.SqlDbType.Float); cmd.Parameters.Add("@patternData", System.Data.SqlDbType.NText); cmd.Parameters.Add("@timeStamp", System.Data.SqlDbType.DateTime); // set values to parameters from textboxes cmd.Parameters["@symbol"].Value = summary.Symbol; cmd.Parameters["@dayTrend14"].Value = summary.Trends[0]; cmd.Parameters["@dayTrend30"].Value = summary.Trends[1]; cmd.Parameters["@dayTrend60"].Value = summary.Trends[2]; cmd.Parameters["@dayTrend180"].Value = summary.Trends[3]; cmd.Parameters["@patternData"].Value = JsonConvert.SerializeObject(summary.SerializedProperties); cmd.Parameters["@timeStamp"].Value = summary.LastUpdate; cmd.ExecuteNonQuery(); StockConn.Close(); } else { Console.WriteLine("The operation doesn't exist!"); } }
public StockSummary FetchStockTrendSummaryObject(string symbol) { StockSummary result = new StockSummary(); result.Symbol = symbol; AddADXDataToStockObject(ref result, symbol); AddAROONDataToStockObject(ref result, symbol); AddStockMajorDataToStockSummary(ref result); result.LastUpdate = DateTime.Now; return(result); }
/// <summary> /// ADX defines the strength, aroon defines the strength and stock trend direction. /// </summary> /// <param name="summary"></param> public static void AnalyseStockTrend(ref StockSummary summary) { List <double> aroonValues = summary.CacheData[Constant.AROONKEY] as List <double>; List <double> adxValues = summary.CacheData[Constant.ADXKEY] as List <double>; summary.Trends.Add(TrendValueForDays(aroonValues, adxValues, 14)); // 14-day trend summary.Trends.Add(TrendValueForDays(aroonValues, adxValues, 30)); summary.Trends.Add(TrendValueForDays(aroonValues, adxValues, 60)); summary.Trends.Add(TrendValueForDays(aroonValues, adxValues, 180)); summary.LastUpdate = DateTime.Now; }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int skuid = WebUtil.ParamInt("sku", 0); if (skuid <= 0) { this.divMsg.InnerText = "无效的SKU"; return; } using (ISession session = new Session()) { ItemSpec spec = ItemSpec.Retrieve(session, skuid); if (spec == null) { this.divMsg.InnerText = "SKU " + skuid.ToString() + "不存在"; return; } //显示sku信息 this.lblItemCode.Text = spec.ItemCode; this.lblSize.Text = spec.SizeCode; ItemMaster master = ItemMaster.Retrieve(session, spec.ItemCode); this.lblItemName.Text = master == null ? "" : master.ItemName; ItemColor color = ItemColor.Retrieve(session, spec.ColorCode); this.lblColor.Text = spec.ColorCode + " " + (color == null ? "" : color.ColorText); this.lblOVSQty.Text = spec.EnableOS ? RenderUtil.FormatNumber(spec.OSQty, "#0.##", "0") : "0"; //现有库存 StockSummary sto = StockSummary.Retrieve(session, skuid); this.lblStockQty.Text = sto == null ? "0" : RenderUtil.FormatNumber(sto.StockQty, "#0.##"); this.lblFrozenQty.Text = sto == null ? "0" : RenderUtil.FormatNumber(sto.FrozenQty, "#0.##"); //在途采购记录 IList <POLine> lines = POHead.PipelineInvQuery(session, skuid); this.repeater.DataSource = lines; this.repeater.DataBind(); decimal pipelineStockQty = 0M; //计算汇总在途量 foreach (POLine line in lines) { pipelineStockQty += (line.PurchaseQty - line.ReceiveQty); } this.lblPipelineStock.Text = RenderUtil.FormatNumber(pipelineStockQty, "#0.##"); if (lines.Count <= 0) { this.divMsg.InnerText = "该SKU没有在途采购"; } else { this.divMsg.InnerText = ""; } } } }
public static StockSummary Load(this StockSummary item, AgregatorSummary peYear, AgregatorSummary netProfitYear, AgregatorSummary growthYear, AgregatorSummary pegYear, AgregatorSummary peDiffYear) { item.PeYear = peYear; item.NetProfitYear = netProfitYear; item.GrowthYear = growthYear; item.PegYear = pegYear; item.PeDiffYear = peDiffYear; return(item); }
public async Task <JsonResult> GetData(string searchString) { var user_id = User.Identity.GetUserId(); ViewBag.searchString = searchString; ViewBag.Id = user_id; StockSummary models = new StockSummary(); if (!String.IsNullOrEmpty(searchString)) { models = await GetStockQuote(searchString); } return(Json(models)); }
public async Task <StockSummary> GetStockQuote(string ticker) { var securities = await Yahoo.Symbols(ticker).Fields("Change", "ChangePercent").Fields(Field.RegularMarketChange, Field.RegularMarketChangePercent).QueryAsync(); var security = securities[ticker.ToUpper()]; security.Fields.TryGetValue(ticker, out dynamic key); StockSummary models = new StockSummary() { Ticker = ticker, Change = security.RegularMarketChange, ChangePercent = security.RegularMarketChangePercent }; return(models); }
/// <summary> /// Based on the price & volumn, we draw a regression line. Maybe used in the future /// step 1: Get the linear regression based on the latest 14-day-point /// step 2: linear shift to find the upper and lower bound /// note: stock price as y axis and date as x axis, we think the "first day" as the 0, then 1,2,3..... /// if Y = a + bx. Then a = ((sigma_y)*(sigma_x2)-(sigma_x)(sigma_xy))/n(sigma_x2)-(sigmax)^2. b = (n(sigma_xy)-(sigma_x)*(sigma_y))/n(sigma_x2)-(sigma_x)^2 /// </summary> /// <param name="summary"></param> public static void AnalyseStockTrendRegression(ref StockSummary summary) { List <StockPoint> points = summary.CacheData[Constant.DAILYCHART] as List <StockPoint>; double sigma_x = 0, sigma_y = 0, sigma_xy = 0, sigma_x2 = 0, sigma_y2 = 0; //original data to paticipate linear regression for (int i = 0; i < 14; i++) { sigma_x += i; sigma_y += points[13 - i].ClosePrice; sigma_x2 = Math.Pow(i, 2); sigma_y2 = Math.Pow(points[13 - i].ClosePrice, 2); sigma_xy = i * points[13 - i].ClosePrice; } summary.LinearA = (sigma_y * sigma_x2 - sigma_x * sigma_xy) / (14 * sigma_x2 - Math.Pow(sigma_x, 2)); summary.LinearB = (14 * sigma_xy - sigma_x * sigma_y) / (14 * sigma_x2 - Math.Pow(sigma_x, 2)); }
private void gridStock_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0 || e.RowIndex >= gridStock.Rows.Count) { return; } DataGridViewRow row = gridStock.Rows[e.RowIndex]; StockSummary stock = (StockSummary)row.Tag; using (StockManagerForm stockDialog = new StockManagerForm(stock.ItemID)) { if (stockDialog.ShowDialog(this) == DialogResult.OK && stockDialog.DataChanged) { LoadStockTab(); } } }
public void AddAROONDataToStockObject(ref StockSummary result, string symbol) { var data = GetAROONData(symbol); var dataPoints = data[Constant.AROONKEY].OfType <JProperty>(); List <double> AROONValues = new List <double>(); int i = 0; foreach (JProperty point in dataPoints) { AROONValues.Add(GeneralTools.StringParser(point.Value[Constant.AROON].ToString())); if (i >= 200) { break; } i++; } result.CacheData.Add(Constant.AROONKEY, AROONValues); }
public async Task <ActionResult> GetDataValues(string searchString) { var user_id = User.Identity.GetUserId(); ViewBag.searchString = searchString; ViewBag.Id = user_id; StockSummary models = new StockSummary(); if (!String.IsNullOrEmpty(searchString)) { models = await GetStockQuote(searchString); } ViewBag.stock = db.StockLists.ToList(); return(View("Index")); }
public StockSummary ReadStockAnalysis(string symbol) { if (StockConn.ConnectionString == String.Empty) { StockConn = new SqlConnection(Conn); } string query = "SELECT * FROM [Stock].[dbo].[StockAnalysis] WHERE [symbol] = @symbol"; StockConn.Open(); SqlCommand cmd = new SqlCommand(query, StockConn); cmd.Parameters.Add("@symbol", System.Data.SqlDbType.Char); // set values to parameters from textboxes cmd.Parameters["@symbol"].Value = symbol; using (System.Data.SqlClient.SqlDataReader oReader = cmd.ExecuteReader()) { StockSummary summary = new StockSummary(); summary.Symbol = symbol; if (oReader.HasRows) { while (oReader.Read()) { var parsed = JObject.Parse(oReader["patternData"].ToString()); var r = parsed["boundaries"].ToString(); r = r.Substring(1, r.Length - 2); string[] r1 = r.Split(','); double[] re = new double[4] { double.Parse(r1[0]), double.Parse(r1[1]), double.Parse(r1[2]), double.Parse(r1[3]) }; summary.SerializedProperties = new Dictionary <string, object>(); summary.SerializedProperties.Add("boundaries", re); summary.CacheData.Add("fail", false); summary.LastUpdate = oReader.GetDateTime(8); } } else { summary.CacheData.Add("fail", true); } StockConn.Close(); return(summary); } }
private void AddStockMajorDataToStockSummary(ref StockSummary result) { string req = GeneralTools.NetworkRequestStringBuilder(result.Symbol, Constant.DAILY, Constant.QUERY_FUNCTION_VALUE_DAILY, string.Empty, string.Empty, _apiKey[0]); var stockData = OriginalStockData(req); var dataPoints = stockData[Constant.DAILYCHART]; List <StockPoint> points = new List <StockPoint>(); foreach (JProperty point in dataPoints.OfType <JProperty>()) { StockPoint tmp = new StockPoint(); tmp.Date = point.Name.ToString(); tmp.OpenPrice = GeneralTools.StringParser(point.Value[Constant.OPENPRICE].ToString()); tmp.ClosePrice = GeneralTools.StringParser(point.Value[Constant.CLOSEPRICE].ToString()); tmp.HighPrice = GeneralTools.StringParser(point.Value[Constant.HIGHPRICE].ToString()); tmp.LowPrice = GeneralTools.StringParser(point.Value[Constant.LOWPRICE].ToString()); tmp.Volume = Int32.Parse(point.Value[Constant.VOLUME].ToString()); points.Add(tmp); } result.CacheData.Add(Constant.DAILYCHART, points); }
private void LoadStockTab() { int selectedEntryID = -1; if (gridStock.SelectedRows.Count > 0) { selectedEntryID = ((StockSummary)gridStock.SelectedRows[0].Tag).ItemID; } DataGridManager.AddDataGridEntries <StockSummary>(gridStock, ComplexQueries.GetStockSummary(), true, new Action <DataGridViewRow>( (DataGridViewRow row) => { StockSummary sum = (StockSummary)row.Tag; if (selectedEntryID != -1 && sum.ItemID == selectedEntryID) { row.Selected = true; } } )); }
public async Task <JsonResult> Create(string ticker) { var user_id = User.Identity.GetUserId(); StockSummary models = new StockSummary(); if (!String.IsNullOrEmpty(ticker)) { models = await GetStockQuote(ticker); } UserStock userStock = new UserStock() { user_Id = user_id, ticker = ticker, Change = models.Change, ChangePercent = models.ChangePercent }; db.UserStocks.Add(userStock); db.SaveChanges(); return(Json(userStock)); }
private Path [] GetTrendLineChartPath(double xmin, double ymin, double ymax, double stepX, double stepY, double lowVal, double highVal, int strokeThickness, SolidColorBrush color, bool isDash) { StockSummary summary = sqlReader.ReadStockAnalysis("ACB"); if ((bool)summary.CacheData["fail"]) { return(null); } double[] boundaries = summary.SerializedProperties["boundaries"] as double[]; var summaryDate = summary.LastUpdate; int index = 0; var points = stockData.Charts[Constant.ChartMapper[type]]; foreach (var point in points) { var tmp = point.Date.Split('-'); if (Int16.Parse(tmp[0]) == summaryDate.Year && Int16.Parse(tmp[1]) == summaryDate.Month && Int16.Parse(tmp[2]) == summaryDate.Day) { break; } index++; } int indexH = 100 - (index + (int)boundaries[1] + 60); // the start x axis point we draw the line double startHigh = points.ElementAt(index + (int)boundaries[1]).HighPrice + 60 * boundaries[0]; int indexL = 100 - (index + (int)boundaries[3] + 60); // the start x axis point we draw the line double startLow = points.ElementAt(index + (int)boundaries[3]).LowPrice + 60 * boundaries[2]; List <double> valH = new List <double>(); List <double> valL = new List <double>(); for (int i = 0; i < 100; i++) { valH.Add(startHigh - boundaries[0] * i); valL.Add(startLow - boundaries[2] * i); } valH.Reverse(); valL.Reverse(); return(new Path[] { BuilderTools.LineChart(xmin, ymin, ymax, stepX, stepY, valH, indexH, lowVal, highVal, strokeThickness, color, false), BuilderTools.LineChart(xmin, ymin, ymax, stepX, stepY, valL, indexL, lowVal, highVal, strokeThickness, color, false) }); }
static void Main(string[] args) { Utils.WriteLine(ConsoleColor.Cyan,"Finance.Web.Example"); HtmlWeb htmlWeb = new HtmlWeb(); List<string> companyTickerSymbolsWeb = new List<string>() { @"NASDAQ:GOOG", @"NASDAQ:CSCO", @"NYSE:HTZ", @"NYSE:MMM", @"NYSE:ACE", @"NYSE:AGN", @"NYSE:AOC", @"NASDAQ:AMGN", @"NYSE:AIZ", //@"NYSE:HRB", // This symbol has & symbols which makes the parsing explode. @"NASDAQ:AAPL" }; List<string> listingHistoricalPricesFiles = new List<string>() { @"C:\tmp\CSCO\HistoricalPrices.htm", @"C:\tmp\GOOG\HistoricalPrices.htm" }; List<string> listingStockSummaryFiles = new List<string>() { @"C:\tmp\CSCO\Summary.htm", @"C:\tmp\GOOG\Summary.htm" }; List<string> listingStockFinancialStatementsFiles = new List<string>() { @"C:\tmp\CSCO\Financials.htm", @"C:\tmp\GOOG\Financials.htm" }; List<string> listingCompanyNewsFiles = new List<string>() { @"C:\tmp\CSCO\News.htm", @"C:\tmp\GOOG\News.htm" }; #region Loading Financials from the file system. foreach (var file in listingStockFinancialStatementsFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); StockFinancials stockFinancials = new StockFinancials(document); Utils.WriteLine(ConsoleColor.Cyan, "{0} Cash Flows", file); foreach (var item in stockFinancials.CashFlowAnnualData.CashFlowValuesDatabase) { Utils.WriteLine(ConsoleColor.Red, "{0}", item.Key); item.Value.ForEach(p => Utils.WriteLine(ConsoleColor.Magenta, "{0}={1}={2} , ", p.Date, p.MemeberElementName, p.Value)); } } #endregion #region Loading historical prices from file system. foreach (var file in listingHistoricalPricesFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); HistoricalPrices historicalPrices = new HistoricalPrices(document); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); //System.Threading.Thread.Sleep(1000); } #endregion #region Loading company news from file system. foreach (var file in listingCompanyNewsFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); CompanyNews companyNews = new CompanyNews(document); companyNews.NewsItems.ForEach(p => { Utils.WriteLine(ConsoleColor.Red, "=================================="); Utils.WriteLine(ConsoleColor.Cyan, "Title={0}", p.Title); Utils.WriteLine(ConsoleColor.Cyan, "Snapshot={0}", p.Snapshot); Utils.WriteLine(ConsoleColor.Cyan, "Source={0}", p.Source); Utils.WriteLine(ConsoleColor.Cyan, "NewsLink={0}", p.NewsLink); p.RelatedNewsLinks.ForEach(g => { Utils.WriteLine(ConsoleColor.Green, "RelatedNewsLinks.AbsoluteUri={0}", g.AbsoluteUri); }); Utils.WriteLine(ConsoleColor.Red, "=================================="); }); } #endregion #region Loading stock summary from file system. foreach (var file in listingStockSummaryFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); StockSummary stockSummary = new StockSummary(document); Utils.WriteLine(ConsoleColor.Cyan, "RefernceId : " + stockSummary.RefernceId); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Text: " + stockSummary.CompanyNews.Text); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Link: " + stockSummary.CompanyNews.Link.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.CompanyDescription: " + stockSummary.CompanySection.CompanyDescriptsion); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.ExternalCompanyProfile.Text: " + stockSummary.CompanySection.ExternalCompanyProfile.Text); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.EternalCompanyProfile.Link: " + stockSummary.CompanySection.ExternalCompanyProfile.Link.ToString()); stockSummary.Mangement.ForEach(delegate(Mangement n) { Utils.WriteLine(ConsoleColor.Cyan, "Name: " + n.Name); Utils.WriteLine(ConsoleColor.Cyan, "Age : " + n.Age); Utils.WriteLine(ConsoleColor.Cyan, "Title : " + n.Title); Utils.WriteLine(ConsoleColor.Cyan, "ProfileLink : " + n.ProfileLink); Utils.WriteLine(ConsoleColor.Cyan, ""); }); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Text : " + stockSummary.Sector.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Link : " + stockSummary.Sector.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Text : " + stockSummary.Industry.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Link : " + stockSummary.Industry.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingPrice : " + stockSummary.ListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePrice : " + stockSummary.ListingChangePrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePricePercentage : {0}%", stockSummary.ListingChangePricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingPrice : " + stockSummary.ExtendedListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPrice : " + stockSummary.ExtendedChangeListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPricePercentage : " + stockSummary.ExtendedChangeListingPricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingTime : " + stockSummary.ExtendedListingTime); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.CompanyName : " + stockSummary.CompanyHeader.CompanyName); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingType : " + stockSummary.CompanyHeader.ListingType); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingSymbol : " + stockSummary.CompanyHeader.ListingSymbol); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Range : {0} ", stockSummary.Range.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.FiftyTwoWeek : {0} ", stockSummary.FiftyTwoWeek.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Open : {0} ", stockSummary.Open); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Volume : {0} ", stockSummary.Volume); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Average : {0} ", stockSummary.Average); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.MarketCapital : {0} ", stockSummary.MarketCapital); } #endregion #region Loading stock summary from web. foreach (var item in companyTickerSymbolsWeb) { string[] s = item.Split(new char[] { ':' }); StockSummary stockSummary = new StockSummary(s[1], s[0]); Utils.WriteLine(ConsoleColor.Cyan, "RefernceId : " + stockSummary.RefernceId); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Text: " + stockSummary.CompanyNews.Text); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Link: " + stockSummary.CompanyNews.Link.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.CompanyDescription: " + stockSummary.CompanySection.CompanyDescriptsion); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.ExternalCompanyProfile.Text: " + stockSummary.CompanySection.ExternalCompanyProfile.Text); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.EternalCompanyProfile.Link: " + stockSummary.CompanySection.ExternalCompanyProfile.Link.ToString()); stockSummary.Mangement.ForEach(delegate(Mangement n) { Utils.WriteLine(ConsoleColor.Cyan, "Name: " + n.Name); Utils.WriteLine(ConsoleColor.Cyan, "Age : " + n.Age); Utils.WriteLine(ConsoleColor.Cyan, "Title : " + n.Title); Utils.WriteLine(ConsoleColor.Cyan, "ProfileLink : " + n.ProfileLink); Utils.WriteLine(ConsoleColor.Cyan, ""); }); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Text : " + stockSummary.Sector.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Link : " + stockSummary.Sector.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Text : " + stockSummary.Industry.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Link : " + stockSummary.Industry.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingPrice : " + stockSummary.ListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePrice : " + stockSummary.ListingChangePrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePricePercentage : {0}%", stockSummary.ListingChangePricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingPrice : " + stockSummary.ExtendedListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPrice : " + stockSummary.ExtendedChangeListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPricePercentage : " + stockSummary.ExtendedChangeListingPricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingTime : " + stockSummary.ExtendedListingTime); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.CompanyName : " + stockSummary.CompanyHeader.CompanyName); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingType : " + stockSummary.CompanyHeader.ListingType); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingSymbol : " + stockSummary.CompanyHeader.ListingSymbol); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Range : {0} ", stockSummary.Range.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.FiftyTwoWeek : {0} ", stockSummary.FiftyTwoWeek.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Open : {0} ", stockSummary.Open); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Volume : {0} ", stockSummary.Volume); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Average : {0} ", stockSummary.Average); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.MarketCapital : {0} ", stockSummary.MarketCapital); } #endregion #region Loading company news from the web foreach (var item in companyTickerSymbolsWeb) { string[] s = item.Split(new char[] { ':' }); CompanyNews companyNews = new CompanyNews(s[1], s[0]); companyNews.NewsItems.ForEach(p => { Utils.WriteLine(ConsoleColor.Red, "=================================="); Utils.WriteLine(ConsoleColor.Cyan, "Title={0}", p.Title); Utils.WriteLine(ConsoleColor.Cyan, "Snapshot={0}", p.Snapshot); Utils.WriteLine(ConsoleColor.Cyan, "Source={0}", p.Source); Utils.WriteLine(ConsoleColor.Cyan, "NewsLink={0}", p.NewsLink); p.RelatedNewsLinks.ForEach(g => { Utils.WriteLine(ConsoleColor.Green, "RelatedNewsLinks.AbsoluteUri={0}", g.AbsoluteUri); }); Utils.WriteLine(ConsoleColor.Red, "=================================="); }); } #endregion #region Loading Financials from the web foreach (var stock in companyTickerSymbolsWeb) { string[] s = stock.Split(new char[] { ':' }); StockFinancials stockFinancials = new StockFinancials(s[1], s[0]); Utils.WriteLine(ConsoleColor.Cyan, "{0} Cash Flows", stock); foreach (var item in stockFinancials.CashFlowAnnualData.CashFlowValuesDatabase) { Utils.WriteLine(ConsoleColor.Red, "{0}", item.Key); item.Value.ForEach(p => Utils.WriteLine(ConsoleColor.Magenta, "{0}={1}={2} , ", p.Date, p.MemeberElementName, p.Value)); } } #endregion //throw new Exception("Still working on making it this far."); #region Loading historical prices from the web foreach (var item in companyTickerSymbolsWeb) { string[] s = item.Split(new char[] { ':' }); HistoricalPrices historicalPrices = new HistoricalPrices(s[1], s[0]); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); s = item.Split(new char[] { ':' }); historicalPrices = new HistoricalPrices(s[1], s[0]); historicalPrices.Refresh(new DateRange(new DateTime(2007, 1, 1), new DateTime(2009, 1, 1)), 1, HistoricalPeriod.Weekly, 200); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); s = item.Split(new char[] { ':' }); historicalPrices = new HistoricalPrices(s[1], s[0]); historicalPrices.Refresh(new DateRange(new DateTime(2005, 2, 23), new DateTime(2008, 6, 3)), 1, HistoricalPeriod.Daily, 200); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); } #endregion #region Loading from the web. foreach (var item in companyTickerSymbolsWeb) { HtmlDocument document = htmlWeb.Load(googleStockQuery + item); #region StockSummary Example StockSummary stockSummary = new StockSummary(document); Utils.WriteLine(ConsoleColor.Cyan, "RefernceId : " + stockSummary.RefernceId); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Text: " + stockSummary.CompanyNews.Text); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Link: " + stockSummary.CompanyNews.Link.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.CompanyDescription: " + stockSummary.CompanySection.CompanyDescriptsion); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.ExternalCompanyProfile.Text: " + stockSummary.CompanySection.ExternalCompanyProfile.Text); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.EternalCompanyProfile.Link: " + stockSummary.CompanySection.ExternalCompanyProfile.Link.ToString()); stockSummary.Mangement.ForEach(delegate(Mangement n) { Utils.WriteLine(ConsoleColor.Cyan, "Name: " + n.Name); Utils.WriteLine(ConsoleColor.Cyan, "Age : " + n.Age); Utils.WriteLine(ConsoleColor.Cyan, "Title : " + n.Title); Utils.WriteLine(ConsoleColor.Cyan, "ProfileLink : " + n.ProfileLink); Utils.WriteLine(ConsoleColor.Cyan, ""); }); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Text : " + stockSummary.Sector.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Link : " + stockSummary.Sector.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Text : " + stockSummary.Industry.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Link : " + stockSummary.Industry.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingPrice : " + stockSummary.ListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePrice : " + stockSummary.ListingChangePrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePricePercentage : {0}%", stockSummary.ListingChangePricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingPrice : " + stockSummary.ExtendedListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPrice : " + stockSummary.ExtendedChangeListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPricePercentage : " + stockSummary.ExtendedChangeListingPricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingTime : " + stockSummary.ExtendedListingTime); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.CompanyName : " + stockSummary.CompanyHeader.CompanyName); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingType : " + stockSummary.CompanyHeader.ListingType); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingSymbol : " + stockSummary.CompanyHeader.ListingSymbol); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Range : {0} ", stockSummary.Range.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.FiftyTwoWeek : {0} ", stockSummary.FiftyTwoWeek.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Open : {0} ", stockSummary.Open); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Volume : {0} ", stockSummary.Volume); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Average : {0} ", stockSummary.Average); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.MarketCapital : {0} ", stockSummary.MarketCapital); try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.P_E : {0} ", stockSummary.P_E); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.P_E : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Dividend : {0}", stockSummary.Dividend); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Dividend : {0}", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Yield : {0} ", stockSummary.Yield); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Yield : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.EPS : {0} ", stockSummary.EPS); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.EPS : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Shares : {0} ", stockSummary.Shares); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Shares : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Beta : {0} ", stockSummary.Beta); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Beta : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.InterestOwned : {0} %", stockSummary.InterestOwned); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.InterestOwned : {0} %", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.HomePage : {0} ", stockSummary.HomePage.ToString()); #endregion #region HistoricalPrices Example document = htmlWeb.Load(googleStockQueryHistoricalPrices + item); HistoricalPrices historicalPrices = new HistoricalPrices(document); #endregion #region RelatedCompanies Example document = htmlWeb.Load(googleStockQueryRelatedCompanies + item); RelatedCompanies relatedCompanies = new RelatedCompanies(document); #endregion #region StockFinancials Example document = htmlWeb.Load(googleStockQueryFinancials + item); StockFinancials stockFinancials = new StockFinancials(document); #endregion #region StockNews Example document = htmlWeb.Load(googleStockQueryCompanyNews + item); CompanyNews stockNews = new CompanyNews(document); #endregion //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); } #endregion Utils.WriteLine(ConsoleColor.Red, "Press <Enter> to Exit ..."); Console.ReadLine(); }
public StockScannerAgent(List <string> stockList, NetworkDataReader reader, SqlDataReader sqlReader) { StockList = stockList; _reader = reader; _sqlReader = sqlReader; _source = new CancellationTokenSource(); var token = _source.Token; Scanner = new Task(() => { int i = 0; while (i < _initialSleep) { i++; System.Threading.Thread.Sleep(1000); Console.WriteLine("Currently sleep, give resource to other threads, " + i + " seconds left"); } Console.WriteLine("The current List contains " + stockList.Count + " stocks"); i = 0; while (true) { if (stockList.Count <= 0) { break; } if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } int status = 1; //sqlReader.IsStockAnalysedRecently(stockList[i]); switch (status) { case 0: // database has no record, need to insert { StockSummary tmp = _reader.FetchStockTrendSummaryObject(stockList[i]); GeneralTools.AnalyseStockTrend(ref tmp); GeneralTools.AnalyseStockTrendLine(ref tmp); _sqlReader.UpdateStockAnalysis(tmp, 0); Console.WriteLine("Stock " + stockList[i] + " inserted!"); break; } case 1: // database needs to update { StockSummary tmp = _reader.FetchStockTrendSummaryObject(stockList[i]); GeneralTools.AnalyseStockTrend(ref tmp); GeneralTools.AnalyseStockTrendLine(ref tmp); _sqlReader.UpdateStockAnalysis(tmp, 1); Console.WriteLine("Stock " + stockList[i] + " updated!"); break; } case 2: { Console.WriteLine("Stock " + stockList[i] + " up to date!"); break; } default: break; } Console.WriteLine("current scanned stock: " + stockList[i]); i++; if (i == stockList.Count) { i = 0; } System.Threading.Thread.Sleep(_scanInterval * 1000); } }, _source.Token); Start(); }
static void Main(string[] args) { Utils.WriteLine(ConsoleColor.Cyan, "Finance.Web.Example"); HtmlWeb htmlWeb = new HtmlWeb(); List <string> companyTickerSymbolsWeb = new List <string>() { @"NASDAQ:GOOG", @"NASDAQ:CSCO", @"NYSE:HTZ", @"NYSE:MMM", @"NYSE:ACE", @"NYSE:AGN", @"NYSE:AOC", @"NASDAQ:AMGN", @"NYSE:AIZ", //@"NYSE:HRB", // This symbol has & symbols which makes the parsing explode. @"NASDAQ:AAPL" }; List <string> listingHistoricalPricesFiles = new List <string>() { @"C:\tmp\CSCO\HistoricalPrices.htm", @"C:\tmp\GOOG\HistoricalPrices.htm" }; List <string> listingStockSummaryFiles = new List <string>() { @"C:\tmp\CSCO\Summary.htm", @"C:\tmp\GOOG\Summary.htm" }; List <string> listingStockFinancialStatementsFiles = new List <string>() { @"C:\tmp\CSCO\Financials.htm", @"C:\tmp\GOOG\Financials.htm" }; List <string> listingCompanyNewsFiles = new List <string>() { @"C:\tmp\CSCO\News.htm", @"C:\tmp\GOOG\News.htm" }; #region Loading Financials from the file system. foreach (var file in listingStockFinancialStatementsFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); StockFinancials stockFinancials = new StockFinancials(document); Utils.WriteLine(ConsoleColor.Cyan, "{0} Cash Flows", file); foreach (var item in stockFinancials.CashFlowAnnualData.CashFlowValuesDatabase) { Utils.WriteLine(ConsoleColor.Red, "{0}", item.Key); item.Value.ForEach(p => Utils.WriteLine(ConsoleColor.Magenta, "{0}={1}={2} , ", p.Date, p.MemeberElementName, p.Value)); } } #endregion #region Loading historical prices from file system. foreach (var file in listingHistoricalPricesFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); HistoricalPrices historicalPrices = new HistoricalPrices(document); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); //System.Threading.Thread.Sleep(1000); } #endregion #region Loading company news from file system. foreach (var file in listingCompanyNewsFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); CompanyNews companyNews = new CompanyNews(document); companyNews.NewsItems.ForEach(p => { Utils.WriteLine(ConsoleColor.Red, "=================================="); Utils.WriteLine(ConsoleColor.Cyan, "Title={0}", p.Title); Utils.WriteLine(ConsoleColor.Cyan, "Snapshot={0}", p.Snapshot); Utils.WriteLine(ConsoleColor.Cyan, "Source={0}", p.Source); Utils.WriteLine(ConsoleColor.Cyan, "NewsLink={0}", p.NewsLink); p.RelatedNewsLinks.ForEach(g => { Utils.WriteLine(ConsoleColor.Green, "RelatedNewsLinks.AbsoluteUri={0}", g.AbsoluteUri); }); Utils.WriteLine(ConsoleColor.Red, "=================================="); }); } #endregion #region Loading stock summary from file system. foreach (var file in listingStockSummaryFiles) { HtmlDocument document = new HtmlDocument(); document.Load(file); StockSummary stockSummary = new StockSummary(document); Utils.WriteLine(ConsoleColor.Cyan, "RefernceId : " + stockSummary.RefernceId); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Text: " + stockSummary.CompanyNews.Text); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Link: " + stockSummary.CompanyNews.Link.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.CompanyDescription: " + stockSummary.CompanySection.CompanyDescriptsion); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.ExternalCompanyProfile.Text: " + stockSummary.CompanySection.ExternalCompanyProfile.Text); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.EternalCompanyProfile.Link: " + stockSummary.CompanySection.ExternalCompanyProfile.Link.ToString()); stockSummary.Mangement.ForEach(delegate(Mangement n) { Utils.WriteLine(ConsoleColor.Cyan, "Name: " + n.Name); Utils.WriteLine(ConsoleColor.Cyan, "Age : " + n.Age); Utils.WriteLine(ConsoleColor.Cyan, "Title : " + n.Title); Utils.WriteLine(ConsoleColor.Cyan, "ProfileLink : " + n.ProfileLink); Utils.WriteLine(ConsoleColor.Cyan, ""); }); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Text : " + stockSummary.Sector.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Link : " + stockSummary.Sector.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Text : " + stockSummary.Industry.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Link : " + stockSummary.Industry.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingPrice : " + stockSummary.ListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePrice : " + stockSummary.ListingChangePrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePricePercentage : {0}%", stockSummary.ListingChangePricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingPrice : " + stockSummary.ExtendedListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPrice : " + stockSummary.ExtendedChangeListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPricePercentage : " + stockSummary.ExtendedChangeListingPricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingTime : " + stockSummary.ExtendedListingTime); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.CompanyName : " + stockSummary.CompanyHeader.CompanyName); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingType : " + stockSummary.CompanyHeader.ListingType); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingSymbol : " + stockSummary.CompanyHeader.ListingSymbol); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Range : {0} ", stockSummary.Range.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.FiftyTwoWeek : {0} ", stockSummary.FiftyTwoWeek.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Open : {0} ", stockSummary.Open); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Volume : {0} ", stockSummary.Volume); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Average : {0} ", stockSummary.Average); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.MarketCapital : {0} ", stockSummary.MarketCapital); } #endregion #region Loading stock summary from web. foreach (var item in companyTickerSymbolsWeb) { string[] s = item.Split(new char[] { ':' }); StockSummary stockSummary = new StockSummary(s[1], s[0]); Utils.WriteLine(ConsoleColor.Cyan, "RefernceId : " + stockSummary.RefernceId); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Text: " + stockSummary.CompanyNews.Text); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Link: " + stockSummary.CompanyNews.Link.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.CompanyDescription: " + stockSummary.CompanySection.CompanyDescriptsion); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.ExternalCompanyProfile.Text: " + stockSummary.CompanySection.ExternalCompanyProfile.Text); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.EternalCompanyProfile.Link: " + stockSummary.CompanySection.ExternalCompanyProfile.Link.ToString()); stockSummary.Mangement.ForEach(delegate(Mangement n) { Utils.WriteLine(ConsoleColor.Cyan, "Name: " + n.Name); Utils.WriteLine(ConsoleColor.Cyan, "Age : " + n.Age); Utils.WriteLine(ConsoleColor.Cyan, "Title : " + n.Title); Utils.WriteLine(ConsoleColor.Cyan, "ProfileLink : " + n.ProfileLink); Utils.WriteLine(ConsoleColor.Cyan, ""); }); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Text : " + stockSummary.Sector.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Link : " + stockSummary.Sector.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Text : " + stockSummary.Industry.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Link : " + stockSummary.Industry.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingPrice : " + stockSummary.ListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePrice : " + stockSummary.ListingChangePrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePricePercentage : {0}%", stockSummary.ListingChangePricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingPrice : " + stockSummary.ExtendedListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPrice : " + stockSummary.ExtendedChangeListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPricePercentage : " + stockSummary.ExtendedChangeListingPricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingTime : " + stockSummary.ExtendedListingTime); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.CompanyName : " + stockSummary.CompanyHeader.CompanyName); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingType : " + stockSummary.CompanyHeader.ListingType); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingSymbol : " + stockSummary.CompanyHeader.ListingSymbol); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Range : {0} ", stockSummary.Range.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.FiftyTwoWeek : {0} ", stockSummary.FiftyTwoWeek.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Open : {0} ", stockSummary.Open); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Volume : {0} ", stockSummary.Volume); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Average : {0} ", stockSummary.Average); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.MarketCapital : {0} ", stockSummary.MarketCapital); } #endregion #region Loading company news from the web foreach (var item in companyTickerSymbolsWeb) { string[] s = item.Split(new char[] { ':' }); CompanyNews companyNews = new CompanyNews(s[1], s[0]); companyNews.NewsItems.ForEach(p => { Utils.WriteLine(ConsoleColor.Red, "=================================="); Utils.WriteLine(ConsoleColor.Cyan, "Title={0}", p.Title); Utils.WriteLine(ConsoleColor.Cyan, "Snapshot={0}", p.Snapshot); Utils.WriteLine(ConsoleColor.Cyan, "Source={0}", p.Source); Utils.WriteLine(ConsoleColor.Cyan, "NewsLink={0}", p.NewsLink); p.RelatedNewsLinks.ForEach(g => { Utils.WriteLine(ConsoleColor.Green, "RelatedNewsLinks.AbsoluteUri={0}", g.AbsoluteUri); }); Utils.WriteLine(ConsoleColor.Red, "=================================="); }); } #endregion #region Loading Financials from the web foreach (var stock in companyTickerSymbolsWeb) { string[] s = stock.Split(new char[] { ':' }); StockFinancials stockFinancials = new StockFinancials(s[1], s[0]); Utils.WriteLine(ConsoleColor.Cyan, "{0} Cash Flows", stock); foreach (var item in stockFinancials.CashFlowAnnualData.CashFlowValuesDatabase) { Utils.WriteLine(ConsoleColor.Red, "{0}", item.Key); item.Value.ForEach(p => Utils.WriteLine(ConsoleColor.Magenta, "{0}={1}={2} , ", p.Date, p.MemeberElementName, p.Value)); } } #endregion //throw new Exception("Still working on making it this far."); #region Loading historical prices from the web foreach (var item in companyTickerSymbolsWeb) { string[] s = item.Split(new char[] { ':' }); HistoricalPrices historicalPrices = new HistoricalPrices(s[1], s[0]); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); s = item.Split(new char[] { ':' }); historicalPrices = new HistoricalPrices(s[1], s[0]); historicalPrices.Refresh(new DateRange(new DateTime(2007, 1, 1), new DateTime(2009, 1, 1)), 1, HistoricalPeriod.Weekly, 200); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); s = item.Split(new char[] { ':' }); historicalPrices = new HistoricalPrices(s[1], s[0]); historicalPrices.Refresh(new DateRange(new DateTime(2005, 2, 23), new DateTime(2008, 6, 3)), 1, HistoricalPeriod.Daily, 200); historicalPrices.Prices.ForEach(p => { Utils.WriteLine(ConsoleColor.Cyan, "{0}", historicalPrices.Name); Utils.WriteLine(ConsoleColor.Cyan, "Description={0}", historicalPrices.Description); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); Utils.WriteLine(ConsoleColor.Blue, "Date={0}", p.Date); Utils.WriteLine(ConsoleColor.Blue, "Open={0}", p.Open); Utils.WriteLine(ConsoleColor.Blue, "Low={0}", p.Low); Utils.WriteLine(ConsoleColor.Blue, "High={0}", p.High); Utils.WriteLine(ConsoleColor.Blue, "Close={0}", p.Close); Utils.WriteLine(ConsoleColor.Blue, "Volume={0}", p.Volume); Utils.WriteLine(ConsoleColor.Cyan, "=================================="); }); //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); } #endregion #region Loading from the web. foreach (var item in companyTickerSymbolsWeb) { HtmlDocument document = htmlWeb.Load(googleStockQuery + item); #region StockSummary Example StockSummary stockSummary = new StockSummary(document); Utils.WriteLine(ConsoleColor.Cyan, "RefernceId : " + stockSummary.RefernceId); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Text: " + stockSummary.CompanyNews.Text); Utils.WriteLine(ConsoleColor.Cyan, "Company News.Link: " + stockSummary.CompanyNews.Link.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.CompanyDescription: " + stockSummary.CompanySection.CompanyDescriptsion); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.ExternalCompanyProfile.Text: " + stockSummary.CompanySection.ExternalCompanyProfile.Text); Utils.WriteLine(ConsoleColor.Cyan, "CompanySection.EternalCompanyProfile.Link: " + stockSummary.CompanySection.ExternalCompanyProfile.Link.ToString()); stockSummary.Mangement.ForEach(delegate(Mangement n) { Utils.WriteLine(ConsoleColor.Cyan, "Name: " + n.Name); Utils.WriteLine(ConsoleColor.Cyan, "Age : " + n.Age); Utils.WriteLine(ConsoleColor.Cyan, "Title : " + n.Title); Utils.WriteLine(ConsoleColor.Cyan, "ProfileLink : " + n.ProfileLink); Utils.WriteLine(ConsoleColor.Cyan, ""); }); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Text : " + stockSummary.Sector.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Sector.Link : " + stockSummary.Sector.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Text : " + stockSummary.Industry.Text); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Industry.Link : " + stockSummary.Industry.Link); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingPrice : " + stockSummary.ListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePrice : " + stockSummary.ListingChangePrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ListingChangePricePercentage : {0}%", stockSummary.ListingChangePricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingPrice : " + stockSummary.ExtendedListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPrice : " + stockSummary.ExtendedChangeListingPrice); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedChangeListingPricePercentage : " + stockSummary.ExtendedChangeListingPricePercentage); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.ExtendedListingTime : " + stockSummary.ExtendedListingTime); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.CompanyName : " + stockSummary.CompanyHeader.CompanyName); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingType : " + stockSummary.CompanyHeader.ListingType); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.CompanyHeader.ListingSymbol : " + stockSummary.CompanyHeader.ListingSymbol); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Range : {0} ", stockSummary.Range.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.FiftyTwoWeek : {0} ", stockSummary.FiftyTwoWeek.ToString()); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Open : {0} ", stockSummary.Open); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Volume : {0} ", stockSummary.Volume); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Average : {0} ", stockSummary.Average); Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.MarketCapital : {0} ", stockSummary.MarketCapital); try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.P_E : {0} ", stockSummary.P_E); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.P_E : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Dividend : {0}", stockSummary.Dividend); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Dividend : {0}", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Yield : {0} ", stockSummary.Yield); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Yield : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.EPS : {0} ", stockSummary.EPS); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.EPS : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Shares : {0} ", stockSummary.Shares); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Shares : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.Beta : {0} ", stockSummary.Beta); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.Beta : {0} ", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } try { Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.InterestOwned : {0} %", stockSummary.InterestOwned); } catch (DataNotAvailable ex) { Utils.WriteLine(ConsoleColor.Red, "stockSummary.InterestOwned : {0} %", "-"); Utils.WriteLine(ConsoleColor.DarkMagenta, ex.PotentialReason); } Utils.WriteLine(ConsoleColor.Cyan, "stockSummary.HomePage : {0} ", stockSummary.HomePage.ToString()); #endregion #region HistoricalPrices Example document = htmlWeb.Load(googleStockQueryHistoricalPrices + item); HistoricalPrices historicalPrices = new HistoricalPrices(document); #endregion #region RelatedCompanies Example document = htmlWeb.Load(googleStockQueryRelatedCompanies + item); RelatedCompanies relatedCompanies = new RelatedCompanies(document); #endregion #region StockFinancials Example document = htmlWeb.Load(googleStockQueryFinancials + item); StockFinancials stockFinancials = new StockFinancials(document); #endregion #region StockNews Example document = htmlWeb.Load(googleStockQueryCompanyNews + item); CompanyNews stockNews = new CompanyNews(document); #endregion //Console.WriteLine("Press <Enter> ..."); //Console.ReadLine(); } #endregion Utils.WriteLine(ConsoleColor.Red, "Press <Enter> to Exit ..."); Console.ReadLine(); }