Canal de regressão linear - página 5

 
Dmitry Fedoseev:

Aqui está uma DST acelerada. Mas parece apenas uma DST, não uma DST.

Obrigado! Tentando descobrir o que está sendo calculado na fonte.

 
Dmitry Fedoseev:

1. Para obter esta velocidade, é suficiente limitar os cálculos a uma janela visível. Eu não vejo o milagre.

2. Nem sei o que é melhor, ser enganado ou não ser compreendido.

3. Eu ainda não entendo que x e y não sejam linhas retas?

Pense o que quiser, Thomas, o descrente.

Não me interessa.

y=f(x) é uma linha reta - isso é claro
mas x e y são linhas retas - isso é ....
Eu ficaria surpreso se alguém além de você entendesse isso.

 
fxsaber:

Obrigado pela animação. Infelizmente, eu não sei o que é usado como canal de teste.

Desvio RMS multiplicado por 1,41. Eu dou uma garantia. Se alguém o desmentir (é fácil de fazer se não o for), eu postarei o código.
mais precisamente a raiz do desvio RMS multiplicado pelo coeficiente de largura do canal ( 1,41 neste gif).

 
fxsaber:

Obrigado! Tentando descobrir o que está sendo calculado na fonte.

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   int start;
   if(prev_calculated==0){
      start=period;
      double ms=0;
      for(int i=0;i<period;i++){
         ms+=close[i];
      }
      ma[period-1]=ms/period;
   }
   else{
      start=prev_calculated-1;
   }

   for(int i=start;i<rates_total;i++){
      
      ma[i]=ma[i-1]+(-close[i-period]+close[i])/period;
      
      double sm=0;
      for(int j=i-period+1;j<=i;j++){
         sm+=MathPow(close[j]-ma[i],2); // вот это правильная стд, ее не ускорить, а если ma[i] заменить на ma[j], то можно ускорить, что и сделано
      }
      Label1Buffer[i]=MathSqrt(sm/period);
   }

   return(rates_total);
  }
 
Nikolai Semko:

Desvio RMS multiplicado por 1,41. Eu o garanto. Se alguém o refutar (é fácil de fazer se não for), eu postarei o código.
Mais precisamente, a raiz do desvio RMS multiplicado pelo coeficiente de largura do canal ( 1,41 neste gif).

Tomou o canal de objeto padrão, e está dando algumas larguras erradas.


 
Dmitry Fedoseev:

Tive a idéia, obrigado! Agora temos que analisar como este método de cálculo de largura afetará o resultado.

 
Nikolai Semko:

Desvio padrão multiplicado por 1,41. Eu o garanto. Se alguém o desmentir (fácil de fazer se não o fizer), eu postarei o código.
mais precisamente a raiz do desvio RMS multiplicado pelo fator de largura do canal ( 1,41 neste gif).

"Mais precisamente a raiz do RMS" - ou seja, o indicador std? Muito simples e sem nenhum truque - a largura do canal deve ser igual ao valor do indicador std multiplicado por 1,41?

Eu não vejo as coisas dessa maneira. Parece mais com o meu cálculo errado de std.

Dê-me um algoritmo exato passo a passo sobre como verificar e ter certeza. Até agora, mesmo esta, uma forma pouco convincente de prová-lo, não funciona.

 

Eu não entendo. O meio do LR é suposto ser o mesmo que o MA. Na MT5 não há tal coincidência, mesmo com a LR padrão.

E o indicador testado também não coincide com o MA.

 
fxsaber:

Eu não entendo. O meio do LR é suposto ser o mesmo que o MA. Na MT5 não há tal coincidência, mesmo com a LR padrão.

E o indicador testado também não coincide com o MA.

Não deve coincidir com um MA padrão.

 
Dmitry Fedoseev:

Não deve coincidir com o MA normal.

O ponto que está exatamente no meio do segmento da LR é a média dos pontos originais. Isto decorre da definição de LR.

Razão: