Discussion de l'article "Comment utiliser les modèles ONNX dans MQL5" - page 4

 
Merci beaucoup. J'apprécie beaucoup. J'espère que d'autres articles seront publiés à ce sujet dans un avenir proche.
 

Il y a un problème avec la librairie onyx, une idée ?

lors de l'installation d'onyx, j'ai eu une erreur

ERREUR : Impossible de trouver une version qui réponde à l'exigence onyx (à partir des versions : 0.0.5, 0.0.17, 0.0.19, 0.0.20, 0.0.21, 0.1, 0.1.1, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.3, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.3.11, 0.3.12, 0.4, 0.4.1, 0.4.2, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.8.5, 0.8.7, 0.8.10, 0.8.11)

ERREUR : Aucune distribution correspondante n'a été trouvée pour onyx

puis lors de l'exécution de t2fonnx

import onyx

ModuleNotFoundError : Aucun module nommé 'onyx'



 
Curieusement, le réseau est formé sur une période horaire, mais l'Expert Advisor alimente des données quotidiennes. Est-ce une erreur ? Ou je n'ai pas compris quelque chose ?
 
donbar upbar #:

il y a un problème avec onyx lib une idée ?

lors de l'installation d'onyx, j'ai eu une erreur

ERREUR : Impossible de trouver une version qui réponde à l'exigence onyx (à partir des versions : 0.0.5, 0.0.17, 0.0.19, 0.0.20, 0.0.21, 0.1, 0.1.1, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.3, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.3.11, 0.3.12, 0.4, 0.4.1, 0.4.2, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.8.5, 0.8.7, 0.8.10, 0.8.11)

ERREUR : Aucune distribution correspondante n'a été trouvée pour onyx

puis lors de l'exécution de t2fonnx

import onyx

ModuleNotFoundError : Aucun module nommé 'onyx'



Bonjour Donbar, il semble que vous essayez d'installer le mauvais paquetage. Il devrait s'agir de onnx, et non de onyx.
 

Bonjour, merci pour cet article. C'est un excellent moyen de construire un modèle ML et de l'incorporer dans un EA !

J'ai essayé de reproduire vos résultats, mais j'ai quelques problèmes. J'espérais que vous pourriez m'aider à comprendre pourquoi.

J'ai suivi l'article attentivement, mais j'ai obtenu des résultats radicalement différents dans le testeur de stratégie. Je comprends que ces algorithmes ont des caractéristiques aléatoires, mais je suis toujours surpris par la différence. J'ai également pris soin d'utiliser les mêmes périodes de temps afin qu'au moins mes données d'entraînement et de test soient les mêmes pour la construction du modèle, et mon backtest MT5 était sur la même période. J'ai obtenu des résultats très différents.

J'ai essayé d'identifier les causes possibles, et je pense que la différence la plus intéressante commence lors de la construction du modèle. Mes fonctions de perte suggèrent que vous avez obtenu une bien meilleure généralisation en examinant les performances sur les données de test/validation. Je les ai incluses à la fin de ce message.

Pouvez-vous suggérer des causes possibles de ce phénomène ? Le modèle est-il si fragile que cela n'est pas inattendu ?

Mon dernier effort de reproduction a consisté à copier-coller votre code Python final, en insérant quelques appels à Matplotlib pour produire les graphiques de perte, mais j'ai obtenu essentiellement les mêmes résultats. Pouvez-vous me suggérer comment je pourrais mieux reproduire vos résultats ?

Je vous remercie.

Dossiers :
LOSS.png  99 kb
RMSE.png  120 kb
copypaste.py  5 kb
 
Vladimir Perervenko projet d' apprentissage automatique comprend trois phases :
  • le prétraitement (beaucoup de choses)
  • Sélection du modèle, entraînement, optimisation, etc.
  • la mise en œuvre

L'utilisation des modèles ONNX dans µl résout le problème de l'implémentation. Cependant, ce n'est pas le cas pour tous les modèles et ce n'est pas très facile.

L'entraînement et l'optimisation des modèles sont résolus par un processus séparé en Python.

Mais de tout ce qui précède, la première étape est la plus longue, la plus créative et la plus importante. Et il est impossible de la réaliser sur le µl. Nous ne considérons pas la mise à l'échelle primitive comme un prétraitement. Et la sagesse populaire dit : "Garbage in - rubbish out". Il y a trop de choses à développer et à mettre en œuvre en plus dans MCL pour que la MO ne soit pleinement utilisée que sur MCL. Il est impossible d'embrasser l'immensité, d'autant plus qu'elle ne cesse de s'étendre.

Par conséquent, pour exécuter un prétraitement, il faut soit le faire dans un autre langage (celui qui maîtrise R/Python/Julia, etc.), soit essayer de le convertir en ONNX.

L'intérêt de l'implémentation d'ONNX jusqu'à présent est uniquement d'apprendre à convertir, créer, simplifier et optimiser les modèles ONNX. Cela pourrait s'avérer utile à l'avenir.

On ne peut pas mieux dire, tout est précis et va droit au but

 
Rorschach #:

Transférer le prétraitement vers MT n'est pas un problème, je veux vraiment tester le système dans le testeur MT, en python/R je dois écrire mon propre testeur, plein d'erreurs.

Il existe déjà beaucoup de testeurs, testés en R et en python.

Mais transférer le prétraitement est un problème, le prétraitement n'est pas un calcul trivial de mise à l'échelle ou stochastique.
 
Bill M testeur de stratégie. Je comprends que ces algorithmes ont des caractéristiques aléatoires, mais je suis toujours surpris par la différence. J'ai également pris soin d'utiliser les mêmes périodes de temps afin qu'au moins mes données d'entraînement et de test soient les mêmes pour la construction du modèle, et mon backtest MT5 était sur la même période. J'ai obtenu des résultats très différents.

J'ai essayé d'identifier les causes possibles, et je pense que la différence la plus intéressante commence lors de la construction du modèle. Mes fonctions de perte suggèrent que vous avez obtenu une bien meilleure généralisation en examinant les performances sur les données de test/validation. Je les ai incluses à la fin de ce message.

Pouvez-vous suggérer des causes possibles de ce phénomène ? Le modèle est-il si fragile que cela n'est pas inattendu ?

Mon dernier effort de reproduction a consisté à copier-coller votre code Python final, en insérant quelques appels à Matplotlib pour produire les graphiques de perte, mais j'ai obtenu essentiellement les mêmes résultats. Pouvez-vous me suggérer comment je pourrais mieux reproduire vos résultats ?

Je vous remercie.

Je suis également confronté au même problème.

Quelqu'un peut-il m'aider ?

 
Joseph #:

Je rencontre le même problème.

Quelqu'un peut-il m'aider ?

Poursuivre mon enquête sur le problème auquel je suis confronté (probablement d'autres aussi) ; et mettre à jour mes conclusions.

Tout d'abord, merci beaucoup à MetaQuotes (l'auteur) d'avoir partagé cet article détaillé. J'apprends beaucoup dans ma quête du trading ML.

En exécutant les fichiers onnx originaux de l'article sur mon compte MetaQuates-Demo, j'ai réussi à reproduire les mêmes résultats. Cependant, en ré-entraînant le modèle onnx avec le fichier ONNX.eurusd.H1.120.Training.py ci-joint, le modèle (onnx attaché : ONNX.eurusd.H1.120.Training.py :

data start date = 2022-09-03 00:00:00
data end date = 2023-01-01 00:00:00

le modèle (onnx attached : ) obtient des scores :

RMSE         : 0.005212606864326095
MSE          : 2.7171270322019527e-05
R2 score     : -3.478924709873314

et les résultats du backtest 1Jan2023-26Mar2023 sont joints : "backtest results.png"

MetaQuotes
  • 2023.11.23
  • www.mql5.com
Trader's profile
Dossiers :
 

Je ré-entraîne le fichier ONNX.eurusd.H1.120.Training.py ci-joint avec ce qui suit :

data start date = 2022-11-28 12:28:00
data end date = 2023-03-28 12:28:00

le modèle (onnx attaché :) obtient des scores :

RMSE         : 0.0014680559413400179
MSE          : 2.155188246903726 e-06
R2 score     : 0.9699715149559284

et les résultats du bactest 1Jan2023-26Mar2023 joints : "bacttest result2.png"

Donc, d'après les exercices ci-dessus, je suppose que le modèle utilisé pour produire le résultat final de l'article n'aurait probablement pas été entraîné avec les dates suivantes ?

data start date = 2022-09-03 00:00:00
data end date = 2023-01-01 00:00:00
J'apprécierais que quelqu'un me fasse part de ses commentaires à ce sujet.
Dossiers :