Потому что Sleep не работает в индикаторах.
Функция задерживает выполнение текущего эксперта или скрипта на определенный интервал.
Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить.
В функцию встроена проверка состояния флага остановки эксперта каждую 0.1 секунды.
Угу эьто я читал. А как решается проблема?
В принципе решил загнав это дело в скрипт. там всё прекрасно выполняется.
Но если не сложно опишите как решать вопрос по умному. думаю многим будет полезно.
Это не совсем индикатор. это индекс и он мне нужен с точностью до секунды.
Собственно именно зациклить я и хочу. точнее уже зациклил.
собственно код:
int start()
{
//----
int i=1;
int x;
while(i>=0)
{
x=(Close[0]-iClose("EURJPY",0,0)/iClose("USDJPY",0,0))*10000;
Comment(x);
Sleep(1000);
}
//----
return(0);
}
Примерно так: на каждом символе висит индикатор, который подает команду обновления (см. period_convertor) окна на котором висит этот (главный) индикатор. Зацикленный индикатор не будет работать, даже если придумать способ для паузы.
Примерно так: на каждом символе висит индикатор, который подает команду обновления (см. period_convertor) окна на котором висит этот (главный) индикатор. Зацикленный индикатор не будет работать, даже если придумать способ для паузы.
Угу. точно попробовал. и правда не работает. Вешает намертво терминал.
Решение видится как запрос индикатором данных из скрипта, но это пока думаю лишнее.
Сейчас столкнулся со странной проблемой другого характера.
Цикл работает, показатель считается. но проблема в том что после всплесков значение словно прилепает к высокому значению показателя. И уже не хочет возвращаться обратно.
Обнормалить показания получается только перезапуском скрипта.
Пытаюсь обнулять переменные. как то не очень помогает...
В душе не представляю в чём проблема. Может опять особенность которой я незнаю?
Угу. точно попробовал. и правда не работает. Вешает намертво терминал.
Решение видится как запрос индикатором данных из скрипта, но это пока думаю лишнее.
Сейчас столкнулся со странной проблемой другого характера.
Цикл работает, показатель считается. но проблема в том что после всплесков значение словно прилепает к высокому значению показателя. И уже не хочет возвращаться обратно.
Обнормалить показания получается только перезапуском скрипта.
Пытаюсь обнулять переменные. как то не очень помогает...
Собственно код.
int start(){
//----
int i=60;
int ind;
int jpy;
int cad;
int aud;
int chf;
while(i>=0)
{
ind=0;
jpy=0;
cad=0;
aud=0;
chf=0;
jpy=(iClose("EURJPY",0,0)/iClose("USDJPY",0,0)-Close[0])*10000;
cad=(iClose("EURCAD",0,0)/iClose("USDCAD",0,0)-Close[0])*10000;
cad=(iClose("AUDUSD",0,0)/iClose("AUDEUR",0,0)-Close[0])*10000;
chf=(iClose("EURCHF",0,0)/iClose("USDCHF",0,0)-Close[0])*10000;
ind=(jpy+cad+aud+chf)/4;
Alert(ind);
Sleep(1000);
ind=0;
}
//----
return(0);
}
В душе не представляю в чём проблема. Может опять особенность которой я незнаю?
Это не тот код.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пытаюсь сделать паузу в индикаторе.
установка
Sleep(с любыми параметрами);
не даёт никакого результата. Нужно это дело для прогонки int start каждую секунду а не раз в тик. Приходится так делать так как для счёта нужной мне циферки считаются данные из других графиков, которые изменяются не синхронно с тем для которого я считаю индикатор.
Короче что за бред, почему не пашет sleep?
И как его заменить?