Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1898

 
Vitaly Muzichenko #:

¿Por qué primero se registran los datos y luego se desplazan?

  Buffer1[0]=b;
  Buffer2[0]=a;
  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }

Esto no se corresponde con el gráfico de ticks real.

Esta es la forma correcta de hacerlo.

  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }
  Buffer1[0]=b;
  Buffer2[0]=a;
 
Vitaly Muzichenko #:

De nuevo, hay un bucle dentro de ArrayCopy() y probablemente más de uno. Así que el código difícilmente se volverá más sencillo y rápido debido a esta sustitución.

Ya lo he dicho muchas veces arriba: ¡no se puede prescindir de un bucle!

 
Mihail Matkovskij #:

¿Por qué primero se registran los datos y luego se desplazan?

Esto no se corresponde con el gráfico de ticks real.

Esta es la forma correcta de hacerlo.

kasher por supuesto, pero lo mismo).

Sí, y un ciclo corto de hasta 1000 iteraciones con un par de comparaciones de asignación es fácil. así que no debería ser desalentador.

 
EVGENII SHELIPOV #:

Se forma un fractal si no hay un nuevo extremo y después de tres barras esas 0, 1, 2.

Nada ha cambiado.

O algo está mal otra vez

Ejecute el indicador de fractal en D1 y vea si el fractal está allí o no.
 
Valeriy Yastremskiy #:

kasher por supuesto, pero lo mismo).

No es lo mismo. Si primero escribimos un tic y luego desplazamos la matriz, se desplaza 1 compás a la izquierda, junto con el resto de los tics que desplazamos. Pero si desplazamos el array primero y luego escribimos el valor del tick en el índice cero, primero hacemos espacio para el tick y luego lo escribimos allí. Y, como resultado, no se desplaza a ninguna parte.

 
Mihail Matkovskij #:

Ya lo he dicho muchas veces: ¡no se puede prescindir de un ciclo!

Creo que lo estoy entendiendo bien.


Al intentar cambiar los rellenos, me da un error


 
Vitaly Muzichenko #:

Traté de cambiar el relleno, me da un error


Extraño, ¿por qué es así...? Parece que todo debería funcionar, sólo que los ticks estarán en su sitio, no desplazados a la izquierda.

P.D. El array extra debería haberse añadido igualmente (como dije al principio). De lo contrario, cuando aparezca una nueva barra, todos los ticks se desplazarán automáticamente hacia la izquierda, ¡porque son topes indicadores! O podemos seguir el momento en que aparece una nueva barra y desplazar los topes, pero ya hacia la derecha.
 
¿Y si no mueves el array, sino que lo utilizas como un buffer circular, recordando la ubicación actual del primer elemento?
 
Mihail Matkovskij #:

No es lo mismo. Si primero escribimos un tic y luego desplazamos la matriz, se desplaza 1 compás a la izquierda, junto con el resto de los tics que desplazamos. Pero si desplazamos el array primero y luego escribimos el valor del tick en el índice cero, primero hacemos espacio para el tick y luego lo escribimos allí. Y, como resultado, no se ha desplazado a ninguna parte.

Sí, en mi caso deberíamos empezar por el primero, no por el cero). Buen punto.

SZY, aunque sí. primero hay que desplazar y luego asignar nulos. no importa la forma.

SZZY Al sobrescribir el valor de cero antes del desplazamiento, perdemos el valor del índice cero.

 
JRandomTrader buffer circular, recordando la ubicación actual del primer elemento?

Qué es el tampón anular en µl