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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
SergeyN
352
SergeyN  

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

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

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

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

Evgeny Belyaev
160215
Evgeny Belyaev  
SergeyN:

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

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

Да.

SergeyN:

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

GlobalVariableSet
SergeyN
352
SergeyN  
Evgeny Belyaev:

Да.


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

Ihor Herasko
21798
Ihor Herasko  
SergeyN:


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

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

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

Kino
6771
Kino  
SergeyN:


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

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

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

GlobalVariablesFlush();

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

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

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


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

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

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

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий