예제 #1
0
        public static double ValorMediaMovel(DadoBE dadoBE, int n)
        {
            int count = 0;
            double somatorio = 0;
            DadoBE dadoBE_SMA = dadoBE.Anterior;
            for (int i = 0; i < n; i++)
            {
                if (dadoBE_SMA == null)
                    break;
                count++;
                somatorio += dadoBE_SMA.PrecoFechamento;
                dadoBE_SMA = dadoBE_SMA.Anterior;
            }

            if (count == 0)
                return 0;
            return somatorio / count;
        }
예제 #2
0
        public static List<DadoBE> PegarTodos(string papel)
        {
            List<DadoBE> listCotacoes = new List<DadoBE>();
            DataTableReader dtr = null;

            try
            {
                dtr = RetornaDados(papel);

                while (dtr.Read())
                {
                    DadoBE cotacao = new DadoBE();

                    cotacao.Id = Convert.ToInt32(dtr["ID"]);
                    cotacao.NomeReduzido = papel.ToUpper();
                    cotacao.DataGeracao = Convert.ToDateTime(dtr["DATAGERACAO"]);
                    cotacao.CotacaoDolar = Convert.ToDouble(dtr["VALORDOLAR"]);
                    //cotacao.CotacaoDolarNormalizado = NormalizarDado(cotacao.CotacaoDolar, "DOLAR");
                    cotacao.PrecoMaximo = Convert.ToDouble(dtr["PRECOMAXIMO"]);
                    cotacao.PrecoMinimo = Convert.ToDouble(dtr["PRECOMINIMO"]);
                    cotacao.PrecoAbertura = Convert.ToDouble(dtr["PRECOABERTURA"]);
                    cotacao.VolumeNegociacao = Convert.ToInt64(dtr["VOLUMENEGOCIACAO"]);
                    cotacao.PrecoFechamento = Convert.ToDouble(dtr["PRECOFECHAMENTO"]);

                    /*cotacao.Id = (int)dtr["id"];
                    cotacao.NomeReduzido = dtr["nomeresumido"].ToString();
                    cotacao.DataGeracao = (DateTime)dtr["datageracao"];
                    cotacao.CotacaoDolar = Convert.ToDouble((decimal)dtr["valorDolar"]);
                    //cotacao.CotacaoDolarNormalizado = NormalizarDado(cotacao.CotacaoDolar, "DOLAR");
                    cotacao.PrecoMaximo = Convert.ToDouble((decimal)dtr["PRECOMAX"]);
                    cotacao.PrecoMinimo = Convert.ToDouble((decimal)dtr["PRECOMIN"]);
                    cotacao.PrecoMedio = Convert.ToDouble((decimal)dtr["PRECOMED"]);
                    cotacao.QuantidadeTotalNegociacoes = (int)dtr["QUANTIDADETOTALNEGO"];
                    cotacao.PrecoFechamento = Convert.ToDouble((decimal)dtr["precoabertura"]);*/

                    listCotacoes.Add(cotacao);
                }
                //Ordena pela data
                listCotacoes = listCotacoes.OrderBy(cot => cot.DataGeracao).ToList();
                // TratarDesdobramento(listCotacoes);

                for (int indCotacao = 0; indCotacao < listCotacoes.Count - 2; indCotacao++)
                {
                    listCotacoes[indCotacao].PrecoFechamento = listCotacoes[indCotacao + 1].PrecoFechamento;
                }
                //Elimina os 2 ultimos pq não tem o preço de fechamento nem o preço de fechamendo do dia seguinte
                listCotacoes = listCotacoes.Take(listCotacoes.Count - 2).ToList();

                listCotacoes[0].Proximo = listCotacoes[1];
                listCotacoes.Last().Anterior = listCotacoes[listCotacoes.Count - 2];
                for (int i = 1; i < listCotacoes.Count - 1; i++)
                {
                    listCotacoes[i].Proximo = listCotacoes[i + 1];
                    listCotacoes[i].Anterior = listCotacoes[i - 1];
                }

                listCotacoes = PreencherIndices(listCotacoes);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao recuperar os dados");
            }
            finally
            {
                if (dtr != null)
                    dtr.Dispose();
            }

            return listCotacoes;
            //return listCotacoes.Skip(listCotacoes.Count / 10 * 8).ToList();
        }