TimeOut - страница 4

 
Renat, не смотрели ещё? Ситуация так и не изменилась....
и ещё вопрос: не работает перенос значений на один бар назад:
	for ( int i = DrowBars; i >= 0; i -- )
	{ buf0[i+1] = buf0[i]; buf1[i+1] = buf1[i]; }


я во внутрь алерт вставлял - никакой реакции - т.е. он не заходит в тело цикла -> т.е. DrowBars < 0 - как такое могло случиться? Немного покапался - вычислил, что DrowBars принимает значение -1 после строки

	if ( Bars <= DrowBars ) { DrowBars = Bars - 1; }


явно ошибка - или моя или ваша...
Ещё немного покапался - обнаружил что Bars = 0! Вызываю Алерт( Барс ) из инит - а он говорит 0.
Теперь понятно - почему не работает "обнулялка", и почему DrowBars = -1....



А ещё нашёл интересный и красивый глюк =) - изменение размера окна (мышкой) индикатор интерпретирует как новый тик - посмотрите на примере таймаута - на других индикаторах используется IndicatorCounted, и поэтому не видно..

 
В связи с вышеизложенным - подправил скрипт - "TimeOut"
- при смене ТФ/инструмента/параметров индикатора очищаются старые данные
- корректно работает отображение значений индикатора

ПОка всё, и я, если чесно, не представляю - что можно ещё придумать... Пожывём - увидим ;)
 
А ещё нашёл интересный и красивый глюк =) - изменение размера окна (мышкой) индикатор интерпретирует как новый тик - посмотрите на примере таймаута - на других индикаторах используется IndicatorCounted, и поэтому не видно..

komposter - это же хорошо :) Должны быть события пересчета индикатора помимо тиков !
 
А ещё нашёл интересный и красивый глюк =) - изменение размера окна (мышкой) индикатор интерпретирует как новый тик - посмотрите на примере таймаута - на других индикаторах используется IndicatorCounted, и поэтому не видно..

komposter - это же хорошо :) Должны быть события пересчета индикатора помимо тиков !

А я не говорил, что это плохо =) просто нашёл, может кому понравится ;)
Жаль только, что с экспертами не работает....
 
Renat, не смотрели ещё? Ситуация так и не изменилась....

К сожалению, совсем упустил из виду этот вопрос.

Немного покапался - вычислил, что DrowBars принимает значение -1 после строки
if ( Bars <= DrowBars ) { DrowBars = Bars - 1; }

Все верно, на пустом графике Bars равно нулю, после чего получаем DrowBars=0-1=-1
Я вообще рекомендую любого эксперта начинать со строки:
if(Bars<100) return(0);

Не нужно даже думать о том, чтобы принимать решение, если на графике меньше 100 (а лучше 1000) баров.
 
Все верно, на пустом графике Bars равно нулю, после чего получаем DrowBars=0-1=-1
Я вообще рекомендую любого эксперта начинать со строки:
if(Bars<100) return(0);

Не нужно даже думать о том, чтобы принимать решение, если на графике меньше 100 (а лучше 1000) баров.

Ренат, почему же на пустом? График как график, бары есть. Больше тысячи..
Или вы про что-то другое говорите? В смысле, может, индикатор его воспринимает как пустой?
Объясните, плз...
 
Ренат, почему же на пустом? График как график, бары есть.

Старайтесь, пожалуйста, приводить полные фрагменты кода - это половина ответа.
К сожалению, гарантированных ответов нельзя дать лишь по кускам из пары строк кода.
 
Ренат, почему же на пустом? График как график, бары есть.

Старайтесь, пожалуйста, приводить полные фрагменты кода - это половина ответа.
К сожалению, гарантированных ответов нельзя дать лишь по кускам из пары строк кода.

полный код на первой странице - "TimeOut"
Причина обращения: