Discussion de l'article "Utilisation des Indicateurs MetaTrader 5 avec le Cadre d'Apprentissage Automatique ENCOG pour la Prédiction de Séries Chronologiques" - page 5

 
Valentin Petkov:

Bonjour à tous,

J'ai essayé de porter cet article sur encog v.3.2 mais j'ai un problème avec les time-boxes de l'étape 3. Est-ce que quelqu'un est capable de faire l' étape 3 ?


Utilisez le mien @Valentin petkov. j'utilise encog 3.3. j'espère pouvoir vous aider ...

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 Program

{

/// <summary>

/// Le répertoire dans lequel tous les fichiers seront stockés.

/// </summary>

public const String DIRECTORY = "votre répertoire de fichiers" ;


/// <summary>

/// Ce fichier doit être téléchargé depuis NinjaTrader à l'aide de l'objet EncogStreamWriter.

/// </summary>

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


/// <summary>

/// Nous appliquons un indicateur futur prédictif et générons un deuxième fichier, avec le champ prédictif supplémentaire ajouté.

/// </summary>

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


/// <summary>

/// Ensuite, l'ensemble du fichier est normalisé et stocké dans ce fichier.

/// </summary>

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


/// <summary>

/// Le fichier est mis en boîte temporelle pour créer des données d'entraînement.

/// </summary>

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


/// <summary>

/// Enfin, le réseau neuronal formé est écrit dans ce fichier.

/// </summary>

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


/// <summary>

/// </summary> La taille de la fenêtre d'entrée, qui correspond au nombre de barres utilisées pour prédire la barre suivante.

/// </summary>

public const int INPUT_WINDOW = 6 ;


/// <summary>

/// Le nombre de barres à venir que nous essayons de prédire. Il s'agit généralement d'une seule barre. L'indicateur futur utilisé à l'étape 1 peut /// bien regarder plus loin dans le temps.

/// bien regarder plus loin dans le futur.

/// </summary>

public const int PREDICT_WINDOW = 1 ;


/// <summary>

/// Le nombre de barres vers l'avant pour obtenir le meilleur résultat.

/// </summary>

public const int RESULT_WINDOW = 5 ;


/// <summary>

/// Le nombre de neurones dans la première couche cachée.

/// </summary>

public const int HIDDEN1_NEURONS = 12 ;


/// <summary>

/// L'erreur cible à laquelle s'entraîner.

/// </summary>

public const double TARGET_ERROR = 0.01 ;


static void Main(string[] args)

{

// Etape 1 : Créer les futurs indicateurs

Console.WriteLine("Étape 1 : Analyse de l'exportation NinjaTrader et création d'indicateurs futurs") ;

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("Indicateurs externes trouvés : " + externalIndicatorCount) ;

Console.ReadKey() ;

// Étape 2 : Normalisation

Console.WriteLine("Etape 2 : Créer des indicateurs futurs") ;

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

// comptage des neurones

int inputNeurons = INPUT_WINDOW * externalIndicatorCount ;

int outputNeurons = PREDICT_WINDOW ;

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

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

Console.ReadKey() ;

// Étape 3 : Boîte temporelle (facultatif)

Console.WriteLine("Étape 3 : Boîte temporelle") ;

var twcsv = new TemporalWindowCSV() ;

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

twcsv.InputWindow = INPUT_WINDOW ;

twcsv.PredictWindow = PREDICT_WINDOW ;

int index = 0 ;

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

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

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

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

twcsv.Fields[index++].Action = TemporalType.Input ; // indicateurs externes

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


twcsv.Process(STEP4_FILENAME) ;

Console.ReadKey() ;

// Étape 4 : formation du réseau neuronal

Console.WriteLine("Étape 4 : Formation") ;

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

// Étape 5 : enregistrement du réseau neuronal et des statistiques

Console.WriteLine("Étape 5 : enregistrement du réseau neuronal et des champs normalisés") ;

Console.WriteLine("ou ici ?") ;

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

Console.WriteLine("erreur ici ?") ;

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

Console.ReadKey() ;

}

}

}

 
Quelqu'un a-t-il réussi à faire un portage vers Encog 3.3 ? Il semble qu'il n'y ait aucun intérêt à rendre MQL compatible avec ENCOG 3.3 ou les versions ultérieures. Je ne comprends pas pourquoi MQL ne crée pas son propre réseau neuronal pour Metatrader, évitant ainsi beaucoup de travail au commun des mortels.
 
tiagobr:
Je ne comprends pas pourquoi MQL ne crée pas son propre réseau neuronal pour Metatrader, ce qui éviterait beaucoup de travail au commun des mortels.
Si vous cherchez réseaux neuronaux sur mql5.com, vous obtiendrez de nombreux articles et codes - tous ces éléments sont disponibles pour vous sur une base "plug and play". Ne répondent-ils pas à vos besoins ?
 

Bonjour,

Merci pour cet article car il est très utile pour commencer à savoir comment développer des programmes. Cependant, je suis un débutant et j'aimerais savoir comment je peux exécuter toutes les étapes. J'ai pu télécharger les données à l'aide du script, mais je ne sais pas comment effectuer la normalisation et le timeboxing dans Metatrader. Existe-t-il une information pas à pas sur l'exécution des codes ? Merci d'avance et désolé pour cette question si basique.

Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées.

 

Bonjour,

Je suis bloqué à

7. Formation aux réseaux neuronaux

J'ai téléchargé .Net Core, Visual Basic Code for Mac, Encog 3.3.

Que dois-je faire ensuite avec Encog ?

Merci d'avance.

Il y a également des liens cassés dans l'article.

Y aura-t-il une mise à jour ?

i.e.

calcul de l'erreur et algorithmes de formation

La documentation complète de l'ENCOG est disponible en ligne.

 

HI , nvesteo

J'ai téléchargé l'exemple de code, avec MT5 chargement neuralencogindicator affichage exception, demander de l'aide.


 

Bonjour à tous,

Très bon article, mais je n'ai pas reproduit le même résultat.

Lorsque j'appelle l'indicateur, il n'est pas normalisé à 1 et -1 comme dans l'exemple de l'article et ne trace qu'une ligne droite.

Je ne sais pas si quelqu'un a eu ce problème et l'a résolu.

 
Automated-Trading:

Essayez de remplacer le symbole décimal par "." au lieu de "," dans Panneau de configuration->Région et langue->Paramètres supplémentaires...


C'était mon problème. Modifiez-le et résolvez le problème.

MERCI !

 
L'indicateur ne fait aucun dessin. J'ai copié les fichiers dll à différents endroits, mais toujours pas de résultat. Une idée ?
 
Cela peut-il fonctionner avec MT4 ?