L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 200
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Revenons à la déclaration initiale concernant les erreurs R dans l'article.
Notre avis est toujours le même : des erreurs sont présentes, et elles ont été causées par une négligence dans la mise en œuvre.
Je vais essayer de poser une question à l'équipe de support R.
Et vous y allez, vous recalculez tout, vous passez quelques semaines à tout revérifier comme il l'a fait. Mais au lieu de cela, vous n'avez même pas lu notre article.
Pour notre part, nous avons fait le travail. Et nous avons fait du bon travail. Si Wolfram n'est pas non plus une autorité pour vous, alors vous perdez votre temps avec cette façon de communiquer.
Ne confondez pas les créateurs et les utilisateurs, s'il vous plaît.
Et vous y allez, vous recalculez tout, vous passez quelques semaines à le revérifier comme il l'a fait. Mais au lieu de cela, vous n'avez même pas lu notre article.
Pour notre part, nous avons fait le travail. Et nous avons fait du bon travail. Si Wolfram n'est pas non plus une autorité pour vous, alors vous perdez votre temps avec cette façon de communiquer.
Ne confondez pas les créateurs et les utilisateurs, s'il vous plaît.
Il existe de nombreuses formules qui supposent que 0^0=1, par ex. notation pour les polynômes et les séries de puissance, l'arithmétique des nombres cardinaux, le théorème binomial, etc., tous ces éléments supposent 0^0=1. Par exemple, en substituant x=0 dans x^0+x^1+x^2+... = 1/(1-x) montre que 0^0 = 1.
On peut supposer que définir une fonction signifie spécifier une façon de la calculer.
Expression donnéeEn outre, selon :
https://en.wikipedia.org/wiki/Gamma_distribution
lorsque x = 0, alpha = 1, beta = 1, on obtient une valeur indéfinie au numérateur, ce qui fait entrer toute la fraction dans l'incertitude.
Nous affirmons qu'à proprement parler, la densité gamma de la distribution au point zéro est indéfinie. Et en prenant la limite à droite, la densité est égale à un.
A la lumière de ces éléments, nous pensons que la formulation de l'affirmation "erreurs de calcul dans R" n'est pas correcte. Plus précisément, c'est une question de convention : ce qui doit être considéré comme égal à l'expression zéro puissance zéro. L'égalisation de la densité de la distribution gamma à zéro au point zéro ne semble pas être une pratique valable.
ne correspond pas à la définition de la fonction car elle contient une incertitude au point x=0, comme vous l'avez souligné.
Si la condition x>=0 est mise au lieu de x>0, il n'y a pas d'incertitude et vous pouvez calculer les valeurs en utilisant cette formule.
En ce qui concerne la pratique - Mathematica et Matlab peuvent être considérés comme des normes industrielles pour les calculs d'ingénierie, ils produisent 0, c'est-à-dire que cette expression n'est valable que pour x>0.
Nous pouvons supposer que définir une fonction signifie spécifier une façon de la calculer.
L'expression donnée est.n'est pas approprié pour définir une fonction car il contient une incertitude à x=0, comme vous l'avez souligné.
Si vous mettez la condition x>=0 au lieu de x>0, il n'y a pas d'incertitude et vous pouvez calculer des valeurs en utilisant cette formule.
En ce qui concerne la pratique - Mathematica et Matlab peuvent être considérés comme la norme industrielle pour les calculs d'ingénierie, ils donnent 0, c'est-à-dire que cette expression n'est vraie que pour x>0.
Mathematica et Matlab peuvent être considérés comme la norme industrielle pour les calculs d'ingénierie.
Vous avez pris une situation pour laquelle il n'y a pas de solution, vous avez cherché le résultat que Wolfram renvoie, et vous avez qualifié tous les autres résultats de faux. Il ne s'agit pas de calculs d'ingénierie, mais de dogmes.
Ils pourraient prendre R comme référence, et écrire sur la recherche d'une erreur dans Wolfram. Je suppose que si vous prenez tous les logiciels de mathématiques, et que vous les divisez en deux groupes en fonction de ce qu'ils rapportent dans cette situation - il y aura une répartition 50%/50%, vous pouvez ajouter une douzaine d'autres logiciels que mql excelle dans un article sur mql.
Merci pour les erreurs mentionnées dans l'AS 243. Mais il ne faut pas lui reprocher le comportement d'autres fonctions avec paramètres, pour lesquelles il n'existe pas de solution claire.
On aurait donc dû écrire dans l'article sur les avantages de mql - regardez, dans R il y a une fonction qui a une erreur de 15 décimales. Et nous avons une autre fonction dans mql qui est plus précise. Tout serait cultivé et scientifique, et non dogmatique comme aujourd'hui.
Considérons un exemple avec les paramètres a=0.5, b=1 au point x=0.
Si on n'exclut pas le point x=0, la densité diverge et la probabilité est OK.
Et plus loin, il n'y a pas de problème non plus :
Il s'avère que lorsque le calcul de la CDF R exclut le point x=0, l'infini a disparu quelque part.
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 peuvent ê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 des analogues, et que nous nous plongions dans les parties de la documentation de R qui décrivent les algorithmes, ou qui renvoient aux 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 tirer une conclusion sans ambiguïté que le code ne peut pas être porté de R à MQL5.
Et voici pourquoi.
Il est clair pour moi que s'il est écrit "analogue de R" et qu'il n'y a pas de documentation sur l'analogue, alors c'est un analogue à 100% et je peux facilement transférer le code d'un interpréteur à un compilateur sans m'en soucier. Et si ce n'est pas le cas, alors un seul cas suffit pour mettre un terme à l'idée de porter du code de R à MQL5. Personne ne veut se retrouver dans une impasse totale lorsque, en transférant un code fonctionnel vers R, on obtient un code MQL qui ne fonctionne pas en raison de subtilités dans la mise en œuvre des algorithmes.
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 allions dans les parties de la documentation de R qui décrivent les algorithmes, ou qui renvoient aux 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 tirer une conclusion sans ambiguïté que le code ne peut pas être porté de R à MQL5.
Et voici pourquoi.
Il est clair pour moi que s'il est écrit "analogue de R" et qu'il n'y a pas de documentation sur l'analogue, alors c'est un analogue à 100% et je peux facilement transférer le code d'un interpréteur à un compilateur sans m'en soucier. Et si ce n'est pas le cas, c'est suffisant pour mettre un terme à l'idée de porter du code de R à MQL5. Personne ne veut se retrouver dans une impasse complète, lorsqu'après la migration du code de travail vers R, vous obtenez du code MQL, qui ne fonctionne pas en raison des subtilités de la mise en œuvre des algorithmes.
Pour le moment, les fonctions sont décrites dans l'article https://www.mql5.com/ru/articles/2742.
Prenons comme exemple le calcul d'une distribution normale avec les paramètres mu=2, sigma=1 :
n <- 10
k <- seq(0,1,by=1/n)
mu=2
sigma=1
normal_pdf<-dnorm(k, mu, sigma, log = FALSE)
normal_cdf<-pnorm(k, mu, sigma, lower.tail=TRUE,log.p = FALSE)
normal_quantile <- qnorm(normal_cdf, mu,sigma, lower.tail=TRUE,log.p = FALSE)
normal_pdf
normal_cdf
normal_quantile
1) L'analogue de la fonction R dnorm() est une fonction :
La fonction calcule les valeurs de la fonction de densité de probabilité de la distribution normale avec les paramètres mu et sigma pour le tableau de variables aléatoires x[]. En cas d'erreur, il renvoie false. Analogue à dnorm() en R.
2) Analogique pnorm :
La fonction calcule la valeur de la fonction de distribution normale avec les paramètres mu et sigma pour le tableau de variables aléatoires x[]. En cas d'erreur, elle renvoie false. Analogue de pnorm() en R.
3) Analogue de qnorm :
Cette fonction calcule les valeurs de la fonction inverse de la distribution normale avec les paramètres mu et sigma pour le tableau de valeurs de probabilité[]. En cas d'erreur, il renvoie false. L'analogue de qnorm() dans R.
Voici un exemple de leur utilisation :
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- arrays for calculated values
double x_values[];
double normal_pdf[];
double normal_cdf[];
double normal_quantile[];
//--- prepare x values
const int N=11;
ArrayResize(x_values,N);
for(int i=0;i<N;i++)
x_values[i]=i*1.0/(N-1);
//--- set distribution parameters
double mu=2.0;
double sigma=1.0;
//--- calculate pdf, cdf and quantiles
MathProbabilityDensityNormal(x_values,mu,sigma,false,normal_pdf);
MathCumulativeDistributionNormal(x_values,mu,sigma,true,false,normal_cdf);
MathQuantileNormal(normal_cdf,mu,sigma,true,false,normal_quantile);
//--- show calculated values
for(int i=0;i<N;i++)
PrintFormat("1 %d, x=%.20e PDF=%.20e, CDF=%.20e, Q=%.20e,",i,x_values[i],normal_pdf[i],normal_cdf[i],normal_quantile[i]);
}
Résultat :
2016.11.11:56:46.413 Test (EURUSD,H1) 1 0, x=0.0000000000000000e+00 PDF=5.39909665131880628364e-02, CDF=2.27501319481792120547e-02, Q=0.00000000000000e+00,
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 1, x=1.00000000000000005551e-01 PDF=6.56158147746765951780e-02, CDF=2.87165598160018034624e-02, Q=1.000000000000088818e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 2, x=2.000000000000000000011102e-01 PDF=7.89501583008941493214e-02, CDF=3.593031911292598098213e-02, Q=2.0000000000177636e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 3, x=2.999999999999988898e-01 PDF=9.40490773768869470217e-02, CDF=4.456546247585430410108e-02, Q=3.00000000000000266454e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 4, x=4.00000000000000022204e-01 PDF=1.1092083434679455543315e-01, CDF=5.47992916995579740225e-02, Q=3.999999999999999999911182e-01
2016.11.11:56:46.413 Test (EURUSD,H1) 1 5, x=5.0000000000000000e-01 PDF=1.29517595665891743772e-01, CDF=6.68072012688580713080e-02, Q=5.0000000000222045e-01,
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 6, x=5.999999999999999999977796e-01 PDF=1.49727465635744877437e-01, CDF=8.07566592337710387195e-02, Q=6.00000000000000310862e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 7, x=6.99999999999999955591e-01 PDF=1.71368592047807355438e-01, CDF=9.68004845856103440793e-02, Q=7.00000000000000177636e-01
2016.11.11:56:46.413 Test (EURUSD,H1) 1 8, x=8.000000000000044409e-01 PDF=1.94186054983212952330e-01, CDF=1.15069670221708289515e-01, Q=8.000000000000044409e-01,
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 9, x=9.000000000000022204e-01 PDF=2.1785217177032550525793e-01, CDF=1.35666060946382671659e-01, Q=9.000000000000133227e-01
2016.11.11:56:46.413 Test (EURUSD,H1) 1 10, x=1.00000000000000000000e+00 PDF=2.41970724519143365328e-01, CDF=1.58655253931457046468e-01, Q=1.0000000000000000e+,
Résultat du calcul en R :