- Ошибка cannot set timer при импорте данных индикатора
- Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6.
- Применяете ли вы нейросети в торговле на финансовых рынках?

- www.mql5.com
Здравствуйте! У клиента при работе с моим советником возникла ошибка "cannot set millisecond timer(100)". Такое случилось впервые за всю историю советника. Изучала форум, но ответа на свой вопрос не нашла. Мне хотелось бы узнать, в чем здесь вообще может быть ошибка, то есть куда рыть, что спрашивать. Спасибо!
int count=5;
{while((err!=0)&&(count>0))
{
ResetLastError();
EventSetMillisecondTimer(MSTimerSet); //Установка таймера XXX миллисекунд
err=GetLastError();
Print("EventSetMillisecondTimer n=",count," err >>",err);
{if(err!=0){Sleep(50);}}
}}//while((err!=0)&&(count>0))
int count=5;
{while((err!=0)&&(count>0))
{
ResetLastError();
EventSetMillisecondTimer(MSTimerSet); //Установка таймера XXX миллисекунд
err=GetLastError();
Print("EventSetMillisecondTimer n=",count," err >>",err);
{if(err!=0){Sleep(50);}}
}}//while((err!=0)&&(count>0))
Тогда уж так:
int counter=1;
do
{
ResetLastError();
EventSetMillisecondTimer(Timer);
error=GetLastError();
Print("EventSetMillisecondTimer. Attempt=",counter," Error=",error);
if(error!=0) Sleep(1000);
counter++;
}
while(error!=0 && !IsStopped());
Тогда уж так:
int counter=1;
do
{
}
while(error!=0 && !IsStopped());
Тут смысл смотреть при запуске проинициализирован ли таймер. Из цикла можно выйти при удачной попытке (внутри код ошибки обновляется) или по отмене. Выходить из цикла и идти в нерабочий теймер бессмысленно, так как таймер не работает. Поэтому идет перебор пока не запустится таймер. При желании можно добавить самоубийство робота при ххх неудачной попытке.
Это не бесконечный цикл. В нем есть условие выхода.
Тут смысл смотреть при запуске проинициализирован ли таймер. Из цикла можно выйти при удачной попытке (внутри код ошибки обновляется) или по отмене. Выходить из цикла и идти в нерабочий теймер бессмысленно, так как таймер не работает. Поэтому идет перебор пока не запустится таймер. При желании можно добавить самоубийство робота при ххх неудачной попытке.
Это не бесконечный цикл. В нем есть условие выхода.
Давайте объясню как я вижу проблему.
Я подключаюсь к VPS через mstsc. Запускаю терминал, а в нем запускаю робота, который работает по таймеру. Таймер может выдать ошибку по неизвестным причинам. А может и не выдать, а запуститься.
Этот цикл пытается установить таймер, пока он не запустится и не выдаст ошибку "0" (такая вероятность сохраняется, и можно запустить его с n-ной попытки). Как только это происходит, цикл завершается и программа переходит в таймер. Еще раз повторю: таймер работает, но по каким-то причинам может выдать ошибку и пойти дальше. Без данного цикла на стадии инициализации можно получить ошибку и перейти в нерабочий таймер, что неприемлемо.
Тут я вижу: прошла инициализация таймера или нет и принимаю решение, что делать дальше. Понятно, что я не буду запускать программу и оставлять её на самотек не убедившись, что она хотя бы запустилась (прошла стадию инициализации). Как только таймер запущен, он уже работает без проблем, и программу можно оставить отключившись от VPS.
В общем, я обратил внимание, что хороший стиль программирования предполагает такой код условия, что цикл 100% завершится, и он был намечен в исходном варианте, где счетчик судя по всему должен был уменьшаться на каждом проходе, но видимо оператор декремента съелся ;-). Если потенциально бесконечный цикл попадет к какому-нибудь пользователю, который не удосужится его проконтролировать, то программа будет точно также нерабочая. По событию тика разве нельзя проверять, был ли создан таймер, и если нет, то пытаться его создать?
В принципе, все это обсуждение - ни к чему, потому что налицо баг терминала. К сожалению, от MQ нет никаких разъяснений.
// while ((err! = 0) && (count> 0))
Привет ребята,
Я использую функцию iCustom () в своем советнике, и когда я прикрепляю ее к графику, «не могу установить таймер (1)», показанный на вкладке эксперта!
Я добавил этот код в функцию OnInit (), но проблема все еще не решена!
Пожалуйста, помогите мне!
Спасибо за ваш отзыв заранее!

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования