Скачать MetaTrader 5

Изменение входных параметров индикатора

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Посмотри на Топ сигналов MetaTrader 5. Выбери лучший и подпишись!
Dmitriy Demidov
1480
Dmitriy Demidov 2016.09.02 08:04 

Добрый день!

Интересует следующий вопрос (искал в поисковике, ничего даже близко не нашел):

Есть индикатор, который имеет параметр типа "bool" и который по-умолчанию выключен (false).

Данный параметр отвечает за отправку e-mail и мне надо чтобы пользователь открывал входные параметры, ставил этот параметр в "true" нажимал ОК, а после отправки письма данный параметр снова возвращался в положение "false".

Внутри кода это сделать легко, но когда пользователь снова заходит в настройки этот параметр так и стоит "true" и не заметив юзер отправит письмо еще раз, а это не нужно.

В ОБЩЕМ: надо чтобы при каждом открытие окна с параметрами, параметр "bool" = false;

Можно так сделать? и если можно то как?

Заранее спасибо!

Vladimir Karputov
Модератор
46117
Vladimir Karputov 2016.09.02 08:14  
Dmitriy Demidov:

Добрый день!

Интересует следующий вопрос (искал в поисковике, ничего даже близко не нашел):

Есть индикатор, который имеет параметр типа "bool" и который по-умолчанию выключен (false).

Данный параметр отвечает за отправку e-mail и мне надо чтобы пользователь открывал входные параметры, ставил этот параметр в "true" нажимал ОК, а после отправки письма данный параметр снова возвращался в положение "false".

Внутри кода это сделать легко, но когда пользователь снова заходит в настройки этот параметр так и стоит "true" и не заметив юзер отправит письмо еще раз, а это не нужно.

В ОБЩЕМ: надо чтобы при каждом открытие окна с параметрами, параметр "bool" = false;

Можно так сделать? и если можно то как?

Заранее спасибо!

Открытие окна с параметрами и изменение любого параметра MQL5 индикатора с последующим нажатием кнопки "ОК" - это перезапуск индикатора. То есть если выбран параметр типа "bool" и он установлен в "true" - значит этот параметр будет в таком состоянии, пока пользователь заново не изменит этот параметр в окне входящих параметров (то есть пока он не перезапустит индикатор).

Выход из такой ситуации:

  1. Как и сейчас - выбор параметра, перезапуск, снова поменять параметр назад.
  2. Ввести код перехвата клавиатуры - тогда для отсылки отладочной информации нужна будет особая комбинация клавиш - если индикатор отловит такую комбинацию - значит отчёт улетит на почту.

Ihor Herasko
9061
Ihor Herasko 2016.09.02 08:17  
Не нужно тогда никакого параметра. Убрать его из списка настроечных параметров. Открытие окна с параметрами и последующее нажатие ОК приводит к возникновению события Init и, соответственно, к вызову обработчика OnInit(). Вот сюда и следует вставить одноразовую отправку письма. Если нужно, чтобы повторные изменения параметров индикатора не приводили к отправке письма, то достаточно записать факт отправки в файл или же просто в глобальные переменные терминала. Затем, при каждом входе в OnInit проверить, не было ли уже отправлено письмо.
Maxim Kuznetsov
9816
Maxim Kuznetsov 2016.09.02 08:58  
Dmitriy Demidov:

Добрый день!

Интересует следующий вопрос (искал в поисковике, ничего даже близко не нашел):

Есть индикатор, который имеет параметр типа "bool" и который по-умолчанию выключен (false).

Данный параметр отвечает за отправку e-mail и мне надо чтобы пользователь открывал входные параметры, ставил этот параметр в "true" нажимал ОК, а после отправки письма данный параметр снова возвращался в положение "false".

Внутри кода это сделать легко, но когда пользователь снова заходит в настройки этот параметр так и стоит "true" и не заметив юзер отправит письмо еще раз, а это не нужно.

В ОБЩЕМ: надо чтобы при каждом открытие окна с параметрами, параметр "bool" = false;

Можно так сделать? и если можно то как?

Заранее спасибо!

Индикаторы перезапускаются при малейшем шорохе и при их запуске (в OnInit или при первом тике) сложновато бывает разобраться с причиной запуска,

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

Dmitriy Demidov
1480
Dmitriy Demidov 2016.09.06 05:01  
Всем спасибо большое за ответы......
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий