Помогите с паузой

 

Пытаюсь сделать паузу в индикаторе.

установка

Sleep(с любыми параметрами);

не даёт никакого результата. Нужно это дело для прогонки int start каждую секунду а не раз в тик. Приходится так делать так как для счёта нужной мне циферки считаются данные из других графиков, которые изменяются не синхронно с тем для которого я считаю индикатор.

Короче что за бред, почему не пашет sleep?

И как его заменить?

 

Потому что Sleep не работает в индикаторах.

Функция задерживает выполнение текущего эксперта или скрипта на определенный интервал.
Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить.
В функцию встроена проверка состояния флага остановки эксперта каждую 0.1 секунды.

 
Rosh писал (а) >>

Потому что Sleep не работает в индикаторах.

Угу эьто я читал. А как решается проблема?

В принципе решил загнав это дело в скрипт. там всё прекрасно выполняется.


Но если не сложно опишите как решать вопрос по умному. думаю многим будет полезно.

 
Зачем вам пауза? Вы еще наверно хотите зациклить индикатор?
 

Это не совсем индикатор. это индекс и он мне нужен с точностью до секунды.

Собственно именно зациклить я и хочу. точнее уже зациклил.

собственно код:

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);

}

 
stolki писал (а) >>

Это не совсем индикатор. это индекс и он мне нужен

:0) Индекс это не индикатор? Воспользуйтесь поиском, где-то я объяснял как это можно сделать.

 
Integer писал (а) >>

:0) Индекс это не индикатор? Воспользуйтесь поиском, где-то я объяснял как это можно сделать.

обижаете(((( )))))

поиском уже рылся. не нашел. но впрочем то что я имею сейчас меня как бы и устраивает)

 

Примерно так: на каждом символе висит индикатор, который подает команду обновления (см. period_convertor) окна на котором висит этот (главный) индикатор. Зацикленный индикатор не будет работать, даже если придумать способ для паузы.

 
Integer писал (а) >>

Примерно так: на каждом символе висит индикатор, который подает команду обновления (см. period_convertor) окна на котором висит этот (главный) индикатор. Зацикленный индикатор не будет работать, даже если придумать способ для паузы.

Угу. точно попробовал. и правда не работает. Вешает намертво терминал.

Решение видится как запрос индикатором данных из скрипта, но это пока думаю лишнее.

Сейчас столкнулся со странной проблемой другого характера.


Цикл работает, показатель считается. но проблема в том что после всплесков значение словно прилепает к высокому значению показателя. И уже не хочет возвращаться обратно.

Обнормалить показания получается только перезапуском скрипта.

Пытаюсь обнулять переменные. как то не очень помогает...



В душе не представляю в чём проблема. Может опять особенность которой я незнаю?

 
stolki писал (а) >>

Угу. точно попробовал. и правда не работает. Вешает намертво терминал.

Решение видится как запрос индикатором данных из скрипта, но это пока думаю лишнее.

Сейчас столкнулся со странной проблемой другого характера.

Цикл работает, показатель считается. но проблема в том что после всплесков значение словно прилепает к высокому значению показателя. И уже не хочет возвращаться обратно.

Обнормалить показания получается только перезапуском скрипта.

Пытаюсь обнулять переменные. как то не очень помогает...

Собственно код.

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);

}

В душе не представляю в чём проблема. Может опять особенность которой я незнаю?

Это не тот код.

 
Integer писал (а) >>

Это не тот код.

Это тот код. Но я его уже переписал. Конструкция та же)

А проблема была в обновлении данных.

функция RefreshRates( ) мне помогла)

Причина обращения: