Discussão do artigo "Usando Indicadores MetaTrader 5 com Estrutura de Aprendizado de Máquina ENCOG para Previsão das Séries Temporais" - página 4

 

Alguém já ganhou dinheiro usando esse Expert Advisor de rede neural?

 

Gostaria de ver isso traduzido para o Encog 3.1, pois estou tendo problemas com a versão original na plataforma norueguesa.

No 3.1, não tenho certeza de como fazer o time boxing e, ao pular essa etapa, a rede parece não produzir o resultado final


// Etapa 2: normalizar
Console.WriteLine("Etapa 2: Criar indicadores futuros");

var analyst = new EncogAnalyst();
var wizard = new AnalystWizard(analyst);
wizard.Wizard(new System.IO.FileInfo(STEP2_FILENAME), true, AnalystFileFormat.DecpntComma);
analyst.Script.Normalize.NormalizedFields[0].MakePassThrough(); //Isso é necessário?
analyst.Script.Normalize.NormalizedFields[1].MakePassThrough();
var norm = new AnalystNormalizeCSV();
norm.Analyze(new System.IO.FileInfo(STEP2_FILENAME), true, CSVFormat.English, analyst);
norm.ProduceOutputHeaders = true;

norm.Normalize(new System.IO.FileInfo(STEP4_FILENAME));

// A ETAPA 3 foi omitida porque não sei como cronometrar a caixa em 3.1. Ela diz Opcional na amostra original.

Console.WriteLine("Step 4: Train");
Console.ReadKey();
INeuralDataSet training = (BasicNeuralDataSet)EncogUtility.LoadCSV2Memory(STEP4_FILENAME, 3 + externalIndicatorCount, // Não consigo encontrar bem documentado qual deve ser a contagem de entrada e a contagem ideal. Idênticos?
3 + externalIndicatorCount, true, CSVFormat.English, true);
BasicNetwork network = new BasicNetwork();
network.AddLayer(new BasicLayer(new ActivationTANH(), true, inputNeurons));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, HIDDEN1_NEURONS));
network.AddLayer(new BasicLayer(new ActivationLinear(), true, outputNeurons));
network.Structure.FinalizeStructure();
network.Reset();
// treinar a rede neural
EncogUtility.TrainConsole(network, training, 3);
Console.WriteLine(@"Training complete, saving network."); // Ele nunca chega aqui, então obviamente há algo errado
EncogDirectoryPersistence.SaveObject(new System.IO.FileInfo(STEP5_FILENAME), network);

Da forma como está (na amostra/versão original), tenho meu primeiro problema na linha ind.Process, em que o arquivo produzido tem apenas 3 colunas. A etapa Analyze parece estar capturando o arquivo corretamente com todas as 6 colunas, mas o arquivo produzido deveria ter 7 colunas. Ao definir as configurações de país como US(English), o arquivo produzido está OK, mas essa não é a minha configuração normal e me dá alguns outros problemas que eu gostaria de evitar.


            ProcessIndicators ind = new ProcessIndicators();
            ind.Analyze(STEP1_FILENAME, true, CSVFormat.DECIMAL_POINT);
            int externalIndicatorCount = ind.Columns.Count - 3;
            ind.AddColumn(new BestReturn(RESULT_WINDOW,true)); 
            ind.Process(STEP2_FILENAME);    
 

Hi,

Acabei descobrindo onde colocar as dlls, consegui que o script e o indicador funcionassem, mas não o EA.

Meu Intel i7 core de 1ª geração quer acessar o OpenCL para computação multicore, o que parece que eu não tenho, portanto o ea não quer saber.

Transferi tudo isso para meu laptop Intel i7 core de 2ª geração e agora ele quer minha EncogNNTrainDLL.dll na versão de 64 bits!

Procurei esse arquivo na Internet, mas parece que não estou conseguindo encontrá-lo. Alguém tem alguma ideia?

A propósito, artigo brilhante, sempre me interessei por redes neurais - desde os dias em que a memória do computador era medida em kilobytes.

Adoro os vídeos de Jeff Heaton - vale a pena assistir.

Obrigado por isso - Rewop

 

Oi Ivesteo,

Bom artigo, obrigado!

Posso saber que tipo de treinamento você está usando? Você está usando SOM ou FeedForward Network. Não sei ao certo quais são os dados ideais que você está usando.

Obrigado,

HyperPro.

 

O que é RESULT_WINDOW . Entendi corretamente que essas barras são fornecidas somente durante o treinamento da rede? Afinal de contas, não há lugar para pegar as barras do futuro quando estiver trabalhando

/// O número de barras futuras usadas.
        /// </summary> 

public const int RESULT_WINDOW = 5;

// O número de barras futuras usadas para obter o melhor resultado.

        /// </summary>
        public const int RESULT_WINDOW = 5;

 

Ótimo artigo, sou um desenvolvedor de C# muito grato.

Segui seu artigo anterior sobre como fazer com que a DLL não gerenciada se comunicasse com o aplicativo .NET. Em seguida, utilizei pipes gerenciados para permitir que meu código C# integrado se comunicasse com um aplicativo Web .NET com WCF.

Pretendo fazer o backup em um banco de dados SQL com relatórios e gerenciamento remoto de pedidos do EA. A próxima etapa é conectar algum código de rede neural e começar a testar.

Mais uma vez, obrigado, esses são alguns dos melhores artigos que li recentemente.

 

algo encerrou abruptamente a discussão...

Alguém trabalha com essa biblioteca? Vale a pena estudá-la?

Gostei muito do artigo. Respeito ao autor!

 

Olá, pessoal,

Estou tentando transferir este artigo para o encog v.3.2, mas estou tendo problemas com as caixas de tempo da etapa 3. Alguém pode fazer a etapa 3?


 // Etapa 1: criar indicadores futuros
            Console.WriteLine("Step 1: Analyze MT5 Export & Create Future Indicators");
            ProcessIndicators ind = new ProcessIndicators();
            ind.Analyze(new FileInfo(STEP1_FILENAME), true, CSVFormat.DecimalPoint);
            int externalIndicatorCount = ind.Columns.Count - 3;
            ind.AddColumn(new BestReturn(RESULT_WINDOW, true));
            ind.Process(new FileInfo(STEP2_FILENAME));
            Console.WriteLine("External indicators found: " + externalIndicatorCount);

            // Etapa 2: Normalizar
            Console.WriteLine("Step 2: Create Future Indicators");
            var analyst = new EncogAnalyst();
            var wizard = new AnalystWizard(analyst);
            wizard.Goal = AnalystGoal.Classification;
            wizard.Wizard(new System.IO.FileInfo(STEP2_FILENAME), true, AnalystFileFormat.DecpntComma);
            analyst.Script.Normalize.NormalizedFields[0].MakePassThrough();      //Isso é necessário?
            analyst.Script.Normalize.NormalizedFields[1].MakePassThrough();

            var norm = new AnalystNormalizeCSV();
            norm.ExpectInputHeaders = true;
            norm.Format = CSVFormat.English;
            norm.Analyze(new FileInfo(STEP2_FILENAME), true, CSVFormat.English, analyst);
            norm.ProduceOutputHeaders = true;

            norm.Normalize(new FileInfo(STEP3_FILENAME));


            Console.WriteLine("Step 3: Time-boxses");
            // contagem de neurônios
            int inputNeurons = INPUT_WINDOW * externalIndicatorCount;
            int outputNeurons = PREDICT_WINDOW;

            FileInfo rawFile = new FileInfo(STEP3_FILENAME);


               //Step 3 

                HOW???
            
            Console.WriteLine("Step 4: Train");
            IMLDataSet training = (IMLDataSet)EncogUtility.LoadCSV2Memory(STEP4_FILENAME, inputNeurons,
                                                                                     outputNeurons, true, CSVFormat.English,false);
            

            BasicNetwork network = new BasicNetwork();
            network.AddLayer(new BasicLayer(new ActivationTANH(), true, inputNeurons));
            network.AddLayer(new BasicLayer(new ActivationTANH(), true, HIDDEN1_NEURONS));
            network.AddLayer(new BasicLayer(new ActivationLinear(), true, outputNeurons));
            network.Structure.FinalizeStructure();
            network.Reset();

            //EncogUtility.TrainToError(network, training, TARGET_ERROR);
            EncogUtility.TrainConsole(network, training, 3);
            Console.WriteLine(@"Training complete, saving network.");  // Ele nunca chega aqui, então obviamente há algo errado
            EncogDirectoryPersistence.SaveObject(new System.IO.FileInfo(STEP5_FILENAME), network);
 

Hi,

Também estou tentando portar todas as coisas necessárias para a versão 3.2. Não vejo outra maneira, pois a versão 2.6 não está disponível na Internet. Mas parece ser um passeio pela selva. Ainda estou trabalhando há cerca de 4 semanas. Mas não consigo ver o fim.

Alguém conseguiu fazer a portabilidade? Alguém pode me ajudar.

Muito obrigado.

refltr

 
Consegui portar esse tópico com o encog 3.3 e usar o mt4, mas ainda não o fiz com o expert advisor.