diff --git a/MarketData/MarketDataLib/Helper/MarketDataHelper.cs b/MarketData/MarketDataLib/Helper/MarketDataHelper.cs
index 9e1f9a6..4475c89 100755
--- a/MarketData/MarketDataLib/Helper/MarketDataHelper.cs
+++ b/MarketData/MarketDataLib/Helper/MarketDataHelper.cs
@@ -173,115 +173,120 @@ namespace MarketData.Helper
MDTrace.WriteLine(LogLevel.DEBUG, String.Format("MarketData.GetPremarketData: Done, took {0}(ms)", profiler.End()));
}
}
-// ******************************************************************************************************************************************************************************
-// ************************************************************************** Z A C K S E A R N I N G S A N N O U N C E M E N T S *******************************************
-// ******************************************************************************************************************************************************************************
- public static EarningsAnnouncements GetEarningsAnnouncements(String symbol)
- {
- Profiler profiler = new Profiler();
- HttpNetResponse httpNetResponse=null;
- EarningsAnnouncements earningsAnnouncements=new EarningsAnnouncements();
- MemoryStream memoryStream=null;
- try
+ // ******************************************************************************************************************************************************************************
+ // ************************************************************************** Z A C K S E A R N I N G S A N N O U N C E M E N T S *******************************************
+ // ******************************************************************************************************************************************************************************
+ ///
+ /// This retrieves earnings announcements from Zacks Research and is used during the nighyly process.
+ ///
+ ///
+ ///
+ public static EarningsAnnouncements GetEarningsAnnouncements(String symbol)
{
- StringBuilder sb=new StringBuilder();
- sb.Append("https://www.zacks.com/stock/research/").Append(symbol).Append("/earnings-announcements");
- String strRequest=sb.ToString();
- httpNetResponse=HttpNetRequest.GetRequestNoEncodingV4(strRequest);
- if(!httpNetResponse.Success)
+ Profiler profiler = new Profiler();
+ HttpNetResponse httpNetResponse = null;
+ EarningsAnnouncements earningsAnnouncements = new EarningsAnnouncements();
+ MemoryStream memoryStream = null;
+ try
{
- MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Request:{0} failed with status {1}",httpNetResponse.Request,httpNetResponse.StatusCode));
- return null;
- }
- String responseString=httpNetResponse.ResponseString;
-// get next earnings date
- byte[] streamBytes = Encoding.ASCII.GetBytes(httpNetResponse.ResponseString);
- memoryStream = new MemoryStream(streamBytes);
- HtmlDocument htmlDocument = new HtmlDocument();
- htmlDocument.Load(memoryStream);
- HtmlNodeCollection table = htmlDocument.DocumentNode.SelectNodes("//*[@class=\"key-expected-earnings-data-module\"]");
- if (null != table && 0 != table.Count)
- {
- HtmlNodeCollection rows = table[0].SelectNodes(".//tr");
- String[] requiredElements={"Report Date","Period Ending","Zacks Consensus Estimate","Earnings ESP"};
- if(2==rows.Count)
+ StringBuilder sb = new StringBuilder();
+ sb.Append("https://www.zacks.com/stock/research/").Append(symbol).Append("/earnings-announcements");
+ String strRequest = sb.ToString();
+ httpNetResponse = HttpNetRequest.GetRequestNoEncodingV4(strRequest);
+ if (!httpNetResponse.Success)
{
- HtmlNodeCollection headerColumns = rows[0].SelectNodes(".//th");
- if (null!=headerColumns && 0!=headerColumns.Count && HeaderContains(headerColumns,requiredElements))
+ MDTrace.WriteLine(LogLevel.DEBUG, String.Format("Request:{0} failed with status {1}", httpNetResponse.Request, httpNetResponse.StatusCode));
+ return null;
+ }
+ String responseString = httpNetResponse.ResponseString;
+ // get next earnings date
+ byte[] streamBytes = Encoding.ASCII.GetBytes(httpNetResponse.ResponseString);
+ memoryStream = new MemoryStream(streamBytes);
+ HtmlDocument htmlDocument = new HtmlDocument();
+ htmlDocument.Load(memoryStream);
+ HtmlNodeCollection table = htmlDocument.DocumentNode.SelectNodes("//*[@class=\"key-expected-earnings-data-module\"]");
+ if (null != table && 0 != table.Count)
+ {
+ HtmlNodeCollection rows = table[0].SelectNodes(".//tr");
+ String[] requiredElements = { "Report Date", "Period Ending", "Zacks Consensus Estimate", "Earnings ESP" };
+ if (2 == rows.Count)
{
- HtmlNodeCollection dataColumns = rows[1].ChildNodes;
- String[] reportElements=dataColumns[1].InnerText.Split(' ');
- String reportDate=reportElements[0];
- if(!"NA".Equals(reportDate))
+ HtmlNodeCollection headerColumns = rows[0].SelectNodes(".//th");
+ if (null != headerColumns && 0 != headerColumns.Count && HeaderContains(headerColumns, requiredElements))
{
- String[] formats=new[] {"MM/yyyy","M/yyyy"};
- String periodEnding=dataColumns[3].InnerText;
- EarningsAnnouncement earningsAnnouncement=new EarningsAnnouncement();
- earningsAnnouncement.Symbol=symbol;
- earningsAnnouncement.Date=Utility.ParseDate(reportDate);
- earningsAnnouncement.PeriodEnding=DateTime.ParseExact(periodEnding, formats, new System.Globalization.CultureInfo("en-US"),DateTimeStyles.AssumeLocal);
- if(reportElements[1].Equals("(AMC)"))earningsAnnouncement.Time="After Close";
- else if(reportElements[1].Equals("(NONE)"))earningsAnnouncement.Time="Before Open";
- else earningsAnnouncement.Time=reportElements[1];
- earningsAnnouncements.Add(earningsAnnouncement);
+ HtmlNodeCollection dataColumns = rows[1].ChildNodes;
+ String[] reportElements = dataColumns[1].InnerText.Split(' ');
+ String reportDate = reportElements[0];
+ if (!"NA".Equals(reportDate))
+ {
+ String[] formats = new[] { "MM/yyyy", "M/yyyy" };
+ String periodEnding = dataColumns[3].InnerText;
+ EarningsAnnouncement earningsAnnouncement = new EarningsAnnouncement();
+ earningsAnnouncement.Symbol = symbol;
+ earningsAnnouncement.Date = Utility.ParseDate(reportDate);
+ earningsAnnouncement.PeriodEnding = DateTime.ParseExact(periodEnding, formats, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal);
+ if (reportElements[1].Equals("(AMC)")) earningsAnnouncement.Time = "After Close";
+ else if (reportElements[1].Equals("(NONE)")) earningsAnnouncement.Time = "Before Open";
+ else earningsAnnouncement.Time = reportElements[1];
+ earningsAnnouncements.Add(earningsAnnouncement);
+ }
}
}
}
- }
-// get historical
- responseString=Utility.KeepAfter(responseString,"earnings_announcements_earnings_table");
- if(null==responseString)return null;
- responseString=Utility.KeepBefore(responseString,"] ]");
- if(null==responseString)return null;
- responseString=responseString+"]";
- responseString=Utility.KeepAfter(responseString,"[ [");
- if(null==responseString)return null;
- responseString="["+responseString;
- responseString=Utility.RemoveDivs(responseString);
- if(null==responseString)return null;
- String[] items=responseString.Split(']');
- for(int index=0;index