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

 
sibirqk:

Si ce n'est pas un secret, sur quels principes la série artificielle est-elle faite ? S'agit-il simplement d'une onde sinusoïdale mélangée au bruit, ou est-ce plus compliqué que cela ?

Comme il y a plusieurs questions dans mon post, je devrais y répondre en une seule fois.

Il s'agit du forum pour le trading, les systèmes de trading automatisés et le test des stratégies de trading.

Comment utiliser l'apprentissage automatique dans le trading : théorie et pratique (le trading et pas seulement)

Yuriy Asaulenko, 2019.02.17 21:01

J'ai essayé de former un réseau neuronal en Python. Le paquet est scikit-learn, la NS elle-même est sklearn.neural_network.MLPRegressor. Plus de 100 neurones, couches cachées -7, entrées -19, sortie 1. La tâche consiste à prédire un processus aléatoire.

La tâche est artificielle, réalisée sur un générateur de bruit et de manière à ce que ce bruit puisse théoriquement être prédit. Je l'ai essayé pour quelques comptes à l'avance.

Résultat de la comparaison entre la prévision et la réalité pour 5 000 points choisis au hasard :

X est la prévision, Y est la valeur réelle. Ils sont tous très proches d'une ligne droite de 45 degrés. C'est-à-dire que la prédiction est presque parfaite (sur un échantillon artificiel).

L'apprentissage est très rapide - 24 époques. Dans le temps, environ 10 secondes.

Je dois dire que j'ai été très surpris. J'ai essayé très fort de cacher les données. Je suis surpris qu'elle l'ait trouvé. En général, proche du mysticisme).

Conclusions : La NS sklearn.neural_network.MLPRegressor est tout à fait utilisable. Je n'ai pas encore essayé le classificateur.

J'ai déjà essayé quelque chose avec le marché, sans résultat jusqu'à présent. Il ne cherche pas, dit qu'il n'y a rien, bien que la tâche soit de la même classe que celle qui a été générée artificiellement.

Je dois dire tout de suite que je n'ai pas inventé la machine à mouvement perpétuel et que je n'ai fait aucun tour, donc si je l'ai fait, ce sera purement dû à mon ignorance.

Au début, un peu de théorie. Les processus aléatoires peuvent être prédits, y compris même à pile ou face. Tout dépend de la formulation du problème de prédiction. Par exemple, la prévision "Il va pleuvoir demain" est correcte à environ 90%. Cependant, vous ne dites pas s'il va pleuvoir le matin, l'après-midi ou en fin de soirée ou s'il risque de pleuvoir toute la journée, car vous n'obtiendrez pas de prévisions fiables.

Il est possible de prédire les séries chronologiques - c'est possible sous certaines conditions. L'une de ces conditions possibles est la nature limitée du spectre de BP - plus le spectre est large, plus l'intervalle de prévision est petit, plus il est étroit, plus l'intervalle de prévision est long.

Les séries chronologiques du marché ont un spectre infini, de sorte que vous ne pouvez pas vraiment prédire le prix pour 5 minutes ou une heure à l'avance. Je ne me suis pas fixé une telle tâche.

Maintenant, préparons les données pour la formation.

1. nous obtenons une série du générateur de nombres aléatoires (RNG) et la transformons en une forme proche de celle du marché. Une telle série a un spectre illimité et il n'est pas réaliste de prédire ses valeurs.

2. nous faisons passer la série par le filtre passe-bas (LPF). Nous avons reçu une série aléatoire ayant un spectre limité et la possibilité de prédire pour n-comptes à l'avance, cependant cette série n'est pas très similaire à celle du marché.

3. Nous générons une série avec M=0 en utilisant le RNG et l'ajoutons à la série après le LPF, après avoir tenu un tambourin. Nous obtenons à nouveau une série proche de celle du marché. Nous utiliserons cette série pour la formation.

4. Comme fonction cible, nous prenons la série de l'étape 2 passée par le LPF et décalée de N échantillons vers l'arrière qui donne la prévision de N échantillons vers l'avant.

Ensuite, les séries d'entrées et de cibles sont envoyées au SN, puis l'entraînement et la vérification des résultats de l'entraînement. Répétez ensuite les étapes 1 à 4, en envoyant la série de l'étape 3 au NS et en comparant la sortie du NS avec une série décalée de N échantillons à l'étape 4.

C'est tout. Pas de merveilles. Tout cela peut être fait sans NS. Ce qui m'a surpris, c'est que le NS l'a fait en quelques secondes, et en seulement 24 cycles d'apprentissage. Et cela avec beaucoup de bruit, vous ne pouvez même pas voir la composante basse fréquence. Incroyable.

Pourquoi ça n'a pas marché avec le marché VR. Tout filtre passe-bas a un retard important et sa courbe est décalée vers la droite par rapport au VR. C'est-à-dire que nous avons un signal BF déjà retardé à chaque point de la série, et donc l'intervalle de prédiction s'avère être plus grand que celui autorisé, et la prédiction devient irréaliste. On ne peut même pas construire une vraie cible pour l'entraînement.

 

Yuriy Asaulenko:

Le concept de spectre n'est défini que pour un processus stationnaire. Le prix ne l'est pas, ne serait-ce que parce que la dispersion augmente avec le temps.

 
Aleksey Nikolayev:

Le concept de spectre n'est défini que pour un processus stationnaire. Le prix ne l'est pas, ne serait-ce qu'en raison de l'augmentation de la dispersion dans le temps.

Il s'agit du cycle "un petit aîné dans un chalet et un petit aîné à Kiev".
Hors de question.
 
Yuriy Asaulenko:
C'est du cycle, il y a un aîné dans un jardin, et un oncle à Kiev.
Hors de question.

OK, je ne vous empêcherai pas de vendre des tambours Stradivarius.

 
Aleksey Nikolayev:

OK, je ne vous empêcherai pas de vendre des tambours Stradivarius.

Bon, d'accord, je vais avoir pitié. )) Presque tous les signaux radio sont des processus non stationnaires, mais ils ont un spectre. La notion de spectre n'a rien à voir avec la stationnarité.
Vous devriez vous adresser à la branche T&P, aux fantaisistes).
 

Obtenir des prix en Python via un socket presque instantanément (50k enregistrements) en 10 lignes de code

et sur le côté mt5 20

je n'ai pas besoin de libs improvisés pour r. pourquoi est-ce si difficile de le faire soi-même ? Merci pour les sockets natives dans mt5.

je peux ajouter n'importe quelle fonction très facilement, que vous ayez besoin de signaux pour ouvrir des transactions ou autre chose.

 
Maxim Dmitrievsky:

Obtenir des prix en Python via un socket presque instantanément (50k enregistrements) en 10 lignes de code

et sur le côté mt5 20

je n'ai pas besoin de libs improvisés pour r. pourquoi est-ce si difficile de le faire soi-même ? Merci pour le fait que les sockets natifs fonctionnent dans mt5.

Tu parles.)

Je vois qu'ils sont passés à Spyder. Ils devraient, c'est mieux que de bricoler votre ordinateur portable.

Juste au cas où. La grille d'un graphique est réalisée par plt.grid().

 
Yuriy Asaulenko:
Bon, d'accord, j'ai pitié. )) Presque tout signal radio est un processus non stationnaire, mais il possède un spectre.
Vous devriez aller à la branche Tip, chez les fantaisistes.))

Les amateurs de radio confondent un processus aléatoire avec sa mise en œuvre.

 
Aleksey Nikolayev:

Les amateurs de radio confondent un processus aléatoire avec sa mise en œuvre.

Je ne discuterai pas avec les trolls.

 
Yuriy Asaulenko:

Ouais, c'est ça.)

Je vois que vous êtes passé à Spyder. C'est vrai, c'est mieux que de jouer avec U-notepad.

ZS La grille du graphique est réalisée par plt.grid().

j'ai du bricoler spyder pour le mettre sur bare python, sans anaconda.

j'avais vscode avant, mais il vide la batterie, alors je dois chercher la prise.