обновление данных в Graphic

 

Здравствуйте!

Не могу разобраться как обновлять линии на графике Graphic если использовать в формате советника.

вот код, где график создается при установке советника:

#include <Graphics\Graphic.mqh>
CGraphic graph;

   double xgg[10]={-10,-4,-1,2,3,4,5,6,7,8};
   double ygg[10]={-5,4,-10,23,17,18,-9,13,17,4};
    
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
   
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);

   CCurve *curve=graph.CurveAdd(xgg,ygg,CURVE_LINES);
   graph.CurvePlot(0);
   graph.Update();

  
//---
   return(INIT_SUCCEEDED);
  }

График рисуется, все нормально. Вот только как перерисовывать линию на графике в процессе работы.

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

А мне нужно перерисовывать в процессе.

Подскажите, пожалуйста кто в курсе)))

 
-vallen-:

Здравствуйте!

Не могу разобраться как обновлять линии на графике Graphic если использовать в формате советника.

вот код, где график создается при установке советника:

График рисуется, все нормально. Вот только как перерисовывать линию на графике в процессе работы.

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

А мне нужно перерисовывать в процессе.

Подскажите, пожалуйста кто в курсе)))

а чего именно непонятно? Класс графика имеет множество функций для всех нужд. Вы смотрели список функций класса? какие варианты пробовали?

 
Ну вот пример - на каждом тике рисуется случайный график. Приходится удалять старый график и рисовать новый, просто обновить линию у меня не получается. пока на на тиках график крутится еще куда не шло, а если на тестере прогонять, от перезаписи тормоза страшные, да и сплошное мерцание. Вот и вопрос - как можно обновить новое значение линии, не удаляя сам график?
#include <Graphics\Graphic.mqh>

 double Xg[10]={0,1,2,3,4,5,6,7,8,9};
 double Yg[10]={0,0,0,0,0,0,0,0,0,0};

//------------------------------------------  
int OnInit()
  {
   graf(); //рисуем график
//---
   return(INIT_SUCCEEDED);
  }
//------------------------------------------ 
void OnTick()
  {  
   for(int i=0; i<=9; i++){
    Yg[i]=(int)MathRand()/1000;  
   }
   ObjectDelete(0,"Graph");//удаляю график, понимаю что не тот подход но по другому не получается
   graf(); //рисуем график по новому
  }
//-------------------------------------------------------------
void graf(){
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);

   CCurve *curve=graph.CurveAdd(Xg,Yg,CURVE_LINES);
   graph.CurvePlotAll();
   graph.Update(true);
}
//-------------------------------------------------------------
 
-vallen-:
Ну вот пример - на каждом тике рисуется случайный график. Приходится удалять старый график и рисовать новый, просто обновить линию у меня не получается. пока на на тиках график крутится еще куда не шло, а если на тестере прогонять, от перезаписи тормоза страшные, да и сплошное мерцание. Вот и вопрос - как можно обновить новое значение линии, не удаляя сам график?

  bool              CurveRemoveByIndex(const int index);

   bool              CurveRemoveByName(const string name);

 
Спасибо большое! Заработало как нужно)))