Dialogue de l'auteur. Alexander Smirnov. - page 41

 
lna01:
Les coefficients de ligne a et b sont calculés dans ces lignes.
A = (SumXY - N3*SumY)*N4 ;
B = (N1*SumY - SumXY)*N2 ;
Pour illustration, je joins la version MovingLR_2 qui dessine juste la régression linéaire actuelle. En particulier, parce qu'il y a eu une erreur dans le précédent, lors du calcul de N4 :)

MovingLR_2 donne une régression linéaire pure et il est assez facile de s'en assurer. Dans at_LR0, il y a une imprécision du passage de la période en heures à la période en barres. Si vous changez Close dans at_LR0 en (High+Low)/2 et prenez une période de 1, et changez la période dans MovingLR_2 en 61 au lieu de 60 et l'affichez sur le graphique d'une minute, les résultats seront exactement les mêmes.


Alors MovingLR_2 est un bon algorithme, il suffit de modifier la disposition du code et c'est bon !

Dans at_LR0, le décalage d'une barre est effectué pour ajuster la régression linéaire de la boîte à outils standard MT4. Peut-être que ça n'avait pas besoin d'être fait...

 
Mathemat:

2 ziganes:

Pour la régression linéaire, la formule est : LRMA = 3*LWMA - 2*MA

Pour une régression quadratique :

Régression quadratique MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )

Ici, N est la période des moyennes,

QWMA( i ; N ) = 6/( N*(N+1)(2*N+1) ) * sum( Close[i] * (N-i)^2 ; i = 0...N-1 ) (la machine à pondérer les carrés).

pour le cubique : oops, je n'arrive toujours pas à le sortir de Trading Solutions, ma formule est trop sauvage là-bas.

2 Candidats : vous êtes vraiment paranoïaque, je n'y aurais pas pensé...


J'ai des formules différentes.

où est

 
Hmm, pour RMS, c'est un résultat encore plus savoureux que celui de Yurixx:

RMS^2 = (Somme(Y*Y) - A*Somme(X*Y) - B*Somme(Y))/(N-2)

De même que pour Yurixx, la simplicité d'expression est due au choix de l'origine et de la direction de l'axe des abscisses. Si personne ne trouve d'erreurs, c'est la fin de l'approche de l'algorithme. Pour que le A calculé et le RMS ne disparaissent pas, j'ai laissé le dessin de la ligne LR dans l'indicateur et ajouté le canal RMS :)

ANG3110:

un petit ajustement de la disposition du code, et tout est OK !

Je ne pense pas que je vais utiliser exactement cet indicateur, je vais utiliser un algorithme.

2 Yurixx:
Il semble que la différence des valeurs RMS pour les petits N n'est pas due à la correction RMS, mais au choix du départ et de la direction X. Parce que lorsque vous les changez, mon ancienne formule commence également à donner des résultats différents, et elle est précise sans aucune réserve.
Dossiers :
 
lna01:

2 Yurixx:
Il semble que la différence des valeurs RMS pour les petits N n'est pas due à la correction RMS, mais au choix du départ et de la direction X. Parce que lorsque vous les changez, mon ancienne formule commence à donner des résultats différents aussi, alors qu'elle est précise sans aucune réserve.

Vous avez certainement raison de dire que le choix correct du système de coordonnées est une technique puissante pour simplifier les calculs et l'apparence des formules finales. Je ne l'ai pas utilisé pour la régression linéaire, tout s'est avéré assez agréable. Mais pour la régression parabolique, compte tenu d'un certain choix d'origine, les expressions finales s'avèrent deux fois plus faciles, tandis que l'efficacité de l'algorithme augmente d'un ordre de grandeur. En outre, le problème des limitations de la précision des calculs est complètement éliminé.

Je ne peux cependant pas être d'accord avec vous sur un point. Les valeurs RMS, ainsi que les valeurs de régression réelles, ne peuvent pas dépendre du choix de l'origine de l'axe des X. Ce n'est peut-être pas la formule elle-même qui commence à donner des résultats différents, mais la question même de la précision des calculs. Étant donné que seuls 15 chiffres significatifs de double sont stockés (sans parler de int), une erreur s'accumule assez rapidement dans le processus de calcul. Cela est particulièrement vrai lorsque X et Y ont des ordres de grandeur différents. Par exemple, X est un numéro de barre de l'ordre de centaines de milliers, Y est un prix de l'ordre de 1 et la variation du prix est de l'ordre de 0,0001.


PS

Je voulais comprendre ce qui rend cette formule "savoureuse". Évidemment, c'est beaucoup plus simple - en une seule ligne. Bien que je ne comprenne pas pourquoi vous divisez par (N-2) et non par (N-1). Je dois tout de même noter qu'en visant une accélération maximale, il faudrait utiliser une formule différente. Si vous fixez le choix de l'origine X par rapport à la valeur du prix actuel, il est plus avantageux d'utiliser des formules sans Somme(X*Y). Ainsi, vous n'aurez pas à calculer la convolution sur chaque barre. Mais mettre à jour Sum(Y*Y) ou Sum(X*X) sur chaque barre est un opérateur.

 

Si vous connaissez la valeur actuelle des coefficients A et B dans une régression linéaire, pouvez-vous calculer la RMS

voici les formules

coefficient A

coefficient B

 
Prival:

Si vous connaissez la valeur actuelle des coefficients A et B dans une régression linéaire, pouvez-vous calculer la RMS

Avec un terme quadratique comme QWMA, c'est probablement possible. Mais l'algorithme via les mannequins est intrinsèquement non-optimal. Une occasion s'est présentée d'utiliser le code natif pour les tirets intégrés, mais elle semble avoir échoué.
P.S. Je viens de me rappeler que QWMA est quadratique par X et que j'aurai besoin d'un terme quadratique par Y. Donc la QWMA n'aidera pas.
 
Prival:

Si vous connaissez la valeur actuelle des coefficients A et B dans une régression linéaire, pouvez-vous calculer la RMS


Je ne pense pas que tu puisses. La droite de régression est définie par deux constantes, A et B. Avec les mêmes A et B, il peut y avoir n'importe quel écart de valeurs autour de cette ligne droite. Pour calculer la valeur efficace, vous avez également besoin de la variance de X et Y. Probablement que le QWMA ne sera pas non plus suffisant, car il ne contient pas les carrés Y et ne détermine donc pas la variance de Y.
 
Yurixx:
Le QWMA ne sera probablement pas suffisant non plus, car il n'élève pas Y au carré et ne détermine donc pas la variance de Y.
Oui, j'ai juste oublié que le QWMA n'est pas du tout un Y-carré. Quand je m'en suis souvenu, j'ai ajouté un post-scriptum.
 
Yurixx:

Cependant, je ne peux pas être d'accord avec vous sur un point. Les valeurs RMS, ainsi que les valeurs de régression elles-mêmes, ne peuvent pas dépendre du choix du point de départ de l'axe des X. Ce n'est peut-être pas la formule elle-même qui commence à produire des résultats différents, mais ce problème même de précision des calculs.

C'est exactement ce que je voulais dire par résultats de calcul.

Bien que je ne comprenne pas pourquoi vous divisez par (N-2) et non par (N-1).

Parce que la régression a un degré de liberté supplémentaire. Yandex peut aider avec des détails, par exemple http://cmacfm.mazoo.net/archives/000936.html.
Je dois tout de même noter qu'en visant une accélération maximale, vous auriez dû utiliser une formule différente. Si vous fixez le choix de l'origine X par rapport à la valeur du prix actuel, il est plus avantageux d'utiliser des formules sans Somme(X*Y). Ainsi, vous n'aurez pas à calculer la convolution sur chaque barre. Mais mettre à jour Sum(Y*Y) ou Sum(X*X) sur chaque barre est un opérateur.
Nous avons déjà la somme (X*Y) - vous ne pouvez pas calculer ni A ni B sans elle. Elle est calculée de manière récurrente, en trois opérations. Regardez plus attentivement le_LR0 ou le MovingLRv3.

P.S. Pour Sum(Y*Y) - j'ai également trois opérations, pour Sum(X*X) - aucune.
 
Prival:
Mathemat:

Régression quadratique MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )

QWMA( i ; N ) = 6/( N*(N+1)(2*N+1) ) * sum( Close[i] * (N-i)^2 ; i = 0...N-1 ) (l'assistant des poids carrés).

J'ai d'autres formules.

Exactement les mêmes formules, merci, Prival. Donnez-moi des exemples similaires en rapport avec les mash-ups.