Используйте в советнике "MQL4: Глобальные переменные" , и тогда ничего страшно не будет.
Но ведь в тестере же после перекомпиляции параметры не сбрасываются, чтоб сбросились нужно нажать кнопку Сброс, а в реале почему-то наоборот. Любую проблему можно решить множеством способов, и глобальные переменные конечно же решают эту проблему, но все-таки хотелось бы способ попроще, не привлекающий дополнительных инструментов.
Наверное разработчики сделали сброс настроек эксперта по умолчанию после компиляции из-за того что пользователь может после правки кода эксперта произвести модификацию этих настроек (добавить новые параметры/убрать старые, а также поменять значения имеющихся).
Хотя эта проблема меня тоже иногда напрягает. Но в большинстве же случаев я наоборот пользуюсь преимуществами этой фичи. У меня висит 19 советников и в случае когда я хочу что-то поменять во внешних параметрах советника сразу на всех 19, то просто открываю MetaEditor, меняю внешнюю переменную и компилирую советник. И таким образом сразу же на 19 советниках происходит изменение внешнего параметра. Таким образом экономится масса времени!
Но тем не менее если разработчики внесли бы какую-нибудь опцию в свойства терминала типа "Не изменять входные параметры эксперта на чартах после компиляции", то многие пользователи были бы очень рады такой опции, которая по умолчанию (после установки программы) разумеется должна находиться в отключенном состоянии.
Хотя эта проблема меня тоже иногда напрягает. Но в большинстве же случаев я наоборот пользуюсь преимуществами этой фичи. У меня висит 19 советников и в случае когда я хочу что-то поменять во внешних параметрах советника сразу на всех 19, то просто открываю MetaEditor, меняю внешнюю переменную и компилирую советник. И таким образом сразу же на 19 советниках происходит изменение внешнего параметра. Таким образом экономится масса времени!
Но тем не менее если разработчики внесли бы какую-нибудь опцию в свойства терминала типа "Не изменять входные параметры эксперта на чартах после компиляции", то многие пользователи были бы очень рады такой опции, которая по умолчанию (после установки программы) разумеется должна находиться в отключенном состоянии.
Просто сохраняйте свои параметры : Свойства Эксперта - Сохранить.
А когда что-нибудь изменили в эксперте - Свойства Эксперта - Загрузить.
А когда что-нибудь изменили в эксперте - Свойства Эксперта - Загрузить.
Просто сохраняйте свои параметры : Свойства Эксперта - Сохранить.
А когда что-нибудь изменили в эксперте - Свойства Эксперта - Загрузить.
А когда что-нибудь изменили в эксперте - Свойства Эксперта - Загрузить.
В данной ситуации подразумевается то что экперт может стоять активным на реале и Сохранить/Загрузить не будет эффективным так как эксперт может произвести какие-то торговые действия в промежуток времени между компиляцией и Загрузкой предварительно сохранённых параметров. В этом то как раз и заключается всё неудобство.
Поднимаю тему заново, может на нее кто-нибудь случайно обратит внимание. При перекомпиляции эксперта, параметры экспертов работающих в терминале сбрасываются в значения по умолчанию. При работе на реале, это фатально.
Скомпилируйте этот советник, запустите на любом графике. Затем измените в MetaEditor значения входных параметров и заново скомпилируйте. Посмотрите логи. Думаю, это даст ответ как сохранять параметры между компиляциями, например, писать значения в файл в deinit() и считывать из файла в init().
//+------------------------------------------------------------------+ //| CheckInputs.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| http://www.metaquotes.ru/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.ru/" //---- input parameters extern int ExtParam1=4; extern int ExtParam2=7; extern double ExtParam3=25.0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Print("Инициализация: ExtParam1=",ExtParam1," ExtParam2=",ExtParam2," ExtParam3=",ExtParam3); Print("Код причины деинициализации:",UninitializeReason()); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Print("deinit: ExtParam1=",ExtParam1," ExtParam2=",ExtParam2," ExtParam3=",ExtParam3); Print("Код причины деинициализации:",UninitializeReason()); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //---- return(0); } //+------------------------------------------------------------------+
Уже неоднократно говорилось: "использование значений по умолчанию может дать неожиданный эффект". Чтобы не было ничего фатального, используйте явное назначение переменных. Для этого существует функция init.
Вообще, принцип умолчания - очень вреден. Лично моё мнение.
Вообще, принцип умолчания - очень вреден. Лично моё мнение.
Если воспользоваться идеей Rosh’а, т.е. сохранять параметры в файл, когда происходит компиляция, а потом их загружать, то возникает другая проблема, попробую описать ее. Когда эксперт прикрепляется к графику, у него в ручную задаются параметры, если провести теперь компиляцию, то эксперт продолжит правильно работать (за счет сохранения/загрузки параметров через файл), а вот в интерфейсе будут отображаться значения по умолчанию. Уже на следующий день, человек забудет, что проводил перекомпиляцию и, посмотрев параметры эксперта, будет в шоке.
Так ведь это защита от случайного сброса входных параметров! Вы всегда можете сознательно снять советника с графика и заново запустить с нужными параметрами. Зачем усложнять, так мы можем вернуться к байке о японской бензопиле.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уважаемые разработчики, может вы все-таки обратите внимание на эту проблему.