Errores, fallos, preguntas - página 2296
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
No hay ningún problema... hay un error. Tampoco entiendo por qué te sacas la explicación de la cabeza. La impresión por defecto tiene la siguiente firma:
Y también puede chocar con otras funciones (si es necesario)
La firma de impresión está fuera del alcance del lenguaje MQL5. Si MQL5 prohíbe la sobrecarga de impresión en absoluto, no será un error.
Espero que este "bug" no le impida crear TS y no requiera muletas de escritura.
He medido el rendimiento del probador. Para ello, abrí y cerré una posición en cada tick. He medido el tiempo de ejecución de 100 ticks. Lo pasé por 100 000 ticks. He medido un total de 1000 ticks. Tengo este gráfico
Hay picos de ralentización a distancias casi iguales entre ellos. Lo he medido en el modo de optimización. Si ignoro esos picos, el rendimiento del probador varía un 25% en lugar del valor constante. Tal vez sean los trucos de medición de velocidad de Windows otra vez.
SZZ El mismo código que ejecuté en MT4
Por término medio, MT4 Tester tarda entre 1,5 y 2 veces menos en procesar un tick que MT5.
Posiblemente surja mediante el uso de un algoritmo de optimización genética.
De media, MT4-Tester tarda entre 1,5 y 2 veces menos en procesar un tick que MT5.
Posiblemente surja mediante el uso de un algoritmo de optimización genética.
No GA. Optimización a partir de dos pases en un agente.
Y esto ya es pura manipulación y engaño.
El código fuente está en su sitio.
En un caso una advertencia, en el otro un error
¿Cuál es la diferencia fundamental? En C++, por ejemplo, hay un error en ambos casos
Pido ayuda a los entendidos para entender el tema de los punteros a instancias de clases. No lo entiendo.
Aquí hay un ejemplo de la secuencia de comandos:
Al ejecutarlo tenemos, como era de esperar:
si una instancia de una clase se declara como:
A *a= new A;
entonces en la ejecución tenemos:
es decir, el destructor ni siquiera se inicia y, por tanto, no se libera memoria.
Pero si una instancia de una clase se declara como:
A a= new A;
el constructor se lanza dos veces, el destructor - una vez, pero la memoria no se libera y tenemos el tipo de puntero de objetoPOINTER_AUTOMATIC, aunque estaba destinado a serPOINTER_DYNAMIC
Cómo ejecutar siempre el destructor y ejecutar correctamente el borrado
Как добиться всегда выполнения деструктора и правильного выполнения delete.
Ver desde C++ el tema de los punteros inteligentes y adaptarlo para MQL(https://habr.com/post/140222/).
Quizá haya algo en kodobase...
Ver desde C++ el tema de los punteros inteligentes y adaptarlo para MQL(https://habr.com/post/140222/).
Quizá haya algo en kodobase...
gracias, pero no vi ninguna respuesta a mis preguntas allí.
No entiendo por qué no se llama al destructor cuandoA *a= new A;
Gracias, pero no he visto ninguna respuesta a mis preguntas.
No entiendo por qué no se llama al destructor cuandoA *a= new A;
Resultado:
1:PUNTERO_AUTOMÁTICO
1:PUNTERO_DINÁMICO
2:PUNTERO_DINÁMICO
2:PUNTERO_AUTOMÁTICO
Gracias, pero no he visto ninguna respuesta a mis preguntas.
No entiendo por qué no se llama al destructor cuandoA *a= new A;
Crear con new y borrar con delete