Errores, fallos, preguntas - página 2012

 
A100:

Otro fallo es que la versión de 32 bits (tengo exactamente la misma) no tiene errores de ejecución. puntero inválido - sólo si la clase está aumentada con un miembro, por ejemplo int i

Debes haber probado en MT4, pero la acumulación es menor allí también.

 
Kirill Belousov:

Un error.

El error 4200 no se genera al crear un objeto duplicado en el GRÁFICO NO ACTUAL (que sí da en el actual - [ver "GRÁFICO ACTUAL" en el registro]) ,

además de descubrir que encontrar un objeto en la CARTA RECIENTE lleva hasta 500 veces más tiempo que encontrar el actual.

а :) porque resulta que no soy el único que tiene esto

El objeto no se crea inmediatamente al llamar a la función. Se envía un comando asíncrono al gráfico. Para nuestra propia carta tenemos la oportunidad de realizar una comprobación preliminar. Para la carta de otro no existe esa posibilidad, o mejor dicho, existe, pero es muy cara.

Por lo tanto, el código de retorno "sin errores" indica que se ha encontrado este gráfico tan ajeno y que el comando de creación de objetos se ha colocado con éxito en su cola de ejecución.

 
fxsaber:

Lo habrás probado en MT4, pero la acumulación es menor allí también.

MT5\1653\32\Win10 - mi código llega a la línea //Resultado: false

Si también tiene 32 bits y un puntero no válido - entonces es un error aleatorio

El ServiceDesk escribe que: La función f está vacía y la llamada es recortada por el optimizador, así como la llamada del operador de copia.

Pero si

        void f() { Print( __FUNCTION__ ); }

entonces Resultado:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
esencialmente ningún cambio

 
A100:

Si también tiene 32 bits - entonces algún error aleatorio en absoluto

No, estaba ejecutando Win7x64.

El ServiceDesk dice que: La función f está vacía y la llamada es eliminada por el optimizador, al igual que la llamada al operador de copia del paso 1.

Pero si

entonces nada cambia

Me he encontrado con que los SD responden rápidamente sin comprobarlo. Y para el 90% de las aplicaciones esto es probablemente correcto, ya que la mayoría de las aplicaciones probablemente no se deban a errores, sino a la ignorancia. Por favor, eche un vistazo más de cerca - funciona.

 

Un error en el sitio con enlaces.

Si un mensaje del foro ha sido movido por un moderador a otro hilo, entonces en la búsqueda del perfil "Todos los mensajes" este mensaje está vinculado a la antigua ubicación. Por lo tanto, no se puede navegar hacia ella.

 
A100:

MT5\1653\32\Win10 - Llego a la línea //Resultado: false

Si también tiene 32 bits y un puntero no válido - entonces es un error aleatorio.

El ServiceDesk escribe que: La función f está vacía y la llamada es recortada por el optimizador, así como la llamada del operador de copia.

Pero si

entonces Resultado:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
esencialmente no hay cambios

Añadiré que la función f no se dirige a los campos de los objetos, por lo que no se necesita un puntero de objeto (this) para la función f.
El optimizador elimina la desreferenciación innecesaria del manejador (recuerde, en MQL el manejador es un puntero) al puntero del objeto ya que éste (el puntero) no se utiliza dentro de f

 
Ilyas:

Permítanme añadir, la función f no contiene direccionamiento a los campos del objeto, por lo que no necesita puntero al objeto (esto) para la función f.
El optimizador elimina la desreferenciación innecesaria del handle (recordemos que en MQL el puntero es un handle) al puntero del objeto, ya que éste (el puntero) no se utiliza dentro de f

Claramente, trabajando con f como con estática. Pero, ¿cómo explicar que uno tiene ejecución y el otro está interrumpido?

 
De hecho, al menos esto sería conveniente.
input string Value = _MarketWatch; // Выпадающий список (а-ля enum) символов из Обзора рынка

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

Lista de símbolos ENUM como INPUT

Martin Nohejl, 2017.09.26 13:01

Hola, voy a hacer lo siguiente:

Quiero tener el símbolo como parámetro de entrada, por lo que quiero una variable de entrada (enum) de la que elegiré el símbolo adecuado, así:

Lo he hecho mediante este código:

enum ENUM_SYMBOL
   { 
    EURUSD=0, 
    GPBUSD=1, 
    USDCHF=2
   };

A mí me funciona perfectamente. Pero me gustaría llenar el enum dinámicamente por toda la lista de símbolos (SymbolsTotal(0);).

De alguna manera, probablemente por el código:

int a = SymbolsTotal(0);
for(int i=0; i!=a;i++){
....
}
 
fxsaber:

Claramente, trabajando con f como con estática. Pero, ¿cómo se explica que uno se ejecute y el otro se interrumpa?

Lo más probable es que se inicie la depuración (F5) y que A100 compile (F7) primero y luego los gráficos.

Cuando se compila para la depuración, el optimizador sólo elimina el código explícitamente no utilizado, el resto de optimizaciones no se realizan.
 
Ilyas:
Lo más probable es que inicies la depuración (F5) y que A100 compile primero (F7) y luego lo lance al gráfico.

Cuando se compila para la depuración, el optimizador sólo elimina el código explícitamente no utilizado, el resto de optimizaciones no se realizan.

Tuve en cuenta esta característica de inmediato. Ahora lo he comprobado dos veces.

Versión de lanzamiento:

Test (EURUSD,H1)        invalid pointer access in 'Test.mq5' (9,11)