Errores, fallos, preguntas - página 1904

 
Artyom Trishkin:

Si hay varias instancias, ¿por qué duplicar el mismo cálculo en otras instancias de la misma clase?

¿Por qué necesita otras instancias si sólo hay un cálculo?


Artyom Trishkin:
Andrey, ¿podrías ser un poco más específico? No lo entiendo bien.

Es mejor dar una descripción más detallada del problema, entonces la respuesta será más concreta.

 
Artyom Trishkin:

El cálculo no es único - si hay una sola instancia de la clase entonces el cálculo debería serlo, si hay múltiples instancias entonces ¿por qué duplicar el mismo cálculo en otras instancias de la misma clase? Se necesitan recursos.

Al mismo tiempo, hacer otro ciclo largo en la clase padre para calcular estos mismos datos tampoco es óptimo (ya tenemos dos ciclos largos), y la clase hija no será entonces autosuficiente.

He sugerido cómo hacer lo que necesitamos sin duplicar. No estamos hablando de descendientes.
 

¡Buenas tardes!

Después de 4 años volví a un EA (lo compré en 2013 y lo olvidé). Decidí intentarlo de nuevo. Pero ahora el sistema da un error en una de las líneas de código. Supongo que algo ha cambiado en 4 años con Metatrader, porque antes funcionaba bien. No tengo ni idea de programar, por eso he comprado Expert Advisor). ¿Puede decirme cuál puede ser el error?

Aquí está una parte del código

extern int Bperiod = 20; // Periodo de promediación de la línea principal del indicador.

extern int Bdeviation = 2; // Desviación de la línea base.

extern int Bshift = 0; // Desplazamiento del indicador respecto al gráfico de precios.

extern int Baprice = 0; // CLOSE=0, OPEN=1, HIGH=2, LOW=3, MEDIAN=4, TYPICAL=5, WEIGHTED=6 .

cadena externa _6 = "========";

extern bool UseAutoDig = true; // Si=true->las variables externas en los puntos se multiplican por 10.

extern bool UseECN\NDD = true; // Si=true->las órdenes se establecen sin topes, entonces se modifican.

El error se muestra en la última línea del comando

UseECN\NDD, este comando se repite muchas veces en el EA y se produce un error en cada línea con este comandoEjemplos de

errores

'\N' - secuencia de escape ilegal e_plat2.mq4 49 22

'NDD' - punto y coma esperado e_plat2.mq4 49 23

'UseECN' -

identificador no declarado

e_plat2

.mq4 144 6

'NDD' - identificador no declarado e_plat2.mq4 144 13

'NDD' - algún operador esperado e_plat2.mq4 144 13

'UseECN' - identificador no declarado e_plat2.mq4 172 6

'4206' - valor del caso ya utilizado e_plat2.mq4 643 8


Si no le importa, ¿cuál podría ser la razón?




 
platoshkasexy:

UseECN\NDD este comando se repite muchas veces en el Asesor Experto y en cada línea donde está presente, aparece un error

Sustituya en todo el código "UseECN\NDD" por "UseECN_NDD" (Ctrl+H)

 
Andrey Khatimlianskii:

Sustituya en todo el código "UseECN\NDD" por "UseECN_NDD" (Ctrl+H)


¡Muchas gracias! Parece que se compila.

Voy a probar...

 
Andrey Khatimlianskii:

¿Para qué se necesitan estas otras instancias si sólo hay un cálculo?


Será mejor que des una descripción más detallada del problema, así la respuesta será más concreta.

La clase tiene un bucle que recoge los datos de todas las órdenes y posiciones 1) de la cuenta y 2) sólo las que coinciden con el filtro m_symbol y m_magic.

Como resultado, una vez completado el bucle, tenemos datos 1) de toda la cuenta y 2) sólo de las órdenes y posiciones pertenecientes al EA.

Sin embargo, si un EA utiliza varios símbolos o magos, tenemos que crear instancias de la clase para recoger las estadísticas de cada símbolo/magia. Aquí es donde surge la pregunta: ¿Por qué necesitamos recoger las estadísticas (1) en estas nuevas instancias que ya han sido recogidas en la primera instancia de la clase?

De ahí la pregunta - cómo dentro de la clase saber si su instancia es la única, y por lo tanto necesita recoger la estadística 1, o, si la instancia no es la única, no recoger la estadística 1, y darla desde la primera instancia (aquí tampoco está claro cómo dentro de la clase, si no es la única instancia, redirigir la petición a la primera instancia de la clase para dar la estadística 1)

 
Artyom Trishkin:

La clase tiene un bucle que recoge los datos de todas las órdenes y posiciones 1) de la cuenta y 2) sólo las que coinciden con el filtro m_symbol y m_magic.

Como resultado, una vez completado el bucle, tenemos datos 1) de toda la cuenta y 2) sólo de las órdenes y posiciones pertenecientes al EA.

Sin embargo, si un EA utiliza varios símbolos o magos, tenemos que crear instancias de la clase para recoger las estadísticas de cada símbolo/magia. Aquí surge una pregunta: ¿Por qué necesitamos recoger la estadística (1) en estas nuevas instancias, que ya ha sido recogida en la primera instancia de la clase?

De ahí la pregunta - cómo dentro de la clase para saber que su instancia es la única, y por lo tanto la necesidad de recoger las estadísticas 1, o, si la instancia no es la única, entonces no recoger las estadísticas 1, y emitirlo desde la primera instancia (también todavía no está claro cómo dentro de la clase, si no es la única instancia, para redirigir la solicitud a la primera instancia para emitir las estadísticas 1)

1) Recoger las estadísticas de todos los magos/herramientas de una clase. La lista de magos debe ser especificada durante la inicialización y puesta en un array.

2) Como ya se ha aconsejado, haz que los resultados de las estadísticas #1 sean estáticos, y si están disponibles, no empieces a recalcularlos.

 
Artyom Trishkin:

La clase tiene un bucle que recoge los datos de todas las órdenes y posiciones 1) de la cuenta y 2) sólo las que coinciden con el filtro m_symbol y m_magic.

Como resultado, una vez completado el bucle, tenemos datos 1) de toda la cuenta y 2) sólo de las órdenes y posiciones pertenecientes al EA.

Sin embargo, si un EA utiliza varios símbolos o magos, tenemos que crear instancias de la clase para recoger las estadísticas de cada símbolo/magia. Aquí es donde surge la pregunta: ¿Por qué debemos recoger la estadística (1) en estas nuevas instancias, que ya ha sido recogida en la primera instancia de la clase?

De ahí la pregunta - cómo dentro de la clase saber si su instancia es la única, y por lo tanto necesita recoger la estadística 1, o, si la instancia no es la única, no recoger la estadística 1, y darla desde la primera instancia (aquí tampoco está claro cómo dentro de la clase, si no es la única instancia, redirigir la petición a la primera instancia de la clase para dar la estadística 1)

Si el inglés no es un problema, he publicado un ejemplo de análisis de hipercubos en mi blog. Recorrer el historial una vez, y luego solicitar información del hipercubo en los cortes deseados (diferentes). Hay, por supuesto, selectores tanto por mago como por símbolo.
 
Artyom Trishkin:

De ahí la pregunta - cómo saber dentro de la clase que su instancia es la única, lo que significa que hay que recoger la estadística 1, o, si la instancia no es la única, entonces no recoger la estadística 1, y darla desde la primera instancia

Ya se lo han dicho:

Mejor aún, todos los cálculos únicos deben ser puestos en una clase separada y hacerla un singleton.

La primera vez que se accede a un singleton, lee las estadísticas y luego sólo las recupera.


 

Desarrolladores, por favor, expliquen por qué el evento de tipoOnTesterPass, cuando se optimiza el número de variantes superior a8,6e+18, sólo se llama al crear una nueva generación?

¿Y por qué no hay ni una sola palabra sobre esta función en el archivo de ayuda?

¿Por qué debo escarbar en la mitad de un Asesor Experto para encontrar una respuesta, por qué esta función funciona correctamente en un EA, mientras que en el otro sólo escribe los resultados de optimización en el archivo en una nueva generación?


¿Cómo puedo evitar esta limitación?

Razón de la queja: