Errores, fallos, preguntas - página 1667

 
He encontrado un número de teléfono antiguo en mi perfil que ya no existe, quería cambiarlo, pero necesita una confirmación por sms al número antiguo, ¿qué debo hacer?
 
BlackTomcat:
Por supuesto, no entiendo mucho, pero creo que, por alguna razón, las copias de los indicadores creados por diferentes "maestros", incluso con los mismos parámetros y aplicados a un mismo gráfico, tendrán diferentes asas. En principio, no conocen la copia ya existente del indicador, y no deberían hacerlo. Al dibujar, simplemente se superpondrán entre sí.
Puede que me equivoque. Pero la lógica sugiere que debe ser así, como se ha escrito en el párrafo anterior.

Ciertamente no soy un desarrollador de MQ, pero por lo que me han explicado de este proceso, Five ha hecho un efectivo caché de índices, por lo que siempre habrá un solo "mismo" guión, y varios "hosts" obtendrán un enlace a él. Quizá las asas sean diferentes -no lo he comprobado- pero por dentro será la misma entidad. Nadie ha dicho nada de que "deberían conocer la copia que ya existe", por favor, no especulen. Absolutamente, nadie más que el "anfitrión" conoce sus indicadores, y para un indicador se mantiene un recuento de referencias para él de diferentes "anfitriones", pero no conoce a los anfitriones.

Como muestra la práctica, la lógica varía de una persona a otra. Por ejemplo, muy a menudo mi lógica no coincide con la de MQ, pero aquí sólo cuento lo que he oído de ellos.

 
Stanislav Korotky:

Ciertamente no soy un desarrollador de MQ, pero por lo que me han explicado de este proceso, Five ha hecho un efectivo caché de índices, por lo que siempre habrá un solo "mismo" guión, y varios "hosts" obtendrán un enlace a él. Tal vez las asas sean diferentes -no lo he comprobado- pero por dentro será la misma entidad. Nadie ha dicho nada de que "deberían conocer la copia que ya existe", por favor, no especulen. Exactamente, nadie más que el "anfitrión" conoce sus indicadores, y para un indicador se mantiene un contador de referencia a él de diferentes "anfitriones", pero no conoce a los anfitriones.

Como muestra la práctica, la lógica varía de una persona a otra. Por ejemplo, muchas veces mi lógica no coincide con la de MQ, pero aquí sólo cuento lo que he escuchado de ellos.

Efectivamente, lo que has escrito está escrito directamente en la Documentación:

Todas las funciones como iMA, iAC, iMACD, iIchimoku, etc., crean una copia del indicador técnico correspondiente en la caché global del terminal cliente. Si ya existe una copia del indicador con estos parámetros, no se crea una nueva copia, sino que se incrementa el contador de referencias a esta copia.
Lo único que me pregunto es si la "caché global del terminal del cliente" incluye, por ejemplo, el Probador. Porque puedo ejecutar un mismo Asesor Experto con los mismos indicadores en el terminal (en la cuenta) y en el Probador de Estrategias (en el historial) al mismo tiempo, y no estoy seguro de que sus buffers de cálculo sean idénticos. Aunque, si se calcula la profundidad del historial almacenado en el terminal del cliente, pueden hacerlo.
 
A100:

He conseguido hacer un script de prueba cercano al programa fuente con un error durante la ejecución

Resultado: llamada al puntero de función no válida en 'Script2.mq5'.

construir 1405. El error en sí se mantiene - trasladado a otra parte del programa - me ocuparé de él más tarde

Pero han aparecido otras nuevas que no estaban antes

typedef int (*fn)();
class A {
public:
        A() { a = &this; ::ArrayResize( f, 1 ); f[ 0 ] = f0; }
        virtual int g0() { return 0; }
        static  int f0() { return a.g0(); }
        static A* a;
        fn f[];
};
A* A::a;
void OnStart() { A b; }
Resultado: archivo EX5 no válido (8)
 
¿Cómo puedo hacer que los elementos de la matriz Shift+F9 sean visibles en la depuración?
 
fxsaber:
¿Cómo puedo hacer que los elementos de la matriz Shift+F9 sean visibles en la depuración?
Todavía no se puede mostrar los elementos de la matriz
 
Renat Fatkhullin:

De hecho, el 99% de las veces llamar a IndicatorRelease es un error lógico del programador.

La creación de indicadores es una de las operaciones más costosas que ponen en marcha mecanismos muy profundos de su cálculo. Tratar de cerrar una manija de indicador es también una operación muy costosa, si se piensa en los procesos reales subyacentes de su implementación. La frecuente creación y cierre de indicadores demuestra que el desarrollador no entiende en absoluto la esencia de las operaciones.

Es muy fácil de entender.

¿Entiendo correctamente que al utilizar iCustom en lugar de IndicatorCreate, el usuario traslada la responsabilidad de IndicatorRelease a la solución universal (por tanto, no óptima) de los desarrolladores?

En el que los indicadores creados se almacenan durante algún tiempo, mientras que son llamados con una determinada frecuencia. Si no se llaman durante algún tiempo, entonces se produce una liberación forzada del indicador. ¿Verdad?

Es decir, iCustom debe utilizarse de forma óptima, teniendo en cuenta la media de oro entre la complejidad de la implementación y el rendimiento. Pero si quieres la máxima velocidad, es mejor que intentes hacerlo todo a través de IndicatorCreate, creando tu propio algoritmo más rápido (no universal) de indicadores, conociendo las peculiaridades de su uso.

¿Lo he entendido bien?

 
fxsaber:

¿He entendido bien que al utilizar iCustom en lugar de IndicatorCreate, el usuario traslada la responsabilidad de IndicatorRelease a la solución universal (por tanto, no óptima) de los desarrolladores?

En el que los indicadores creados se almacenan durante algún tiempo, mientras que son llamados con una determinada frecuencia. Si no se llaman durante algún tiempo, entonces se produce una liberación forzada del indicador. ¿Verdad?

Es decir, iCustom debe utilizarse de forma óptima, teniendo en cuenta la media de oro entre la complejidad de la implementación y el rendimiento. Pero si quieres la máxima velocidad, es mejor que intentes hacerlo todo a través de IndicatorCreate, creando tu propio algoritmo más rápido (no universal) de indicadores, conociendo las particularidades de tu propio uso de indicadores.

¿Lo he entendido bien?

No, no lo eres.

Las dos funciones son absolutamente iguales. Ambas funciones devuelven el asa del indicador

 
Slawa:

No, mal.

Ambas funciones son absolutamente iguales. Ambas funciones devuelven el asa del indicador

¿IndicatorRelease debe hacerse después de iCustom?

Básicamente resulta que es bastante posible ejecutar EAs de MT4 en MT5. Para los que no utilizan otros indicadores internamente - muy fácil. Los que los usan - crean un análogo del almacenamiento MT4-iCustom. La cuestión de la falta de preparación de los datos también es muy posible.

Escriba un adaptador de este tipo y cualquier indicador de MT4 se ejecutará con éxito en MT5. Pero en este caso Nikolay Kositsyn perderá su trabajo... No, mejor no.

 
fxsaber:

¿IndicatorRelease debe hacerse después de iCustom?

Básicamente resulta que es bastante posible ejecutar EAs de MT4 en MT5. Para los que no utilizan otros indicadores internamente - muy fácil. Los que los usan - crean un análogo del almacenamiento MT4-iCustom. La cuestión de la falta de preparación de los datos también es muy posible.

Escriba un adaptador de este tipo y cualquier indicador de MT4 se ejecutará con éxito en MT5. Pero en este caso Nikolay Kositsyn perderá su trabajo... No, prefiero no hacerlo.

Recuerdo, la documentación dice que la forma más correcta de inicializar (crear) los indicadores maneja en la función OnInit, y realizar IndicatorRelease en la función OnDeinit. Esto significa que todo el tiempo mientras se ejecuta el Asesor Experto, las manijas de los indicadores siguen siendo relevantes.