Как имитировать поступление тика?

 

Возникла задача визуально подобрать коэффициенты (6 штук) в сложном индикаторе.

Сейчас делаю так: в индикаторе графически создаю шесть линеек с ползунками при помощи OBJ_LABEL. Потом двигаю ползунки мышью, считываю их новые значения и перерисовываю индикатор.

Все работает, только для перерисовки нужно ждать прихода нового тика. Хотелось бы делать это в выходные, но в выходные нет тиков. Зациклить индикатор, как известно, нельзя. Можно зациклить скрипт и как нибудь попробовать перерисовывать из него, хотя мне кажется, что все равно ничего не получится - все равно надо как-то толкнуть индикатор. Вызывать из меню "Обновить" тоже сильно утомительно.

Все бы отлично решилось, если найти какой-нибудь способ имитировать подачу нового тика на чарт. Тогда индикатор работал бы в своем штатном режиме и перерисовывался.

Может, кто-нибудь подскажет что полезное?

 
Попробуй так, загрузи в тестер пустой советник, т.е. который ничего не делает, задай визуализацию. запусти тестер и останови на паузу. Подгрузи на появившийся график свой индикатор и нажми воспроизведение. Измени скорость визуализации как тебе надо.
 

Спасибо, Roger!

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

Попробую автоматизировать команду меню "Обновить". Если получится, то меня это полностью устроит.

 

посмотри

https://www.mql5.com/ru/code/8717

там немного нужно переделать свой индикатор..

 

Спасибо, уже сделал "Обновление" при помощи отдельного скрипта

//scrAutoRefresh.mq4
#import "user32.dll"
   int GetParent (int hWnd);
   int PostMessageA (int hWnd, int Msg, int wParam, int lParam);
#import

#include <WinUser32.mqh>
//-------------------------------------------------------------------------------------------------
int start(){
   int intWindowHandle,intWindowHandle_Parent,intCommand;
   
   intCommand=33324;  // Refresh
   intWindowHandle=WindowHandle(Symbol(),Period());
   
   while(!IsStopped()) {
      intWindowHandle = GetParent(intWindowHandle);
      if (intWindowHandle==0) break;
      intWindowHandle_Parent = intWindowHandle;
   }
   
   while(!IsStopped()) {
      Sleep(500);
      PostMessageA(intWindowHandle_Parent,WM_COMMAND,intCommand,0);
   }
   return(0);
}
//-------------------------------------------------------------------------------------------------