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_);
      }
    }
Esempio n. 2
0
    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_);
      }
    }