Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 966

 
Mihail Marchukajtes:

Lo hice, luego el foro tuvo un glitch, así que a leer por la imagen, al menos lo logré...

el foro sigue y sigue... vete a xgboost en R en lugar de ecclmn o cualquier c...ni que uses

Pronto traduciré algo a python y boosting y veré qué mejoras
 
Maxim Dmitrievsky:

adelante y conecte xgboost en R en lugar de ecclmn o cualquier c...ni que esté utilizando.

Pronto traduciré algo a python y boosting y veré qué mejoras habrá.

Descargado. Lo instalé. Pero no creo que pueda hacerlo sin el doctor. Eso si ha publicado un script con un ejemplo de cómo usarlo. Entonces creo que sería posible intentarlo. Una vez más, la cuestión de la transferencia del modelo a la MT? No quiero construir puentes ni nada parecido. ¿Cómo puedo transferir un modelo de xboost a MT4?

 
Mihail Marchukajtes:

Descargado. Lo instalé. Pero no creo que pueda hacerlo sin Doc. Pero si hubiera publicado un script con un ejemplo de cómo usarlo. Entonces creo que sería posible intentarlo. Una vez más, la cuestión de la transferencia del modelo a la MT? No quiero construir puentes ni nada parecido. ¿Cómo puedo transferir un modelo de xboost a MT4?

No sé, esta es una pregunta para los que les gusta el xboost.

Utilizaré python. puedo usar xgb para conectarlo a la terminal, deberia preguntar a los que saben de dll, no se como hacerlo.

aquí hay un artículo normal para pythonhttps://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

y el autor tiene una comparación de GBM en otro artículo (para que te hagas una idea de cómo funciona el potenciador)

 

Cargado el xgb del ejemplo del enlace, pero en una GPU de portátil - funciona :) se puede conseguir 10x de velocidad, aunque ya es bastante rápido

Y resulta que la dll se puede llamar directamente desde MT4/5 e incluso con soporte de GPU. Sólo es cuestión de entender mejor el tema

 
Maxim Dmitrievsky:

Huh, eso es para los que les gusta la R.

Conectaré python. La idea es que el xgb pueda incluso conectarse al terminal a través de una dll, hay que preguntar a los que son buenos en dll, no sé

aquí hay un artículo normal para python https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

y el autor tiene una comparación de GBM en otro artículo (sólo para ver cómo funciona el refuerzo)

El tema de xgb está plagado de suciedad, empezando por la instalación, construcción, etc. La biblioteca de Yandex es más consistente en este sentido 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:

Voy a tratar de usar xgb en MT5 y ejecutarlo por mí mismo. xgb es un tema muy complicado, a partir de la instalación, bilding etc. La biblioteca de Yandex es más consistente en este aspecto https://tech.yandex.com/catboost/doc/dg/concepts/about-docpage/

No, es sencillo, construyes la librería y la instalas. Los hay ya montados, sólo hay que copiar e instalar la lib desde la carpeta local, también para la gpu

La gpu para los modelos boost da un pequeño aumento de velocidad, porque el modelo se construye en serie, y sólo las divisiones en árboles separados están en paralelo, por lo que no tiene sentido

en cuanto al catbust, el GBM ligero y otros son muy inferiores (tipo de falso) :) al menos eso es lo que escriben los usuarios en la red

Intentaré utilizarlo en MT5

 
Maxim Dmitrievsky:

No, es sencillo, construyes la librería y la instalas. Los hay ya montados, sólo hay que copiar e instalar la lib desde la carpeta local, también para la gpu

La gpu para los modelos boost da un pequeño aumento de velocidad, porque el modelo se construye en serie, y sólo las divisiones en árboles separados están en paralelo, por lo que no tiene sentido

El catbust, el GBM ligero y otros son inferiores (algo falsos) :) al menos eso es lo que escriben los usuarios en la red

Tengo mucha experiencia, pero me parece que a primera vista hay mucha variación, pero quiero más MO con resultados estables y menos chamanismo:))).

 
Ivan Negreshniy:

Puede que tenga mucha experiencia en esto, pero a primera vista me ha parecido que hay mucha variación, y sigo queriendo más MO con resultados estables y menos chamanismo:)))

Sí, todavía necesita una puesta a punto... Lo intentaré

Encontré un wrapper para sharps para importar fuentes dll... sólo que no sé si tiene validación cruzada por defecto o no... podría ser uno separado

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);
  }
//+------------------------------------------------------------------+

No creo que pueda hacerlo yo mismo, tendré que usar Python después de todo :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:

Sí, todavía hay que afinar... bueno, lo intentaré.

encontré una envoltura de sharps para importar fuentes dll... sólo que no me di cuenta de que no hay validación cruzada por defecto, parece que viene por separado

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

En mi opinión, hay que trabajar primero en python, donde está más o menos bien establecido, de lo contrario hay mucha incertidumbre