L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 2956

 

L'aide d'OnnxTypeInfo manque d'explications sur le champ dimensions[]. Il serait bon d'expliquer la signification de ce tableau au moins sur l'exemple du projet ONNX.Price.Prediction, où (MT5 version 3621) il se présente comme suit :

   OnnxTypeInfo otype;
   OnnxGetInputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true
   ArrayPrint(otype.dimensions);                        // -1 -1 4
   OnnxGetOutputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true  
   ArrayPrint(otype.dimensions);                        // -1 1
 
Bohdan Suvorov #:
Et voici mon implémentation de l'EA sur mes propres neurones

Je me demande de quel type de bibliothèque il s'agit ?

#import "markettrader.dll"
  void AlertT(string &msg,int len);
 
Aleksey Nikolayev #:

L'aide d'OnnxTypeInfo manque d'explications sur le champ dimensions[]. Il serait bon d'expliquer la signification de ce tableau au moins sur l'exemple du projet ONNX.Price.Prediction, où (MT5 version 3621) il se présente comme suit :

En termes python, il s'agit de la forme de l'objet.

 
Rashid Umarov #:

En termes python, il s'agit de la forme de l'objet.

Les nombres négatifs et le fait que la longueur du tableau soit supérieure d'une unité au nombre de dimensions des paramètres prêtent donc à confusion.

En outre, la forme des paramètres est définie dans le script, et non dans les propriétés du modèle. S'agit-il d'un bogue ou d'une caractéristique ?

 
Aleksey Nikolayev #:

Les nombres négatifs et le fait que la longueur du tableau soit supérieure d'une unité au nombre de mesures des paramètres sont alors source de confusion.

En outre, la forme des paramètres est définie dans le script, et non dans les propriétés du modèle. S'agit-il d'un bogue ou d'une caractéristique ?

Oui, j'ai oublié les valeurs négatives. Je vais vérifier.

 

Bonjour à tous !

J'arrive à trader avec un certain succès en mode manuel, mais j'aimerais quand même automatiser le processus. En y réfléchissant, j'ai décidé d'essayer de consulter sur la question de l'apprentissage automatique. Qui utilise quels modèles et avec quel succès ? Je vois le problème de la manière suivante :

L'idée fondamentale est que ce n'est pas la direction de la tendance qu'il faut prédire, mais les trois points : acheter, vendre et attendre. C'est-à-dire 1 (acheter), -1 (vendre), 0 (conserver l'opération en cours s'il y en a une ou ne rien faire s'il n'y a pas d'opération). Il est souhaitable de travailler avec des séries temporelles sur les minutes, ce que je n'ai pas encore compris. Il est important que la série temporelle pour un certain nombre de barres passées soit prise en compte, afin que les indicateurs sur l'historique soient pris en compte, sinon leur dynamique ne sera pas claire. J'en ai une trentaine, c'est probablement difficile à garder à l'esprit, mais j'arrive quand même à trader avec mes mains.

Si j'ai bien compris, l'apprentissage automatique comporte des tâches de classification, par exemple pour savoir si la tendance sera à la hausse ou à la baisse, ou pour prédire une valeur spécifique telle que le prix sera ici avec telle erreur. Mais sur les marchés financiers, la tâche est un peu différente : il s'agit de maximiser les profits tout en minimisant les pertes. Et je n'ai pas vu ce type de modèles d'apprentissage à petite échelle.

C'est-à-dire plus de profit lorsque sa taille est maximisée pour chaque transaction possible et que les pertes sont minimisées, avec une grande précision lors de l'entrée et de la sortie d'une transaction :

Profit = transactions positives - transactions perdantes, en tenant compte du spread,

où la somme des transactions positives doit tendre vers le maximum, et la somme des transactions perdantes doit tendre vers zéro. Le bénéfice tendra alors vers le maximum par définition, toutes choses étant égales par ailleurs (par exemple, la taille du lot).

C'est pourquoi, à mon avis, il devrait y avoir un tel modèle, car les entrées et les sorties seraient alors plus précises.

 
Aleksey Nikolayev #:

Les nombres négatifs et le fait que la longueur du tableau soit supérieure d'une unité au nombre de mesures des paramètres sont alors source de confusion.

En outre, la forme des paramètres est définie dans le script, et non dans les propriétés du modèle. S'agit-il d'un bogue ou d'une caractéristique ?

Une valeur négative de la dimension signifie que cette dimension n'est pas fixe et qu'elle est définie par un paramètre externe. Par conséquent, le script devrait spécifier explicitement la dimensionnalité.

 

Il est clair que l'exemple de l'utilisation du modèle ONNX dans MQL5 n'est qu'une illustration de cela et rien de plus. Mais j'aimerais tout de même attirer l'attention sur une erreur très importante. Dans l'apprentissage automatique, la première étape est le prétraitement. Cela inclut de nombreuses choses, de la normalisation triviale à la réduction de la dimensionnalité et à d'autres astuces techniques. La règle principale de toute transformation de prédicteur et de cible à ce stade est que tous les paramètres de transformation (tels que la moyenne, la médiane, le sd, le mad, etc.) sont calculés sur l'ensemble d'apprentissage. L'ensemble de test et les nouvelles données sont traités à l'aide des paramètres obtenus sur l'ensemble d'entraînement.

Ainsi, dans l'exemple, il a fallu calculer la moyenne et l'écart sur l'ensemble d'apprentissage, transmettre ces données à la partie où le prédicat est créé, traiter les nouvelles données avec ces paramètres. Ensuite, il faut dénormaliser et obtenir les valeurs réelles du prix prédit. Cette séquence est importante.

Il est clair que personne n'introduit les prix réels dans l'entrée du modèle, mais c'est déjà spécifique.

Bonne chance !

 
Slava #:

Une valeur de dimension négative signifie que cette dimension n'est pas fixe et qu'elle est définie par un paramètre externe. Par conséquent, le script doit explicitement spécifier la dimensionnalité

Merci, c'est plus clair maintenant.

 
Elvin Nasirov #:

Si j'ai bien compris, l'apprentissage automatique permet d'effectuer des tâches de classification, par exemple, déterminer si la tendance sera à la hausse ou à la baisse, ou prédire une valeur spécifique telle que le prix sera ici avec telle ou telle erreur. Mais sur les marchés financiers, la tâche est un peu différente : il s'agit de maximiser les profits tout en minimisant les pertes. Et je n'ai pas vu ce type de modèles d'apprentissage Raspberry.

Ce problème est résolu en utilisant une fonction de perte appropriée lors de l'apprentissage des modèles MO. Deux problèmes se posent à cet égard. Le premier est d'ordre technique : les fonctions de perte standard des logiciels de MO ne sont liées à la maximisation du profit que de manière indirecte, ce qui oblige à en créer de nouvelles. C'est assez difficile à faire - vous devez avoir une bonne compréhension des progiciels de MO au niveau du code. Si ce problème est résolu, il peut y avoir un second problème, mathématique, où la fonction de perte personnalisée est mauvaise pour l'apprentissage du modèle.

Si quelqu'un résout un problème aussi difficile, il est peu probable qu'il partage la solution.