Discussione sull’articolo "Utilizzo degli indicatori MetaTrader 5 con il framework di apprendimento automatico ENCOG per la previsione delle serie temporali" - pagina 4

 

Qualcuno ha guadagnato soldi utilizzando questo Expert Advisor a rete neurale?

 

Vorrei che fosse tradotto in Encog 3.1, poiché ho problemi con la versione originale sulla piattaforma norvegese.

Su 3.1 non sono sicuro di come fare il time boxing e, saltando questo passaggio, la rete non sembra produrre il risultato finale.


// Passo 2: Normalizzare
Console.WriteLine("Passo 2: Create Future Indicators");

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(); //È necessario?
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));

// Lo STEP 3 è stato omesso, poiché non so come si fa la casella temporale in 3.1. Nell'esempio originale c'è scritto Optional.

Console.WriteLine("Step 4: Train");
Console.ReadKey();
INeuralDataSet training = (BasicNeuralDataSet)EncogUtility.LoadCSV2Memory(STEP4_FILENAME, 3 + externalIndicatorCount, // Non riesco a trovare una buona documentazione su quali debbano essere il conteggio degli input e il conteggio ideale. Identico?
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();
// addestra la rete neurale
EncogUtility.TrainConsole(network, training, 3);
Console.WriteLine(@"Training completato, salvataggio della rete."); // Non arriva mai a questo punto, quindi evidentemente qualcosa non va
EncogDirectoryPersistence.SaveObject(new System.IO.FileInfo(STEP5_FILENAME), network);

Allo stato attuale (nell'esempio/versione originale) ho il primo problema nella riga ind.Process, dove il file prodotto ha solo 3 colonne. Il passo Analyze sembra raccogliere correttamente il file con tutte e 6 le colonne, ma il file prodotto dovrebbe avere 7 colonne. Impostando le impostazioni del paese su US (English) il file prodotto è OK, ma questa non è la mia configurazione normale e mi crea altri problemi che vorrei evitare.


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

Ciao,

Alla fine ho capito dove mettere le dll, ho fatto funzionare lo script e l'indicatore ma non l'ea.

Il mio Intel i7 core di prima generazione vuole accedere a OpenCL per il calcolo multicore, che a quanto pare non ho, quindi l'ea non ne vuole sapere.

Ho trasferito tutto questo sul mio laptop Intel i7 core di seconda generazione e ora vuole la mia EncogNNTrainDLL.dll nella versione a 64 bit!

Ho cercato su internet questo file ma non riesco a trovarlo - qualcuno ha qualche idea?

A proposito, ho sempre avuto interesse per le reti neurali, fin dai tempi in cui la memoria dei computer era misurata in kilobyte.

Adoro i video di Jeff Heaton - vale la pena guardarli.

Grazie per questo - Rewop

 

Ciao Ivesteo,

Ottimo articolo, grazie!

Posso sapere che tipo di formazione stai usando? Stai usando la SOM o la rete FeedForward. Non mi è chiaro quali siano i dati ideali che stai utilizzando.

Grazie,

HyperPro.

 

Che cos'è RESULT_WINDOW . Se ho capito bene, si tratta di barre che vengono fornite solo durante l'allenamento della rete? Dopo tutto, non c'è nessun posto dove prendere le barre del futuro quando si lavora

/// Il numero di barre future utilizzate.
        /// </summary> 

public const int RESULT_WINDOW = 5;

// Il numero di barre di avanzamento utilizzate per ottenere il risultato migliore.

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

 

Ottimo articolo, sono uno sviluppatore C# molto apprezzato.

Ho seguito il vostro precedente articolo su come far parlare una DLL non gestita con un'applicazione .NET. Ho poi utilizzato le managed pipes per consentire al mio codice C# di parlare con una web-application .NET con WCF.

Ho in programma di eseguire il backup su un database SQL con la creazione di report e la gestione remota degli ordini dell'EA. Il prossimo passo sarà quello di integrare il codice della rete neurale e iniziare i test.

Grazie ancora, questi sono alcuni dei migliori articoli che ho letto di recente.

 

qualcosa ha interrotto bruscamente la discussione...

Qualcuno lavora con questa libreria? Vale la pena di studiarla?

Mi è piaciuto molto l'articolo. Rispetto per l'autore!

 

Ciao ragazzi,

Ho cercato di portare questo articolo a encog v.3.2 ma ho un problema con le timebox del passo 3. Qualcunoè in grado di fare il passo 3?


 // Fase 1: Creare indicatori futuri
            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);

            // Fase 2: normalizzazione
            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();      //È necessario?
            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");
            // conta dei neuroni
            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.");  // Non arriva mai, quindi evidentemente c'è qualcosa che non va.
            EncogDirectoryPersistence.SaveObject(new System.IO.FileInfo(STEP5_FILENAME), network);
 

Ciao,

Anch'io sto cercando di portare tutto il necessario alla versione 3.2. Non vedo altro modo perché la versione 2.6 non è disponibile in rete. Ma sembra essere un viaggio nella giungla. Sto lavorando da circa 4 settimane. Ma non riesco a vedere la fine.

Qualcuno è riuscito a fare il porting? Qualcuno può aiutarmi.

Grazie mille.

refltr

 
Ho portato a termine questo thread con encog 3.3 e usando mt4. ma non ho ancora fatto il porting con expert advisor. mandatemi un messaggio se avete bisogno di aiuto per il porting.