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

 
Ivan Negreshniy:

IMHO, vous devez d'abord travailler en python, où il est plus ou moins débogué, sinon il y a beaucoup d'incertitude.

Oui, on dirait que la dll est en 32 bits et que mt5 est en 64.

je reviendrai plus tard, pour l'instant python est ok.

 
Maxim Dmitrievsky:

Je ne pense pas pouvoir le faire moi-même, je vais devoir utiliser Python après tout :D

Vous devriez recevoir le titre de "spécialiste exceptionnel de la création de difficultés pour vous-même" ! Exclusivité du film : les héros normaux vont toujours dans le sens inverse.


Voici le hochet proverbial, juste quelques clics pour le modèle xgboost que vous avez mentionné.

Nous l'obtenons pour l'échantillonnage de formation :

Error matrix for the Extreme Boost model on Df1.num [**train**] (counts):

      Predicted
Actual    0    1 Error
     0 1930   90   4.5
     1   42 2152   1.9

Error matrix for the Extreme Boost model on Df1.num [**train**] (proportions):

      Predicted
Actual    0    1 Error
     0 45.8  2.1   4.5
     1  1.0 51.1   1.9

Overall error: 3.1%, Averaged class error: 3.2%

Rattle timestamp: 2018-05-31 11:21:20 user

Pour l'échantillon de validation.

Error matrix for the Extreme Boost model on Df1.num [validate] (counts):

      Predicted
Actual   0   1 Error
     0 306 119  28.0
     1 111 367  23.2

Error matrix for the Extreme Boost model on Df1.num [validate] (proportions):

      Predicted
Actual    0    1 Error
     0 33.9 13.2  28.0
     1 12.3 40.6  23.2

Overall error: 25.5%, Averaged class error: 25.6%

Rattle timestamp: 2018-05-31 11:22:15 user

Pour l'échantillonnage d'essai.

Error matrix for the Extreme Boost model on Df1.num [test] (counts):

      Predicted
Actual   0   1 Error
     0 314 118  27.3
     1 112 360  23.7

Error matrix for the Extreme Boost model on Df1.num [test] (proportions):

      Predicted
Actual    0    1 Error
     0 34.7 13.1  27.3
     1 12.4 39.8  23.7

Overall error: 25.5%, Averaged class error: 25.5%

Rattle timestamp: 2018-05-31 11:22:50 user


Si vous êtes satisfait du résultat, vous pouvez regarder le code dans R. Voici le défi :

crs$ada <- xgboost(Long_Short ~ .,
  data              = crs$dataset[crs$train,c(crs$input, crs$target)],
  max_depth         = 6,
  eta               = 0.3, 
  num_parallel_tree = 1, 
  nthread           = 2, 
  nround            = 50,
  metrics           = 'error',
  objective         = 'binary:logistic')


En fait, vous pouvez prendre tout le code R de rattle et appeler cette fonction depuis MT4/5 EA et voir le résultat dans le testeur. Dll primitive, fonctionne depuis longtemps et régulièrement, beaucoup de gens qui l'utilisent...

Tout cela en une heure ! IL N'Y A AUCUN PROBLÈME AVEC LES MODÈLES !

Il y a des problèmes avec les cibles et les prédicteurs cibles correspondants ou vice versa. Mais pour résoudre ce problème, vous devez disposer d'une boîte à outils avec une main-d'œuvre extrêmement réduite pour essayer des variantes.


PS.

Si vous allez sur hochet, vous pouvez construire en un clic un arbre (rPart), randomForest, SVM, régression logistique glm, votre réseau neuronal préféré, bien que le plus simple nnet. Et pour un encas, un modèle vivant (pour réaliser des bénéfices exorbitants ou réaliser une décharge de dépôt), si vous êtes capable de formuler l'objectif et ses prédicteurs.


DÈS QUE POSSIBLE.

Puisque vous avez éveillé un amour pour le xgboost et que vous pouvez nourrir cet amour avec des calculs préliminaires acceptables en rattle, voici la documentation pour vous :

Description du paquet - https://cran.r-project.org/web/packages/xgboost/xgboost.pdf

Comprendre votre ensemble de données avec Xgboost - https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html

xgboost : eXtreme Gradient Boosting - https://cran.r-project.org/web/packages/xgboost/vignettes/xgboost.pdf

Et pour un rappel, la présentation de Xgboost https://cran.r-project.org/web/packages/xgboost/vignettes/xgboostPresentation.html


Vu le niveau dont vous faites preuve ici, vous n'avez aucun problème avec R.


Bonne chance.

 
SanSanych Fomenko:

Merci sanSanSanych... je n'avais pas compris, est-ce que le hochet a le xgb ? c'est assez drôle

Quoi qu'il en soit, j'ai juste besoin d'attacher ce modèle au lieu d'un échafaudage d'algues, pour les tâches de RL.

Je n'ai pas besoin de faire des recherches, j'ai juste besoin d'une meilleure chose avec régularisation et validation croisée... Je ne sais pas ce qu'il en est de R, mais en python, par exemple, la validation croisée peut facilement être ajoutée à la solution de repli xgb.

et puis R n'a pas de bibliothèques appropriées pour RL, toutes sont en python, c'est-à-dire que je dois mettre R au-dessus de python à nouveau... donc je n'ai toujours pas décidé ce dont j'ai besoin :)

 

On parle d'arbres...

Je ne sais pas ce qu'il en est des objectifs à une barre, mais lorsque les objectifs sont en fait des événements qui se produiront après N barres (je considère spécifiquement le trading de tendance, ou d'autres cas où une position est fermée par SL/TP, après N barres ou une période de temps fixe), et que leur résultat sera considéré et classé, il est important de prêter attention non pas au tableau de contingence pour évaluer les résultats, mais à

1. La fréquence de variation des résultats de la classification dans une fenêtre de N barres

2. Regroupement des règles par N barres (densité des règles)

Dans le premier cas, un indicateur est nécessaire pour estimer la fréquence de changement de la cible prédite, si elle est élevée, alors le modèle est instable, même s'il peut obtenir un grand pourcentage de solutions correctes.

Dans le second cas, nous devons appliquer une règle par fenêtre (N barres) ; une règle répétée pour estimer le renforcement et la propagation de cette règle à travers le modèle.

Il est donc nécessaire de modifier les estimations lors de la formation à la qualité des modèles, y compris les modèles d'échafaudage et autres modèles qui nécessitent une auto-analyse de leurs résultats pour apporter des corrections.

Que pensez-vous de ces pensées ?

 

Une fois de plus, j'ai été convaincu que R n'est pas mon truc :) la syntaxe n'est presque pas mise en évidence, le code est illisible, les erreurs ne sont presque pas mises en évidence. Le code lui-même et le langage ne sont pas esthétiques.

voici vos contre-arguments

Oui, vous pouvez entraîner un algorithme en 3 lignes au lieu de 5 en python, c'est tout. La lisibilité en python serait meilleure. Je ne vois pas d'avantage pour les paquets MO, c'est du pareil au même.

 
Maxim Dmitrievsky:

Une fois de plus, j'ai été convaincu que R n'est pas mon truc :) la syntaxe n'est presque pas mise en évidence, le code est illisible, les erreurs ne sont presque pas mises en évidence. Le code lui-même et le langage ne sont pas esthétiques.

voici vos contre-arguments

Oui, vous pouvez entraîner un algorithme en 3 lignes au lieu de 5 en python, c'est tout. La lisibilité en python serait meilleure. Je ne vois pas d'avantage dans les paquets MO, c'est du pareil au même.

Je suis en train de regarder un cours vidéo en russe sur la programmation R :) Le langage est certes un enfer de syntaxe et d'hypothèses, par exemple, la possibilité de déclarer une variable globale dans une fonction peut fausser le code, surtout si la fonction est appelée plus d'une fois, après quoi vous trébucherez et chercherez l'erreur, mais ce ne sera pas au compilateur.

Je suis vraiment contrarié par l'utilisation de la mémoire dans R - actuellement, un fichier csv de 187 mégaoctets est étalé dans la mémoire comme 1,5 gigaoctets pour travailler avec l'arbre (alors que dans Rattle, 7,5 gigaoctets pour construire la forêt), le multithreading est implémenté comme des processus séparés lancés qui ne peuvent pas travailler avec la mémoire partagée, donc au lieu de charger 6 cœurs de processeur, je ne peux en charger que 4, étant limité par 8 gigaoctets de mémoire disponible.

Comment python gère-t-il ce cas ?

 
Aleksey Vyazmikin:

Je suis en train de regarder un cours vidéo en russe sur la programmation en R :) Le langage est certainement le plus difficile en termes de syntaxe et d'hypothèses, par exemple, la possibilité de déclarer une variable globale dans une fonction peut faire un gros gâchis de code, surtout si la fonction est appelée plus d'une fois, alors vous trébucherez et chercherez l'erreur, mais ce ne sera pas au compilateur.

Je suis vraiment contrarié par l'utilisation de la mémoire dans R - actuellement, un fichier csv de 187 mégaoctets est étalé dans la mémoire sous la forme de 1,5 gigaoctets pour travailler avec l'arbre (alors que dans Rattle, 7,5 gigaoctets servent à construire la forêt), le multithreading est mis en œuvre sous la forme de processus distincts lancés qui ne savent pas comment travailler avec la mémoire partagée, ce qui fait qu'au lieu de charger 6 cœurs de processeur, je ne peux en charger que 4, me limitant à un espace disponible de 8 gigaoctets.

Comment se comporte python dans ce cas ?

Je n'ai pas regardé la mémoire, car je n'ai jamais utilisé d'aussi gros fichiers :) Mais j'ai entendu dire que les premières versions de R avaient un problème avec la mémoire et son effacement.

Python est un langage plus avancé à tous égards, car il est utilisé pour une grande variété de tâches.

Je ne comprends pas aussi drôle de visualisation R plot - il est misérable par rapport à python, Rstudio IDE est également un monstre de la forêt, comment il est possible de soutenir en 2018.

j'ai écrit 100 lignes de code et je me suis embrouillé, tout s'est mélangé en un désordre illisible avec une syntaxe non éclairée :) donc si vous voulez vous éclater, utilisez python dans vscode ou les notebooks de jupyter.

Les arbres et les forêtsmis à jour occupent eux-mêmes beaucoup de mémoire, en fonction de la taille de l'ensemble et du nombre d'arbres et de leur profondeur. Par exemple, mon comité de 20 forêts de 50 arbres et un ensemble de 1000 exemples prend ~40mb
 

Écrivez des bêtises sur R : ne sait pas, ne peut pas et ne veut pas.

1. La vitesse et la facilité de débogage du code dans R sont étonnantes par rapport aux langages qui ont l'avantage du compilateur et de l'interprète. La mise en évidence est très limitée à cet égard, car il n'y a rien à mettre en évidence - le code est presque immédiatement exploitable. Code à très haute capacité. L'écriture de code "spoilery" est très probablement le résultat d'un manque de connaissance de R lui-même et des fonctionnalités des paquets. Et si ça s'est vraiment passé comme ça, un bon mauvais ton appelle à le diviser en fonctions, la POO est présente.

2. l'utilisation des variables globales dans toutes les langues doit être prudente. En R, leur nécessité est très douteuse, car les paramètres des fonctions et les retours de celles-ci peuvent être des "objets", alors qu'en R, c'est n'importe quoi. En dehors de cela, vous pouvez contrôler l'espace auquel les noms de variables sont attachés.

2. Le graphisme est l'un des meilleurs au monde - il y a tout, de l'intrigue la plus simple aux dessins animés, plusieurs niveaux de graphisme : du primitif aux blancs spécialisés pour les statistiques.

3. Il est impossible de comparer avec python : leur prévalence est à peu près égale, mais python a beaucoup d'utilisateurs "étrangers", principalement des développeurs de sites, tandis que R est un système de statistiques, notre système natif, doublement natif, car le MO est inclus dans les statistiques. Si nous parlons de paquets pour nous, nous devrions comparer avec d'autres paquets spécialisés (SAS...), mais ils sont payants.

4. R est la norme algorithmique en matière de statistiques. Presque toutes les publications modernes contiennent nécessairement du code R.


Dernière. R fait partie de Microsoft, tandis que python est un sous-déluge, ici, sur un fil de discussion voisin, des personnes très compétentes en programmation n'ont pas pu se mettre d'accord sur la source de la distribution. Pour moi, c'est un verdict.


En programmation, on choisit très souvent ce qui est plus pratique plutôt que ce qui est utile, fonctionnel, mais diluer pour faire un choix extrêmement discutable ne l'est pas.

 
SanSanych Fomenko:

SanSanych, la seule source de la distribution est le site web de python :)

Pour les statistiques et l'apprentissage automatique, extension IPython et anaconda. Allez sur la communauté opendatascience en langue russe ou regardez les vidéos de Yandex. Ils n'ont pas du tout entendu parler de R. Alors, qu'est-ce qui est considéré comme une norme ? Essayez python pour vous faire votre propre opinion et comparer. De plus, connaître python, comme vous l'avez dit, vous permettra de faire non seulement des statistiques mais d'autres choses, si nécessaire.

Il s'agit également d'un langage interprété, mais il est parfaitement mis en évidence et vérifie la syntaxe à la volée, et pas seulement après l'exécution du script, + pliage de code, bloc-notes et tout un tas d'autres goodies.

 
Maxim Dmitrievsky:

Je n'ai pas regardé la mémoire car je n'ai jamais utilisé d'aussi gros fichiers :) Mais j'ai entendu que les premières versions de R avaient un problème avec la mémoire et son effacement.

Python est un langage beaucoup plus mature à tous égards, car il est utilisé à des fins très diverses.

Je ne comprends pas aussi drôle de visualisation R plot - il est misérable par rapport à python, Rstudio IDE est également un monstre de la forêt, comment il est possible de soutenir en 2018.

J'ai écrit 100 lignes de code et je me suis embrouillé, tout s'est mélangé en un seul bazar illisible avec une syntaxe non éclairée :) en bref, si vous voulez vous éclater, utilisez python dans vscode ou jupyter notebooks.

Lamise à jour des arbres et de la forêt elle-même occupe beaucoup de mémoire, en fonction de la taille de l'ensemble, du nombre d'arbres et de leur profondeur. Par exemple, mon comité de 20 forêts de 50 arbres et un ensemble de 1000 exemples prend ~40mb

Mon sentiment jusqu'à présent est que R est une calculatrice cool. L'absence d'aide en langue russe sur les fonctions principales me tue, enfin, c'est très important pour moi à cause de ma faiblesse en linguistique.

Visualisation - il y a quelques difficultés, pour moi les arbres de grande taille ne se prêtent pas à une visualisation correcte, seule la conversion en PDF aide, c'est déjà bien.