public static Treinamento TransformarDadoBE_Em_Treinamento_RNV5(DadosBE dadoBE, double versao)
        {
            Treinamento treinamento = new Treinamento();
            treinamento.Input = new List<double>();
            treinamento.Input.Add(dadoBE.ValorNormalizado);

            if (dicIndicesRN[versao].Contains("PercentualCrescimentoValorAtivo"))
                //Adiciona cada um dos percentuais dos n dias anteriores e do dia da cotação
                dadoBE.PercentualCrescimentoValorAtivo.ForEach(percent => treinamento.Input.Add(percent));

            if (dicIndicesRN[versao].Contains("ValorBollinger"))
                treinamento.Input.Add(dadoBE.ValorBollinger);

            if (dicIndicesRN[versao].Contains("Pontuacao3MediasMoveis"))
                treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);

            if (dicIndicesRN[versao].Contains("PercentualTotalNegociacoesMediaNDias"))
                treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);

            if (dicIndicesRN[versao].Contains("PercentualTotalNegociacoes"))
                treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);

            if (dicIndicesRN[versao].Contains("PercentualCrescimentoDolar"))
                treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);

            if (dicIndicesRN[versao].Contains("PercentualCrescimentoValorAtivoMediaNDias"))
                treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);

            if (dicIndicesRN[versao].Contains("PercentualDesviosPadroesEmRelacaoNDias"))
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);

            if (dicIndicesRN[versao].Contains("DiaSemana"))
                treinamento.Input.Add(dadoBE.DiaSemana);

            if (dicIndicesRN[versao].Contains("PercentualValorAtivo_Max_Min_Med"))
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);

            if (dicIndicesRN[versao].Contains("PercentualCrescimentoAtivoEm2Indices"))
                dadoBE.PercentualCrescimentoAtivoEm2Indices.ForEach(val => treinamento.Input.Add(val));

            if (dicIndicesRN[versao].Contains("ValoresAtivoSemanaPassada"))
            {
                treinamento.Input.Add(dadoBE.ValorAtivoDMenos7);
                treinamento.Input.Add(dadoBE.ValorAtivoDMenos8);
            }

            if (dicIndicesRN[versao].Contains("ValoresAtivoSemanaPassada_PERCENTUAL"))
                treinamento.Input.Add(dadoBE.PercentualAtivoSemanaPassadaD_7_D_8);

            if (dicIndicesRN[versao].Contains("ValoresAtivoMesPassado"))
            {
                treinamento.Input.Add(dadoBE.ValorAtivoDMenos30);
                treinamento.Input.Add(dadoBE.ValorAtivoDMenos31);
            }

            if (dicIndicesRN[versao].Contains("ValoresAtivoMesPassado_PERCENTUAL"))
                treinamento.Input.Add(dadoBE.PercentualAtivoMesPassadoD_30_D_31);

            treinamento.Output = new List<double>() { dadoBE.ValorNormalizadoDiaSeguinte };

            return treinamento;
        }
        /*
        public static List<DadosBE> RecuperarCotacoesAtivo(string papel)
        {
            List<DadosBE> listCotacoes = new List<DadosBE>();
            DadosBE cotacao = null;
            DataTableReader dtr = null;

            try
            {
                dtr = RetornaDados(papel);

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

                    cotacao.Id = (int)dtr["id"];
                    cotacao.NomeReduzido = dtr["nomeresumido"].ToString();
                    cotacao.DataGeracao = (DateTime)dtr["datageracao"];
                    cotacao.PrecoAbertura = (decimal)dtr["precoabertura"];
                    //Removido
                    //cotacao.PrecoAberturaNormalizado = (decimal)dtr["precoaberturaNormalizado"];
                    cotacao.CotacaoDolar = (decimal)dtr["valorDolar"];
                    cotacao.CotacaoDolarNormalizado = (decimal)NormalizarDado(Convert.ToDouble(cotacao.CotacaoDolar), "Dolar");
                    cotacao.EstacaoDoAno = RecuperarEstacaoDoAno(cotacao.DataGeracao);

                    listCotacoes.Add(cotacao);
                }
                TratarDesdobramento(listCotacoes);

                //Adiciona os valores normalizados
                listCotacoes.ForEach(cot => cot.ValorNormalizado = NormalizarDado(Convert.ToDouble(cot.PrecoAbertura), papel));
                //Valor para uso interno
                listCotacoes.ForEach(cot => cot.ValorNormalizadoPrevisto = cot.ValorNormalizado);
                //Valor para uso interno
                listCotacoes.ForEach(cot => cot.CotacaoDolarNormalizadoPrevisto = cot.CotacaoDolarNormalizado);

                //Atribui um valor bollinger de 0 a 1 para a cotação
                PreencherValorBollinger(listCotacoes);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                if (dtr != null)
                    dtr.Dispose();
            }

            return listCotacoes;
        }
        */
        public static List<DadosBE> RecuperarCotacoesAtivo(string papel)
        {
            List<DadosBE> listCotacoes = new List<DadosBE>();
            DataTableReader dtr = null;

            try
            {
                dtr = RetornaDados(papel);

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

                    cotacao.Id = (int)dtr["id"];
                    cotacao.NomeReduzido = dtr["nomeresumido"].ToString();
                    cotacao.PrecoAbertura = (decimal)dtr["precoabertura"];
                    cotacao.DataGeracao = (DateTime)dtr["datageracao"];
                    cotacao.CotacaoDolar = (decimal)dtr["valorDolar"];
                    cotacao.PrecoMaximo = (decimal)dtr["PRECOMAX"];
                    cotacao.PrecoMinimo = (decimal)dtr["PRECOMIN"];
                    cotacao.PrecoMedio = (decimal)dtr["PRECOMED"];
                    cotacao.TotalNegociacoes = (int)dtr["TOTALNEGO"];
                    cotacao.QuantidadeTotalNegociacoes = (int)dtr["QUANTIDADETOTALNEGO"];
                    cotacao.ValorTotalNegociacoes = (decimal)dtr["VALORTOTALNEGO"];

                    //Removido
                    //cotacao.PrecoAberturaNormalizado = (decimal)dtr["precoaberturaNormalizado"];
                    //shuah9sdsifladsçoljilgaylachs//////////////cotacao.CotacaoDolarNormalizado = (decimal)NormalizarDado(Convert.ToDouble(cotacao.CotacaoDolar), "Dolar");
                    cotacao.EstacaoDoAno = RecuperarEstacaoDoAno(cotacao.DataGeracao);

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

                decimal max = listCotacoes.Max(cot => cot.PrecoAbertura);
                decimal min = listCotacoes.Min(cot => cot.PrecoAbertura);

                //Adiciona os valores normalizados
                listCotacoes.ForEach(cot => cot.ValorNormalizado = NormalizarDado(Convert.ToDouble(cot.PrecoAbertura), papel));
                //Valor para uso interno
                listCotacoes.ForEach(cot => cot.ValorNormalizadoPrevisto = cot.ValorNormalizado);
                //Valor para uso interno
                listCotacoes.ForEach(cot => cot.CotacaoDolarNormalizadoPrevisto = cot.CotacaoDolarNormalizado);

                //Preenche os valores dos dias seguintes
                for (int i = 0; i < listCotacoes.Count - 1; i++)
                {
                    listCotacoes[i].PrecoFechamento = Convert.ToDouble(listCotacoes[i + 1].PrecoAbertura);
                    listCotacoes[i].PrecoFechamentoNormalizado = Convert.ToDouble(listCotacoes[i + 1].ValorNormalizado);
                }
                //Preenche os valores dos dias seguintes
                for (int i = 0; i < listCotacoes.Count - 1; i++)
                {
                    listCotacoes[i].ValorDiaSeguinte = Convert.ToDouble(listCotacoes[i + 1].PrecoAbertura);
                    listCotacoes[i].ValorNormalizadoDiaSeguinte = Convert.ToDouble(listCotacoes[i + 1].ValorNormalizado);
                }

                //Atribui um valor bollinger de 0 a 1 para a cotação
                PreencherValorBollinger(listCotacoes);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                if (dtr != null)
                    dtr.Dispose();
            }

            return listCotacoes;
        }
        public static Treinamento TransformarDadoBE_Em_Treinamento_RNV3(DadosBE dadoBE, double versao)
        {
            Treinamento treinamento = new Treinamento();
            treinamento.Input = new List<double>();

            //Adiciona cada um dos percentuais dos n dias anteriores e do dia da cotação
            dadoBE.PercentualCrescimentoValorAtivo.ForEach(percent => treinamento.Input.Add(percent));
            treinamento.Input.Add(dadoBE.ValorNormalizado);
            if (versao == 3)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                treinamento.Input.Add(dadoBE.DiaSemana);
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.2)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                //treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                //treinamento.Input.Add(dadoBE.DiaSemana);
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.3)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.4)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.5)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.6)
            {//Apenas tiramos o ValorBollinger para ver se houve alguma diferença
                //treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.7)
            {//Com todos os índices possíveis para previsao em cima de previsao, mas agora com 2 percentuais em relação aos dias anteriores ao invés de 4
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.8)
            {//Com todos os índices possíveis para previsao em cima de previsao, mas agora com 10 percentuais em relação aos dias anteriores ao invés de 4
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 3.9)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 4.01)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 4.02)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                treinamento.Input.Add(dadoBE.DiaSemana);
                //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 4.03)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
            }
            if (versao == 4.04)
            {
                treinamento.Input.Add(dadoBE.ValorBollinger);
                ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis);
                ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias);
                //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes);
                //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar);
                ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias);
                treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias);
                ////treinamento.Input.Add(dadoBE.DiaSemana);
                treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med);
                treinamento.Input.Add(1);//Valor Bias
            }

            treinamento.Output = new List<double>() { dadoBE.ValorNormalizadoDiaSeguinte };

            return treinamento;
        }