Errores, fallos, preguntas - página 1985

 
Alexey Kozitsyn:
Sí, por supuesto.
Bueno, si es así y el valor es 0, entonces por supuesto que algo está mal... Puedes ver en la imagen que cada barra tiene una flecha con un valor de 0.
 
Alexey Viktorov:
Si es así y el valor es 0, entonces ciertamente hay algo mal... Puedes ver en la imagen que cada barra tiene una flecha con un valor de 0.
El truco es que empty = EMPTY_VALUE.
 
Alexey Kozitsyn:
El truco es que empty = EMPTY_VALUE.
Empty está vacío, pero a PLOT_EMPTY_VALUE se le asigna un valor que no se mostrará en el gráfico ni en la ventana de datos. Intente cambiar EMPTY_VALUE a 0
PlotIndexSetDouble(plot_index, PLOT_EMPTY_VALUE, 0);
 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

EA no va al mercado. Error 130.

fxsaber, 2017.09.04 17:19

void OnStart()
{
  Print(0.99872);
}

Resultado

0.9987200000000001
(cadena)NormalizarDoble(0,99872, 5) - resultado muy largo.
 
Alexey Viktorov:
Empty está vacío, pero a PLOT_EMPTY_VALUE se le asigna un valor que no se mostrará en el gráfico ni en la ventana de datos. Intente cambiar EMPTY_VALUE a 0
No, todavía hay un choque. Ahora he sustituido EMPTY_VALUE por la constante EMPTY = EMPTY_VALUE. Ahora está mejor. Pero todavía hay basura en el gráfico cuando se cambia el TF. He puesto EMPTY = 0. Es incluso mejor, pero de nuevo, cuando el TF se cambia con frecuencia, el gráfico contiene basura. En general, tengo que escribir una aplicación en el CD.
 
Alexey Kozitsyn:
No, todavía hay un error. Ahora he sustituido EMPTY_VALUE por la constante EMPTY = EMPTY_VALUE en todo el código. Ahora está mejor. Pero todavía hay basura en el gráfico cuando se cambia el TF. He puesto EMPTY = 0. Es incluso mejor, pero de nuevo, cuando el TF se cambia con frecuencia, el gráfico contiene basura. En general, tengo que escribir una aplicación en el CD.

¿Qué fue todo eso? Me refería a algo totalmente distinto. Bueno, en un apuro, en lugar de restablecer el búfer.

ArrayInitialize(массив, 0);

podrías ponerlo en...

ArrayInitialize(массив, EMPTY_VALUE);
 
Alexey Viktorov:

¿Qué fue todo eso? Me refería a algo totalmente distinto. Bueno, en un apuro, en lugar de restablecer el búfer.

puedes poner

Se trata de cambiar todas las inicializaciones del código a la vez. El código que has escrito se inicializa donde lo necesites. ArrayInitialize() se ejecuta en OnDeinit(), pero ya he descrito el resultado más arriba.
 

Alexey Kozitsyn:
...

ArrayInitialize() se ejecuta en OnDeinit(), pero ya he descrito el resultado más arriba.

Prueba con OnInit().
 
Anatoli Kazharski:
Prueba en OnInit().

Hay una inicialización en OnCalculate() en la primera ejecución (prev_calculated == 0). ¿Crees que moverlo a OnInit() cambiará algo? Bueno, lo intentaré, por supuesto, pero esto es algo fuera del reino de la fantasía...

Corta. Como he dicho, en OnDeinit() se inicializan arrays, que dejan de utilizarse en el siguiente arranque (cambiando los parámetros de entrada). Si esto (inicializar un array que no se usa como buffer) ayuda - también sería un bug de MT. Resultará que no sólo no se utilizan las matrices, sino que éstas (no marcadas) pueden seguir siendo inicializadas y afectará a la visualización...

 
fxsaber:
(cadena)NormalizarDoble(0.99872, 5) es un resultado muy largo.

¡Buenas tardes!

Gracias por su mensaje, lo comprobaremos