Discussion de l'article "Réseaux de neurones de troisième génération : Réseaux profonds" - page 6

 

Un autre test rapide, cette fois-ci avec un ensemble d'entraînement de 6000 barres de septembre 2014 à février 2015. Le test hors échantillon commence en mars :

Nous avons à nouveau une phase rentable d'environ 5 semaines jusqu'à ce que le modèle se détériore.

Je pense que la division en données de test et d'entraînement n'est pas nécessaire : nous pouvons utiliser toutes les données pour l'entraînement. La précision et la matrice de confusion sont trompeuses car, dans la plupart des cas, le signe ZZ est identique à celui de la barre précédente, ce qui suggère à tort une grande précision. Pour le bénéfice, seuls les changements de signe comptent.

 
jcl365:

J'ai maintenant entraîné un nouveau modèle avec prédiction de la barre suivante, et il semble que cela fonctionne. La précision est toujours de l'ordre de 74%. Voici la courbe d'équité maintenant :

:

Elle se comporte comme je m'y attendais : le système est rentable immédiatement après l'entraînement, puis se détériore lentement au fur et à mesure que le marché change.

La prochaine étape est donc un test WFO avec un réentraînement régulier du modèle. Pour cela, l'entraînement doit être intégré dans le script de la stratégie.

Voici la fonction corrigée pour le calcul du Sig de la barre suivante :

La fonction "Compute" qui est exécutée toutes les 30 minutes par le script de stratégie :

Le script de stratégie, l'"EA" :

jcl365:

J'ai maintenant entraîné un nouveau modèle avec la prédiction de la barre suivante, et il semble que cela fonctionne. La précision est toujours de l'ordre de 74%. Voici la courbe d'équité maintenant :

:

Elle se comporte comme je m'y attendais : le système est rentable immédiatement après l'entraînement, puis se détériore lentement au fur et à mesure que le marché évolue.

La prochaine étape est donc un test WFO avec un réentraînement régulier du modèle. Pour cela, l'entraînement doit être intégré dans le script de la stratégie.

Voici la fonction corrigée pour le calcul du Sig de la barre suivante :

La fonction "Compute" qui est exécutée toutes les 30 minutes par le script de stratégie :

Le script de stratégie, l'"EA" :

Bonjour

Vous avez déplacé la série ZZ d'une barre dans le futur.

for(i in 1:length(ZZ)-1) { ZZ[i] = ZZ[i+1] }

Vous avez déplacé la série dz d' une barre dans le futur.

 dz <- c(diff(ZZ), NA)

Vous avez donc déplacé la variable cible des deux barres dans le futur.

Ceci est équivalent à

dz <- Hmisc::Lag(diff(ZZ), shift=-2)

Cette option peut également être utilisée.


 


Une fois de plus, nous avons une phase rentable d'environ 5 semaines jusqu'à ce que le modèle se détériore.

C'est normal. Le modèle peut et doit être réappris périodiquement.

Je pense que la division en données de test et de formation n'est pas nécessaire : nous pouvons utiliser toutes les données pour la formation.

Les données peuvent être utilisées pour la formation. Il est important de se rappeler quelques points importants:
1. les ensembles de formation et de test ne doivent pas être croisés.
2. L'ensemble de formation doit être mélangé

3. Si le ratio des classes est déséquilibré , il faut procéder à un ajustement.

Je suis heureux qu'il y ait des collègues qui utilisent R.

Meilleures salutations

Vladimir

 

Vous avez raison en ce qui concerne le double décalage : Ce que le système prédit en fait, c'est une différence ZZ qui est basée sur le cours moyen de la barre suivante. Le ZZ est calculé à partir des cours moyens, mais au moment du calcul, nous disposons du cours de clôture, qui se situe normalement à mi-chemin entre le dernier et le prochain cours moyen. Ainsi, le décalage supplémentaire prédit environ 1,5 barre dans le futur, et en fait, j'ai obtenu des résultats bien pires sans le décalage supplémentaire.

J'ai maintenant un script Zorro qui se ré-entraîne toutes les 4 semaines, et qui teste les 4 semaines suivant l'entraînement. Le deepnet est assez rapide, le script n'a besoin que d'environ 10 minutes pour une exécution couvrant environ 60 cycles d'entraînement/test. Voici le résultat :

Ce résultat n'est pas aussi bon que les premières impressions. Il y a clairement un potentiel d'amélioration, donc les prochaines étapes consisteraient à expérimenter avec différentes configurations de réseau, périodes de temps et différents indicateurs.

 
Nous avons besoin d' identifier non seulement les indicateurs mais aussi leurs paramètres. L'algorithme des gènes vous aide.

Qu'est-ce que Zorro? donnez les liens?


 
Vladimir Perervenko:
Nous avons besoin d' identifier non seulement les indicateurs mais aussi leurs paramètres. L'algorithme des gènes vous aide.

Qu'est-ce que Zorro? donnez les liens?


Oui, il y a un livre de Yu / Wang / Lai qui décrit un algorithme génétique pour la présélection d'indicateurs pour la formation NN Forex. - J'utilise Zorro parce que les scripts sont plus simples et que le backtesting est meilleur, mais je suppose que MT4 ferait aussi l'affaire avec un peu d'effort. Je ne peux pas donner de lien car il s'agit d'un site MT4, mais vous pouvez chercher Zorro trading automaton sur Google. La dll R de Bernd Kreuss fonctionne également avec Zorro.
 

J'ai tout téléchargé et installé et mis tous les fichiers dans les dossiers. Tous les paquets sont installés. Les dossiers sont réglés sur mes destinations.

Quand je mets l'expert sur le graphique EURUSD m30 tout va bien même dans DebugView, mais dès que je mets l'indicateur sur le graphique j'obtiens une Erreur :

ExecutedCode : in >>> as.Logical(res <-GetRes()) [1]

Erreur dans if (z) { :

Le résultat de la fonction GetRes dans "i_SAE_fun.r" est toujours NA et donc il ne peut pas le convertir en bool et s'arrête de fonctionner.

Quelqu'un peut m'indiquer la bonne direction ? qu'est-ce que j'ai manqué ?

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

APoLLo

 
APoLLo_MQL:

J'ai tout téléchargé et installé et mis tous les fichiers dans les dossiers. Tous les paquets sont installés. Les dossiers sont réglés sur mes destinations.

Quand je mets l'expert sur le graphique EURUSD m30 tout va bien même dans DebugView, mais dès que je mets l'indicateur sur le graphique j'obtiens une Erreur :

ExecutedCode : in >>> as.Logical(res <-GetRes()) [1]

Erreur dans if (z) { :

Le résultat de la fonction GetRes dans "i_SAE_fun.r" est toujours NA et donc il ne peut pas le convertir en bool et s'arrête de fonctionner.

Quelqu'un peut m'indiquer la bonne direction ? qu'est-ce que j'ai manqué ?

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

APoLLo

Bonjour APoLLo.

Quelle est la version de R que vous avez ?
Il s'agit d'un article assez long et après la mise à jour de R , certaines fonctions ne fonctionnent plus.
Il vaut mieux utiliser Revolution R Open (RRO 8.01)
Pour vérifier, exécutez un script dans Rstudio.

Si vous avez le temps, je vérifierai également où se trouve l'erreur.

Meilleures salutations/

Vladimir

Revolution R Open
  • www.revolutionanalytics.com
Revolution R Open is our enhanced distribution of the world's most widely used data analysis software. Based on open source R, Revolution R Open is built, tested and distributed by Revolution Analytics and delivers: The latest R language engine from the R Foundation for Statistical Computing High-performance R language engine (multi-threaded...
 
Vladimir Perervenko:

Bonjour APoLLo.

Quelle version de R avez-vous ?
C'est un article assez long et après la mise à jour des paquets dans R , certaines fonctions ne fonctionnent plus.
Il vaut mieux utiliser Revolution R Open (RRO 8.01)
Pour vérifier, exécutez un script dans Rstudio.

Si vous avez le temps, je vérifierai également où se trouve l'erreur.

Meilleures salutations/

Vladimir

J'utilise la dernière version de R 3.2.0 64bit ainsi que la dernière version de MT4. Tous les paquets pour R ont été téléchargés hier, ils devraient donc être également de la dernière version.

Si je démarre l'EA sur EURUSD M30, je peux même m'y connecter avec RGUI et vérifier "SAE" et "prepr" et obtenir beaucoup de chiffres en retour.

Pour moi, il semble que la fonction GetRes de R vérifie si une connexion est ouverte en récupérant la valeur flag1 qui n'est pas disponible sur le serveur (EA).

C'est peut-être la cause du fait que "Acc" ou "K" ou "Kmax" n'ont jamais été calculés correctement.


J'ai du temps, alors si vous avez la possibilité de jeter un coup d'œil, j'en serais très heureux.

Plus tard, j'essaierai Revolution R 8.01 pour vérifier si cela fonctionne mieux.

Merci pour votre aide :)

 
Vladimir Perervenko:

Un ÉNORME MERCI à l'auteur pour cet article. J'ai commencé à me familiariser avec l'application des réseaux neuronaux sur le marché grâce à votre article. Je ne connaissais pas les réseaux neuronaux auparavant et je n'avais jamais utilisé le langage R. Mais maintenant, je l'ai installé et je l'apprends. Mais maintenant, je l'ai installé et je suis en train de l'apprendre. Cela semble compliqué, mais intéressant !

Et oui, dites-moi, je n'arrive pas à comprendre comment le fichier SAE.model fonctionne en tant que bibliothèque pour un Expert Advisor ou quoi ? C'est-à-dire, pouvons-nous enregistrer la structure du réseau neuronal à partir de R et l'utiliser ensuite comme bibliothèque normale dans un Expert Advisor, ou quoi ? Tout cela est très confus et compliqué (pour moi).