Errores, fallos, preguntas - página 2297
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
Gracias, pero no vi ninguna respuesta a mis preguntas allí.
No entiendo por qué no se llama al destructor cuandoA *a= new A;
https://www.mql5.com/ru/docs/basis/variables/object_live
Todos los objetos creados por la expresión puntero_objeto=nuevoNombre_clase deben ser destruidos posteriormente por el operador delete(puntero_objeto). Si, por alguna razón, esta variable no fue destruidapor el operador de borrado, el mensaje sobre ella aparecerá en el diario "Expertos". Es posible declarar varias variables y asignarlas todas al mismo puntero de objeto.
Pido a MQL que compruebe la función OnTimer().
Por alguna razón no funciona en el probador de estrategias para MT4 (no hay errores, simplemente no se ejecuta nada dentro de esta función), mientras que en línea está bien.
Para MT5 la función funciona tanto en el probador como en línea.
Gracias.
En OnInit sólo se comparan dos números, y se tarda más tiempo en una pasada incorrecta que en una pasada completa. ¿Por qué?
Vamos a ejecutar este Asesor Experto en la optimización completa
Obtenemos el resultado del trabajo de 8 Agentes
Aquí está nuestro Asesor Experto ahora
Por fin, como éste
Dos salidas
En cuanto al segundo punto, está claro que hay algún tipo de error. Es más beneficioso en términos de tiempo realizar una ejecución en vacío, en lugar de salir de OnInit. Por favor, corríjalo porque las ventajas de Incorrect-Init y ExpertRemove se perderán casi por completo.
La pestaña de favoritos con EAs/indicadores/scripts y cuentas sólo se recuerda después de salir del terminal. Por ello, una salida anormal (apagado) reinicia esta pestaña. ¿Es posible guardarlo al cambiarlo?
A veces se entiende claramente que sería muy práctico que se pudieran añadir carpetas a los favoritos.
Entonces inténtalo así:
Resultado:
1:PUNTERO_AUTOMÁTICO
1:PUNTERO_DINÁMICO
2:PUNTERO_DINÁMICO
2:PUNTERO_AUTOMÁTICO
Gracias. Toda una solución.
Pero probablemente sea mejor que el compilador no diga palabrotas:
¿Es un error o qué?
Cuando se crea una instancia de una clase mediante new , no se llama al destructor.
¿Es la única solución crear una clase especial para llamar al destructor? ¿O podemos prescindir de ella?
Crear con new y borrar con delete
La cuestión es poner delete en un destructor, pero al crear una instancia de una clase mediante new (A *a=newA ;) no se llama al destructor.
¿Es posible, y si es así, cómo, derivar en cualquier indicador ZigZag los valores correspondientes de los extremos del precio Alto y Bajo,
asegurando su unión estable y su proximidad a las partes superiores e inferiores formadas?
Ver ejemplo deOBJ_TEXT
https://www.mql5.com/ru/docs/basis/variables/object_live
Gracias.
Eso es exactamente lo que dice aquí.
Así que no es un error, es una característica que resulta en un círculo vicioso.
Si quiero automatizar el proceso de borrado de un objeto dinámico, el destructor es llamado sólo en el momento del borrado, por lo que es inútil poner el borrado en el propio destructor.
Pero la automatización puede ser implementada a través de otra instancia de otra clase, como @A100 sugirióaquí.
Gracias por el consejo. Ya estoy agotado de leer y probar y probar y leer. Me gustaría ver un ejemplo de funcionamiento del ZigZag...
¡Como en mi avatar con un zigzag, pero con un atado de extremos superiores DERECHO, porque el atado de extremos inferiores está bien!
La forma de vinculación con k=(WindowPriceMax()-WindowPriceMin())/30 no funciona cuando el tamaño de la ventana cambia mucho, me gustaría otra cosa...
En el ejemplo deOBJ_TEXT, tanto la parte superior como la inferior se unen. Siga el enlace, ejecute el ejemplo...
Así que no es un error, sino una característica, lo que resulta en un círculo vicioso.
Ya se le ha dicho antes que la forma de resolver el control de los recursos asignados no manejables es utilizar punteros inteligentes. La analogía completa con C++.
Quizás el problema es que la solución no se presentó en bandeja de plata, lo siento.
Todo el mundo puede escribir "shared_ptr" en la búsqueda del sitio y seguir el primer resultado, no es difícil, recomiendo encarecidamente probarlo.