Canal de regresión lineal - página 10

 
Dmitry Fedoseev:

Muéstrame y desapareceré durante un mes. Me haré responsable de mis palabras, cosa que no puedo hacer por ti. Y sólo para creerlo, incluso después de una mentira, lo siento...

después de lo que una mentira. Aquí no ha habido ni una sola mentira por mi parte.
Y el hecho de que no te creas la verdad es tu problema.
¿Así que tenemos un acuerdo de que si rompo el ciclo en el cálculo de la BB en cada barra excepto la primera, entonces desaparecerás del foro durante un mes?
Y si no fallo, ¿qué debo hacer? ¿También desaparecer durante un mes? ¿O durante un año?

 
Nikolai Semko:

Después de lo que una mentira. No hubo una sola mentira por mi parte.
Y si no te crees la verdad, es tu problema.
Es decir, acordamos que si fallo el ciclo en el cálculo del BB en todas las barras excepto en la primera, entonces desaparecerás del foro durante un mes.
Y si no fallo, ¿qué se supone que debo hacer? ¿También desaparecer durante un mes? ¿O durante un año?

Había una sugerencia de descargar la demo y asegurarse de que el ancho del canal es igual a sko multiplicado por 1,41. Lo descargué, lo comprobé y resultó que no era así.

 
Dmitry Fedoseev:

¿Cuál es exactamente?

Confío en su gusto). No es un juicio, por supuesto.
Dame tu código de construcción de canales. Lo volveré a hacer. El ciclo será sólo en la historia. Todos los valores siguientes del canal se contarán sin el ciclo.
 
Nikolai Semko:

...
¿Así que se acuerda que si me salgo del ciclo al calcular el BB en cada barra excepto la primera, entonces desaparecerás del foro durante un mes?
Y si no fallo, ¿qué debo hacer? ¿También desaparecer durante un mes? ¿O durante un año?

¿Qué tiene esto que ver con la ruptura del ciclo? Y ahora no intentes inventarte condiciones y luego demostrar que se han cumplido. Ya está claro para todo el mundo de qué va la conversación (ingenuamente lo espero, pero empiezo a dudarlo).

No necesito nada. Este algoritmo mágico será suficiente.

 
Yuriy Asaulenko:
Dependiendo de su gusto). No es un muestrario, por supuesto.
Dame tu código de construcción de canales. Lo volveré a hacer. El ciclo será sólo en la historia. Todos los valores posteriores del canal se contarán sin el ciclo.

No, este tipo de bebida está más allá de mis gustos.

 
Dmitry Fedoseev:

No, ese tipo de bebida está más allá de mis gustos.

No te preocupes, no te han invitado a beber. Voy a beber).
¿Habrá un código de canal SCO?
 
Y no hay que complicarlo, no hay que canalizarlo. Sólo std y eso es todo.
 
Yuriy Asaulenko:
No te preocupes, no te han invitado a beber. Voy a beber).
¿Habrá un código de canal SCO?

No necesitas un canal. Suficiente std para que coincida con el ejemplo de la terminal

 
Dmitry Fedoseev:

No necesitas un canal. Sólo lo suficiente para que coincida con el ejemplo de la terminal.

Entonces, ¿habrá un Hennessy?
Entonces, enlaza con el ejemplo desde el terminal, por favor.
Es mejor poner el código aquí, como un archivo, para que esté disponible públicamente.
Hennesy es un asunto serio).
 
Yuriy Asaulenko:
¿Así que Hennessy será?
Entonces, un enlace a un ejemplo de la terminal por favor.

Lo haré.

El ejemplo del terminal es un poco complicado, adjunto mi indicador. Calcula exactamente lo mismo que el ejemplo del terminal, el código está escrito claramente.

Aquí está su función de inicio:

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);
  }

Se trata de hacer lo mismo sin bucle interno"for(int j=i-period+1;j<=i;j++){", de forma similar a como se calcula la MA en él.

Archivos adjuntos:
stdX.mq5  6 kb