Используйте в советнике "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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уважаемые разработчики, может вы все-таки обратите внимание на эту проблему.