Aide à la rédaction d'une régression linéaire - page 2

 
kvn писал (а): ALORS OÙ EST L'ERREUR [...] ? ??????
DE L'ADN ?
 
kvn:
Je ne discuterai pas de LR. ALORS OÙ SE TROUVE L'ERREUR DANS LE CODE INDICATEUR ???????
Qui sait ? Personne ne sait quel algorithme vous essayez de mettre en œuvre. Écrivez d'abord une idée, puis des formules, et enfin une explication - ce morceau de code fait ceci et cela. Et personne ne le devinera.
 
une fois de plus
comment le LR est calculé
//L'indicateur est calculé à l'aide de la formule : LR = at+b
//où LR - prix de clôture"moyen" prévu,
//t - point dans le temps,(variable n1 dans l'indicateur)Pt - prix de clôture des n dernières périodes.(Close[n2])
//a = (n*SUMM(t*Pt) -SUMM(t)*SUMM(Pt))/(n*SUMM(t^2) - (SUMM(t))^2) - angle tangent de la ligne de régression,
//b = 1/n*(SOMME(Pt) - a*SUMM(t)), - décalage horizontal}

code indicateur ci-dessus.

Il calcule de n=1 à 100 de manière incorrecte, puis sort n=22 et le résultat est correct, je pense que la boucle est mal écrite, mais je ne sais pas où.
 
Il semble qu'il ne soit pas synchronisé. Pour bar n x il faut nn, l'indice pour y étant
n2=n+n1-1 = n+nn-1
Il y a beaucoup d'indicateurs de régression à proximité, par exemple https://forum.mql4.com/ru/10446/page39, si vous les recherchez tous, il est préférable de naviguer par la fin.
 
Je ne peux que déduire une formule :
 
lna01:
Il semble qu'il ne soit pas synchronisé. Pour une barre n, x prend nn, l'indice pour y étant de
n2=n+n1-1 = n+nn-1

Et en général
il y a beaucoup d'indicateurs de régression à proximité, par ex.
https://forum.mql4.com/ru/10446/page39, si vous les cherchez tous.
il est préférable de commencer par la fin.


n1 n'est pas égal à nn mais varie de 1 à nn - la période de l'indicateur.
et n - nombre de barres à recalculer (pour travailler plus vite et sans tirer toute la queue)

En général, https://forum.mql4.com/ru/10446/page39 n'est pas une régression linéaire mais plutôt une dérivée de la MA.
 
kvn:
lna01:
Il semble qu'il ne soit pas synchronisé. Pour une barre n, x prend nn, l'indice pour y étant de
n2=n+n1-1 = n+nn-1

n1 n'est pas égal à nn mais varie de 1 à nn - période de l'indicateur.
et n est le nombre de barres à recalculer (pour travailler plus vite et ne pas traîner toute la queue)

En général, https://forum.mql4.com/ru/10446/page39 n'est pas une régression linéaire mais plutôt une dérivée de la MA.
Bon, et puis zut, supposons que le LR est délibérément décalé d'un point. Je propose ceci : remplacer l'expression délicate
b=(1/nn)*(ssm3-a*ssm2);
remplacer par
b=(1.0/nn)*(ssm3-a*ssm2);
(la principale erreur était ici).
Et si le changement n'est pas nécessaire, remplacez par
LR=a*nn+b;
à
LR=a+b;
Après cela, comparez ce qui est dessiné par cet indicateur avec celui de at_LR0. mq4 et essayez de trouver pourquoi il n'est pas une dérivée de la MA et comment se débarrasser correctement de la queue.

P.S. Pour ne pas s'embêter avec les paramètres, laissez les indicateurs être placés sur le graphique horaire et réglez la période de votre indicateur à un de plus.
 
(la principale erreur était ici).
MERCI beaucoup pour cette astuce, je ne l'aurais pas deviné, c'est dommage que ce ne soit pas écrit dans le manuel de langue.
Il s'avère que lorsque l'une des variables est un nombre entier, la constante doit être écrite sous la forme d'un nombre fractionnaire. Je garderai cela à l'esprit.
Et quant à DR ou non, c'est une affaire privée.
Placez mon indicateur sur le graphique et faites attention aux points d'inflexion de la ligne. C'est toujours la fin de la tendance et ce n'est pas un mauvais point de sortie.
Et son intersection avec le MA (any) est également agréable.

Je serais très reconnaissant de recevoir des informations sur la façon de rendre l'indicateur plus rapide, d'augmenter la vitesse du MT.
Et peut-être quelqu'un sait-il où se trouvent les informations sur la vitesse d'exécution des différents opérateurs MT (par exemple, combien de cycles d'horloge sont exécutés dans les différents opérateurs de la boucle).
 
kvn:
(la principale erreur était ici).
MERCI beaucoup pour cette astuce, je ne l'aurais pas deviné, c'est dommage que ce ne soit pas écrit dans le manuel de langue.
Il s'avère que lorsque l'une des variables est un nombre entier, la constante doit être écrite sous la forme d'un nombre fractionnaire. Je l'ai.
Si vous faites référence au casting, il est décrit dans MQL4 et dans tous les autres langages de programmation.
 
kvn:
Aussi, je serais très reconnaissant pour toute information sur la façon de rendre le plateau tournant plus rapide, comment augmenter la vitesse de MT.
Et si quelqu'un sait s'il existe des informations sur la vitesse d'exécution des différentes instructions MT (par exemple, combien de cycles d'horloge les différentes instructions sont exécutées).
En ce qui concerne la MT, il est utile pour l'utilisateur d'essayer de minimiser le nombre de tampons d'indicateurs. Les vitesses d'exécution des opérateurs sont généralement apprises indépendamment à l'aide des opérateurs Print et GetTickCount. Mais il serait bienvenu que quelqu'un digère tout cela et publie un article.