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
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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() ;
}
}
}
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.
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.
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 !