コード例 #1
0
        internal static List<Treinamento> ClonarTreinamentos(List<Treinamento> treinamentos)
        {
            List<Treinamento> treinamentosRetornar = new List<Treinamento>();
            foreach (Treinamento treinamento in treinamentos)
            {
                Treinamento treinamentoClone = new Treinamento();
                foreach (double valInput in treinamento.Input)
                {
                    treinamentoClone.Input.Add(valInput);
                }
                foreach (double valOutput in treinamento.Output)
                {
                    treinamentoClone.Output.Add(valOutput);
                }

                treinamentoClone.Data = treinamento.Data;
                treinamentosRetornar.Add(treinamentoClone);
            }
            return treinamentosRetornar;
        }
コード例 #2
0
        public static List<Treinamento> RecuperarTreinamentoRN(List<DadoBE> dadosBE, List<Versao> versoes, int tamanhoTendencia)
        {
            List<Treinamento> treinamentos = new List<Treinamento>();
            for (int i = 0; i < dadosBE.Count - 1; i++)
            {
                Treinamento treinamento = new Treinamento()
                    {
                        Data = dadosBE[i].DataGeracao
                    };

                foreach (Versao versao in versoes)
                {
                    switch (versao)
                    {
                        case Versao.V6001:
                            treinamento.Input.AddRange(dadosBE[i].ValorBollinger);
                            break;
                        case Versao.V6002:
                            treinamento.Input.AddRange(dadosBE[i].AnaliseMediaMovelSimples5Dias);
                            break;
                        case Versao.V6004:
                            treinamento.Input.AddRange(dadosBE[i].AnaliseWilliams_Percent_R_14P);
                            break;
                        case Versao.V6008:
                            treinamento.Input.AddRange(dadosBE[i].AnaliseWilliams_Percent_R_28P);
                            break;
                        case Versao.V6016:
                            treinamento.Input.AddRange(dadosBE[i].AnaliseArron_Up_Down);
                            break;
                        case Versao.V6032:
                            treinamento.Input.AddRange(dadosBE[i].DuracaoTendencias);
                            break;
                        default:
                            throw new Exception();
                            break;
                    }
                }

                //double variacao = Math.Abs(dadosBE[i].Anterior.PrecoFechamento - dadosBE[i].PrecoFechamento) / dadosBE[i].Anterior.PrecoFechamento;
                //if (dadosBE[i].Anterior.PrecoFechamento > dadosBE[i].PrecoFechamento)
                //    treinamento.Output.Add(0.5 - variacao);
                //else
                //    treinamento.Output.Add(0.5 + variacao);

                //if (dadosBE[i].Anterior.PrecoFechamento > dadosBE[i].PrecoFechamento)
                //    treinamento.Output.AddRange(new List<double>() { 0, 1 });
                //else
                //    treinamento.Output.AddRange(new List<double>() { 1, 0 });

                double variacao = 0;
                for (int j = i; j < i + tamanhoTendencia && j < dadosBE.Count; j++)
                {
                    if (dadosBE[j].Proximo != null)
                        variacao += dadosBE[j].Proximo.PrecoFechamento - dadosBE[j].PrecoFechamento;
                }

                //Tendencia de alta
                if (variacao > 0)
                {
                    treinamento.Output.AddRange(new List<double>() { 1, 0 });
                }
                //Tendencia de baixa
                else
                {
                    treinamento.Output.AddRange(new List<double>() { 0, 1 });
                }

                treinamentos.Add(treinamento);
            }

            return treinamentos.Where(trein => trein.Input.Any(inp => inp > 0)).ToList();
        }