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

 
elibrarius:
Êtes-vous des robots ?
Travailler jour et nuit sans sommeil ni repos ))))

Fuseaux horaires... mais toujours impressionnant))))

 
elibrarius:

7 points suffiront.

Voici un histogramme de la balance - nouveaux modèles en bleu, anciens modèles en rouge.

Tous les paramètres sont les mêmes.

Pertinence du prédicteur



Les modèles utilisent le temps au maximum. Il est difficile de dire si c'est une bonne ou une mauvaise chose, mais c'est plutôt mauvais lorsqu'un prédicteur obtient un avantage en raison de sa similarité avec des analogues.

Rappel

Précision

En fin de compte, il y a une différence, pas très importante bien sûr, mais quand même.

L'équilibre n'est pas mauvais.


 
Aleksey Vyazmikin:

Voici un histogramme de la balance - nouveaux modèles en bleu, anciens modèles en rouge.

Tous les paramètres sont les mêmes.

Pertinence du prédicteur



Les modèles utilisent le temps au maximum. Il est difficile de dire si c'est une bonne ou une mauvaise chose, mais c'est plutôt mauvais quand un prédicteur obtient un avantage au détriment de la similarité avec ses homologues.

Rappel

Précision

En fin de compte, il y a une différence, pas très importante bien sûr, mais quand même.

Ce n'est pas mauvais.


Le temps sinus + cosinus est-il meilleur que de simples chiffres ?
Est-ce que vous alimentez les minutes dans l'ancienne version ? Si ce n'est pas le cas, faites-les entrer pour une comparaison correcte. La version sinus + cosinus les prend en compte. Soit retirer les minutes de syn+cos si c'est plus rapide.
 
elibrarius:
Alors, le temps sinus + cosinus est-il meilleur que les simples chiffres ?
Est-ce que vous alimentez les minutes dans l'ancienne version ? Si ce n'est pas le cas, introduisez-les, pour une comparaison correcte. La version sinus + cosinus les prend en compte. Ou retirez les minutes de syn+cos si c'est plus rapide.

La métrique que j'ai fournie - semble pire. Reason a plus de chances d'atteindre un ensemble aléatoire de prédicteurs pour construire un arbre prédicteur divisé associé au temps.

Oui, je n'utilisais pas de minutes dans mon ancienne version.

 
Aleksey Vyazmikin:

La métrique que j'ai fournie - elle semble pire. La raison en est la forte probabilité de tomber sur un ensemble aléatoire de prédicteurs pour construire un arbre divisé du prédicteur associé au temps.


Tu as fait un "catbustom" ? Il ne devrait pas y avoir de sélection aléatoire des prédicteurs. Les boosters utilisent tous les prédicteurs, mais les arbres peu profonds.

Dans une forêt aléatoire, oui. Il est fixé par exemple par

max_features{"auto", "sqrt", "log2"}, int ou float, default="auto "

Le nombre de caractéristiques à prendre en compte lors de la recherche du meilleur split :


Aleksey Vyazmikin:

Oui, je n'utilisais pas de minutes dans mon ancienne version.

Peut-être ont-ils aggravé le résultat ? Essayez de les supprimer dans la nouvelle version.

C'est tout, il devrait y avoir une analogie complète avec votre ancienne version.

if(nameInd[nInd]=="Hour")        {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.hour)*360.0/24.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}

if(nameInd[nInd]=="WeekDay")     {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.day_of_week)*360.0/7.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}


 
elibrarius:

Tu as fait le "catbustom" ? Il ne devrait pas y avoir de sélection aléatoire des prédicteurs. Les boosters utilisent tous les prédicteurs, mais les arbres peu profonds.

Dans une forêt aléatoire, oui. Défini par ex .


Peut-être ont-ils aggravé le résultat ? Essayez de les supprimer dans la nouvelle version.

Là, il devrait y avoir une analogie complète avec votre ancienne version.

if(nameInd[nInd]=="Hour")        {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.hour)*360.0/24.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}

if(nameInd[nInd]=="WeekDay")     {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.day_of_week)*360.0/7.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}


Quant au hasard, il y en a suffisamment.

N'êtes-vous pas surpris, que j'ai séparé les temps avec le sinus et le cosinus, alors que je comprends maintenant, il doit y avoir un, mais le sinus et le cosinus sont utilisés ?

D'où la question : qu'est-ce que buf, et pourquoi quand il est égal à zéro, on prend un cosinus ?

 
Aleksey Vyazmikin:

Quant au hasard, il y en a beaucoup.

N'avez-vous pas été surpris que j'aie des temps séparés avec le sinus et le cosinus, et comme je le comprends maintenant, il devrait y en avoir un, mais le sinus et le cosinus sont utilisés ?

D'où la question : qu'est-ce que buf, et pourquoi quand il est égal à zéro, on prend le cosinus ?

Le buf est le numéro du tampon.
Pour l'instant il y en a 2. Il y a des indicateurs avec 1 tampon, il y en a plus de 2.

Je passe en revue le nombre de tampons dans ma boucle lorsque je crée des colonnes pour l'ensemble d'entraînement.

Vous devez alimenter à la fois le sinus et le cosinus, pas seulement un. Voir https://megaobuchalka.ru/9/5905.html pour une explication.

Lesdonnées numériques semblent être inutiles à coder. Mais dans certains cas, il est raisonnable d'encoder également des données numériques [22]. Lors du codage des données numériques, il est nécessaire de tenir compte de la signification des données, de l'emplacement des valeurs dans la plage de valeurs et de la précision de la mesure des données. Ceci est illustré par des exemples. Par exemple, le codage permet de prendre en compte le caractère significatif des données. Si l'entrée d'un réseau est un angle entre deux directions, par exemple la direction du vent, il n'est jamais approprié d'introduire l'angle (en degrés ou en radians) dans le réseau. Une telle entrée ferait en sorte que le réseau "apprenne" que 0 degré et 360 degrés sont la même chose. Il est plus logique de fournir le sinus et le cosinus de cet angle en entrée. Le nombre de signaux d'entrée du réseau augmente, mais les valeurs d'entrée proches sont codées par des signaux d'entrée proches.

Виды трансформации данных — Мегаобучалка
Виды трансформации данных — Мегаобучалка
  • megaobuchalka
  • megaobuchalka.ru
Трансформация данных — это преобразование данных к определенному представлению, формату или виду, оптимальному с точки зрения конкретного метода анализа [6]. Для разных задач анализа могут потребоваться разные методы трансформации. Типичными средствами трансформации данных являются следующие. Преобразование временны́х данных . Оптимизация...
 
elibrarius:

buf numéro de tampon.
Pour le temps, il y en a 2. Il y a des indicateurs avec 1 tampon, il y en a plus de 2.

Je passe en boucle le nombre de tampons lors de la constitution des colonnes de l'ensemble d'entraînement.

Vous devez alimenter à la fois le sinus et le cosinus, pas seulement un. Explication du pourquoi - ici https://megaobuchalka.ru/9/5905.html

Je l'ai donc bien fait à l'origine - je ne me souviens plus de ce que je faisais...

   double tmp[4];
   int nInd=0;
   MqlDateTime dts;
   double pi=3.1415926535897932384626433832795;
   for(int buf=0; buf<2; buf++)
   {
      TimeToStruct(iTime(Symbol(),PERIOD_CURRENT,0),dts);
      tmp[buf]=(double)(dts.hour*60+dts.min)*360.0/1440.0;
      //tmp[buf]=(double)(dts.hour*60+dts.min)*360.0/24.0;
      tmp[buf]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));

      TimeToStruct(iTime(Symbol(),PERIOD_CURRENT,0),dts);
      tmp[buf+2]=(double)(dts.day_of_week*1440+dts.hour*60+dts.min)*360.0/10080.0;
      //tmp[buf+2]=(double)dts.day_of_week*360.0/7.0;
      tmp[buf+2]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));
   }
 
Ne pouvons-nous pas nous contenter d'une seule entrée au lieu de 4 ?
Juste le nombre de minutes à partir de lundi 0:00 =
dts.day_of_week*1440+dts.hour*60+dts.min
Mauvaise idée cependant. Pour atteindre, par exemple, les 10 premières minutes de chaque heure, il faudrait faire beaucoup de fractionnements.
Probablement mieux comme vous - juste quelques jours, quelques heures. Et peut-être des minutes.
 
elibrarius:
Ne pouvons-nous pas nous contenter d'une seule entrée au lieu de 4 en tout ?
Le nombre de minutes à partir de lundi 0:00 = Bien est une mauvaise idée. Pour atteindre, par exemple, les 10 premières minutes de chaque heure, il faudrait faire beaucoup de fractionnements.
Probablement mieux comme vous - juste quelques jours, quelques heures. Et peut-être des minutes.

J'ai déjà commencé l'entraînement sans minutes - voyons voir.

J'utilise toujours 1/4 de temps de barre - heures, 4 heures, jours.