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

 
SanSanych Fomenko:

Cher collègue !

Pendant plusieurs pages, il y a un débat sur les différences entre vos algorithmes et ceux de R sur les bords du domaine de la fonction. Les points marginaux sont des points marginaux et, dans la pratique, les différences pourraient être négligées.

Mais dans ce cas, j'ai une question beaucoup plus substantielle :

Où est la documentation pour toutes vos fonctions ?

Auparavant, je pensais que nous prenions votre fonction, puis la documentation de R, puisque vos fonctions sont analogues, et que nous nous plongions dans les parties de la documentation de R qui décrivent les algorithmes ou suivent les liens fournis par R. R dispose d'une documentation et d'un appareil de référence de très haute qualité.

Au cours de la discussion, j'ai découvert que vos fonctions sont différentes de R - ce sont d'autres fonctions dont les algorithmes reposent sur d'autres sources. Il n'y a rien à ce sujet dans l'article lui-même, aucune documentation. Et nous l'apprenons de Renat dans un contexte complètement différent.

En pratique, nous pouvons conclure sans ambiguïté que le code ne peut pas être porté de R à MQL5.

Et voici pourquoi.

C'est parce que vous n'avez pas lu l'article et que vous avez manqué la répétition plusieurs fois :

  1. Nous avons joint des tests unitaires dans le code source, prouvant l'exactitude des calculs.
  2. Nous avons beaucoup travaillé sur la vérification totale de l'exactitude qui nous a permis d'aller au fond des erreurs R
  3. Dans notre travail, nous avons constamment revérifié les résultats dans MQL5, Wolfram Alpha et R
Contrairement à vous, nous avons décortiqué le code source de R, analysé chaque fonction en détail, réussi à accélérer certaines fonctions jusqu'à 46 fois, écrit un article et nous sommes prêts à répondre.

Mais au lieu de cela, les critiques parviennent à faire des déclarations sur l'ancienne levure de leurs connaissances et de leur confiance en R sans avoir lu attentivement l'article lui-même. Et certainement sans essayer d'exécuter des scripts de test avec des preuves.

 

Pour qu'il n'y ait pas de malentendu :

  1. La traduction/la similitude des fonctions R ci-dessus est correcte.
  2. L'utilisation de la logique de R dans MQL5 est presque identique, et le code est plus clair dans MQL5.
  3. Tout le code des fonctions mentionnées dans MQL5 est présenté dans le code source propre, y compris les tests unitaires de vérification (où sont-ils dans R ?).
  4. Les calculs dans MQL5 sont plusieurs fois plus rapides que dans R
  5. Nos spécialistes sont bons en mathématiques et sont aussi bons (voire meilleurs) que ceux qui écrivent R.
C'est le début d'un long voyage vers l'introduction de mathématiques complexes dans la bibliothèque standard MQL5. Maintenant Alglib, Fuzzy et Stat sont là.

Aujourd'hui, nous allons publier une bibliothèque graphique similaire à la bibliothèque plot de R. Il y a déjà une expansion fonctionnelle de la bibliothèque de Stat mat sous la forme de dizaines de nouvelles fonctions.

 
Quantum:

Pour l'instant, il existe une description des fonctions dans l'article https://www.mql5.com/ru/articles/2742.


Merci, je comprends votre point de vue.

PS.

Si je comprends bien, vous avez vu la documentation sur Normal et d'autres fonctions dans R, donc je ne vais pas faire un copier-coller et comparer avec votre lien.

 
Renat Fatkhullin:

C'est parce que vous n'avez pas lu l'article et que vous avez manqué la répétition à plusieurs reprises :

  1. Nous avons joint des tests unitaires dans le code source prouvant l'exactitude des calculs.
  2. Nous avons beaucoup travaillé sur la vérification de la correction totale qui nous permet d'aller au fond des erreurs R
  3. Dans notre travail, nous avons constamment revérifié les résultats dans MQL5, Wolfram Alpha et R
Contrairement à vous, nous avons décortiqué le code source de R, analysé chaque fonction en détail, réussi à accélérer certaines fonctions jusqu'à 46 fois, écrit un article et nous sommes prêts à répondre.

Mais au lieu de cela, les critiques parviennent à faire des déclarations sur l'ancienne levure de leurs connaissances et de leur confiance en R sans avoir lu attentivement l'article lui-même. Et certainement sans essayer d'exécuter des scripts de test avec des preuves.

Merci, votre point de vue est clair pour moi.

PS.

C'est la deuxième fois que vous me reprochez de ne pas avoir lu l'article.

Je l'ai lu, de plus j'ai trouvé une erreur dans la fonction (renvoyant un scalaire au lieu d'un vecteur), que vous avez corrigée et maintenant cette erreur a disparu.

 
SanSanych Fomenko:

Merci, votre point de vue est clair pour moi.

PS.

C'est la deuxième fois que vous me reprochez de ne pas avoir lu l'article.

Je l'ai lu, de plus, j'ai trouvé une erreur dans la fonction (renvoyait un scalaire au lieu d'un vecteur), que vous avez corrigée et maintenant cette erreur est absente.

C'est une contre mesure à votre commentaire "En pratique, la conclusion que la migration du code de R vers MQL5 est impossible".

Peut-être avez-vous lu l'ancien article et non le nouveau d'hier. Il n'y avait pas d'erreur - il y avait une version avec retour scalaire (il y a longtemps) et nous avons ajouté les fonctions vectorielles. La bibliothèque s'est sérieusement développée depuis l'ancien article et a été essentiellement réécrite.

J'avais raison - vous n'avez pas lu le nouvel article.

J'espère qu'il n'y aura plus de discussions sur le thème "vous n'avez pas ces fonctions et vous les avez inventées vous-même".
 
Alexey Burnakov:

Concernant la distribution de t. J'ai reproduit cette erreur sur la dernière version de R. mais je ne suis pas entré dans l'essence de l'algorithme. J'admets que la correction était vraiment nécessaire.

Je vais essayer de poser une question à l'équipe de support R.

Article "Computing discrete mixtures of continuous distributions" est disponible sur le site de l'auteur.

Les auteurs de l'article affirment que le problème réside dans le critère de convergence de la série.


La mise en œuvre de l'algorithme de récurrence qu'ils proposent 7.2 https://github.com/neurodebian/afni_removeme_eventually/blob/master/nct.c

Cependant, le calcul de la récurrence comporte des erreurs. Par exemple, pour la fonction bêta :


#include <Math\Stat\Math.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double a=1;
   double b=1;
   double r_beta=MathBeta(a,b);
   for(int j=0; j<40; j++)
     {
      if(j>0)
        {
         r_beta*=((a+j-1)/(a+b+j-1));
        }
      double beta=MathBeta(a+j,b);
      PrintFormat("%d   error=%5.20e",j,beta-r_beta);
     }
  }

2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 0 error=0.0000000000000000e+00
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 1 error=-5.55111512312578270212e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 2 error=0.0000000000000000000000e+00
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 3 error=1.11022302462515654042e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 4 error=1.38777878078144567553e-16
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 5 error=-2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 6 error=2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 7 error=1.66533453693773481064e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 8 error=-2.91433543964103591861e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 9 error=-1.24900090270330110798e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 10 error=-2.77555756156289135106e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 11 error=-1.24900090270330110798e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 12 error=5.68989300120392726967e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 13 error=-2.91433543964103591861e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 14 error=-5.55111512312578270212e-17
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 15 error=-4.85722573273505986435e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 16 error=-1.87350135405495166196e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 17 error=5.27355936696949356701e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 18 error=-1.04083408558608425665e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 19 error=-3.400058018291454190505e-16
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 20 error=-3.26128013483639733749e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 21 error=4.57966997657877072925e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 22 error=-3.19189119579732505372e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 23 error=1.52655665885959024308e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 24 error=5.55111512312578270212e-17
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 25 error=-6.24500451351650553988e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 26 error=-2.70616862252381906728e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 27 error=4.85722573273505986435e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 28 error=4.64905891561784301302e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 29 error=8.32667268468867405318e-17
201611.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 30 error=-9.02056207507939689094e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 31 error=-2.98372437868010820239e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 32 error=2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 33 error=2.74086309204335520917e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 34 error=-3.43475248243407804694e-16
201611.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 35 error=2.08166817117216851329e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 36 error=4.16333634234433702659e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 37 error=8.673617379889403547206e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 38 error=-1.21430643318376496609e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 39 error=-2.18575157973077693896e-16

Pour le calcul de la FCD, la précision peut être suffisante, mais pour la conversion de quantiles avec une grande précision, elle peut ne pas être suffisante.

Nous avons donc utilisé la sommation directe sans calcul de récurrence dans l'algorithme du quantile.

 
Renat Fatkhullin:

Il s'agit d'une contre-mesure à votre exposé "En pratique, il y a une conclusion sans équivoque que la migration du code de R vers MQL5 est impossible".

J'espère qu'il n'y aura plus de discours du type "vous n'avez pas ces fonctions et vous les avez inventées vous-même".

J'ai la mauvaise habitude de lire avant d'écrire sur quelque chose. "Je ne me suis jamais livré à de telles invectives ; je n'ai fait qu'exposer l'essence de mon sujet.

Il s'avère que je ne parviens pas à vous faire comprendre mon point de vue, et ce n'est pas la première fois.

Par conséquent, sans moi.

Je vous souhaite sincèrement bonne chance, Renat !

 

Messieurs, quel est l'argument pour 100 500 pages ? Qui est le meilleur en maths ? Quelle différence cela fait-il pour vous par principe que la fonction soit définie en 0 ou pas, qu'une erreur en R soit écrite dans l'article ou pas ? C'est comme si on discutait ici de votre enfant en lui disant qu'il est un total ... et que vous le défendiez de tout votre torse.

Prenez-le comme acquis et utilisez les fonctionnalités intégrées dans mt5, demandez aux développeurs de nouvelles fonctionnalités, si quelque chose manque, écrivez votre propre fonctionnalité. Vous devriez utiliser les fonctions intégrées de mt5, demander aux développeurs d'en créer de nouvelles, si quelque chose vous échappe, écrivez votre propre fonction.

 
Merci pour votre participation @SanSanych Fomenko, mais vous n'avez réussi à réfuter aucune de nos positions et le présent schéma échoue.
 
Renat Fatkhullin:

Pour qu'il n'y ait pas de malentendu :

  1. La traduction/similitude des fonctions R ci-dessus est correcte.
  2. L'utilisation de la logique de R dans MQL5 est presque identique, et le code est plus clair dans MQL5.
  3. Tout le code des fonctions mentionnées dans MQL5 est présenté dans le code source propre, y compris les tests unitaires de vérification (où sont-ils dans R ?).
  4. Les calculs dans MQL5 sont plusieurs fois plus rapides que dans R
  5. Nos spécialistes sont bons en mathématiques et sont aussi bons (ou meilleurs) que ceux qui écrivent R.
C'est le début d'un long voyage vers l'introduction de mathématiques complexes dans la bibliothèque standard MQL5. Maintenant Alglib, Fuzzy et Stat sont là.

Aujourd'hui, nous allons publier une bibliothèque graphique similaire à la bibliothèque plot de R. Nous travaillons déjà à l'extension de la fonctionnalité de la bibliothèque de nattes Stat sous la forme de dizaines de nouvelles fonctions.

c'est juste un jour férié