Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1031

 
artmedia70:
Si el borrado involuntario del indicador debe eliminar las variables globales creadas por este indicador, el borrado de estas variables globales debe prescribirse en la función OnDeinit() del indicador.
Hay que comprobar que no se trata de un cambio de marco temporal, sino de la eliminación del indicador del gráfico.
Gracias.
 
artmedia70:
Pulse F3 en el terminal, y borre manualmente esta variable. Se crea una vez y se ubica en el entorno - el EA lo lee desde allí. ¿O tal vez no le he entendido bien? ¿Acabas de eliminar la creación de una variable global del terminal en el propio código del indicador, pero fue creada por este indicador antes?

Artem, por favor, ayúdame a entender lo que está mal. Aquí https://www.mql5.com/ru/code/10237 es el código del Asesor Experto que notifica (o más bien se utiliza para notificar) sobre todos los eventos de comercio en el terminal. Este código ha funcionado correctamente. He estado ausente del sitio web durante mucho tiempo. Se han producido algunos cambios en mql4 y ahora este código compila con un error, al compilar las líneas de inicialización del array. Si tienes tiempo, échale un vistazo.

Saludos.

ps si alguien más puede mirar cual es el problema, se lo agradecería.

 
AlexeyVik:
Bueno, no sé, tal vez en C++, que nunca estudié, pero mql es sólo como C. Y en segundo lugar, la dimensión del array no puede establecerse en una variable, aunque en tu ejemplo MAX_NUM_ORDER podría no ser una variable...
ver aquí sobre la inicialización de arrays https://book.mql4.com/ru/variables/arrays
 
SunnYtheDreamer:

Se selecciona una fila y una columna de la matriz, respectivamente, se puede introducir un valor particular allí, es decir, la entrada debe ser como para una variable ordinaria, y para restablecer todos los valores

ArrayInitialize(Arr_Tickets, 0);



la referencia del artículo se verá así -Arr_Tickets[MAX_NUM_ORDER,2] =0;

Lo tengo aquí -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

 
valenok2003:
ver aquí sobre la inicialización de arrays https://book.mql4.com/ru/variables/arrays
Sí, creo que el array se declara globalmente, así que me estoy haciendo el listo...
 
valenok2003:

la referencia del artículo se verá así -Arr_Tickets[MAX_NUM_ORDER,2] =0;

Lo tengo escrito -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

Arr_Tickets[MAX_NUM_ORDER,2] - referencia a un elemento de la matriz

Arr_Tickets[MAX_NUM_ORDER][2] - referencia al elemento de la matriz

El compilador no jura como lo escribes y espera un valor en particular, no otra cosa. Lo he comprobado especialmente.
Y una confirmación de lo mismo desde el enlace, que le diste a otro miembro del foro: la forma de especificar los índices, cuando cada uno de los índices está encerrado entre corchetes, también es aceptable

 
SunnYtheDreamer:

Arr_Tickets[MAX_NUM_ORDER,2] - referencia a un elemento de la matriz

Arr_Tickets[MAX_NUM_ORDER][2] - referencia a un elemento de la matriz

El compilador no jura como lo escribes y espera un valor en particular, no otra cosa. Lo he comprobado especialmente.
Y una confirmación de lo mismo desde el enlace, que le diste a otro miembro del foro: la forma de especificar los índices, cuando cada uno de los índices está encerrado entre corchetes, también es aceptable

Replanteo la pregunta, - Antes compilaba y funcionaba bien, ¿alguien puede explicar cuál es la causa? Los códigos que no funcionaron no fueron admitidos en el kodobase...

Por cierto, el error aparece en las líneas 53 y 54 del código. En la línea 54, ¿qué ocurre? ¿Y cómo iniciar una matriz de cadenas?

He buscado en el libro de texto, pero no he encontrado nada sobre arrays de cadenas, sólo hay información sobre arrays numéricos. ¿Quizás no he buscado demasiado? Por favor, facilítame el enlace.

 
valenok2003:

Artem, por favor, ayúdame a entender lo que está mal. Aquí https://www.mql5.com/ru/code/10237 es el código del Asesor Experto, que notifica (o más bien se utiliza para notificar) sobre todos los eventos de comercio en el terminal. Este código ha funcionado correctamente. He estado ausente del sitio web durante mucho tiempo. Se han producido algunos cambios en mql4 y ahora este código compila con un error, al compilar las líneas de inicialización del array. Si tienes tiempo, échale un vistazo.

Saludos.

ps si alguien más mira cual es el problema, se lo agradecería.

Primero inserta #property strict al principio del código y compila.

Fue así:

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"

hacerlo:

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"
#property strict

Después hay que mirar ya los errores que da.

 
artmedia70:

Primero, inserta #property strict al principio del código y compila.

era así:

hacerlo:

Después hay que mirar los errores que da.

Insertado, nada ha cambiado.

Supongamos que puedo sustituir la línea Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0}; también puedo sustituirla porArrayInitialize(Arr_Tickets,0);

¿Qué hacer con la cadena Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",};? Cuando intento inicializar una matriz de cadenas a través deArrayInitialize(Arr_Order_Symbol,""), dice "mi no entiendes...", no hay ningún objeto adecuado para ser procesado por esta función...

 
valenok2003:

Insertado, nada ha cambiado.

Supongamos que puedo reemplazar la línea Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0}; todavía puedo reemplazarla conArrayInitialize(Arr_Tickets,0);

¿Qué hacer con la cadena Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",};? Cuando intento inicializar una matriz de cadenas a través deArrayInitialize(Arr_Order_Symbol,""), dice "mi no entiendes...", no hay ningún objeto adecuado para ser procesado por esta función...

Bien, pon a cero este array: ZeroMemory()