CHARTEVENT_CHART_CHANGE в MQL5

 
Почему то эти события запаздывают в MT5, или их нет нет, потом вывалилась куча, в МТ4 объект за графиком движется по событию CHARTEVENT_CHART_CHANGE (если менять его координаты), а в MT5 жутко запаздывает, кто нибудь сталкивался с таким?
 
Иногда такое может быть, если после изменения свойств, нет принудительной перерисовки ChartRedraw()
 
Vasiliy Pushkaryov #:
Иногда такое может быть, если после изменения свойств, нет принудительной перерисовки ChartRedraw()

Перерисовка есть

 
pivalexander #:

Перерисовка есть

void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam
                 )
  {

   if(id==CHARTEVENT_CHART_CHANGE)
     {

      // ваш код
     }

  }

У меня так прекрасно работает.

Полный код: https://www.mql5.com/ru/code/34521
Метка с значением максимального расстояния цены на графике
Метка с значением максимального расстояния цены на графике
  • www.mql5.com
Отображает максимальное расстояние цены в пунктах от минимальной до максимальной цен на графике.
 

Еще может быть такое, наверное, что если объект не меняет сам chart, то может быть нужно из самих объектов слать события этих объектов, кастомные, и ловить их на графике.

https://www.mql5.com/ru/docs/event_handlers/onchartevent

CHARTEVENT_CUSTOM + n — идентификатор пользовательского события, где n находится в диапазоне от 0 до 65535.

https://www.mql5.com/ru/docs/eventfunctions/eventchartcustom


Ну или еще что-то)

Документация по MQL5: Обработка событий / OnChartEvent
Документация по MQL5: Обработка событий / OnChartEvent
  • www.mql5.com
OnChartEvent - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Короче проблема в том, что в МТ5 когда перемещаешь график мышкой с зажатой левой кнопкой, события ни какие не приходят, только при отпускании левой кнопки мыши, ну может еще пару раз что нибудь проскочит во время перемещения и все, в МТ4 гораздо лучше с этим делом
 
pivalexander #:
Короче проблема в том, что в МТ5 когда перемещаешь график мышкой с зажатой левой кнопкой, события ни какие не приходят, только при отпускании левой кнопки мыши, ну может еще пару раз что нибудь проскочит во время перемещения и все, в МТ4 гораздо лучше с этим делом

Попробуйте этот код:

void OnInit()
{
  ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam
                 )
{

  if(id==CHARTEVENT_CHART_CHANGE)
  {
    Print(__FUNCTION__, " CHANGE sparam=", sparam);
  }

  if(id==CHARTEVENT_OBJECT_DRAG)
  {
    Print(__FUNCTION__, " DRAG sparam=", sparam);
  }

  if(id==CHARTEVENT_MOUSE_MOVE)
  {
    if(sparam == "1")
      Print(__FUNCTION__, " MOUSE_MOVE sparam=", sparam);
  }
}
 
Vasiliy Pushkaryov #:

Попробуйте этот код:

CHARTEVENT_OBJECT_DRAG

Я  не двигаю объекты

CHARTEVENT_MOUSE_MOVE

Я уже все на сто раз перепроверил, даже эти события тупят при перемещении графика мышкой, а в МТ4 все летает

 
pivalexander #:

Я  не двигаю объекты

Я уже все на сто раз перепроверил, даже эти события тупят при перемещении графика мышкой, а в МТ4 все летает

Что значит тупят? Вот двигаю график, за две секунды получаю 2 десятка событий в журнал. У Вас не так?



 
Vasiliy Pushkaryov #:

Что значит тупят? Вот двигаю график, за две секунды получаю 2 десятка событий в журнал. У Вас не так?

Помоему проблема в том, что если колесом крутить график, то битмап генерируется за 0.007 секунд и все работает четко, а то и меньше, а если левой кнопкой мыши перемещать, то пол секунды, а то и целую секунду иногда бывает, в МТ4 0.002 секунды, хоть колесом хоть перемещением 

 

А такой код, что у Вас выдает?

У меня минимальные значения 15-16 миллисекунд.


Файлы:
Причина обращения: