Diálogo do autor. Alexander Smirnov. - página 41

 
lna01:
Os coeficientes de linha a e b são calculados nestas linhas.
A = (SumXY - N3*SumY)*N4;
B = (N1*SumY - SumXY)*N2;
Para ilustração, eu anexei a versão MovingLR_2 que apenas desenha a regressão linear atual. Especialmente, porque houve um erro no anterior, ao calcular N4 :)

MovingLR_2 dá uma regressão linear pura e é muito fácil ter certeza disso. Em at_LR0 há imprecisão de mudança de período em horas para período em bares. Se você mudar Fechar em at_LR0 para (Alto+Baixo)/2 e pegar um período de 1, e mudar o período em MovingLR_2 para 61 em vez de 60 e exibi-lo no gráfico de um minuto, os resultados serão exatamente os mesmos.


Então a MovingLR_2 é um bom algoritmo, basta ajustar o layout do código e está tudo bem!

Em at_LR0 o deslocamento de uma barra é feito para se ajustar à regressão linear do conjunto de ferramentas padrão MT4. Talvez isto não precisasse de ser feito...

 
Mathemat:

2 zigan:

Para a regressão linear, a fórmula é: LRMA = 3*LWMA - 2*MA

Para regressão quadrática:

Regressão Quadrática MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )

Aqui N é o período das médias,

QWMA( i; N ) = 6/( N*(N+1)(2*N+1) ) * soma( Close[i] * (N-i)^2; i = 0...N-1 ) (a máquina de pesos quadrados).

para o cúbico: oops, ainda não consigo tirá-lo da Trading Solutions, minha fórmula é muito selvagem lá.

2 Candidato: você é realmente paranóico, eu não teria pensado nisso...


Eu tenho fórmulas diferentes.

onde está

 
Hmm, para o RMS, o resultado é ainda mais saboroso do que o da Yurixx:

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

Da mesma forma que a Yurixx, a simplicidade de expressão se deve à escolha da origem e direção do eixo X. Se ninguém encontrar erros, este é o fim da abordagem do algoritmo. Para que o A calculado e o RMS não desapareçam, deixei o desenho da linha LR no indicador e adicionei o canal RMS :)

ANG3110:

um pequeno ajuste no layout do código, e tudo está bem!

Acho que não vou usar exatamente este indicador, vou usar um algoritmo.

2 Yurixx:
Parece que a diferença nos valores RMS para N pequeno não se deve à correção RMS, mas à escolha do início e direção X. Porque quando você os muda, minha fórmula anterior também começa a dar resultados diferentes, e é precisa sem nenhuma reserva.
Arquivos anexados:
 
lna01:

2 Yurixx:
Parece que a diferença nos valores RMS para N pequeno não se deve à correção RMS, mas à escolha do início e direção X. Porque quando você os muda minha fórmula antiga também começa a dar resultados diferentes, enquanto é precisa sem nenhuma reserva.

Você certamente está certo de que a escolha correta do sistema de coordenadas é uma técnica poderosa para simplificar os cálculos e a aparência das fórmulas finais. Eu não o usei para regressão linear, tudo se mostrou suficientemente agradável. Mas para a regressão parabólica, dada uma certa escolha de origem, as expressões finais acabam sendo duas vezes mais fáceis, enquanto a eficácia do algoritmo aumenta em uma ordem de grandeza. Além disso, o problema das limitações na precisão dos cálculos é completamente eliminado.

No entanto, não posso concordar com você em um ponto. Os valores RMS, assim como os valores reais de regressão, não podem depender da escolha da origem do eixo X. Talvez não seja a fórmula em si que começa a dar resultados diferentes, mas a própria questão da precisão do cálculo se torna aparente. Como apenas 15 dígitos significativos de duplo são armazenados (quanto mais int), um erro é acumulado bastante rapidamente no processo de cálculos. Isto é especialmente verdadeiro quando X e Y têm ordens de magnitude diferentes. Por exemplo, X é um número de barra da ordem de centenas de milhares, Y é um preço da ordem de 1 e a mudança de preço é da ordem de 0,0001.


PS

Eu queria entender o que torna esta fórmula "saborosa". Obviamente, é muito mais simples - em uma linha. Embora eu não entenda porque você divide por (N-2) e não por (N-1). Devo ainda observar que, visando uma aceleração máxima, você teria que usar uma fórmula diferente. Se você fixar a escolha de origem X em relação ao valor do preço atual, é mais vantajoso usar fórmulas sem soma(X*Y). Assim, você não terá que calcular a convolução em cada barra. Mas para atualizar Sum(Y*Y) ou Sum(X*X) em cada barra é necessário um operador.

 

Se você conhece o valor atual dos coeficientes A e B em uma regressão linear, você pode calcular o RMS

aqui estão as fórmulas

coeficiente A

coeficiente B

 
Prival:

Se você conhece o valor atual dos coeficientes A e B em uma regressão linear, você pode calcular o RMS

Com um termo quadrático como QWMA, é provavelmente possível. Mas o algoritmo através de manequins é inerentemente não otimizado. Uma chance era uma oportunidade de usar código nativo para traços embutidos, mas parece ter falhado.
P.S. Acabo de lembrar que a QWMA é quadrática por X e vou precisar de um termo quadrático por Y. Portanto, a QWMA não vai ajudar.
 
Prival:

Se você conhece o valor atual dos coeficientes A e B em uma regressão linear, você pode calcular o RMS


Eu não acho que você possa. A linha reta de regressão é definida por duas constantes, A e B. Com os mesmos A e B, pode haver qualquer dispersão de valores em torno desta linha reta. Para calcular o RMS você também precisa da variação de X e Y. Provavelmente a QWMA também não será suficiente, pois não contém quadrados Y e, portanto, não determina a variação de Y.
 
Yurixx:
A QWMA provavelmente também não será suficiente, já que não se ajusta a Y e, portanto, não determina a variação de Y.
Sim, eu apenas esqueci que a QWMA não é quadrada em Y de forma alguma. Quando me lembrei, acrescentei um post-cript.
 
Yurixx:

Uma coisa, no entanto, não posso concordar com você. Os valores RMS, assim como os próprios valores de regressão, não podem depender da escolha do ponto de partida para o eixo X. Talvez não seja a fórmula em si que começa a dar resultados diferentes, mas este mesmo problema de precisão de cálculo.

Era exatamente isso que eu queria dizer com os resultados dos cálculos.

Embora eu não entenda porque você divide por (N-2) e não por (N-1).

Porque a regressão tem um grau adicional de liberdade. Yandex pode ajudar com detalhes, por exemplo, http://cmacfm.mazoo.net/archives/000936.html
Devo ainda observar que, visando uma aceleração máxima, você deveria ter usado uma fórmula diferente. Se você fixar a escolha de origem X em relação ao valor do preço atual, é mais vantajoso usar fórmulas sem soma(X*Y). Assim, você não terá que calcular a convolução em cada barra. Mas para atualizar Sum(Y*Y) ou Sum(X*X) em cada barra é necessário um operador.
Já temos Sum(X*Y) - não se pode calcular nem A nem B sem ele. É calculado recurrentemente, em três operações. Veja mais cuidadosamente em_LR0 ou MovingLRv3.

P.S. Para Sum(Y*Y) - eu também tenho três operações, para Sum(X*X) - nenhuma.
 
Prival:
Mathemat:

Regressão Quadrática MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )

QWMA( i; N ) = 6/( N*(N+1)(2*N+1) ) * soma( Close[i] * (N-i)^2; i = 0...N-1 ) (um feiticeiro com pesos quadráticos).

Eu tenho outras fórmulas.

onde

Exatamente as mesmas fórmulas, obrigado, Prival. Dêem-me os semelhantes em relação aos mash-ups.
Razão: