Cambiar el TF es un problema - página 7

 
Vasyl Nosal:

Genialidad.

¿Has probado a cambiar a un par sin historial y luego a otro TF?

Sí, admito mi error. El código muestra qué hacer si Close[i] > Close[i+1] y qué hacer si Close[i] < Close[i+1]. Pero no especifica qué hacer si Close[i] == Close[i+1]. Estas son las barras en las que estas flechas individuales están cayendo.

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 nStartBar = rates_total - MathMax(prev_calculated, 2);

   for(int i = nStartBar; i >= 0; i--)
   {
      if(Close[i] >= Close[i+1])
      {
         up_arr[i] = Low[i] - arrow_indent * _Point; //up arrow
         down_arr[i] = 0;
      }
         
      if(Close[i] < Close[i+1])
      {
         up_arr[i] = 0;
         down_arr[i] = High[i] + arrow_indent * _Point; //down arrow
      }
   }

   return(rates_total);
}
 
Karputov Vladimir:

Hagamos esto: toma el código 1.43 de este post y comenta las líneas:

y mira el resultado al desplazar el gráfico hacia el fondo de la historia y asegurarte de que la historia está cargada.

Bueno, lo hice. Sin embargo, se da cuenta de la inutilidad de esta acción. :) El resultado es el esperado: el indicador funciona sin problemas.
 
Vasyl Nosal:

Genialidad.

¿Has probado a cambiar a un par sin historial y luego a otro TF?

¿Qué quiere decir con "sin historia"?
 
Sergei Vladimirov:

Ajá, admito un error. El código especifica qué hacer si Close[i] > Close[i+1], y qué hacer si Close[i] < Close[i+1]. Pero no especifica qué hacer si Close[i] == Close[i+1]. Estas son las barras en las que estas flechas individuales están cayendo.

Eso es bueno.
 
Alexey Viktorov:
¿Qué quiere decir "donde no hay historia"?
Cuando el gráfico de un par de divisas no se ha abierto o se ha abierto durante mucho tiempo.
 
Sergei Vladimirov:

¿QUÉ ES ESTO?


Es para que no haya salidas, si es que las hay.
 
Vasyl Nosal:
Es para que no haya salidas, si es que las hay.
¿Quiénes son? ))
 
Sergei Vladimirov:
¿Quiénes son? ))
Matriz fuera de rango
 
Vasyl Nosal:
Matriz fuera de rango
¿Por qué necesita un margen tan grande, de hasta 20 barras? ¿Es a ojo? )) En el caso general, no se puede ir más allá de [rates_total-1], y en este código - más allá de [rates_total-2] porque la barra anterior se llama en el cuerpo del bucle. Por lo tanto, tenemos que empezar el cálculo desde la barra [rates_total-2].
 
Sergei Vladimirov:
¿Y por qué tomar un margen tan grande, 20 barras? ¿Es a ojo? )) En el caso general, no podemos ir más allá de [rates_total-1], y en este código - más allá de [rates_total-2] porque la barra anterior es llamada en el cuerpo del bucle. Por lo tanto, tenemos que empezar el cálculo desde la barra [rates_total-2].

Lo entiendo. Lo siguiente será saber cuántas barras totales contar y cuántas recalcular.

Alguien entrará en más bares de los que hay. Será una salida.

Sí, a ojo.

Razón de la queja: