Canal de regressão linear - página 10

 
Dmitry Fedoseev:

Mostre-me e eu vou desaparecer por um mês. Eu assumirei a responsabilidade por minhas palavras, o que não posso fazer por vocês. E só para acreditar, mesmo depois de uma mentira, sinto muito...

depois do que se mente. Não houve aqui uma única mentira da minha parte.
E o fato de você não acreditar na verdade é seu problema.
Então temos um acordo que se eu quebrar o ciclo de cálculo do BB em cada barra, exceto na primeira, então você desaparecerá do fórum por um mês?
E se eu não falhar, o que devo fazer? Também desaparecer por um mês? Ou por um ano?

 
Nikolai Semko:

Depois do que se mente. Não havia uma mentira de minha parte.
E se você não acredita na verdade, esse é o seu problema.
Ou seja, concordamos que se eu falhar no ciclo de cálculo do BB em cada barra, exceto na primeira, então você desaparecerá do fórum por um mês.
E se eu não falhar, o que devo fazer? Também desaparecer por um mês? Ou por um ano?

Houve uma sugestão para baixar a demonstração e garantir que a largura do canal fosse igual ao sko multiplicado por 1,41.

 
Dmitry Fedoseev:

Qual exatamente?

Eu confio em seu gosto). Não é um julgamento, é claro.
Dê-me seu código de construção de canais. Vou refazê-lo. O ciclo será apenas sobre a história. Todos os próximos valores do canal serão contados sem o ciclo.
 
Nikolai Semko:

...
Então está combinado que se eu sair do ciclo ao calcular o BB em cada barra, exceto na primeira, então você desaparecerá do fórum por um mês?
E se eu não falhar, o que devo fazer? Também desaparecer por um mês? Ou por um ano?

O que isso tem a ver com a quebra do ciclo? E agora não tente inventar condições e depois prove que elas foram cumpridas. Já está claro para todos sobre o que se trata a conversa (ingenuamente espero que sim, mas começo a duvidar).

Eu não preciso de nada. Este algoritmo mágico será suficiente.

 
Yuriy Asaulenko:
Confiando em seu gosto). Não um amostrador, é claro.
Dê-me seu código de construção de canais. Eu vou refazê-lo. O ciclo será apenas sobre a história. Todos os valores de canais subseqüentes serão contados sem o ciclo.

Não, este tipo de bebida está além dos meus gostos.

 
Dmitry Fedoseev:

Não, esse tipo de bebida está além dos meus gostos.

Não se preocupe, você não foi convidado a beber. Eu estarei bebendo).
Haverá então um código de canal SCO?
 
E não é preciso complicar, não é preciso canalizá-lo. Apenas std e ponto final.
 
Yuriy Asaulenko:
Não se preocupe, você não foi convidado a beber. Eu estarei bebendo).
Haverá então um código de canal SCO?

Você não precisa de um canal. Suficiente std para combinar com o exemplo do terminal

 
Dmitry Fedoseev:

Você não precisa de um canal. Apenas o suficiente std para combinar com o exemplo do terminal.

Então, haverá um Hennessy?
Em seguida, link para o exemplo do terminal, por favor.
É melhor colocar o código aqui, como um arquivo, para que ele esteja disponível ao público.
Hennesy é um assunto sério).
 
Yuriy Asaulenko:
Então Hennessy será?
Então, um link para um exemplo do terminal, por favor.

Eu o farei.

O exemplo do terminal é um pouco complicado, eu estou anexando meu indicador. Ele calcula exatamente o mesmo que o exemplo do terminal, o código é escrito claramente.

Aqui está sua função inicial:

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); 
      }
      Label1Buffer[i]=MathSqrt(sm/period);
   }

   return(rates_total);
  }

A tarefa é fazer o mesmo sem o loop interno"for(int j=i-period+1;j<=i;j++){", semelhante a como o MA é calculado nele.

Arquivos anexados:
stdX.mq5  6 kb
Razão: