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; }
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(); }