Рисование прерывистых линий. - страница 2

 
Anton Novokhatskii #:
использовал оба варианта, ничего не рисуется)) еще почитаю что можно сделать

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

#include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/ru/code/22164


//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
void OnTick()
{
   Draw();
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if (id == CHARTEVENT_CHART_CHANGE) Draw();
}
//+------------------------------------------------------------------+
void Draw()
{
   static uint last = 0;
   uint cur = GetTickCount();
   if (cur-last<30) return;
   last = cur;
   if (Canvas.tester) ChartChanged(); // для нормальной работы в тестере
   Canvas.Erase(0x00FFFFFF);
   double high[], low[];
   int right_bar = (int)W.Right_bar;
   int size = W.Left_bar-right_bar+1;
   CopyHigh(_Symbol,_Period,right_bar,size,high);
   CopyLow(_Symbol,_Period,right_bar,size,low);
   int max_i = ArrayMaximum(high);
   int min_i = ArrayMinimum(low);
   Canvas.LineThick((int)Canvas.X(double(size-1-max_i+right_bar)),(int)Canvas.Y(high[max_i]),(int)Canvas.X(double(size-1-min_i+right_bar)),(int)Canvas.Y(low[min_i]),0x809000FF,1,STYLE_DASHDOTDOT,LINE_END_ROUND);
   Canvas.Update();
}
//+------------------------------------------------------------------+


Время выполнения функции Draw() с копированием массивов High и Low, поиском мах и min, формированием канваса - около 1-3 миллисекунд

Файлы:
 

кажется понял в чем ошибка, сейчас попробую)