Проблема" может заключаться в том, что индикаторы используют ограничение, т.е. функцию IndicatorCounted() для того, чтобы не перерисовывать бары.
Смена таймфрейма сбрасывает это, а WindowRedraw() - нет. Ее функция заключается в перерисовке объектов, а не индексов индикаторов.
void WindowRedraw(
)
Перерисовывает текущий график принудительно. Обычно используется после изменения свойств объектов.
Я знаю, что обычно я пересчитываю 1000 баров или около того для большинства вещей, которые я пишу, и это запускается нажатием правой кнопки мыши Refresh.
Если вы не сильно ограничите цикл для индикатора, вы получите обновление индикатора на каждом тике.
Спустя почти два месяца я получил твой последний ответ. Я просто не знаю, как я пропустил это. У меня все еще проблемы с "перерисовкой моего индикатора". теперь я попытаюсь решить проблему с помощью информации, которую вы мне дали. спасибо вам большое,,,,
только что, спустя почти два месяца, я получил твой последний ответ. Я просто не знаю, как я пропустил это. У меня все еще проблемы с "перерисовкой индикатора". теперь я попытаюсь решить проблему с помощью информации, которую вы мне дали. спасибо вам большое, .
Я прочитал эту тему и думаю, что в вашем коде есть проблема => функция WindowRefresh() вам не поможет.
я предполагаю, что я пытаюсь сбросить индикатор, чтобы заставить его перерисовать все снова с самого начала!? моя проблема в том, что я использую функцию, которая изменяет прошлые данные в функции новых данных, и в результате мой график становится массой с течением времени. Мне нужно периодически перерисовывать весь индикатор. в последнее время я меняю таймфрейм, так что когда я возвращаюсь к тому таймфрейму, на котором я был, я получаю чистые окна графика (перерисованные). вот схема моего кода:
.
intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- check for possible errorsif(counted_bars<0)return(-1);
//---- last counted bar will be recountedif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
if(limit>GV)limit = GV;
//---- main loopfor(inti=limit; i>=1; i--){{calculatesthevariableandfeedthebuffers}return(0);}
intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- check for possible errorsif(counted_bars<0)return(-1);
//---- last counted bar will be recountedif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
doublestartTime=GetTickCount();
if(limit>GV)limit = GV;
//---- main loopfor(inti=limit; i>=1; i--){{calculatesthevariableandfeedthebuffers}doublefinishTime=GetTickCount();
Print("Calculation time is ",(finishTime-startTime)/1000.0," seconds");
return(0);}
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
Это перерисовывает видимую часть индикатора на каждом тике, но не бары, которые находятся вне поля зрения.
GV - это глобальная переменная, которую я использую для установки предела в зависимости от того, сколько времени назад я хочу провести обратное тестирование.
Ребята, вы просто супер!!! Я реализую этот код сегодня днем.
Проблема" может заключаться в том, что индикаторы используют ограничение, т.е. функцию IndicatorCounted()
для того, чтобы не перерисовывать бары.
Смена таймфрейма сбрасывает это, а WindowRedraw() - нет. Ее функция заключается в перерисовке объектов, а не индексов индикаторов.
Я знаю, что обычно я пересчитываю 1000 баров или около того для большинства вещей, которые я пишу, и это
запускается нажатием правой кнопки мыши Refresh.
Если вы не сильно ограничите цикл для индикатора, вы получите обновление индикатора на каждом тике.
Спасибо большое,
Вы "плохо читаете"?
Спустя почти два месяца я получил твой последний ответ. Я просто не знаю, как я пропустил это. У меня все еще проблемы с "перерисовкой моего индикатора". теперь я попытаюсь решить проблему с помощью информации, которую вы мне дали. спасибо вам большое,,,,
Покажите свой код...
Привет, Фи,
только что, спустя почти два месяца, я получил твой последний ответ. Я просто не знаю, как я пропустил это. У меня все еще проблемы с "перерисовкой индикатора". теперь я попытаюсь решить проблему с помощью информации, которую вы мне дали. спасибо вам большое,
.
я предполагаю, что я пытаюсь сбросить индикатор, чтобы заставить его перерисовать все снова с самого начала!? моя проблема в том, что я использую функцию, которая изменяет прошлые данные в функции новых данных, и в результате мой график становится массой с течением времени. Мне нужно периодически перерисовывать весь индикатор. в последнее время я меняю таймфрейм, так что когда я возвращаюсь к тому таймфрейму, на котором я был, я получаю чистые окна графика (перерисованные). вот схема моего кода:
. спасибо большое,,,,
Что такое ГВ?
В последнее время я делаю примерно следующее:
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
Это перерисовывает видимую часть индикатора на каждом тике, но не бары, которые находятся вне поля зрения.
Что такое ГВ?
В последнее время я делаю примерно следующее:
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
Это перерисовывает видимую часть индикатора на каждом тике, но не бары, которые находятся вне поля зрения.
Ребята, вы просто супер!!! Я реализую этот код сегодня днем.
Спасибо за вашу щедрость,