Cálculo da diferença, exemplos. - página 3

 
Nikolai Semko:


Não era isso que eu queria dizer. Eu não disse que"na interpolação é um 'traçador' e não uma regressão de todo".

Honestamente, eu nem sequer entendo o significado dessa frase.
Eu quis dizer que todos os tipos de interpolação são redesenháveis (e a sua versão também é redesenhável). E não redesenhável é apenas o traçado destas funções de interpolação, do que as minhas palavras suportadas por gifs de animação. Aconselho a estudá-los mais uma vez. Nestes gifs, o traçado é uma linha azul-púrpura bicolor. Mas não é uma função de interpolação. A cor azul significa que a função de interpolação nesse ponto é ascendente, e a roxa é descendente.
Se grau de polinômio = 0, este traço é apenas uma Avareza em Movimento


Estes amortecedores não são redesenhados. A primeira é a interpolação e a segunda é a extrapolação. Você pode ver pelo código, há um valor em cada barra.

 
      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a2_Buffer[i]=  3160*a1_Buffer[i]   -6240   *a1_Buffer[i+1 ]    +  3081*a1_Buffer[i+2 ];
 
Nikolai Semko:


Não era isso que eu queria dizer. Eu não disse que"na interpolação é um 'traçador' e não uma regressão de todo".

Honestamente, eu nem sequer entendo o significado dessa frase.
Eu quis dizer que todos os tipos de interpolação são redesenháveis (e a sua versão também é redesenhável). E não redesenhável é apenas o traçado dessas funções de interpolação, do que as minhas palavras suportaram animação gif - kami. Aconselho a estudá-los mais uma vez. Nestes gifs, o traçado é uma linha azul-púrpura bicolor. Mas não é uma função de interpolação. A cor azul significa que a função de interpolação nesse ponto é ascendente, e a roxa é descendente.
Se grau de polinômio = 0, este traço é apenas uma Avareza em Movimento


mas com o que e como você filmou o vídeo?
(questão eternamente torturante, porque é dolorosamente doloroso para qualquer "não-artista" desenhar um software para o Mercado :-) é mais fácil de escrever )
 

Acrescentei mais linhas de construção redesenháveis: primeiro (vermelho), segundo (cinza) e terceiro (verde) graus.

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a2_Buffer[i]=  2701*a1_Buffer[i]   -5328   *a1_Buffer[i+1 ]    +  2628 *a1_Buffer[i+2 ];

      a4_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a4_Buffer[i+0+z]=  5*a4_Buffer[i+1+z]  -  10*a4_Buffer[i+2+z]   +   10* a4_Buffer[i+3+z]  -  5*a4_Buffer[i+4+z]  +  1*a4_Buffer[i+5+z];  }}

      a3_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a3_Buffer[i+0+z]=  4*a3_Buffer[i+1+z]  -  6*a3_Buffer[i+2+z]   +   4*a3_Buffer[i+3+z]  -  1*a3_Buffer[i+4+z] ;  }}

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]   +   1*a5_Buffer[i+3+z]   ;  }}

      a6_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a6_Buffer[i+0+z]=  2*a6_Buffer[i+1+z]  -  1*a6_Buffer[i+2+z]     ;  }}

//----
   SetIndexShift(2,-72);
   SetIndexShift(5,20);
   SetIndexShift(4,20);
   SetIndexShift(0,20);
   SetIndexShift(1,20);

Já está:

O polinômio de segundo grau (cinza) toca a linha extrapolada no último ponto, como deveria.

Arquivos anexados:
 
Aleksey Panfilov:

Proponho coletar indicadores e especialistas em cálculo de diferenças neste tópico, no código fonte aberto.

Se houver interesse, eventualmente vamos construir ou desenhar algo útil. :)

Eu tentei reescrever o indicador de uma forma mais clara como exemplo:


Compare os calendários Julian e Gregoriano com o Ano Novo Chinês.

 
Vladimir Zubov:

Compare os calendários Juliano e Gregoriano com o Ano Novo Chinês.


Interessante. Porquê? )))

Você está traçando um paralelo com diferença e cálculo diferencial?

Acho que é bastante justificado. )))

 
Yousufkhodja Sultonov:

Já experimentou esta fórmula?

Y = a0 + a1X + a2X^2 + a3X^3 + a4X^4


Tente com esta fórmula:

Y = a0 + a1X + a2X^3 + a3X^5

 
Petr Doroshenko:

Tente usar esta fórmula:

Y = a0 + a1X + a2X^3 + a3X^5

Eu também posso Y = a0 + a1X + a2X^3 + a3X^5 + a4X^7, mas, qual é o objectivo? Como você justifica esta abordagem em particular?

Actualmente a fazer:

X5 = a0 + a1X1 + a2X2 + a3X3 + a4X4

Ou seja, examino a dependência do preço da última barra (X5) dos preços das 4 barras anteriores (X1, X2, X3, X4) e vejo a mudança das relações a0, a1, a2, a3, a4. Aparecem coisas interessantes e em breve comunicarei os resultados.

 
Maxim Kuznetsov:
Como você filmou o vídeo?
(é sempre uma pergunta dolorosa, porque é tão doloroso para qualquer "não-artista" fazer um software para o Mercado :-) é mais fácil de escrever )

O vídeo foi capturado da tela e um arquivo gif foi gerado com Camtasia 9. Há muita informação no youtube.

 
Aleksey Panfilov:

Estes amortecedores não são redesenhados. A primeira interpola as segundas extrapolações. Você pode ver pelo código que há um valor para cada barra.


Sim, eu estava enganado. Pensei que estavas mesmo a usar a aproximação. Dei uma olhada mais de perto no seu código e percebi que não é uma aproximação, mas apenas uma média trivial, embora muito incomum. Depois disso você desloca a linha roxa e a linha vermelha 72 barras para a esquerda e termina desenhando a cauda vermelha de 92 barras, e ela é redesenhada com cada nova barra. A linha azul é formada a partir da linha púrpura deslocada. E a propósito, é mais correcto usar o preço fechado do que o aberto. Se você mudar para fechar, você pode ver imediatamente que a cada tic tac de 92 barras a cauda vermelha salta.

Mudar as médias móveis para a esquerda não tem utilidade e aplicação prática. Serve apenas para a beleza, a forma e o encanto.

Eu preciso entender a diferença entre aproximação e suavização. Ao se aproximar, os coeficientes de uma função (polinomial, Fourier, Bezier, spline, etc.) são calculados sobre um dado intervalo de dados, e esses coeficientes geralmente mudam todos quando pelo menos um valor de dado muda, então a função é redesenhada ao longo de todo o intervalo de dados observados. Mas no caso da média, apenas um ponto atual com base nos dados anteriores é considerado; portanto, a média (suavização) não é redesenhada, mas sempre fica atrás dos dados, ao contrário da aproximação.
E eu não entendo o que polinômio de algum grau e o binômio de Newton tem a ver com isso, se não há graus mesmo no código.

 

Olá, rapazes.

Não, é tudo interessante, claro. Do ponto de vista do emprego. Mas! Vários truques com carregar o resultado e traçar linhas no período passado??? No seu exemplo { (Como)a4_Buffer[i+0+z]= 5*a4_Buffer [i+1+z] e TD. } A que é que isso pode levar? Correcto! Para obter o resultado no último tick e poder usá-lo apenas no gráfico. Sob a forma de uma imagem completamente incrível.