Discusión sobre el artículo "Principios de programación en MQL5: Variables globales del terminal" - página 2

 
Andrey F. Zelinsky:

Del artículo se esperaban aclaraciones:

1. -- cómo y dónde se almacenan las variables globales (en memoria, en disco)

2. -- con qué frecuencia se pueden leer estas variables globales

-- etc.

Desafortunadamente, no encontré respuestas a las preguntas en el artículo.


1. Hay un poco sobre esto, en la sección "Función GlobalVariablesFlush".

2. Todo lo que no está prohibido está permitido.

 
Dmitry Fedoseev:

1. Hay un poco sobre esto, en la sección "Función GlobalVariablesFlush".

2. Todo lo que no está prohibido está permitido.

Estoy interesado en cómo se almacenan las variables durante la operación -- memoria/disco -- y qué tan crítica es la frecuencia de escritura/lectura de variables para el disco.

qué pasa con una variable cuando el terminal se apaga bruscamente.

en fin, esas preguntas -- seria muy util aclararlas -- ya sea en el articulo o aqui, en la discusion.

Recuerdo algo sobre esto en el foro, pero no encuentro donde, cuando y que.

 
Glob.variables son buenas, pero quieres una mejor :-) Quiero un análogo, pero en el espacio de nombres gráfico.
 
Andrey F. Zelinsky:

Me interesa saber cómo se almacenan las variables durante el funcionamiento -- memoria/disco -- y cuán crítica es la frecuencia de escritura/lectura de variables para el disco.

qué ocurre con una variable cuando el terminal se apaga bruscamente.

en fin, esas preguntas -- seria muy util aclararlas -- ya sea en el articulo o aqui, en la discusion.

Recuerdo que algo se dijo en el foro sobre esto -- pero donde, cuando y que -- no lo encuentro.

Hay algo aquí. El autor incluso está probando algo allí...

Основы программирования на MQL5 - Глобальные переменные терминала
Основы программирования на MQL5 - Глобальные переменные терминала
  • 2014.11.03
  • //www.mql5.com/ru/users/denkir">
  • www.mql5.com
В данной статье демонстрируются объектно-ориентированные возможности языка MQL5 по созданию объектов, отвечающих за работу с глобальными переменными терминала. В качестве практического примера рассматривается ситуация, когда глобальные переменные могут использоваться как контрольные точки выполнения этапов программы.
 
Dennis Kirichenko:

Aquí hay algo. El autor incluso está probando algo allí...

No lo entiendo -- ¿dos artículos idénticos en el sitio?

tanto el de fedoseev como el tuyo -- ¿y hasta el mismo título?

и


 
Andrey F. Zelinsky:

Me interesa saber cómo se almacenan las variables durante el funcionamiento -- memoria/disco -- y cuán crítica es la frecuencia de escritura/lectura de variables para el disco.

qué ocurre con una variable cuando el terminal se apaga bruscamente.

en fin, esas preguntas -- seria muy util aclararlas -- ya sea en el articulo o aqui, en la discusion.

Recuerdo algo sobre esto en el foro, pero no encuentro dónde, cuándo y qué.

Hay sobre ello en la sección "GlobalVariablesFlush function".

Se almacenan en un archivo. Se restablecerá a disco cuando se apague el terminal o cuando se llame a GlobalVariablesFlush().

Hay diferentes opiniones sobre la vida útil de los discos duros, incluso hay una opinión que dice que la vida útil es de más de 170 años. Me pregunto si piensas en la misma cuestión cuando escuchas música o ves vídeos en tu ordenador. Utilizando variables globales no se consigue ni siquiera una pequeña parte de la carga que se produce en el disco al reproducir música o vídeo. Y utilizando Internet, al hacer clic en un enlace, ¿sabes cuántos archivos se guardan inmediatamente en el disco? Pero al utilizar Internet, nadie piensa en la carga del disco.

La desfragmentación regular reduce significativamente la carga del disco. También una fuente de alimentación estable (pero para los portátiles no existe ese problema), y el régimen de temperatura (pero no puedes hacer nada al respecto).

***

Hubo una discusión en el foro sobre GlobalVariablesFlush, los desarrolladores de terminales escribieron que desactivaron algo allí, pero fue malinterpretado. Deshabilitaron el reseteo directo a disco. Anteriormente, el reinicio se realizaba directamente al disco a través del sistema operativo. Ahora el reinicio se realiza a través del sistema operativo. Esto hace que el reinicio se pueda hacer cuando el sistema operativo lo decida, en lugar de inmediatamente después de una llamada a una función. Una pérdida brusca de energía en un ordenador es un fenómeno poco realista hoy en día.

 
Maxim Kuznetsov:
Glob.variables son buenas, pero quieres una mejor :-) Quiero un análogo, pero en el espacio de nombres gráfico.
Se puede resolver mediante prefijos de variables globales.
 
Andrey F. Zelinsky:

No lo entiendo... ¿dos artículos idénticos en el sitio?

¡Vaya! ¡Qué milagro!
 
Andrey F. Zelinsky:

No lo entiendo... ¿dos artículos idénticos en el sitio?

¿El de Fedoseyev y el tuyo, e incluso con el mismo título?

Sí, es curioso, es la primera vez que lo veo ....

Dmitry, como siempre sistemático y detallado. Respeto

 
Maxim Kuznetsov:
Glob.variables son buenas, pero quieres una mejor :-) Quieres un análogo, pero en el espacio de nombres gráfico.

Bueno, entonces úsalo a nivel de espacio de nombres)

Tengo una implementación ligeramente diferente, pero es bastante usable:

//===============================================================================================
//----------------------- Crea y devuelve el nombre de la variable global -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
 if(symb=="0") { symb=_Symbol;}
  if(!IsTesting()) {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_"+name);
  } else {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_tester"+"_"+name);
 }}

Es igual de fácil de aplicar:

// aquí escribimos lo que necesitamos con el nombre
if(если больше то) {
 GlobalVariableSet(GetGlobalVariableName("LastAmountPos"),с);
}
// aquí obtenemos lo mismo por el nombre
int pos_count = GlobalVariableGet(GetGlobalVariableName("LastAmountPos"));

Usted puede terminar con un valor en cualquier lugar en el nivel de nombre de"pos_count".

¡En general, no hay restricciones con la aplicación, muy simple, rápido y conveniente, por lo que el MC muchas gracias!