Discussão do artigo "Fundamentos Básicos da Programação: Variáveis Globais do Terminal" - página 2

 
Andrey F. Zelinsky:

O artigo esperava esclarecimentos sobre o artigo:

1. -- Como e onde as variáveis globais são armazenadas (na memória, no disco)

2. -- Com que frequência essas variáveis globais podem ser lidas

-- etc.

Infelizmente, não encontrei respostas para as perguntas do artigo.


1. Há um pouco sobre isso na seção "Função GlobalVariablesFlush".

2. Tudo o que não é proibido é permitido.

 
Dmitry Fedoseev:

1. Há um pouco sobre isso na seção "Função GlobalVariablesFlush".

2. Tudo o que não for proibido é permitido.

Estou interessado em saber como as variáveis são armazenadas durante a operação - memória/disco - e qual é a importância da frequência de gravação/leitura de variáveis para o disco.

o que acontece com uma variável quando o terminal é desligado abruptamente.

Em suma, essas perguntas - seria muito útil esclarecê-las - no artigo ou aqui, na discussão.

Lembro-me de algo sobre isso no fórum, mas não consigo encontrar onde, quando e o quê.

 
Glob.variables são boas, mas você quer uma melhor :-) Eu quero um análogo, mas no namespace do gráfico.
 
Andrey F. Zelinsky:

Estou interessado em saber como as variáveis são armazenadas durante a operação - memória/disco - e qual é a importância da frequência de gravação/leitura de variáveis para o disco.

o que acontece com uma variável quando o terminal é desligado abruptamente.

Em suma, essas perguntas - seria muito útil esclarecê-las - no artigo ou aqui, na discussão.

Lembro-me de que algo foi dito no fórum sobre isso - mas onde, quando e o quê - não consigo encontrar.

Há algo aqui. O autor está até testando algo lá...

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

Há algo aqui. O autor está até testando algo lá...

Não entendo: dois artigos idênticos no site?

Tanto o de Fedoseev quanto o seu - e até mesmo o mesmo título?

и


 
Andrey F. Zelinsky:

Estou interessado em saber como as variáveis são armazenadas durante a operação - memória/disco - e qual é a importância da frequência de gravação/leitura de variáveis para o disco.

o que acontece com uma variável quando o terminal é desligado abruptamente.

Em suma, essas perguntas - seria muito útil esclarecê-las - no artigo ou aqui, na discussão.

Lembro-me de algo sobre isso no fórum, mas não consigo encontrar onde, quando e o quê.

Há algo sobre isso na seção "Função GlobalVariablesFlush".

Elas são armazenadas em um arquivo. Ele será redefinido para o disco quando o terminal for desligado ou quando GlobalVariablesFlush() for chamada.

Há diferentes opiniões sobre a vida útil dos discos rígidos, e há até uma opinião de que a vida útil é de mais de 170 anos. Será que você pensa na mesma questão quando ouve música ou assiste a vídeos em seu computador? Usando variáveis globais, não é possível obter nem mesmo uma pequena parte da carga no disco que ocorre ao reproduzir música ou vídeo. E ao usar a Internet, clicando em um link, você sabe quantos arquivos são imediatamente salvos no disco? Mas, ao usar a Internet, ninguém pensa na carga do disco.

A desfragmentação regular reduz significativamente a carga no disco. Além disso, a fonte de alimentação estável (mas para laptops não há esse problema) e o regime de temperatura (mas você não pode fazer nada a respeito).

***

Houve uma discussão no fórum sobre o GlobalVariablesFlush, os desenvolvedores do terminal escreveram que desativaram algo lá, mas isso foi mal interpretado. Eles desativaram a redefinição direta para o disco. Anteriormente, a redefinição era realizada diretamente no disco por meio do sistema operacional. Agora, a redefinição é feita por meio do sistema operacional. Isso faz com que a redefinição possa ser feita quando o sistema operacional decidir fazê-la, em vez de imediatamente após uma chamada de função. Uma perda abrupta de energia em um computador é um fenômeno irreal hoje em dia.

 
Maxim Kuznetsov:
Glob.variables são boas, mas você quer uma melhor :-) Eu quero um análogo, mas no namespace do gráfico.
Isso pode ser resolvido por meio de prefixos de variáveis globais.
 
Andrey F. Zelinsky:

Não entendo: dois artigos idênticos no site?

Uau, que milagre!
 
Andrey F. Zelinsky:

Não entendo: dois artigos idênticos no site?

O de Fedoseyev e o seu, e até mesmo com o mesmo título?

Sim, isso é engraçado, é a primeira vez que vejo isso....

Dmitry, como sempre sistemático e detalhado. Respeito

 
Maxim Kuznetsov:
Glob.variables são boas, mas você quer uma melhor :-) Você quer um análogo, mas no espaço de nomes do gráfico.

Bem, então use-o no nível do namespace)

Tenho uma implementação um pouco diferente, mas é bastante útil:

//===============================================================================================
//----------------------- Cria e retorna o nome da variável 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);
 }}

É igualmente fácil de aplicar:

// aqui escrevemos o que precisamos com o nome
if(если больше то) {
 GlobalVariableSet(GetGlobalVariableName("LastAmountPos"),с);
}
// aqui obtemos o mesmo por nome
int pos_count = GlobalVariableGet(GetGlobalVariableName("LastAmountPos"));

Você pode acabar com um valor em qualquer lugar no nível de nome de"pos_count".

Em geral, não há restrições com o aplicativo, muito simples, rápido e conveniente, pelo qual o MC agradece muito!