Обсуждение статьи "Основы программирования на MQL5: Глобальные переменные терминала" - страница 2

 
Andrey F. Zelinsky:

От статьи ожидал пояснения:

1. -- как и где хранятся глобальные переменные (в памяти, на диске)

2. -- как часто можно считывать эти глобальные переменные

-- и т.п. 

К сожалению, ответов на вопросы в статье не нашёл.


1. Есть про это немного, в разделе "Функция GlobalVariablesFlush". 

2. Разрешено все, что не запрещено. 

 
Dmitry Fedoseev:

1. Есть про это немного, в разделе "Функция GlobalVariablesFlush". 

2. Разрешено все, что не запрещено. 

интересует как хранятся переменные в процессе работы -- память/диск -- и как критична для диска частота записи/считывания переменной.

что будет с переменной при резком вырубании терминала.

короче, такого плана вопросы -- было бы очень полезно их доосветить -- или в статье или здесь, в обсуждении. 

помнится что-то говорили на форуме о таком -- но где, когда и что -- не могу найти.

 
Глоб.переменные это хорошо, но сразу возникает желание лучшего :-) Хочется аналог, но в пространстве имён чарта.
 
Andrey F. Zelinsky:

интересует как хранятся переменные в процессе работы -- память/диск -- и как критична для диска частота записи/считывания переменной.

что будет с переменной при резком вырубании терминала.

короче, такого плана вопросы -- было бы очень полезно их доосветить -- или в статье или здесь, в обсуждении. 

помнится что-то говорили на форуме о таком -- но где, когда и что -- не могу найти.

abolk, тут кое-что есть. Автор там даже что-то тестирует...

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

abolk, тут кое-что есть. Автор там даже что-то тестирует...

не понял -- две одинаковые статьи на сайте?

и у федосеева и у вас -- и даже одинаковое название? 

 

и

 


 
Andrey F. Zelinsky:

интересует как хранятся переменные в процессе работы -- память/диск -- и как критична для диска частота записи/считывания переменной.

что будет с переменной при резком вырубании терминала.

короче, такого плана вопросы -- было бы очень полезно их доосветить -- или в статье или здесь, в обсуждении. 

помнится что-то говорили на форуме о таком -- но где, когда и что -- не могу найти.

Есть про это в разделе "Функция GlobalVariablesFlush".

В файле хранятся. На диск сброс будет при завершении работы терминала или при вызове GlobalVariablesFlush().

Существуют различные мнения на счет срока службы жестких дисков, есть даже мнение что срок службы составляет более 170 лет. Интересно, а задумываетесь ли ли вы об этом же вопросе когда слушаете музыку или сморите видео на компьютере? Используя глобальные переменные не получится достичь и малой части той нагрузки на диск которая бывает пир воспроизведении музыки или видео. А пользуясь интернетом, переходя по ссылке, знаете сколько файлов сразу сохраняется на диск? Но пользуясь интернетом никто не задумывается о нагрузке на диск.

Регулярное выполнение дефрагментации значительно снижает нагрузку на диск. Так же стабильно питание (но для ноутбуков такой проблемы нет), и температурный режим (но с этим ничего не сделаете).

***

На форуме возникало обсуждение о работе GlobalVariablesFlush, разработчики терминала писали что они что-то там отключили, но это было неправильно понятно. Отключили непосредственный сброс на диск. Раньше сброс выполнялся прямо на диск миную операционную систему. Теперь сброс делается через операционную систему. Вроде как от этого сброс может выполняться не сразу по вызову функции, а тогда, когда решит операционная система. Резкое пропадание электропитания у компьютера в наше время явление нереальное.

 

 

 

 
Maxim Kuznetsov:
Глоб.переменные это хорошо, но сразу возникает желание лучшего :-) Хочется аналог, но в пространстве имён чарта.
Решаемо через префиксы глобальных переменных.
 
Andrey F. Zelinsky:

не понял -- две одинаковые статьи на сайте?

Ух ты! Чудо чудное!
 
Andrey F. Zelinsky:

не понял -- две одинаковые статьи на сайте?

и у федосеева и у вас -- и даже одинаковое название?

Ага, прикольно, первый раз вижу...

Дмитрий, как всегда системно и подробно. Респект

 
Maxim Kuznetsov:
Глоб.переменные это хорошо, но сразу возникает желание лучшего :-) Хочется аналог, но в пространстве имён чарта.

Ну так и используйте её на уровне имён)

У меня немного не такая реализация, но вполне пригодна для использования:

//===============================================================================================
//----------------------- Создает и возвращает имя глобальной переменной -----------------------+
//===============================================================================================
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);
 }}

Применять так-же просто:

// сюда пишем что нужно с именем
if(если больше то) {
 GlobalVariableSet(GetGlobalVariableName("LastAmountPos"),с);
}
// здесь получаем так-же по имени
int pos_count = GlobalVariableGet(GetGlobalVariableName("LastAmountPos"));

В итоге на уровне имени "pos_count" в любом месте можно получить значение.

В общем, нет никаких ограничений с применением, очень просто, быстро и удобно, за что МК отдельное спасибо! 

Причина обращения: