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

 
Mihail Marchukajtes:

Je l'ai fait, puis le forum a glitché, alors lisez l'image, au moins je l'ai fait...

le forum continue et continue... allez sur xgboost dans R au lieu de ecclmn ou n'importe quel c...ni que vous utilisez

Je vais bientôt traduire quelque chose en python et en boosting et voir les améliorations.
 
Maxim Dmitrievsky:

allez-y et branchez xgboost dans R au lieu de ecclmn ou de n'importe quel c...ni que vous utilisez.

Je vais bientôt traduire quelque chose en python et en boosting et voir quelles améliorations il y aura.

Téléchargé. Je l'ai installé. Mais je ne pense pas pouvoir le faire sans le docteur. C'est s'il a posté un script avec un exemple de comment l'utiliser. Alors je pense qu'il serait possible d'essayer. Encore une fois, la question du transfert du modèle à la MT ? Je ne veux pas construire des ponts ou autre chose. Comment puis-je transférer un modèle de xboost vers MT4 ?

 
Mihail Marchukajtes:

Téléchargé. Je l'ai installé. Mais je ne pense pas pouvoir le faire sans Doc. Mais s'il avait posté un script avec un exemple de comment l'utiliser. Alors je pense qu'il serait possible d'essayer. Encore une fois, la question du transfert du modèle à la MT ? Je ne veux pas construire des ponts ou autre chose. Comment puis-je transférer un modèle de xboost vers MT4 ?

Je ne sais pas, c'est une question pour ceux qui aiment xboost.

Je vais utiliser Python. Je peux utiliser xgb pour le connecter au terminal, je devrais demander à ceux qui s'y connaissent en dll, je ne sais pas comment faire.

voici un article normal pour pythonhttps://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

et l'auteur présente une comparaison de GBM dans un autre article (pour vous donner une idée du fonctionnement du booster).

 

Chargé le xgb de l'exemple de lien, mais sur un GPU d'ordinateur portable - il fonctionne :) vous pouvez obtenir 10x la vitesse, bien qu'il soit déjà assez rapide

Et il s'avère que la dll peut être appelée directement depuis MT4/5 et même avec le support GPU. Il s'agit juste d'acquérir une meilleure compréhension du sujet.

 
Maxim Dmitrievsky:

Huh, c'est pour ceux d'entre vous qui sont en R.

Je vais connecter python. L'idée est que xgb peut même être connecté au terminal via une dll, il faut demander à ceux qui sont bons en dll, je ne sais pas

voici un article normal pour python https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

et l'auteur a une comparaison de GBM dans un autre article (juste pour voir comment le booster fonctionne)

Le sujet xgb est truffé de saletés, à commencer par l'installation, la construction, etc. La bibliothèque de Yandex est plus cohérente à cet égard https://tech.yandex.com/catboost/doc/dg/concepts/about-docpage/.

CatBoost — Overview of CatBoost — Yandex Technologies
CatBoost — Overview of CatBoost — Yandex Technologies
  • tech.yandex.com
is a machine learning algorithm that uses gradient boosting on decision trees. It is available as an open source library.
 
Ivan Negreshniy:

Je vais essayer d'utiliser xgb dans MT5 et de le faire fonctionner par moi-même. xgb est un sujet très délicat, à commencer par l'installation, le bilding etc. La bibliothèque de Yandex est plus cohérente dans cet aspect https://tech.yandex.com/catboost/doc/dg/concepts/about-docpage/.

Non, c'est simple, vous construisez la librairie et l'installez. Il en existe déjà des assemblés, il suffit de copier et d'installer la librairie depuis le dossier local, également pour les gpu.

le gpu pour les modèles boost donne un petit gain de vitesse, car le modèle est construit en série, et seules les divisions dans des arbres séparés sont mises en parallèle, donc il n'y a pas de sens.

quant à catbust, les GBM légers et autres sont très inférieurs (un peu faux) :) du moins c'est ce que les utilisateurs écrivent sur le net

Je vais essayer de l'utiliser dans MT5

 
Maxim Dmitrievsky:

Non, c'est simple, vous construisez la librairie et l'installez. Il en existe déjà des assemblés, il suffit de copier et d'installer la librairie depuis le dossier local, également pour les gpu.

le gpu pour les modèles boost donne un petit gain de vitesse, car le modèle est construit en série, et seules les divisions dans des arbres séparés sont mises en parallèle, donc il n'y a pas de sens.

Les catbust, light GBM et autres sont inférieurs (un peu faux) :) du moins c'est ce que les utilisateurs écrivent sur le net

J'ai beaucoup d'expérience, mais il me semble qu'à première vue il y a beaucoup de variation, mais je veux plus de MO avec des résultats stables et moins de chamanisme :))).

 
Ivan Negreshniy:

J'ai peut-être beaucoup d'expérience dans ce domaine, mais à première vue, il me semble qu'il y a beaucoup de variations, et je veux toujours plus de MO avec des résultats stables et moins de chamanisme :)))

Oui, il a encore besoin d'une mise au point... Je vais essayer.

j'ai trouvé un wrapper sharps pour importer les polices dll... mais je ne sais pas s'il y a une validation croisée par défaut ou non... il se peut qu'il y en ait une à part

https://github.com/PicNet/XGBoost.Net/blob/master/XGBoost/lib/XGBOOST_NATIVE_METHODS.cs

 
//+------------------------------------------------------------------+
//|                                                      xgboost.mq5 |
//|                                 Copyright 2018, Max Dmitrievskiy |
//|                        https://www.mql5.com/ru/users/dmitrievsky |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Max Dmitrievskiy"
#property link      "https://www.mql5.com/ru/users/dmitrievsky"
#property version   "1.00"
#import "xgboost.dll"
string XGBGetLastError();
int XGDMatrixCreateFromMat(float&[],ulong nrow,ulong ncol,float missing,int handle);
int XGDMatrixFree(int handle);
int XGDMatrixGetFloatInfo(int handle,string field, ulong len, int result);
int XGDMatrixSetFloatInfo(int handle,string field,float&[],ulong len);
int XGBoosterCreate(int&[],ulong len, int handle);
int XGBoosterFree(int handle);
int XGBoosterSetParam(int handle,string name,string val);
int XGBoosterUpdateOneIter(int bHandle,int iter,int dHandle);
int XGBoosterPredict(int bHandle,int dHandle,int optionMask,int ntreeLimit, ulong predsLen, int predsPtr);
int XGBoosterSaveModel(int bHandle,string fileName);
int XGBoosterLoadModel(int bHandle,string fileName);
int XGDMatrixCreateFromFile(string fname,int silent, int DMtrxHandle);
int XGBoosterDumpModel(int handle,string fmap,int with_stats, int out_len, int dumpStr);
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--

   int a[1]={1};
   ulong ab=1;
   int hnd=1;
   XGBoosterCreate(a, ab, hnd);
  }
//+------------------------------------------------------------------+

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

2018.05.31 15:00:17.587 xgboost (EURUSD,M15)    Access violation at 0x00007FFA5D7BA68E read to 0xFFFFFFFFFFFFFFFF in 'C:\Users\dmitrievsky\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\xgboost.dll'
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)       crash -->  00007FFA5D7BA68E 498B4708          mov        rax, [r15+0x8]
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)                  00007FFA5D7BA692 4885C0            test       rax, rax
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)                  00007FFA5D7BA695 7404              jz         0x7ffa5d7ba69b
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)                  00007FFA5D7BA697 F0FF4008          lock inc        dword [rax+0x8]
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)                  00007FFA5D7BA69B 498B07            mov        rax, [r15]
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)                  00007FFA5D7BA69E 488904DE          mov        [rsi+rbx*8], rax
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)                  00007FFA5D7BA6A2 498B4708          mov        rax, [r15+0x8]
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    00: 0x00007FFA5D7BA68E
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    01: 0x000000005B0FAB91
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    02: 0x0000000000000001
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    03: 0x0000000000000246
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    04: 0x00007FF784D2BBB4
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    05: 0x00007FF784D2B933
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    06: 0x00007FF7851BEA5E
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    07: 0x00007FF7851BD979
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    08: 0x00007FF784C09A90
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    09: 0x00007FFA870C3034
2018.05.31 15:00:17.592 xgboost (EURUSD,M15)    10: 0x00007FFA87531551
 
Maxim Dmitrievsky:

Ouais, il a encore besoin d'être réglé... eh bien, je vais essayer.

j'ai trouvé un wrapper sharps pour importer les polices dll... je n'avais pas réalisé qu'il n'y avait pas de validation croisée par défaut, elle semble venir séparément

https://github.com/PicNet/XGBoost.Net/blob/master/XGBoost/lib/XGBOOST_NATIVE_METHODS.cs

À mon avis, il faut d'abord travailler en python, où il est plus ou moins bien établi, sinon il y a beaucoup d'incertitude.