Errores, fallos, preguntas - página 1395

 
Anatoli Kazharski:

Pruébalo así:

No importa cuál sea el valor vacío allí, o si hay algún valor aleatorio al principio del gráfico. Lo importante es que hay valores de 0 a -5 en el buffer2 que no se muestran en el gráfico porque es DRAW_NONE y el valor mínimo de la escala es 0.

MT4 en esta situación escaló correctamente el gráfico desde 0 hasta el valor máximo del buffer en la ventana mientras que MT5 escala desde el mínimo (-5, no 0) hasta el máximo como 0.0605 y añade algo así como un 10% desde arriba que rompe la escala completamente.

 
Ilya Malev:

No importa cuál sea el valor vacío o si quedan valores aleatorios al principio del gráfico. Lo importante es que hay valores de 0 a -5 en el buffer1 que no se muestran en el gráfico ya que es DRAW_NONE y el valor mínimo de la escala es 0.

MT4 en esta situación escaló correctamente el gráfico desde 0 hasta el valor máximo del buffer en la ventana mientras que MT5 escala desde el mínimo (-5, no 0) hasta el máximo como 0.0605 y añade algo así como un 10% desde arriba que rompe la escala completamente.

En absoluto. Un valor vacío no es cero. Podría ser cualquier cosa y cualquier persona.
 
Ilya Malev:

No importa cuál sea el valor vacío o si queda algún valor aleatorio al principio del gráfico. Lo importante es que hay valores de 0 a -5 en el buffer2 que no se muestran en el gráfico ya que es DRAW_NONE y el valor mínimo de la escala es 0.

MT4 en esta situación escaló correctamente el gráfico desde 0 hasta el valor máximo del buffer en la ventana mientras que MT5 escala desde el mínimo (-5, no 0) hasta el máximo como 0.0605 y añade algo así como un 10% desde arriba que rompe la escala completamente.

Por cierto, ¿por qué escalar el gráfico por los valores del buffer que no se muestran?
 
Karputov Vladimir:
En absoluto. Un valor vacío no es cero. Podría ser cualquier cosa y cualquier persona.

Prueba a cambiar la línea por"buffer2[i]=-MathRand()%5*Punto(); " Y verás cómo cambia la escala en el ejemplo. Esto demuestra que, en este caso, rellenar los primeros elementos del historial no tiene ningún efecto sobre el escalado. Porque si se multiplica por Punto, se alinea.

 
Anatoli Kazharski:
Por cierto, ¿por qué debemos escalar el gráfico por los valores del buffer que no se muestra?

¡Buena pregunta! Eso es exactamente lo que estaba preguntando. ¿Por qué iba a hacer MT ese escalado si el buffer está declarado como DRAW_NONE

También lo era en MT4, pero sólo si los valores de dicho buffer estaban dentro del rango de visualización limitado por indicator_maximum y minimim. Y en MT5 los valores fuera de los límites se incluyen en la fórmula de la escala.

 
Ilya Malev:

Prueba a cambiar la línea por"buffer2[i]=-MathRand()%5*Punto();" y verás cómo cambia la escala en este ejemplo. Esto demuestra que, en este caso, rellenar los primeros elementos del historial no tiene ningún efecto sobre el escalado. Porque si se multiplica por Punto, se alinea.

Tu ejemplo está torcido y no quieres arreglarlo. Lo comprobaré cuando lo corrija.
 
Ilya Malev:
¡Buena pregunta! Eso es exactamente lo que estaba preguntando.

Está en tu código, ¿no?

buffer2[i]=-MathRand()%5;

Lo que dice es lo que se obtiene. Qué sentido tiene hacer esto para un buffer que no se visualiza. Eso es lo que estaba preguntando. ))

 
Anatoli Kazharski:

Lo que está escrito es lo que obtenemos. Qué sentido tiene hacer esto para un buffer que no se visualiza. Eso es lo que estaba preguntando. ))

Sí, así que cuando el terminal lo hace, está bien (escala por valores con DRAW_NONE y es incluso más bajo que el umbral de visualización de indicator_minimum - al menos en MT4 era adecuado), pero cuando un usuario establece sus propios valores arbitrarios en el buffer sin visualización (DRAW_NONE), no está bien (como guardar y no dejar, ¿a quién le importa por qué el usuario lo necesita?).

La razón es trivial: estos atributos muestran importantes atributos numéricos de las barras en el gráfico, que el operador necesita para el análisis. Es decir, son utilizados por el trader y utilizados por los Asesores Expertos.

 
Ilya Malev:

Sí, es decir, cuando el terminal lo hace, está bien (escalar por valores con DRAW_NONE, e incluso menos que indicator_minimum - al menos era adecuado en MT4), pero cuando un usuario establece sus valores arbitrarios en el buffer sin mostrarlos (DRAW_NONE), no está bien (como mantener y retener, a quién le importa, ¿para qué lo necesita el usuario?)

La razón es trivial: estos atributos muestran importantes atributos numéricos de las barras en la ventana de datos, que el operador necesita para el análisis.

Bueno, yo no he dicho nada de normal o anormal. Sólo me preguntaba por qué hacerlo. )

Creo que los búferes que no se muestran (DRAW_NONE) no deberían participar en el cálculo de la escala.

Podrías intentar reportar este error a servicedesk y esperar una respuesta allí.

 
Anatoli Kazharski:

Bueno, no estaba hablando de normal o anormal. Sólo me preguntaba por qué harías algo así. )

Creo que los búferes que no se muestran (DRAW_NONE) no deberían participar en el cálculo de la escala.

En el ejemplo hice MathRand sólo para demostrar cómo funciona la escala. En el original tenía el cálculo de los niveles numéricos allí utilizando la metodología de algún autor de comercio. Al principio, queríamos hacerlos de 1 a 5, pero incluso MT4 no logró la escala adecuada incluso con tales valores en el buffer con DRAW_NONE. Después de hacerlas negativas y fijar el mínimo en 0, el problema estaba resuelto. Al portar el indicador a MT5 parecía que esta solución tampoco funcionaría. Tuve que multiplicar por Punto como dijo Voldemar.
Razón de la queja: