Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй свой счет с помощью банковских карт через Gate2Shop
Denis Gaynetdinov
224
Denis Gaynetdinov 2015.08.25 23:48 
Доброго времени суток.
Интересует такой вопрос:
В советнике используются переменные, много.
Они задаются по ходу алгоритма и направляют дальнейшие телодвижения советника.
Не потеряются ли они при перезапуске терминала/сервера?

И еще один вопрос, одна функция по выполнению советника запрашивается несколько раз, она пересчитывается при каждом запросе или 1 раз за проход кода?
Рустам
3602
Рустам 2015.08.25 23:53  

1)потеряются, храните в глобальных переменных. или в файле

2) скока раз вызываете столько раз пересчитывается 

Denis Gaynetdinov
224
Denis Gaynetdinov 2015.08.26 00:03  
FAQ:

1)потеряются, храните в глобальных переменных. или в файле

Спасибо.
Можно попросить какую либо инструкцию по поводу хранения в файле?
Рустам
3602
Рустам 2015.08.26 00:25  
Ihor Herasko
8444
Ihor Herasko 2015.08.26 07:06  

Шесть символов не дописали ;) https://docs.mql4.com/ru/files

А можно еще и дополнить вот так 

LRA
321
LRA 2015.08.26 08:28  
Pecmop: Не потеряются ли переменные при перезапуске терминала/сервера?

Перезапуск терминала состоит из двух фаз: ВЫХОД и повторный ЗАПУСК

Переменные  при ВЫХОДЕ терминала потеряются, так как занятая под них память освобождается.

При ЗАПУСКЕ терминала память под переменные будет выделена заново. В советнике наверняка есть инициализация (функция OnInit) переменных начальными значениями, что и будет выполнено. Если нужны прежние значения, то можно в прошлом сеансе работы попытаться сохранить их в файл в функции OnDeinit. Однако при аварийном выключении компьютера (дядя Петя щелкнул в подъезде рубильником) функция OnDeinit бесполезна. Тогда нужно периодически (раз в час, раз в ...) производить сохранение накопленной информации в файл. В функции OnInit производить проверку наличия файла и загружать данные из него. При отсутствии файла инициализировать переменные стандартными значениями. Но тогда в случае изменения стандартных значений придется перекомпилировать советник. Чтобы избежать этого надо иметь два файла - стандартных значений и последних значений. Самая простая логика: Загружаем из первого файла стандартные значения. Открываем второй файл. В случае ошибки успокаиваемся. Иначе загружаем последние значения.

Насчет функции. Если функция сложная (долго выполняется) и все разы возвращает одно и то же значение - целесообразно вызвать один раз и запомнить результат.

Denis Gaynetdinov
224
Denis Gaynetdinov 2015.08.26 21:32  
LRA:
Pecmop: Не потеряются ли переменные при перезапуске терминала/сервера?

Перезапуск терминала состоит из двух фаз: ВЫХОД и повторный ЗАПУСК

Переменные  при ВЫХОДЕ терминала потеряются, так как занятая под них память освобождается.

При ЗАПУСКЕ терминала память под переменные будет выделена заново. В советнике наверняка есть инициализация (функция OnInit) переменных начальными значениями, что и будет выполнено. Если нужны прежние значения, то можно в прошлом сеансе работы попытаться сохранить их в файл в функции OnDeinit. Однако при аварийном выключении компьютера (дядя Петя щелкнул в подъезде рубильником) функция OnDeinit бесполезна. Тогда нужно периодически (раз в час, раз в ...) производить сохранение накопленной информации в файл. В функции OnInit производить проверку наличия файла и загружать данные из него. При отсутствии файла инициализировать переменные стандартными значениями. Но тогда в случае изменения стандартных значений придется перекомпилировать советник. Чтобы избежать этого надо иметь два файла - стандартных значений и последних значений. Самая простая логика: Загружаем из первого файла стандартные значения. Открываем второй файл. В случае ошибки успокаиваемся. Иначе загружаем последние значения.

Насчет функции. Если функция сложная (долго выполняется) и все разы возвращает одно и то же значение - целесообразно вызвать один раз и запомнить результат.

Спасибо, в особенности за последнюю строку, как же сам не догадался)
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий