コード例 #1
0
ファイル: BdiHandler.cs プロジェクト: btebaldi/FeedImport
 public void CheckDate(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile)
 {
     if (bdiFile.Header.DataDoPregao != bdiConfig.RequestedDate)
     {
         throw new Exceptions.ArquivoInvalido("Data do arquivo nao confere com a data requisitada.");
     }
 }
コード例 #2
0
 private void BdiToDataTable(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile)
 {
     try
     {
         FillCotacoes(bdiFile);
         FillIndices(bdiFile);
     }
     catch (Exception ex)
     {
         logger.Error("Erro no processamento do arquivo bdi", ex);
         throw;
     }
 }
コード例 #3
0
        private void FillIndices(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile)
        {
            foreach (Tebaldi.BdiFeed.DataClass.State.BdiFile.IndiceState indice in bdiFile.Indices)
            {
                DataRow row = Data.NewRow();

                row["EXT_ID"]          = indice.NomeIndice;
                row["ProcessId"]       = Queue.Process.Id;
                row["AtivoId"]         = 0;
                row["DataPregao"]      = bdiFile.Header.DataDoPregao;
                row["NomeResumido"]    = indice.NomeIndice;
                row["EspecPapel"]      = "INDICE";
                row["Ticker"]          = indice.NomeIndice;
                row["TipoMercado"]     = 99;
                row["PrecoAbertura"]   = indice.IndiceAbertura;
                row["PrecoMaximo"]     = indice.IndiceMaximo;
                row["PrecoMedio"]      = indice.IndiceMedia;
                row["PrecoMinimo"]     = indice.IndiceMinimo;
                row["PrecoFechamento"] = indice.IndiceFechamento;
                row["Quantidade"]      = indice.QtdTitulosNegociadosIndice;
                row["TotalNegocios"]   = indice.NegociosComAcoesDoIndice;
                row["Volume"]          = indice.VolumeNegociosDoIndice;
                row["ISIN"]            = "";

                if (indice.OntemSinalEvolucao == "+")
                {
                    row["Variacao"] = indice.OntemEvolucaoPercentual;
                }
                else
                {
                    row["Variacao"] = -indice.OntemEvolucaoPercentual;
                }

                Data.Rows.Add(row);
            }
        }
コード例 #4
0
        public Tebaldi.BdiFeed.DataClass.State.BdiFileState ImportaBdi(bool dispose)
        {
            Tebaldi.BdiFeed.BdiHandler handler = new Tebaldi.BdiFeed.BdiHandler(config);

            Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile = new Tebaldi.BdiFeed.DataClass.State.BdiFileState();

            try
            {
                handler.DownloadBdiFile();
                handler.DecompressBdiZip();
                bdiFile = handler.ReadBdiFile();
                handler.CheckDate(bdiFile);
            }
            catch (System.Net.WebException ex)
            {
                System.Net.HttpWebResponse errorResponse = ex.Response as System.Net.HttpWebResponse;
                if (errorResponse.StatusCode == System.Net.HttpStatusCode.NotFound)
                {
                    logger.Info("QueueId: " + this.Queue.QueueId.ToString() + " - Erro no download do arquivo BDI Status Code: " + ex.Message);
                    throw new Exceptions.DownloadError404Exception();
                }
                else
                {
                    throw;
                }
            }
            finally
            {
                if (dispose)
                {
                    handler.Dispose();
                }
            }

            return(bdiFile);
        }
コード例 #5
0
        private void FillCotacoes(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile)
        {
            foreach (Tebaldi.BdiFeed.DataClass.State.BdiFile.CotacaoState cotacao in bdiFile.Cotacoes)
            {
                DataRow row = Data.NewRow();

                row["EXT_ID"]          = cotacao.Ticker;
                row["ProcessId"]       = Queue.Process.Id;
                row["AtivoId"]         = 0;
                row["DataPregao"]      = bdiFile.Header.DataDoPregao;
                row["NomeResumido"]    = cotacao.NomeResumido;
                row["EspecPapel"]      = cotacao.EspecificacaoPapel;
                row["Ticker"]          = cotacao.Ticker;
                row["TipoMercado"]     = cotacao.TipoDeMercado;
                row["PrecoAbertura"]   = cotacao.PrecoAbertura;
                row["PrecoMaximo"]     = cotacao.PrecoMaximo;
                row["PrecoMedio"]      = cotacao.PrecoMedio;
                row["PrecoMinimo"]     = cotacao.PrecoMinimo;
                row["PrecoFechamento"] = cotacao.PrecoFechamento;
                row["Quantidade"]      = cotacao.Quantidade;
                row["TotalNegocios"]   = cotacao.TotalNegocios;
                row["Volume"]          = cotacao.Volume;
                row["ISIN"]            = cotacao.CodISIN;

                if (cotacao.SinalOscilacao == "+")
                {
                    row["Variacao"] = cotacao.Oscilacao / 100;
                }
                else
                {
                    row["Variacao"] = -cotacao.Oscilacao / 100;
                }

                Data.Rows.Add(row);
            }
        }