L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 2697

 
Roman #:

Veuillez expliquer comment travailler avec la fonction de perte
Comment utiliser la fonction cible pour la minimisation ?

Et la deuxième question.
Dans Matlab, la fonction fminsearch() utilise l'algorithme de Nelder-Mead.
Cet algorithme n'est pas présent dans ENUM_LOSS_FUNCTION.
Pouvons-nous compter sur l'ajout de cet algorithme ?

La formation d'un réseau neuronal consiste à trouver un algorithme qui minimise l'erreur sur l'échantillon de formation ; à cette fin, une fonction de perte est utilisée. La méthode deperte est utilisée pour calculer l'écart, ce qui vous permet de spécifier 1 des 14 types de l'énumérationENUM_LOSS_FUNCTION.

Les valeurs d'écart obtenues sont ensuite utilisées pour affiner les paramètres du réseau neuronal, à l'aide de la méthodeDerivative, qui calcule les valeurs de la dérivée de la fonction d'activation et les inscrit dans le vecteur/la matrice transmis(e).

Grâce à la possibilité d'étendre les énumérations, nous pouvons ajouter de nouveaux algorithmes si nécessaire.

 
Renat Fatkhullin #:

La formation d'un réseau neuronal consiste à trouver un algorithme qui minimise l'erreur sur l'échantillon de formation. Pour calculer l'écart, on utilise la méthodeLoss, qui permet de spécifier 1 des 14 types de l'énumérationENUM_LOSS_FUNCTION.

Les valeurs d'écart obtenues sont ensuite utilisées pour affiner les paramètres du réseau neuronal, à l'aide de la méthodeDerivative, qui calcule les valeurs de la dérivée de la fonction d'activation et les inscrit dans le vecteur/la matrice transmis(e).

Grâce à la possibilité d'étendre les énumérations, nous pouvons ajouter de nouveaux algorithmes si nécessaire.


J'ai compris cela grâce à l'exemple du MAPE.

Je pensais qu'il s'agissait d'une fonction de perte qui minimisait la fonction cible.
Et il s'agit simplement d'un calcul métrique.

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

double MAPE = Forecast.Loss(Fact,LOSS_MAPE);

Print(DoubleToString(MAPE,2) + " %");
19.63 %


Ce qui est la même chose dans le code

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

vector loss = {0.,0.,0.};

for(int i=0; i<3; i++)
   loss[i] = fabs(Forecast[i] - Fact[i]) / Fact[i];

double MAPE = loss.Mean()*100;

Print(DoubleToString(MAPE,2) + " %");
19.63 %



Ensuite, il y a une question sur la description de la documentation.

Y a-t-il une erreur dans la description ?

ll

Peut-être serait-elle plus correcte :
Calcule la valeur des pertes sous forme de métrique MSE, MAE, etc.
Après tout, la fonction de minimisation des pertes devrait être écrite par vous-même.


Et il y a une description étrange ici.

i

Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
  • www.mql5.com
Loss - Машинное обучение - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin #:

Je cherche des compagnons pour un voyage intéressant et passionnant sur des chemins inconnus à la recherche de prédicteurs/caractéristiques/signes mystérieux.

J'ai une carte pour les trouver, j'ai besoin de mains pour tendre des pièges et réfléchir aux habitudes et au halo de ces phénomènes étonnants.

Le voyage n'est pas facile, il est long mais passionnant et je suis sûr que nous ne serons pas sans trophées !

Si vous êtes intéressés, posez des questions !

Tout a déjà été inventé avant nous, alors j'aimerais sauter dans le train.

Nous allons maintenant introduire les réseaux neuronaux dans Metatrader et nous pourrons ensuite nous détendre.

En général, nous pouvons simplement acheter des contrats à terme sur le gaz et les vendre ensuite.
 
Maxim Dmitrievsky #:
Tout a déjà été inventé avant nous, et j'aimerais donc prendre le train en marche.

Peut-être inventé, mais clairement pas à la surface dans les sources ouvertes.

Pour la recherche et la sélection des prédicteurs, je développe une approche systématique, c'est-à-dire qu'il y aura un typage des prédicteurs, qui sont basés, entre autres, sur des données d'indicateurs. J'aimerais passer au crible la base de code à la recherche de choses intéressantes. En général, dans mon paradigme, il y a un concept "événement", c'est quelque chose qui peut affecter le prix, et il est décrit par des prédicteurs. Il y aura différents types d'événements, par exemple "le prix a cassé le niveau" (qui est généré par l'indicateur), et la description de ces événements sont des prédicteurs responsables du temps, de l'histoire de l'événement, de la relativité de l'événement (normalisation) - le système de coordonnées sera également sélectionné.

La méthode elle-même fonctionne, elle permet de sélectionner des variantes intéressantes, mais nous devons générer ces variantes.

Je cherche des personnes pour accélérer le processus et renforcer la pensée critique et créative.

Oui, il n'y aura pas de personnes intéressées, je choisirai seul - lentement et fastidieusement.

 
Aleksey Vyazmikin #:

Il pourrait s'agir d'une invention, mais il est clair qu'elle n'apparaît pas en surface dans les sources ouvertes.

Pour la recherche et la sélection des prédicteurs, je développe une approche systématique, c'est-à-dire qu'il y aura un typage des prédicteurs, qui sont basés, entre autres, sur des données d'indicateurs. J'aimerais passer au crible la base de code à la recherche de choses intéressantes. En général, dans mon paradigme, il y a un concept "événement", c'est quelque chose qui peut affecter le prix, et il est décrit par des prédicteurs. Il y aura différents types d'événements, par exemple, "le prix a cassé le niveau" (qui est généré par l'indicateur), et la description de ces événements sont des prédicteurs responsables du temps, de l'histoire de l'événement, de la relativité de l'événement (normalisation) - le système de coordonnées sera également sélectionné.

La méthode elle-même fonctionne, elle vous permet de sélectionner des variantes intéressantes, mais vous devez générer ces variantes.

Je suis à la recherche de personnes capables d'accélérer le processus et d'améliorer la pensée critique et créative.

Oui, il n'y aura pas de personnes intéressées, j'en choisirai une - lentement et fastidieusement.

J'ai déjà créé tout cela
 
Aleksey Vyazmikin #:

Il pourrait s'agir d'une invention, mais il est clair qu'elle n'apparaît pas en surface dans les sources ouvertes.

Pour la recherche et la sélection des prédicteurs, je développe une approche systématique, c'est-à-dire qu'il y aura un typage des prédicteurs, qui sont basés, entre autres, sur des données d'indicateurs. J'aimerais passer au crible la base de code à la recherche de choses intéressantes. En général, dans mon paradigme, il y a un concept "événement", c'est quelque chose qui peut affecter le prix, et il est décrit par des prédicteurs. Il y aura différents types d'événements, par exemple, "le prix a cassé le niveau" (qui est généré par l'indicateur), et la description de ces événements sont des prédicteurs responsables du temps, de l'histoire de l'événement, de la relativité de l'événement (normalisation) - le système de coordonnées sera également sélectionné.

La méthode elle-même fonctionne, elle vous permet de sélectionner des variantes intéressantes, mais vous devez générer ces variantes.

Je suis à la recherche de personnes capables d'accélérer le processus et d'améliorer la pensée critique et créative.

Oui, il n'y aura pas de personnes intéressées, je choisirai seul - lentement et fastidieusement.

n'oubliez pas d'ajouter le temps réel...ou vous finirez comme tout le monde :-)

a la 2 pcs : y=abs(sin(x))*sin(x) ; avec une fréquence de 1 jour et 1 semaine ; il vaut mieux calculer le déphasage à l'avance

car les probabilités d'indicateurs et de franchissement de ligne en dépendent.

il s'agissait d'ailleurs d'un néfaste, détesté ici Fourier :-)

 
mytarmailS #:
J'ai déjà tout créé.

Tu es si douée !

Et vous avez trouvé beaucoup de choses intéressantes et durables ?

Le problème du fonctionnement de la solution dans le terminal est-il résolu ?

 
Maxim Kuznetsov #:

n'oubliez pas d'ajouter le temps réel...sinon vous finirez comme tout le monde :-)

à la 2 pcs : y=abs(sin(x))*sin(x) ; avec une fréquence de 1 jour et 1 semaine ; le déphasage est mieux calculé à l'avance

car les probabilités d'indicateurs et de franchissement de ligne en dépendent.

il s'agissait d'ailleurs de nuisibles, détestés ici Fourier :-)

Eh bien, je ne suis pas malin, dans mes fantasmes.... Que signifie "temps réel" ?

 
Aleksey Vyazmikin #:

0)Tu es un bon garçon !

1)As-tu trouvé beaucoup de choses intéressantes et durables ?

2)Le problème du travail de la solution dans le terminal est-il résolu ?

0) Oui, je suis comme ça...)

1) Je n'ai pas encore déployé l'ensemble de la solution,
1) Il y a des problèmes avec la malédiction de la dimensionnalité et l'explosion combinatoire, mais c'est soluble en théorie, en faveur de la précision....
2. Il y a un problème avec le fait que l'algorithme de recherche est lent, beaucoup de choses doivent être écrites en C ou C++, et je ne sais pas comment le faire.
3. Même un algorithme optimisé ne sera pas en mesure de rechercher des motifs dans un grand nombre de données, vous devez rechercher des motifs localement.....
Mais en général, si cela ne marche pas, rien ne marche....

2) Oui.


D'ailleurs, le mot "événement" peut être remplacé par le mot "règle".


 
Aleksey Vyazmikin #:

Je ne suis pas malin, dans mes fantasmes..... Que voulez-vous dire par "temps réel" ?

La probabilité que le prix franchisse une ligne quelconque (et déclenche les signaux de l'indicateur) dépend de l'heure de la journée et du jour de la semaine.

Il est nécessaire d'ajouter du temps cyclique à NN et DL. La manière la plus simple est une onde sinusoïdale. Les dépendances n'étant pas linéaires, il suffit de l'élever au carré, en tenant compte du signe. Deux entrées supplémentaires sont responsables des références temporelles. Minuit/midi est différent partout, il est donc préférable de calculer et de donner la phase à l'avance. Il s'agit de la connexion du modèle au monde réel et à son heure.

Si elles ne sont pas explicitement données, vous obtiendrez une citrouille ou l'ensemble du modèle essaiera de les obtenir et de les restituer par lui-même.