Errores, fallos, preguntas - página 3039

 
Nikolai Semko:
Una pequeña pista - puedes cerrar todos los gráficos menos los necesarios, entonces el consumo será más o menos el mismo que si tu muleta hubiera sido implementada.
 
Andrei Trukhanovich:
una pequeña pista - puedes cerrar todos los gráficos excepto el que necesitas, entonces el consumo será más o menos el mismo que si tu muleta hubiera sido implementada.

lógica anticuada

Lo tengoen VPS, pero lo siento. No quiero estar limitado por nada.
 
Igor Makanu:

Si ahora hablamos de consumo de memoria, recuerdo que hace un par de meses@fxsaber tenía el mismo problema, pero al cargar ticks - después de liberar arrays con ticks, el terminal no libera memoria, sino que almacena (¿durante 10 segundos?) estos ticks como caché

Es muy probable que su solicitud tenga el mismo problema: el consumo de memoria no disminuirá, sino que, por el contrario, aumentará (a raudales)

No entiendo por qué.
Sé cómo utilizar la función ArrayFree.
Especialmente, usaré la función que pido sólo una vez. Pero al mismo tiempo no necesito encender Unlimited.
Toda la historia de una herramienta cabe en unos 80-100 MB (tanto en la RAM como en el disco). Ahora tiene unos 500 Mb en el disco.
Enciendo el terminal y cargo la matriz de estructuras del archivo en la memoria y trabajo en paz. No hay picos en absoluto.
Yo utilizaría una estructura de datos normal. Al diablo con tener mucho espacio. Pero necesito tiempo para el Alto y el Bajo.
Ya utilizo al máximo los ticks para conformar mi estructura de datos, pero no tienen toda la profundidad de la historia y suelen tener desajustes con las barras de minutos. Tengo garrapatas y no tengo barras, o tengo barras y no tengo garrapatas.


 
Nikolai Semko:

bien para dispararse en el pie - hay innumerables opciones como es.
Sólo estableciendo max_bars =Unlimited, el consumo de memoria aumenta dramáticamente.
Aquí está un ejemplo de la terminal con max_bars = 5000

Ahora cambia max_bars = Unlimited y vuelve a cargar el terminal.

Con las mismas ventanas abiertas, el consumo de memoria ha aumentado en más de GB. ¡¡¡¡En mi caso 11 veces mayor !!!!
Esto es normal ))
Puedes comprobarlo tú mismo.
max_bars = Unlimited es un lujo muy duro.
Si

mi petición fuera atendida, nunca se podría utilizarmax_bars = Unlimited.
Y además de ahorrar memoria en la RAM, también reduciría mucho esta carpeta, que ahora tengo unos 31GB. Creo que unas 5 veces más. Y serían 6GB en lugar de 30GB.

Así que estás sugiriendo que todo el mundo sea ilimitado.

Si un programa tiene acceso a todos los bares, entonces todos lo tienen.

¿Por qué los gráficos deben mostrar mil barras si el indicador tiene acceso a un millón?


Otra cuestión es habilitar el acceso al formato hcc y a la carpeta con los archivos del historial. Pero allí tampoco todo es sencillo: cachés, reinicio económico, comprobación de la corrección, algo más...

 

2940

Tenía el código del indicador: todo funcionaba bien en el gráfico y en el probador.

He creado una nueva versión del indicador con los cambios realizados: funciona bien en el gráfico, pero no en el probador (no dibuja nada, aunque en la ventana de datos aparecen los buffers y están vacíos).

Estuve varias horas para entenderlo, retrocedí la versión anterior del código, nada sirvió, sólo la actualización en el navegador de la terminal sirvió y el nuevo código funciona también en el probador, no sólo en el gráfico.

Creo que algo está roto en la actualización automática de los compiladores que ve el probador, no veo otra razón.

 
Nikolai Semko:

Yo utilizaría la estructura de datos normal. A la mierda, hay mucho espacio. Pero necesito tiempo para el Alto y el Bajo.
Ya utilizo los ticks al máximo para dar forma a mi estructura de datos, pero no tienen toda la profundidad de la historia y tienden a no estar sincronizados con las barras de minutos. Tengo ticks y no barras, y luego tengo barras y no ticks.

Si hubiera garrapatas durante 20 años, ¿las usarías? ¿No puedo preguntar por qué? )

Bueno, está bien, puedes establecer una estrategia de autoadaptación súper inteligente, y por interés ejecutarla una vez en un historial de ticks de 20 años. Por interés. Una vez.

Pero no para el trabajo, no como algo habitual.


Y si el tiempo está mal, ¿por qué crees en las barras? Eso es una tontería.

 
Andrey Khatimlianskii:

Así que estás sugiriendo que todo el mundo se convierta en ilimitado.

Si un programa tiene acceso a todos los bares, entonces todos lo tienen.

¿Por qué los gráficos deben mostrar mil barras si el indicador tiene acceso a un millón?


Otra cuestión es habilitar el acceso al formato hcc y a la carpeta con los archivos del historial. Pero no todo es sencillo allí - cachés, reinicio económico, comprobación de la corrección, algo más...

No es necesario acceder al formato hcc ni a la carpeta con los archivos del historial. En primer lugar, MQ nunca se decantará por eso, y en segundo lugar, no es necesario. Con obtener la matriz M1 de estos archivos será suficiente.

Esa es la cuestión, quiero ser capaz de no habilitar nuncaUnlimited. Porque esa inclusión comienza a bombear datos para todos los instrumentos. Pero no las necesito todas, sólo una en cada momento. ¿Por qué querría sobrecargar el sistema descargando cientos de Mb adicionales de datos históricos sin ningún control?

 
Andrey Khatimlianskii:

¿Habría habido tics en 20 años, los habrías utilizado? ¿Puedo no estar interesado - por qué? )

Bueno, está bien, podrías establecer una estrategia de autoadaptación súper inteligente, y por interés ejecutarla una vez en un historial de ticks de 20 años. Por interés. Una vez.

Pero no para el trabajo, no como algo habitual.


Y si el tiempo está mal, ¿por qué crees en las barras? Eso no tiene ningún sentido.

No se trata de una estrategia, sino de la correcta visualización de un marco temporal dinámico, mucho más intuitivo y cómodo que el arcaico sistema de marcos temporales existente.
También por la posibilidad de realizar pruebas internas "sobre la marcha".
Aunque también puede afectar a cierta precisión en las estrategias en sentido positivo.

Bueno, aquí tenemos al menos un pequeño ejemplo:
¿Cómo construir un ZigZag regular, cuando no se sabe qué evento ocurrió primero, Alto o Bajo?




o



si estás tratando de averiguarlo para barras diarias, no hay garantía de que con max_bars = 50.000, puedas cargar timeframes inferiores para un tiempo de barra determinado, y también ticks.

 
Error durante la ejecución:
void OnStart()
{
    uchar  array[];
    const string text = "All Files\0*.*\0\0";
    const int start = 0, count = StringLen( text );
    Print( StringToCharArray( text, array, start, count ), ":", count );
}

Resultado: 10:15

Esperado 15:15

Quería utilizar el resultado en la función WinAPI GetSaveFileNameA, pero no puedo por un error


 
A100:

A las cadenas de mql no les gustan los caracteres nulos dentro de una cadena y en los literales, también en las funciones.

La única forma normal es convertir tres cadenas en una matriz con un cero final.

Es decir, este comportamiento, tal y como es ahora, se hizo intencionadamente hace unos años. No sé por qué.