Ajudar a escrever uma regressão linear - página 2

 
kvn писал (а): ENTÃO ONDE ESTÁ O ERRO [...] ???????
DNA?
 
kvn:
Não vou discutir sobre a LR. ENTÃO ONDE ESTÁ O ERRO NO CÓDIGO INDICADOR???????
Quem diabos sabe. Ninguém sabe que algoritmo você está tentando implementar. Primeiro escreva uma idéia, depois fórmulas e depois uma explicação - este pedaço de código faz isto e aquilo. E ninguém vai adivinhar.
 
mais uma vez
como a LR é calculada
// O indicador é calculado usando a fórmula: LR = at+b
// onde LR - preço"médio" de fechamento previsto,
//t - ponto no tempo,(n1 variável no indicador)Pt - preço de fechamento dos últimos n períodos.(Fechar[n2])
//a = (n*SUMM(t*Pt) -SUMM(t)*SUMM(Pt))/(n*SUMM(t^2) - (SUMM(t))^2) - ângulo tangente da linha de regressão,
//b = 1/n*(SUMM(Pt) - a*SUMM(t)), - deslocamento horizontal}

código indicador acima.

Ele calcula de n=1 a 100 incorretamente, depois sai n=22 e o resultado está correto, acho que o laço está escrito incorretamente, mas não sei onde.
 
Parece estar dessincronizada. Para a barra n x é necessário nn, sendo que o índice para y
n2=n+n1-1 = n+nn-1
Há muitos indicadores de regressão nas proximidades, por exemplo, https://forum.mql4.com/ru/10446/page39, se você procurar por todos eles, é melhor navegar a partir do final.
 
Eu só posso deduzir uma fórmula:
 
lna01:
Parece estar dessincronizada. Para a barra n x leva nn, com o índice para y sendo
n2=n+n1-1 = n+nn-1

E em geral
há muitos indicadores de regressão nas proximidades, por exemplo
https://forum.mql4.com/ru/10446/page39, se você estiver procurando por todos eles.
é melhor começar no final.


n1 não é igual a nn, mas varia de 1 a nn - o período do indicador.
e n - número de barras a serem recalculadas (para trabalhar mais rápido e sem puxar a cauda inteira)

Em geral https://forum.mql4.com/ru/10446/page39 não é uma regressão linear, mas sim um derivado do MA.
 
kvn:
lna01:
Parece estar dessincronizada. Para a barra n x leva nn, com o índice para y sendo
n2=n+n1-1 = n+nn-1

n1 não é igual a nn, mas varia de 1 a nn - período do indicador.
e n é o número de barras a serem recalculadas (para trabalhar mais rápido e não para arrastar a cauda inteira)

Em geral https://forum.mql4.com/ru/10446/page39 não é uma regressão linear, mas sim um derivado do MA.
Bem, que se lixe, vamos assumir que o LR é deliberadamente deslocado por um período de tempo. Proponho o seguinte: substituir a expressão complicada
b=(1/nn)*(ssm3-a*ssm2);
substituir por
b=(1.0/nn)*(ssm3-a*ssm2);
(o principal erro foi aqui).
E se o turno não for necessário, substitua por
LR=a*nn+b;
para
LR=a+b;
Depois disso, compare o que é desenhado por este indicador com o de at_LR0. mq4 e tente descobrir porque não é um derivado do MA e como se livrar corretamente da cauda.

P.S. Para não se preocupar com os parâmetros, deixe que os indicadores sejam colocados no gráfico horário e defina o período do seu indicador para mais um.
 
(o principal erro foi aqui).
OBRIGADO pela dica. Eu não teria adivinhado, é uma pena que não esteja escrito no manual de linguagem.
Acontece que onde quer que uma das variáveis seja um número inteiro, a constante deve ser escrita como um número fracionário. Vou manter isso em mente.
E quanto ao DR ou não, é um assunto privado.
Coloque meu indicador no gráfico e preste atenção aos pontos de inflexão da linha. É sempre o fim da tendência e não um mau ponto de saída.
E sua interseção com o MA (qualquer) também é agradável.

Eu ficaria muito grato em receber informações sobre como tornar o indicador mais rápido, como aumentar a velocidade MT.
E talvez alguém saiba onde estão as informações sobre a velocidade de execução de vários operadores de MT (por exemplo, quantos ciclos de relógio são executados em diferentes operadores do loop).
 
kvn:
(o principal erro foi aqui).
OBRIGADO pela dica. Eu não teria adivinhado, é uma pena que não esteja escrito no manual de linguagem.
Acontece que onde quer que uma das variáveis seja um número inteiro, a constante deve ser escrita como um número fracionário. Entendi.
Se você estiver se referindo a fundição, ela é descrita na MQL4 e em todas as outras linguagens de programação.
 
kvn:
Além disso, eu ficaria muito grato por qualquer informação sobre como tornar a mesa giratória mais rápida, como aumentar a velocidade MT.
E se alguém souber se há alguma informação sobre a velocidade de execução de diferentes declarações de MT (por exemplo, quantos ciclos de relógio diferentes declarações são executados).
Quanto à MT, é útil para o usuário tentar minimizar o número de buffers indicadores. As velocidades de execução dos operadores são geralmente aprendidas de forma independente, utilizando os operadores Print e GetTickCount. Embora seria bem-vindo se alguém pudesse digerir isto e publicar um artigo.
Razão: