Переменные советника

 

Все добрый день!

В советнике объявлены глобальные переменные. В переменных храню некоторую дополнительную информацию об открытых ордерах.

Правильно я понимаю, что при перегрузке терминала - переменные обнулятся? Т.е хранить доп.информацию в глобальных переменных не вариант?

Как можно такую информацию сохранить, кроме дополнительного файла?

 
SergeyN:

Все добрый день!

Правильно я понимаю, что при перегрузке терминала - переменные обнулятся? 

Да.

SergeyN:

Как можно такую информацию сохранить, кроме дополнительного файла?

GlobalVariableSet
 
Evgeny Belyaev:

Да.


Спасибо. Похоже то, что нужно. После рестарта терминала они сохраняются? В хэлпе явно не описано.

 
SergeyN:


Спасибо. Похоже то, что нужно. После рестарта терминала они сохраняются? В хэлпе явно не описано.

Сохраняются. Но хранятся ограниченное время после последнего обращения к ним. Вариант в некоторых случаях даже хуже, чем запись в файл (Вы не контролируете продолжительность хранения данных). С файлом надежнее выходит, если планируется долговременное хранение информации.

Кроме того, глобальные переменные работают только с double-типом. Для работы со строками (у ордеров есть строковые данные - символ и комментарий) их использовать затруднительно. В своем же файле нет никаких ограничений.

 
SergeyN:


Спасибо. Похоже то, что нужно. После рестарта терминала они сохраняются? В хэлпе явно не описано.

Сохраняются, если терминал был закрыт корректно, если было аварийное закрытие терминала, например пропало питание компьютера, то результат не предсказуемый.

Есть команда принудительного сохранения глобальных переменных терминала.

GlobalVariablesFlush();

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

https://docs.mql4.com/ru/globals/globalvariablesflush

GlobalVariablesFlush - Глобальные переменные терминала - Справочник MQL4
GlobalVariablesFlush - Глобальные переменные терминала - Справочник MQL4
  • docs.mql4.com
GlobalVariablesFlush - Глобальные переменные терминала - Справочник MQL4
 
SergeyN:


Спасибо. Похоже то, что нужно. После рестарта терминала они сохраняются? В хэлпе явно не описано.

из справки к функции, Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются.

месяц вполне достаточно хранятся, куда больше то для "переменной"

 
Только учитывайте, что в GlobalVariables хранят только double. Поэтому, например, long (номер тикета или подобное) сохранить в них не так просто.
 
fxsaber:
Только учитывайте, что в GlobalVariables хранят только double. Поэтому, например, long (номер тикета или подобное) сохранить в них не так просто.
номер тикета - int, но проще тикет или чтото ещё хранить в имени глоб переменной, а в самой переменной прописывать его состояние
 
Aleksey Semenov:
номер тикета - int

Это пока не возникла необходимость написать что-либо кроссплатформенное.

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