public static void Go() { var dict_fiidToAuctionID = new Dictionary<int, int>(); { string sql = "select * from FIBondAuction"; DataSet ds = Singleton<ConnMngr>.Instance.Execute(DBNames.SQLSERVER_SYMMETRYTS, sql); foreach (DataRow row in ds.Tables[0].Rows) if(!dict_fiidToAuctionID.ContainsKey(Convert.ToInt32(row["FIID"]))) dict_fiidToAuctionID.Add(Convert.ToInt32(row["FIID"]), Convert.ToInt32(row["FIBondAuctionID"])); } var dict_isinToMissingBond = new Dictionary<string, Bond>(); var rss_identifiers = new List<InstrumentIdentifier>(); foreach (var bond in Singleton<Bonds>.Instance.Where(x => x.SymmetryCode.StartsWith("US912828"))) { if (!dict_fiidToAuctionID.ContainsKey(bond.FIID)) { dict_isinToMissingBond.Add(bond.SymmetryCode, bond); rss_identifiers.Add(new InstrumentIdentifier { IdentifierType = "ISN", IdentifierValue = bond.SymmetryCode, Source="TWB"}); Logger.Debug(string.Format("{0}/{1} is missing auction information", bond.SymmetryCode, bond.DisplayName), typeof(UpdateBondAuctionData)); } } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3; if (rss_identifiers.Count() == 0) return; // nothing to do try { var cred = ServiceHelpers.GetCredentials(); { using (var dsClient = new ExtractionServiceClient()) { var validatedInstruments = ServiceHelpers.ValidateInstruments(rss_identifiers.ToArray(), dsClient, ref cred); { var request = new ExtractRequest { CredentialsHeader = cred, request = new InstrumentExtractionRequestTermsAndConditions { Instruments = validatedInstruments, OutputFields = Enum.GetNames(typeof(FieldsToReturn)) .Select(x => typeof(FieldsToReturn).GetField(x.ToString())) .Select(x => x.GetCustomAttribute<RSSFieldAttribute>().FieldName).ToArray() } }; var response = dsClient.Extract(request); var pivoted = ExtractionUtility.PivotExtractionResult(response.ExtractResult.Columns, response.ExtractResult.RowCount, response.ExtractResult.Messages); StringBuilder b = new StringBuilder(); b.AppendLine(ServiceHelpers.ToCsvLine(pivoted.ColumnNames.Concat(new [] {"FIID"}))); foreach (var row in pivoted.Rows) { string isin = row[(int)FieldsToReturn.InstrumentID] as string; b.AppendLine(ServiceHelpers.ToCsvLine(row.Concat(new string[] { dict_isinToMissingBond[isin].FIID.ToString() }))); } var path = @"e:\temp\missingAuctions.csv"; FileInfo i = new FileInfo(path); StreamWriter writer = i.CreateText(); writer.Write(b.ToString()); writer.Close(); } } } } catch (Exception ex_) { Logger.Error("blast", typeof(UpdateCTBondData), ex_); } }
public static void Go() { var ctList = SI.Strategy.CTDs.Generator.Go(); var listOfMissing = new List<MonthYear>(); foreach (var v in ctList) { if (v.CT2 == null || v.CT3 == null || v.CT5 == null || v.CT7 == null || v.CT10 == null || v.CT30 == null) if (!listOfMissing.Contains(v.RefundingMonth)) { Logger.Debug(string.Format("Missing bonds for {0}", v.RefundingMonth), typeof(UpdateCTBondData)); listOfMissing.Add(v.RefundingMonth); } } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3; try { var cred = ServiceHelpers.GetCredentials(); using (var dc = SymmetryDataSource.ReadOnly()) { using (var dsClient = new ExtractionServiceClient()) { var isins = new Dictionary<string, ValidatedInstrument>(); foreach (var v in listOfMissing) { var request = new SearchInstrumentsRequest { CredentialsHeader = cred, request = new InstrumentSearchRequestGovCorp { IdentifierType = "ISN", IdentifierSearchValue = "US9128*", PreferredIdentifierType = "ISN", IsGovernmentGroup = true, IssueDatePrimaryValue = new DateTime(v.Year, v.Month, 3), IssueDateSecondaryValue = new DateTime(v.Year, v.Month, 25), IssueDateComparisonOperator = "FROM", } }; var response = dsClient.SearchInstruments(request); Array.ForEach(response.SearchInstrumentsResult.Instruments.Select(x => x.IdentifierValue).Distinct().ToArray(), (x) => Logger.Debug(x, typeof(UpdateCTBondData))); foreach (var validatedInstrument in response.SearchInstrumentsResult.Instruments) { var isin = validatedInstrument.IdentifierValue; if (isins.ContainsKey(isin)) { if (validatedInstrument.Source.Equals("TWB")) isins[isin] = validatedInstrument; continue; } var fi = FIHelpers.GetFIBySymmetryCode(isin, dc, Symmetry.Core.ThrowBehavior.DontThrow); if (fi == null) isins.Add(isin, validatedInstrument); } } if (isins.Count == 0) return; { var request = new ExtractRequest { CredentialsHeader = cred, request = new InstrumentExtractionRequestTermsAndConditions { Instruments = isins.ToList().Select(x => x.Value).ToArray(), OutputFields = Enum.GetNames(typeof(FieldsToReturn)) .Select(x => typeof(FieldsToReturn).GetField(x.ToString())) .Select(x => x.GetCustomAttribute<RSSFieldAttribute>().FieldName).ToArray() } }; var response = dsClient.Extract(request); var pivoted = ExtractionUtility.PivotExtractionResult(response.ExtractResult.Columns, response.ExtractResult.RowCount, response.ExtractResult.Messages); StringBuilder b = new StringBuilder(); b.AppendLine(ServiceHelpers.ToCsvLine(pivoted.ColumnNames)); foreach (var row in pivoted.Rows) { b.AppendLine(ServiceHelpers.ToCsvLine(row)); } var path = @"e:\temp\missingBonds.csv"; FileInfo i = new FileInfo(path); StreamWriter writer = i.CreateText(); writer.Write(b.ToString()); writer.Close(); } } } } catch (Exception ex_) { Logger.Error("blast", typeof(UpdateCTBondData), ex_); } }