Deseos para MQL5 - página 117

 
HideYourRichess писал(а) >>
¿Cambiar por un ipod? - Lo siento por Dios, debería haberte avisado enseguida. Por favor, escriba, diga cualquier tontería - no diré ni una palabra. Ahora que todo se aclara, lo tomaré con comprensión y paciencia. ¡Cambia por un iPod! - aaaaaghit....

Gracias por su simpatía y buena suerte para usted, al menos no progrese

 

Acabo de encontrar un problema en MT4, por favor, asegúrese de que esto no va a suceder en MT5 (no he comprobado).


Al principio (antes de init) se establecían arrays:

xsell[3];

xbuy[3];


Antes de eso una variable externa:

extern int Tamaño_máximo_de_matriz = 13;


En el bucle start():

ArrayResize(xsell, Max_Array_Size);

ArrayResize(xbuy, Max_Array_Size);


Y luego el bucle for():


for(int kss= Tamaño_de_matriz; kss>0; kss--) {

xbuy[kss] = . . . ;

. . .

}


Se ha utilizado el mismo esquema tanto en el módulo de ventas(indicador personalizado) como en el de compras, es decir, las variables son diferentes,

pero el principio es el mismo. Al principio escribí todo para las ventas, lo compilé - todo está bien, sin problemas. Luego copié

La compilación ha llevado mucho más tiempo y el cambio entre

El cambio de horario también ha llevado mucho más tiempo. Las ventas de los discapacitados - nada ha cambiado, frenando.

Sólo queda la venta - corre rápido. El compilador no se quejó, sólo que tardó mucho más en ejecutarse.

Volví a ver todo lo que me parecía sospechoso, reescribí algunas partes en las compras...

¡Resultó que el problema estaba en la dimensión de la matriz: 13 => 0-12, y en el bucle for estaba tratando de alimentar a 13 también!


Después de arreglarlo:

ArrayResize(xsell, Max_Array_Size+1);

ArrayResize(xbuy, Max_Array_Size+1);


tanto las ventas como las compras se recopilaron como es debido y el cambio de plazos se hizo más rápido.

Pero el error debería haber aparecido ya durante la compilación. Encontrar la causa en estos casos

No es nada fácil encontrar el motivo (puede que ni siquiera sea consciente del problema).

Y no está claro por qué todo funcionaba bien en el módulo de ventas.

 
chief2000 писал(а) >>

Pero el error debería haberse descubierto durante la compilación. Encontrar la causa en estos casos no es nada fácil (es posible que no supiera que había un problema).

El compilador no puede ni debe seguir los valores de las variables por definición.

Y tampoco está claro por qué todo funcionaba bien en el módulo de ventas.

Porque un error es más rápido de procesar que dos o más.

 
fwiq >> :

El compilador no puede ni debe llevar la cuenta de los valores de las variables por definición.

Es malo si realmente lo es.

Al fin y al cabo, es prácticamente lo mismo que acceder a una variable que no estaba predefinida.

fwiq escribió >>

Porque un error es más rápido de gestionar que dos o más.

No, es otra cosa, ya te dije que cuando sólo quedaba el módulo de ventas no había ningún problema,

y cuando eliminé las ventas y dejé sólo las compras, hubo un problema. La diferencia era muy notable, aunque ambos módulos

son absolutamente idénticos, excepto por algunas operaciones cambiadas a la inversa (>/<, High[]/Low[] etc.).

 
chief2000 писал(а) >>

No, es otra cosa, ya te dije que cuando se dejaba sólo el módulo de ventas no había ningún problema, pero cuando quité las ventas y dejé sólo las compras hubo un problema. La diferencia fue muy notable, y ambos módulos son absolutamente idénticos, excepto por algunas operaciones cambiadas a la inversa (>/<, High[]/Low[] etc.).

Tal vez, no es la definición de las variables o matrices. En los indicadores de MT4, hay que vigilar con cuidado y atención los momentos en los que se empiezan a añadir líneas de forma programada, y se cambian los nombres de las matrices reflejadas. A veces hay confusión y la línea puede no reflejarse o el cálculo puede colgarse, como en este caso. Sólo hay una cura, como en el chiste "Sólo tienes que salir y entrar y todo funcionará".

 

Si literalmente, la sobrecarga tampoco ayudó.

De todos modos, la distinción entre vender y comprar fue lo que me ayudó a saber que había un problema...

La felicidad fue una bendición disfrazada :)

 
Tengo otra pregunta. No puedo ejecutar el depurador MQL5 en los indicadores. Funciona en scripts y Expert Advisors pero no se para en ningún indicador y no puede seguir los pasos. No estoy seguro de si hay alguna peculiaridad no documentada, si la conoces, por favor, házmelo saber.
 
fwiq >> :
Tengo otra pregunta. No puedo ejecutar el depurador MQL5 en los indicadores. Funciona en scripts y Asesores Expertos, pero no se detiene en ningún indicador y no puede seguir los pasos. No he estado trabajando con este tipo de cosas, empecé a trabajar con este tipo de cosas.

Hace una semana los manipuladores escribieron que esta era la idea y la depuración en los índices de depuración funcionará más tarde

 

En MT4 siempre había errores porque se recogía Asc o Bid u otro (Close, Open, etc.) después de la coma

una gran cantidad de números (como 1,43231111111111). Como resultado, tuvimos que añadir "NormalizeDouble(Bid,Digits);".

Y esto se puede resolver una vez en el nivel de la MT.

 

Por favor, añada a las funciones ObjectFind y ObjectDelete la posibilidad de trabajar con máscaras como : *,?

En principio, por supuesto, sólo se puede utilizar ObjectFind .Si es necesario mantener la compatibilidad con versiones anteriores, entonces la función anterior debería dejarse sin cambios, y el conjunto debería complementarse con, por ejemplo, ObjectFindM (búsqueda múltiple).

Ejemplo: necesitamos encontrar etiquetas de texto que empiecen por "Señal".

Implementación: Devuelve el nombre del primer objeto encontrado (o el handle, pero esto requiere otras funciones que lo puedan manejar).

Notación: ObjectFindM("Señal*");

Ejemplo: debe eliminar de la ventana "0" sólo las etiquetas de texto que empiecen por "Señal"

Notación: ObjectDelete(0,"Señal*");