Как запустить пересчет индикатора?

 

Обновление графика выполняется по команде PostMessageA(hwnd,WM_COMMAND,33324,0);

Однако при этом индикатор не пересчитывается. Подскажите как принудительно запустить пересчет?

 
borislg писал (а) >>

Обновление графика выполняется по команде PostMessageA(hwnd,WM_COMMAND,33324,0);

Однако при этом индикатор не пересчитывается. Подскажите как принудительно запустить пересчет?

большинство "честных" индикаторов считают по CLOSE сформированной свечи свчечи того тф на котором стоят т е CLOSE[1]

отсюда вывод

можно вместо клосе CLOSE[1] подать CLOSE[0] работающего бара получим пересчет...

а когда запускать дело хозяйское

где то в статьях есть о таком способе пересчета

 
Попробуйте
WindowRedraw( )
 
borislg писал (а) >>

Обновление графика выполняется по команде PostMessageA(hwnd,WM_COMMAND,33324,0);

Однако при этом индикатор не пересчитывается. Подскажите как принудительно запустить пересчет?

Открыть окно свойств индикатора и закрыть, нажав на кнопуку "ОК"

 
Integer писал (а) >>

Открыть окно свойств индикатора и закрыть, нажав на кнопуку "ОК"

если индикатор работает по CLOSE[1] толку нет от его перезапуска - перерисовки и прочих манипуляций

единственным критерием пересчета такого индикатора будет CLOSE свечи

 
YuraZ писал (а) >>

если индикатор работает по CLOSE[1] толку нет от его перезапуска - перерисовки и прочих манипуляций

единственным критерием пересчета такого индикатора будет CLOSE свечи

У автора темы почему-то встал такой вопрос, значит для его индикатора в этом есть какой-то смысл.

 
Integer писал (а) >>

У автора темы почему-то встал такой вопрос, значит для его индикатора в этом есть какой-то смысл.

видимо да!

но автор возможно не знает как считается его индикатор

я просто подсказываю что если по CLOSE[1] то никакого смысла нет

--

если не считает по close[1] то приведенное решение конечно корректно

--

правда любой тик тогда пересчитает индикатор ! если конечно индикатор не "ФЛЮГЕРНЫЙ"

т к флюгерные индикаторы именно лечатся передергиванием их на графике

 

По своему печальному опыту могу сказать, что потребность пересчитывать индикатор инстинктивно возникает, если он переписывается.

Кажется, что если его почаще обновлять, то ему получшает.

Научился с грехом пополам обновлять индикаторы с любой частотой программным переключением ТФ с помощью WM_COMMAND и убедился в полной бесполезности этого процесса.

Это похоже на то, как у близорукого начинается старческая дальнозоркость. Он-то надеется, что постепенно в какой-то момент зрение станет нормальным, а фактически однажды

ложится спать с -5, а просыпается с +1.

 

Переключение ТФ не самый красивый, но всетаки работающий механизм: перешли на другой тайм и не дав ему даже полностью отрисоваться вернулись обратно - быстрая переинициализация. Вот здесь готовый наборчик скриптов (пере)инициализации/обновления. Описание - здесь (в подразделе Сервисные скрипты).

 

Привет.

Подскажите пожалуйста где ошибка, индикатор по идеи должен пересчитаться раз в сутки:

extern int       StartHour=2;
extern int       StartMinute=0;
datetime prevDay=0;
bool fTime;
//---------------
int init()
  {
   fTime = true;    
  
   return(0);
  }
//---------------
int start()
  {

   int StartMinutesIntoDay=((StartHour*60)+StartMinute)*60;
        
   datetime cDay = iTime(NULL,PERIOD_D1,0) + StartMinutesIntoDay;

      
   if (cDay != prevDay || fTime)  
   {

   //---тут считаем

   fTime = false;
   prevDay = cDay;
   }

   return(0);
  }
 
Roger писал (а) >>
Попробуйте
WindowRedraw( )

Прежде всего всех благодарю за помощь. Задача немного изменилась. Оказывается это не работает на каждый тик советник.

Дело в том, что я формирую свой индикатор как некую новую валютную пару, открываю ее в автономном режиме, график обновляется, индикаторы на нем тоже обновляются,

но советник на обновление графика не реагирует. Можно его как-то заставить работать при изменении графика?

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