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

 
Maxim Dmitrievsky:

C'est ce qui est si ennuyeux, les éternelles intégrations qui prennent plus de temps que le développement du TC. J'aimerais aussi faire un peu de python, mais je n'ai pas encore le temps.

Hélas, il n'y a pas de solution à ce problème :

1. Soit vous écrivez dans un langage tiers (plateforme) pour le TS, mais vous obtenez des problèmes :

a) pas de données historiques

b) pas de testeur

c) pas de test sur un compte de démonstration

-) il peut y avoir des problèmes avec le support de la plateforme, par exemple, j'ai fait une recherche sur Alglib, il y a très peu d'informations à ce sujet, uniquement sur le site du développeur, il n'y a pas de support.

Toutes ces choses doivent être corrigées avec des .dll, des intégrations et autres béquilles.

2. soit vous écrivez tout en MQL et vous n'aurez aucun problème a.b.c.. Vous pourrez soit chercher des solutions prêtes à l'emploi et un appareil mathématique dans la base de code, soit écrire toute la logique (de l'appareil mathématique) à partir de zéro à l'aide des capacités MQL.

3. la variante universelle est un .dll prêt à l'emploi, qui peut être utilisé dans le code MQL. Si vous écrivez le code vous-même, c'est la solution la plus pratique, vous ne pouvez pas utiliser le .dll pour le marché.

De nombreux systèmes de développement et d'analyse vous permettent de créer un fichier .dll à titre d'exemple - Matlab


ZS : MQL me convient à 90%, la seule chose que j'ai à faire est de visualiser les résultats presque à partir de zéro. Dans Matlab, la sortie est toujours à portée de main, une ligne de code et vous avez un graphique prêt, toutes les variables sont visibles, vous pouvez changer les variables... en un mot, Matlab est un environnement de développement prêt pour une matrice.

 
Igor Makanu:

Je veux dire que la recherche en termes de MO, c'est un processus assez spécifique où le travail principal est avec des matrices, c'est un cauchemar de travailler avec elles dans des langages de bas niveau. Le reste peut être survécu d'une manière ou d'une autre :)

 
Maxim Dmitrievsky:

toutes les bibliothèques MoD ont été développées, car celle-ci ne fait que s'appuyer sur les pros.

pas à l'aise et longtemps avec le MO dans des langages de bas niveau, en particulier la recherche

Je n'ai pas la question du choix. Et en général, tout est appliqué - je mets l'accent sur les prédicteurs et un peu de ciblage, et je passe plus de temps à développer de nouveaux prédicteurs du papier au code. La première question que je me pose est donc de savoir si c'était une bonne idée d'ajouter de nouveaux prédicteurs ou non ! Et avec une réponse plus claire à cette question, je peux éventuellement chercher d'autres implémentations/approches d'intégration dans le code final, mais maintenant j'en suis loin.

 
Igor Makanu:

Hélas, il n'y a pas de solution à ce problème :

1. ou écrire dans un langage tiers (plateforme) TC, mais vous obtenez des problèmes :

a) pas de données historiques

b) pas de testeur

c) pas de test sur un compte de démonstration

Ce qui a de la valeur dans une langue tierce :

1. télécharger l'historique au format CSV,

2. Faites un testeur (c'est juste et pas plus qu'une boucle),

3. sur un compte de démonstration, vous pouvez tester, par exemple, via un échange de fichiers avec le terminal. Si vous le faites par le biais d'un disque RAM, les performances sont comparables à celles d'un échange par la mémoire - des gigaoctets par seconde.

Si le système réussit, ce qui ne sera pas le cas la première fois, il fera gagner beaucoup de temps à la modélisation. Et plus tard, la manière de le faire entrer dans le terminal est une question gérable.

 
Maxim Dmitrievsky:

Je veux dire que la recherche en termes de MO, c'est un processus assez spécifique où le travail principal est avec des matrices, c'est un cauchemar de travailler avec elles dans des langages de bas niveau. Le reste est toujours possible de survivre :)

Je comprends - je suis moi-même dans la même situation, c'est pourquoi après avoir étudié la littérature ou l'outil mathématique, je commence par tout transférer dans Matlab, puis je commence à expérimenter et à porter partiellement le tout dans MQL. Les mêmes matrices et vecteurs dans Matlab sont initialement liés à toutes les variables, vous ne devez pas décrire ou analyser quoi que ce soit, vous travaillez simplement, multipliez un vecteur par une matrice ou transposez-le, il est difficile d'imaginer ce que Matlab ne peut pas faire en termes d'opérations mathématiques.

SZY : Avec MO, c'est encore long à régler en MQL, MATlAB semble pouvoir aider, mais je me souviens que lorsque je l'ai installé tout était clairement là et le réseau était dessiné et l'état de chaque élément du réseau pouvait être visualisé pas à pas, comme NeuroSolutions , peut-être que plus tard j'y arriverai

 
Aleksey Vyazmikin:

Je n'ai pas la question du choix. Et en général, tout est appliqué - je mets l'accent sur les prédicteurs et un peu de ciblage, et je passe plus de temps à développer de nouveaux prédicteurs du papier au code. La première question que je pose est donc de savoir si c'était une bonne idée d'ajouter de nouveaux prédicteurs ou non ! Et il y aura une réponse plus claire à cette question, alors éventuellement nous pourrons chercher d'autres implémentations/approches à intégrer dans le code final, et pour le moment j'en suis très loin.

Honnêtement, je ne sais pas quelle est votre philosophie de production du graal, puisque vous n'utilisez l'apprentissage automatique que pour sélectionner les prédicteurs... et ensuite, qu'en faire ? )

 
Yuriy Asaulenko:

Ce qui a de la valeur dans une langue tierce :

1. téléchargez l'historique au format CSV,

2. Faites un testeur (c'est juste et pas plus qu'une boucle),

3. sur un compte de démonstration, vous pouvez tester, par exemple, via un échange de fichiers avec le terminal. Si vous le faites par le biais d'un disque RAM, la performance est comparable à celle d'un échange par la mémoire - des gigaoctets par seconde.

Si le système réussit, ce qui ne sera pas le cas la première fois, il fera gagner beaucoup de temps à la modélisation. Et ensuite, la manière de l'introduire dans le terminal est une affaire gérable.

1. c'est ce que je fais dans Matlab.

J'ai essayé de le faire en Delphi il y a longtemps, mais heureusement je n'ai pas réussi. Je suis passé à MQL, je peux voir le drawdown et visualiser comment l'EA se négociait, je peux ajouter des indicateurs prêts à l'emploi comme filtres supplémentaires, ajouter des barres de suivi, des moyennes... Je peux tout voir dans le testeur, simuler tout cela dans un logiciel tiers.Pourquoi ? Il est plus facile d'étudier MQL à partir de zéro en 3-4 mois et d'apprendre à écrire des EA à partir d'un modèle. Maintenant, je peux vérifier n'importe quel indicateur graphique dans le testeur en 15 minutes - j'écris mon EA en utilisant un modèle prêt à l'emploi sous forme de programmation procédurale, c'est-à-dire que je connecte simplement des fonctions prêtes à l'emploi.

3. vous pouvez, mais j'ai tout dans MQL, ce qui manque je vais ajouter ou connecter .dll


Mais encore une fois, sur la question de la modélisation - nous vivons une époque heureuse, les solutions prêtes à l'emploi se comptent par dizaines sur le web, l'environnement de modélisation et la plateforme de négociation devraient être séparés, il s'avère donc qu'une personne doit être un développeur, un programmeur et un mathématicien, et... et tout.

Soit ça, soit 90% des "traders" de Runet font du commerce par TS primitif))).

 
Maxim Dmitrievsky:

Honnêtement, je ne sais pas quelle est votre méthodologie de production du Graal, puisque vous n'utilisez l'apprentissage automatique que pour sélectionner les prédicteurs... et ensuite, que faites-vous avec eux ? )

Je sélectionne les prédicteurs dans le but de me débarrasser des prédicteurs erronés qui sont bruyants et contribuent au sur-apprentissage...

En même temps, j'exploite les feuilles d'arbre pour R, qui s'avèrent également être d'assez bons prédicteurs et catbust les mange avec plaisir.

Maintenant, j'ai prolongé l'expérience sur la division de la racine de l'arbre R, c'est-à-dire qu'après avoir construit un nouvel arbre (en utilisant la génétique - je ne connais pas les détails, pour le script deDr. Trader), je supprime le prédicteur de la racine et je construis à nouveau l'arbre - ce processus n'est pas rapide - en moyenne, il prend 3-4 jours, donc j'en suis déjà à 29 divisions, et ce qui est intéressant, même maintenant, de nouvelles et intéressantes feuilles d'arbre apparaissent, qui travaillent dans les bénéfices positifs en 2014-2018 (tous les bénéfices annuels), et la formation est sur 2015-2017. Il en découle que les algorithmes de construction d'arbres ne sont toujours pas très performants en termes de résultats, puisqu'ils passent à côté de choses évidentes lorsqu'ils disposent d'un surplus de bons prédicteurs, mais lorsqu'ils commencent à être affamés, de nouvelles solutions émergent. En général, à partir de cette expérience, je veux essayer d'alimenter les prédicteurs en groupes et voir où se trouve la plus grande sensibilité. Ensuite, je veux construire différents arbres avec différents groupes, en faire un organe de décision collectif et l'envoyer au commerce...

 
Aleksey Vyazmikin:

Je sélectionne les prédicteurs afin de me débarrasser de ceux qui sont erronés, qui sont bruyants et contribuent au sur-apprentissage...

En même temps, j'exploite les feuilles d'arbre pour R, qui s'avèrent également être de bons prédicteurs et catbust les dévore avidement.

Maintenant, j'ai prolongé l'expérience sur le fractionnement de la racine de l'arbre R, c'est-à-dire qu'après avoir construit un nouvel arbre (en utilisant la génétique - je ne connais pas les détails, pour le script duDr Trader), je supprime le prédicteur de la racine et je reconstruis l'arbre - ce processus n'est pas rapide - en moyenne 3-4 jours, donc je suis déjà sur 29 fractionnement, et ce qui est intéressant, de nouvelles et intéressantes feuilles d'arbre, qui travaillent dans les bénéfices positifs en 2014-2018 (tous les bénéfices annuels), et la formation est sur 2015-2017, apparaissent même maintenant. Il en ressort que les algorithmes de construction d'arbres ne sont toujours pas très performants en termes de résultats, car ils passent à côté de choses évidentes lorsqu'ils disposent d'un surplus de bons prédicteurs, mais lorsqu'ils commencent à être affamés, de nouvelles solutions apparaissent. En général, à partir de cette expérience, je veux essayer d'alimenter les prédicteurs en groupes et voir où se trouve la plus grande sensibilité. Ensuite, avec différents groupes, construisez différents arbres, créez un organe de prise de décision par les pairs et envoyez-les au commerce...

je ne comprends pas vraiment la division de la racine de l'arbre... ne serait-ce que pour le schéma :) et comment les feuilles peuvent-elles fonctionner séparément, la structure de travail est l'arbre dans son ensemble...

je vais y réfléchir demain, j'ai sommeil :)

A propos, mql5 a des classes standard ctree et cnode pour construire des arbres binaires. Si vous savez comment les utiliser pour le datamining ... mais je ne sais pas, mais il semble que vous avez quelque chose comme ça

 
Maxim Dmitrievsky:

Je ne comprends pas vraiment la division de la racine de l'arbre... un schéma serait bien :) et comment les feuilles peuvent fonctionner séparément, la structure de travail est l'arbre dans son ensemble...

Je vais y réfléchir demain, j'ai sommeil :)

A propos, mql5 a des classes standard ctree et cnode pour construire des arbres binaires. Si vous savez comment les utiliser pour le datamining... mais je ne sais pas, mais vous semblez avoir quelque chose comme ça

La "racine de l'arbre", dans mon langage, est le tout premier prédicteur qui divise l'arbre en d'autres branches - généralement en deux parties (mais il existe aussi d'autres variantes).

"Fractionner l'arbre" consiste à exclure le prédicteur racine de l'échantillon avant de traiter à nouveau les données.

Les feuilles ne sont qu'un ensemble de règles, qui ne sont pas mises en œuvre fréquemment, mais qui peuvent donner des résultats stables, contrairement à l'arbre entier. Si l'algorithme ne comprend pas la situation du marché, il est préférable de le laisser attendre jusqu'à ce que la carte soit couchée et qu'il puisse prendre une décision.

J'ai traité plus de 20000 feuilles jusqu'à présent et j'ai observé la génétique, mais les bonnes feuilles pour les décisions de trading sont environ 200 - celles avec un profit chaque année et une rentabilité acceptable (1,4 au minimum), mais il y a de bons filtres avec un signal "attendre" - je ne les ai pas compté - je développe ma méthode pour les sélectionner plus précisément maintenant.

J'ai 3 classes, c'est à dire que l'arbre a un signal d'achat, de vente et d'attente, c'est maintenant que j'expérimente avec catbust et que je simplifie les cibles pour les compresser en une seule classe...

Je ne connais rien aux classes ctree et cnode, ainsi qu'à la POO en général - je ne suis pas très bon en programmation, donc il est difficile de comprendre les codes des classes sans un programmeur...