Использование глобальных переменных - страница 3

 
Gardenn >>:


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

Если по таким пустякам использрвать GV,то Вы просто запутаетесь. Проще советник правильно написать. GV созданы как способ для взаимодействия между советниками и то когда другие методы не возможны. Что то вроде FileMapping в программировании,но несколько медленнее. Не изобретайте велосипед, всё уже изобретено

 
zhuki >>:

Если по таким пустякам использрвать GV,то Вы просто запутаетесь. Проще советник правильно написать. GV созданы как способ для взаимодействия между советниками и то когда другие методы не возможны. Что то вроде FileMapping в программировании,но несколько медленнее. Не изобретайте велосипед, всё уже изобретено

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

 
Вопрос возник, а как они технически работают (принцип)? Если кто знает просветите.
 
..\MetaTrader 4\profiles\gvariables.dat

https://forum.mql4.com/ru/14597
 
Так это что, просто сохранение в файле? Не думал, что так .
 
zhuki >>:
Так это что, просто сохранение в файле? Не думал, что так .

Ну а как же они тогда хранятся после выключения? Не в хвосты секторов же, как нектр. вирусы, записываются. И не во флеш-память, где BIOS. )))

Самое очевидное предположение, если не знать где, то именно в файле.

ок. А вы тогда что предполагали?

 
Даже не думал как это работает. Я их вообще стараюсь не использовать. Каждый раз при обращении, он считывается из файла или только храниться там. Это большая разница.
 
zhuki >>:
Даже не думал как это работает. Я их вообще стараюсь не использовать. Каждый раз при обращении, он считывается из файла или только храниться там. Это большая разница.

Об этом я тоже как-то не думал... Впрочем, это легко проверить: написать скрипт, ктр. создает, а затем в цикле считывает GV, и посмотреть - есть ли обращение к HDD.

Может, и кэширует этот файл при загрузке терминала и обновлении файла. Чего гадать...

 
Svinozavr >>:

Об этом я тоже как-то не думал... Впрочем, это легко проверить: написать скрипт, ктр. создает, а затем в цикле считывает GV, и посмотреть - есть ли обращение к HDD.

Может, и кэширует этот файл при загрузке терминала и обновлении файла. Чего гадать...

сброс на диск происходит при выключении терминала или при нажатии F3.

поэтому снятие зависшего терминала (или просто аварийное завершение) - не сохраняет ГП на диск. Но это очень редкая ситуация.

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