Diskussion zum Artikel "Verwendung von Indikatoren in MetaTrader 5 mit dem Machine Learning Framework ENCOG für die Prognostizierung von Zeitreihen" - Seite 5

 
Valentin Petkov:

Hallo Leute,

Ich versuche, diesen Artikel auf encog v.3.2 zu portieren, aber ich habe ein Problem mit Step3-Timeboxen. Ist jemand in der Lage , Schritt 3 zu tun ?


Verwenden Sie Mine @Valentin petkov. Ich benutze encog 3.3 . ich hoffe, kann Ihnen helfen ..

using System;

using Encog.Util.CSV;

using Encog.App.Quant.Indicators;

using Encog.App.Quant.Indicators.Predictive;

using Encog.Util.Simple;

using Encog.Neural.Networks;

using Encog.Neural.Networks.Layers;

using Encog.Engine.Network.Activation;

using Encog.Persist;

using Encog.App.Analyst;

using System.IO;

using Encog.App.Analyst.CSV.Normalize;

using Encog.App.Analyst.Wizard;

using Encog.Util.Arrayutil;

using Encog.Util.ArrayUtil;

using Encog.ML.Data;


Namespace Encog

{

public class Programm

{

/// <summary>

/// Das Verzeichnis, in dem alle Dateien gespeichert werden sollen.

/// </summary>

public const String DIRECTORY = "Ihr Dateiverzeichnis";


/// <summary>

/// Die Eingabedatei, die den gesamten Prozess startet. Diese Datei sollte von NinjaTrader mit dem EncogStreamWriter-Objekt heruntergeladen werden.

/// </summary>

public const String STEP1_FILENAME = DIRECTORY + "mt4export.csv";


/// <summary>

/// Wir wenden einen prädiktiven Future-Indikator an und generieren eine zweite Datei, in der das zusätzliche prädiktive Feld hinzugefügt wird.

/// </summary>

public const String STEP2_FILENAME = DIRECTORY + "step2_future.csv";


/// <summary>

/// Anschließend wird die gesamte Datei normalisiert und in dieser Datei gespeichert.

/// </summary>

public const String STEP3_FILENAME = VERZEICHNIS + "step3_norm.csv";


/// <summary>

/// Die Datei wird mit einer Timebox versehen, um Trainingsdaten zu erstellen.

/// </summary>

public const String STEP4_FILENAME = VERZEICHNIS + "step4_train.csv";


/// <summary>

/// Schließlich wird das trainierte neuronale Netz in diese Datei geschrieben.

/// </summary>

public const String STEP5_FILENAME = VERZEICHNIS + "step5_network.eg";


/// <summary>

/// Die Größe des Eingabefensters, d.h. die Anzahl der Takte, die zur Vorhersage des nächsten Taktes verwendet werden.

/// </summary>

public const int INPUT_WINDOW = 6;


/// <summary>

/// Die Anzahl der Takte, die wir vorhersagen wollen. Dies ist normalerweise nur 1 Takt. Der in Schritt 1 verwendete Zukunftsindikator kann

/// auch mehr in die Zukunft schauen.

/// </summary>

public const int PREDICT_WINDOW = 1;


/// <summary>

/// Die Anzahl der Balken, die für das beste Ergebnis in die Zukunft geschaut werden.

/// </summary>

public const int RESULT_WINDOW = 5;


/// <summary>

/// Die Anzahl der Neuronen in der ersten versteckten Schicht.

/// </summary>

public const int HIDDEN1_NEURONS = 12;


/// <summary>

/// Der Zielfehler, auf den trainiert werden soll.

/// </summary>

public const double TARGET_ERROR = 0.01;


static void Main(string[] args)

{

// Schritt 1: Future-Indikatoren erstellen

Console.WriteLine("Schritt 1: NinjaTrader Export analysieren & Zukunftsindikatoren erstellen");

ProcessIndicators ind = new ProcessIndicators();

ind.Analyze(new FileInfo(STEP1_FILENAME), true, CSVFormat.English); //.Analyze(STEP1_FILENAME, true, AnalystFileFormat.DecpntComma);

int externalIndicatorCount = ind.Columns.Count - 3;

ind.AddColumn(new BestReturn(RESULT_WINDOW, true)); // najlepszy zwrot w nastepnym RESULT_WINDOW

ind.Process(new FileInfo(STEP2_FILENAME));// Process(STEP2_FILENAME);

Console.WriteLine("Externe Indikatoren gefunden: " + externalIndicatorCount);

Console.ReadKey();

// Schritt 2: Normalisieren

Console.WriteLine("Schritt 2: Zukunftsindikatoren erstellen");

var analyst = new EncogAnalyst();

var wizard = new AnalystWizard(analyst);

wizard.Wizard(new FileInfo(STEP2_FILENAME), true, AnalystFileFormat.DecpntComma);

analyst.Script.Normalize.NormalizedFields[0].Action=NormalizationAction.PassThrough;

analyst.Script.Normalize.NormalizedFields[1].Action = NormalizationAction.PassThrough;


analyst.Script.Normalize.NormalizedFields[2].Action = NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[3].Action = NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[4].Action = NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[5].Action = NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[6].Action = NormalizationAction.Normalize;


var norm = new AnalystNormalizeCSV();

norm.Analyze(new FileInfo(STEP2_FILENAME), true, CSVFormat.English, analyst);

norm.ProduceOutputHeaders = true;

norm.Normalize(new FileInfo(STEP3_FILENAME));

// Neuronenanzahl

int inputNeurons = INPUT_WINDOW * externalIndicatorCount;

int outputNeurons = PREDICT_WINDOW;

Console.WriteLine("inputNeuronen : {0}",inputNeuronen);

Console.WriteLine("ausgabeNeuronen : {0}", ausgabeNeuronen);

Console.ReadKey();

// Schritt 3: Time-box (optional)

Console.WriteLine("Schritt 3: Timebox");

var twcsv = new TemporalWindowCSV();

twcsv.Analyze(new FileInfo(STEP3_FILENAME), true, CSVFormat.English);

twcsv.InputWindow = INPUT_WINDOW;

twcsv.VorhersageFenster = PREDICT_WINDOW;

int index = 0;

twcsv.Fields[index++].Action = TemporalType.Ignore;

twcsv.Felder[index++].Aktion = TemporalType.Ignorieren;

twcsv.Felder[index++].Aktion = TemporalType.Ignorieren;

for (int i = 0; i < externalIndicatorCount; i++)

twcsv.Fields[index++].Action = TemporalType.Input; // externe Indikatoren

twcsv.Fields[index++].Action = TemporalType.Predict; // PredictBestReturn


twcsv.Process(STEP4_FILENAME);

Console.ReadKey();

// Schritt 4: Neuronales Netzwerk trainieren

Console.WriteLine("Schritt 4: Trainieren");

Console.ReadKey();

IMLDataSet training = 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,1);

Console.ReadKey();

// Schritt 5: Neuronales Netzwerk und Statistiken speichern

Console.WriteLine("Schritt 5: Neuronales Netzwerk und normalisierte Felder speichern");

Console.WriteLine("oder hier?");

EncogDirectoryPersistence.SaveObject(new FileInfo(STEP5_FILENAME), network);

Console.WriteLine("Fehler hier?");

//EncogDirectoryPersistence.SaveObject(new FileInfo(STEP5_FILENAME), analyst);

Console.ReadKey();

}

}

}

 
Hatte jemand Erfolg bei der Portierung auf Encog 3.3? Es scheint, dass es kein Interesse daran gibt, MQL mit ENCOG 3.3 oder späteren Versionen kompatibel zu machen. Ich verstehe nicht, warum MQL nicht ein eigenes neuronales Netzwerk für Metatrader erstellt, wodurch eine Menge Arbeit für Normalsterbliche vermieden wird.
 
tiagobr:
Ich verstehe nicht, warum MQL nicht ein eigenes neuronales Netzwerk für Metatrader erstellt, wodurch eine Menge Arbeit für Normalsterbliche vermieden wird.
Wenn Sie auf mql5.com nach neuronalen Netzwerken suchen, werden Sie eine Menge Artikel und Codes finden - alles ist für Sie auf "Plug and Play"-Basis verfügbar. Entsprechen sie nicht Ihren Bedürfnissen?
 

Hallo,

Vielen Dank für den Artikel, denn er ist sehr hilfreich, um zu wissen, wie man Programme entwickelt. Allerdings bin ich ein Neuling und ich würde gerne wissen, wie ich alle Schritte ausführen kann. Ich konnte die Daten mit Hilfe des Skripts herunterladen, aber dann weiß ich nicht, wie ich die Normalisierung und Timeboxing in Metatrader durchführen kann. Gibt es eine Schritt-für-Schritt-Anleitung für die Ausführung der Codes? Vielen Dank im Voraus und Entschuldigung für eine so grundlegende Frage.

Mit freundlichen Grüßen

 

Hallo!

ich stecke fest bei

7. Neuronales Netzwerk Training

Ich habe .Net Core, Visual Basic Code für Mac und Encog 3.3 heruntergeladen.

Was sollte ich als nächstes mit Encog machen?

Vielen Dank im Voraus.

Es gibt auch defekte Links in dem Artikel.

Wird es ein Update geben?

z.B..

Fehlerberechnung und Trainingsalgorithmen

Die vollständige ENCOG-Dokumentation ist online verfügbar.

 

HI ,nvesteo

Ich habe den Beispielcode heruntergeladen, mit MT5 Laden neuralencogindicator Anzeige Ausnahme, um Hilfe bitten.


 

Hallo Leute,

Wirklich ausgezeichneter Artikel, aber ich habe nicht das gleiche Ergebnis zu reproduzieren.

Wenn der Indikator aufgerufen wird, ist es nicht normalisiert, um 1 und -1 wie Beispiel des Artikels und Grundstück nur eine gerade Linie.

Jemand hatte dieses Problem und lösen es?

 
Automated-Trading:

Versuchen Sie, in Systemsteuerung->Region und Sprache->Zusätzliche Einstellungen das Dezimalzeichen in "." statt "," zu ändern...


Das war mein Problem. Ändern Sie dies und lösen Sie das Problem.

DANKE!!

 
Der Indikator zeichnet nicht. Ich habe die dll-Dateien an verschiedene Orte kopiert, aber immer noch kein Ergebnis. Irgendeine Idee?
 
Kann dies mit MT4 funktionieren?