Por ejemplo, borro todos los objetos de mi VDS. No quiero sobrecargar la agenda. Y no hay necesidad de ellos allí. Utilizo los globales. Así que todo depende de la situación.
Mira, no me gustan por una razón:
Es una cuestión de atomicidad de las operaciones con ellos. Los docs no dicen nada al respecto, aunque de hecho es un objeto y las operaciones con ellos no son atómicas, y la lectura/escritura del propio doble en x86 son, si no me equivoco, dos instrucciones.
La accesibilidad de las variables fuera del programa.
Si el punto 1 es más bien una queja sobre la calidad de la documentación, el punto 2 es serio.
La cuestión de la atomicidad de las operaciones con ellos. Los docs no dicen nada al respecto, aunque, de hecho, es un objeto y las operaciones con ellos no son atómicas, y la lectura/escritura del propio doble en x86 son, si no me equivoco, dos instrucciones.
La accesibilidad de las variables fuera del programa.
Si el punto 1 es más bien una queja sobre la calidad de la documentación, el punto 2 es serio.
Bueno, no es necesario leerlo. Puedes utilizar GlobalVariableCheck para comprobar si la variable está o no. Puedes hacer lo mismo con los objetos. Así que sólo hay que crear/comprobar/borrar una variable.
Pero el gran inconveniente es el tipo de datos - sólo doble , no me gusta doble , incluso si sólo ulong podría ser utilizado, y la organización de nombre / valor ---> cadena / doble provoca un deseo de intercambiar - para escribir los datos en la cadena y la clave en el doble - más para una operación puede ser escrito / leído
pero habiendo estimado todas estas "cosas" Puede escribirlos en archivos binarios, es decir, libertad total y sin incertidumbres.
Bueno, no hace falta leer. Puede utilizar simplemente GlobalVariableCheck para comprobar si la variable existe o no. Se hace lo mismo con los objetos. Por lo tanto, sólo hay que crear/comprobar/borrar la variable.
Sí, un conflicto de nombres trivial y la cadena en el otro robot
GlobalVariableDel(yourValueName);
perderá su depósito))))
Di que el nombre será único, que el otro robot nunca estará allí, que el niño/esposa/amigo/borracho nunca se acercará a la terminal de batalla)) De acuerdo, pero la probabilidad no es cero, lo que significa que el código se vuelve poco fiable.
Es un conflicto de nombres trivial y la línea del otro robot
le quitará su depósito)))
Dirás que el nombre será único, que el otro robot nunca estará allí, que el niño/esposa/amigo/borracho mismo nunca se acercará a la terminal de batalla))) De acuerdo, pero la probabilidad no es cero, lo que significa que el código se vuelve poco fiable.
Mentira y fantasía
Un EA en dinero SIEMPRE se ejecuta desde un terminal independiente, en su propio VDS (o incluso servidor) y nadie se mete con él.
Un EA en el dinero SIEMPRE se ejecuta desde un terminal independiente, en su propio VDS (o incluso servidor) y nadie se mete con él.
¿Cómo que SIEMPRE? Hoy - siempre, mañana puedes calcular de manera diferente. Y no todo el mundo parece estar de acuerdo contigo.
Señalé el peligro real de utilizar las variables globales de la terminal. Esto no es ni bueno ni malo: es algo que nos han dado los desarrolladores, sólo tenemos que ser conscientes de ello y tenerlo en cuenta.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Por ejemplo, borro todos los objetos de mi VDS. No quiero sobrecargar la agenda. Y no hay necesidad de ellos allí. Utilizo los globales. Así que todo depende de la situación.
Mira, no me gustan por una razón:
Mira, hay una razón por la que no me gustan:
Bueno, no es necesario leerlo. Puedes utilizar GlobalVariableCheck para comprobar si la variable está o no. Puedes hacer lo mismo con los objetos.
Así que sólo hay que crear/comprobar/borrar una variable.
Vladimir Simakov:
2. Disponibilidad de variables fuera del programa.
no hay problema, todas las funciones que trabajan con variables globales tienen un valor de retorno - el resultado de la operación
hay una herramienta de sincronizaciónhttps://www.mql5.com/ru/docs/globals/globalvariablesetoncondition , no es gran cosa, pero usa lo que te ofrecen
Pero el gran inconveniente es el tipo de datos - sólo doble , no me gusta doble , incluso si sólo ulong podría ser utilizado, y la organización de nombre / valor ---> cadena / doble provoca un deseo de intercambiar - para escribir los datos en la cadena y la clave en el doble - más para una operación puede ser escrito / leído
pero habiendo estimado todas estas "cosas" Puede escribirlos en archivos binarios, es decir, libertad total y sin incertidumbres.
probablemente hay que saber trabajar con ellos
@fxsaber mostró ejemplos de trabajo con cualquier tipohttps://www.mql5.com/ru/forum/320395/page6#comment_12910394
Bueno, no hace falta leer. Puede utilizar simplemente GlobalVariableCheck para comprobar si la variable existe o no. Se hace lo mismo con los objetos.
Por lo tanto, sólo hay que crear/comprobar/borrar la variable.
Sí, un conflicto de nombres trivial y la cadena en el otro robot
GlobalVariableDel(yourValueName);perderá su depósito))))
Di que el nombre será único, que el otro robot nunca estará allí, que el niño/esposa/amigo/borracho nunca se acercará a la terminal de batalla)) De acuerdo, pero la probabilidad no es cero, lo que significa que el código se vuelve poco fiable.
Es un conflicto de nombres trivial y la línea del otro robot
le quitará su depósito)))
Dirás que el nombre será único, que el otro robot nunca estará allí, que el niño/esposa/amigo/borracho mismo nunca se acercará a la terminal de batalla))) De acuerdo, pero la probabilidad no es cero, lo que significa que el código se vuelve poco fiable.
Mentira y fantasía
Un EA en dinero SIEMPRE se ejecuta desde un terminal independiente, en su propio VDS (o incluso servidor) y nadie se mete con él.
Mentira y fantasía
Un EA en el dinero SIEMPRE se ejecuta desde un terminal independiente, en su propio VDS (o incluso servidor) y nadie se mete con él.
¿Cómo que SIEMPRE? Hoy - siempre, mañana puedes calcular de manera diferente. Y no todo el mundo parece estar de acuerdo contigo.
Señalé el peligro real de utilizar las variables globales de la terminal. Esto no es ni bueno ni malo: es algo que nos han dado los desarrolladores, sólo tenemos que ser conscientes de ello y tenerlo en cuenta.
La misma cadena
GlobalVariablesDeleteAll();...hecho en cualquier script y oops...
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Peculiaridades de mql5, consejos y trucos
Vladimir Simakov, 2020.05.24 17:02
La misma cadena
GlobalVariablesDeleteAll();...hecho en cualquier script y oops.
Lo mismo ocurre con los objetos gráficos.
ObjectsDeleteAll(...Sólo los recursos de la EA no pueden ser modificados por otros programas.
Colegas, por favor ayúdenme a hacer una macro, si es posible.
Necesito declarar dinámicamente un array bidimensional. Y también hay que cambiar la segunda dimensión. Esto es algo así como este bucle:
Por supuesto, el compilador se opondrá a esto:
Me gustaría ver una macro como la siguiente:
En lugar de una línea:
double d_array[][would_be_size2];Gracias.
Colegas, por favor ayúdenme a hacer una macro, si es posible.
Necesito declarar dinámicamente un array bidimensional. Y también hay que cambiar la segunda dimensión. Esto es algo así como este bucle:
Por supuesto, el compilador se opondrá a esto:
Me gustaría ver una macro como la siguiente:
En lugar de una línea:
Gracias.
Pero la creación de un array de tamaño suficiente (máximo) fuera del bucle se ve obstaculizada por la política ? :-)
El enfoque anterior (recrear el array en el bucle cada vez) no gana nada en términos de velocidad o consumo de memoria.
Me gustaría ver una macro similar a esta:
No funcionará.