Indicadores: Previsão de preço pelo Vizinho mais Próximo

 

Previsão de preço pelo Vizinho mais Próximo:

Este indicador utiliza a técnica de Agrupamento Vizinho mais Próximo, também chamado de k-NN, para pesquisar o padrão mais semelhante na história e usar os preços conhecidos como previsões dos atuais padrões para preços futuros.

O algoritmo k-Nearest Neighbor (k-NN) procura por padrões k conhecidos(vizinhos) que são mais semelhantes ao padrão atual e calcula os preços futuros com base nos vizinhos através de uma votação ponderada. O presente indicador encontra apenas um vizinho mais próximo. Assim, em essência, é um algoritmo 1-NN. . Ele usa o coeficiente de correlação de Pearson entre o padrão atual e todos os padrões ja conhecidos como uma medida de distância entre eles.

Previsão de preço pelo Vizinho mais Próximo

Autor: Vladimir

 

o número de pi é melhor definido assim.

pi = 4*MathArctan(1);
Eu tive a ideia uma vez e agora estou passando-a para você.
 
Prival:

o número de pi é melhor definido assim.

Recebi a dica uma vez, agora estou repassando-a para você.
Obrigado, vou me lembrar disso. A propósito, pi não é usado aqui. Deixei essa linha por engano.
 

Há também uma seção Constantes matemáticas na linguagem MQL5:

Constantes especiais contendo valores são reservadas para algumas expressões matemáticas. Essas constantes podem ser usadas em qualquer lugar do programa mql5 em vez de calcular seu valor usando funções matemáticas.

Constante

Descrição

Valor

M_E

e

2.71828182845904523536

M_LOG2E

log2(e)

1.44269504088896340736

M_LOG10E

log10(e)

0.434294481903251827651

M_LN2

ln(2)

0.693147180559945309417

M_LN10

ln(10)

2.30258509299404568402

M_PI

pi

3.14159265358979323846

 
Rosh:

Há também uma seção Constantes matemáticas em MQL5:


O que você precisa.
 
Rosh:

Há também uma seção Constantes matemáticas em MQL5:


Essas constantes são definidas com a máxima precisão possível ou não? Usei essa entrada porque era necessário ter a precisão máxima, caso contrário, o erro se acumularia
 
Prival:
Essas constantes estão definidas com a máxima precisão possível ou não? Usei essa entrada porque era necessário ter exatamente a precisão máxima, caso contrário, o erro se acumularia.

Você precisa pegá-la e verificá-la. Aqui está o script, que dá cinco vezes 100500.

#property copyright "Direitos autorais © 2010 Eugene Logunov (lea)"
#property version "1.00"

int CalcDifference(double approx, double exact) {
   double diff = MathAbs(approx - exact);
   if (diff == 0.0) {
      return 100500;
   }
   else {
      return (int)(-MathLog10(diff));
   }
}

void OnStart() {
   PrintFormat("%d", CalcDifference(MathExp(1.0), M_E));
   PrintFormat("%d", CalcDifference(MathLog10(MathExp(1)), M_LOG10E));
   PrintFormat("%d", CalcDifference(MathLog(2.0), M_LN2));
   PrintFormat("%d", CalcDifference(MathLog(10.0), M_LN10));
   PrintFormat("%d", CalcDifference(MathArctan(1.0) * 4.0, M_PI));
}

p.s. Se o algoritmo produzir um resultado ruim devido a um erro em 16 casas decimais à direita do ponto decimal em uma constante, obviamente não é a constante. E por que você precisa dessa precisão de cálculo se as aspas são filtradas de qualquer forma?

 
lea:

Preciso pegar isso e dar uma olhada. Aqui está o script, que dá cinco vezes 100500.

p.s. Se o algoritmo produzir um resultado ruim devido a um erro em 16 casas decimais à direita do ponto decimal em uma constante, obviamente não é a constante. E por que você precisa dessa precisão de cálculo se as aspas são filtradas de qualquer forma?

Aconselho que você, como programador, leia sobre algoritmos iterativos pelo menos uma vez na vida, o que são e para que são usados. E então o arredondamento http://dic.academic.ru/dic.nsf/enc_mathematics/1999/ИТЕРАЦИОННЫЙ matemáticos se perguntam como lidar com esse arredondamento (para criar algoritmos estáveis), e aqui é fácil e não é forçado, e por quê...

Z.y. obrigado pela orientação. Já perdi duas semanas para verificar o https://www.mql5.com/pt/code/8309 e agora não vou mais entrar nesse rake.

З.З.Ы e já estou cansado de checar, nos cinco já está virando paranoia ...

 
Prival:

Aconselho você, como programador, a ler uma vez na vida sobre algoritmos iterativos, o que são e o que comem. E então o arredondamento http://dic.academic.ru/dic.nsf/enc_mathematics/1999/ИТЕРАЦИОННЫЙ matemáticos se perguntam como lidar com esse arredondamento (para criar algoritmos estáveis), e aqui é fácil e não forçado, e por que ...

Eu tive que ler sobre isso no ano passado. Além disso, eu estava insinuando a instabilidade (ao dizer que não se trata de constantes).

Se você sentir falta de precisão apenas por causa dos tipos, pode recomendar algo como http://gmplib.org/ (é claro que a velocidade dos cálculos cairá).

H.S.Y. Já estou cansado de verificar, em 5 isso se torna paranoico....

Você deve sempre verificar tudo o que puder, mesmo que isso às vezes leve muito tempo. Caso contrário, pode haver surpresas.

 
lea:

Tenho lido sobre isso no ano passado. Além disso, eu estava sugerindo instabilidade (ao dizer que não se trata de constantes).

Se você sentir falta de precisão apenas por causa dos tipos, pode recomendar algo como http://gmplib.org/ (é claro que a velocidade dos cálculos cairá).

Você deve sempre verificar tudo o que puder, embora isso às vezes consuma muito tempo. Caso contrário, pode haver surpresas.

Você não tem ideia do que eu programei e dá conselhos, além de ensinar uma pessoa que começou a programar (a julgar pelo seu perfil) quando foi para o jardim de infância.

Você não é um desenvolvedor, eu não lhe fiz a pergunta, mas você começou a me ensinar como verificar o código. Você quer me ajudar, me dar os resultados da precisão com que todas as constantes foram definidas? Posso verificar sem orientação, só quero economizar meu tempo.

 
Muito bom