Errores, fallos, preguntas - página 2045
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
Pero ahí puse la dimensión del array mal, quizás lo afectó de alguna manera (aunque no debería afectarlo en absoluto).
Pruebe esto con dimensión = 3
Descubierta la causa de la discrepancia. Con OPTIMIZE=0 hay un error, pero no con OPTIMIZE=1. Normalmente sólo uso OPTIMIZE=0
Si encuentro una explicación lógica (no contradictoria) para el resultado, no veo el fallo. No creo que sea aceptable probar un error si el resultado no coincide con C++. Está en C++ que alguien pensó así y lo hizo. Pero puede que no lo hayan pensado y por eso no lo hayan hecho. Por eso es mejor no referirse a algo de fuera, sino confiar en tu propio concepto interno de lo que debe ser. Y es deseable que ese "propio" sea realmente propio. No es el resultado de la imposición imperceptible de estereotipos "como debe ser" a medida que se gana experiencia en programación.
Si no tiene su propia explicación, significa que no hay ningún error. Y si esta explicación aparece un año después y es bastante convincente, ¿habrá que rehacer todo? En C++ ya han pensado cien veces por qué se hace así y no así. Y la explicación es necesaria si algo se configura de forma diferente en MQL que en C++ y no al revés.
Pero no una función.
Entonces las instancias de clases estáticas deberían estar prohibidas - porque son inicializadas por una función constructora
Y aquí hay más sobre el tema de la inicialización de variables. Si sigues lo indicado en la documentación, tampoco puedes referenciar otras variables globales/estáticas. Como no es una expresión constante:
Sin embargo, por ahora funciona. Y supongo que mucha gente siempre ha utilizado este tipo de construcciones sin darse cuenta. Pero resulta que los desarrolladores pueden desactivarlo en cualquier momento. Y, como en el caso de la inicialización de funciones, estos códigos seguirán compilando con éxito, pero no funcionarán correctamente. En definitiva, todo el MQL es una bomba de relojería.
Y aquí hay otra cosa relativa a la inicialización de variables. Si sigues lo indicado en la documentación, tampoco puedes referenciar otras variables globales/estáticas. Porque no es una expresión constante:
se inicializa mediante una función constructora - ¡prohibir!
Esto es si se resumen lógicamente los últimos posts
Descubrí la razón de la discrepancia. Con OPTIMIZE=0 hay un error, pero no con OPTIMIZE=1. Yo siempre uso sólo OPTIMIZE=0.
En el terminal de 32 bits se produce un error en cualquier OPTIMIZE
se inicializa mediante una función constructora - ¡prohibir!
Esto es si se resumen lógicamente los últimos posts
Bueno, la persona acaba de expresarlo incorrectamente allí. Por supuesto, estamos hablando de un valor de inicialización, no de una función de inicialización.
Y qué demonios con ellos: prohibiciones. No causan problemas por sí mismos. Pero cuando esta prohibición no está controlada por el compilador de ninguna manera, sino que genera un algoritmo que se salta las reglas del lenguaje, no encaja en absoluto. Ahora tendrás que rebuscar en todo el código en busca de esas cosas y estar constantemente en guardia. Bueno, a la mierda con ese tipo de programación, prefiero quedarme en la vieja construcción.
Ya veo, me disculpo entonces, no me di cuenta enseguida. Me sorprende, por supuesto, cómo se las arreglaron para cambiarlo tranquilamente y no se lo dijeron a nadie. Lo que no entiendo es por qué el compilador no reacciona ante la ejecución de una operación no válida. Es decir, el error está presente en cualquier caso.
Y aquí hay más sobre el tema de la inicialización de variables. Si sigues lo indicado en la documentación, tampoco puedes referenciar otras variables globales/estáticas. Como no es una expresión constante:
Sin embargo, por ahora funciona. Y supongo que mucha gente siempre ha utilizado este tipo de construcciones sin darse cuenta. Pero resulta que los desarrolladores pueden desactivarlo en cualquier momento. Y, como en el caso de la inicialización de funciones, estos códigos seguirán compilando con éxito, pero no funcionarán correctamente. En definitiva, todo el código MQL es una mina que trabaja a cámara lenta.
Bueno... no hay ninguna discrepancia con la descripción de la documentación en este ejemplo... Fíjese bien en la cita de la documentación
o mediante una expresiónconstante
Esta inicialización es posible. Porque la variable 'a' es inicializada por una constante y la variable 'b' es inicializada por una expresión constante.
Entonces hay que prohibir las instancias estáticas de las clases, porque se inicializan mediante la función del constructor
Preste atención a
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
Alexey Viktorov, 2017.10.18 09:19
¿Por qué cree que ha cambiado, por qué es inaceptable? Por favor, utilícelo a su propia discreción. El problema es que cuando una variable estática es inicializada por una función, la inicialización se "pausa" y esa función se ejecuta. Y en el ejemplo anterior, todavía hay una variable estática en esa función que no ha sido inicializada todavía. Por lo tanto, una variable inicializada por una función toma un valor diferente.