Цветные свечи (пожелания) - страница 2

 
Dmitry Fedoseev:

Дело в том, что индикатор должен не только рисовать, но еще должен быть таким, что бы его можно было вызывать их эксперта. Значит кроме рисования на канвасе должны быть буферы (невидимые). В общем, работа на индикатором усложняется два раза. Если слишком надо, то можно, но если кто заказывает на фрилансе, то стоимость значительно возрастает.

Это только кажется. Не так все страшно. Используйте буферы.  Никто же не запрещает, только отрисовывайте сами. К сведению, канвасные свечи уже активно используются.
 
Nikolai Semko:
Это только кажется. Не так все страшно. Используйте буферы.  Никто же не запрещает, только отрисовывайте сами. К сведению, канвасные свечи уже активно используются.

Canvas сильно удорожает разработку в деньгах. Чего стоит только контроль ширины, высоты окна, масштаба отображения графика, перемотка, смещение ...

 
Vladimir Karputov:

Canvas сильно удорожает разработку в деньгах. Чего стоит только контроль ширины, высоты окна, масштаба отображения графика, перемотка, смещение ...

Проще паренной репы. Для чего я iCanvas разрабатываю? Сделать полный аналог существующих свечей - Это добавить строк 30-50 кода к моему классу. 
 
Nikolai Semko:
Проще паренной репы. Для чего я iCanvas разрабатываю. Сделать полный аналог существующих свечей - Это добавить строк 40-50 к моему классу. 

Ждёмс... окончания разработки и статьи.

 
Dmitry Fedoseev:

Ждёмс... окончания разработки и статьи.

Пока у меня есть дела поважнее. Кому нужно, тот уже реализовал это на моем классе. Причем канвасные свечи заметнее шустрее штатных.
 
Vladimir Karputov:

Canvas сильно удорожает разработку в деньгах. Чего стоит только контроль ширины, высоты окна, масштаба отображения графика, перемотка, смещение ...

Nikolai Semko:
Проще паренной репы. Для чего я iCanvas разрабатываю? Сделать полный аналог существующих свечей - Это добавить строк 30-50 кода к моему классу. 

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

Я даже преувеличил на счет 30-50 строк кода. Основная функция ShowBars, которая формирует свечи на экране всего 9 строк кода:

void ShowBars(bool change=true)
  {
   static MqlRates B[];
   uint clrBody=0;
   if(change) CopyRates(_Symbol,_Period,(int)W.Right_bar,W.BarsInWind,B); else B[ArraySize(B)-1]=Bar0;
   Canvas.Erase(W.Color);
   for(int i=0,x=-1; i<W.BarsInWind;i++,x+=W.dx_pix) 
     {
      Canvas.LineVertical(x,(int)(Canvas.Y(B[i].high)-0.5),(int)(Canvas.Y(B[i].low)-0.5),clrLine);
      if(B[i].close>B[i].open) clrBody=clrBull; else if(B[i].close<B[i].open) clrBody=clrBear; else clrBody=clrLine;
      Canvas.FillRectangle(x-int(W.dx_pix*0.35),(int)(Canvas.Y(B[i].open)-0.5),x+int(W.dx_pix*0.35),(int)(Canvas.Y(B[i].close)-0.5),clrBody);
     }
   Canvas.Update();
  }

Это дорого?

Конечно, этот код только демонстрационный, но все же вполне рабочий. И "контроль ширины, высоты окна, масштаба отображения графика, перемотка, смещение " выполняет.


Файлы:
CanvasBar.mq5  7 kb
 

По хорошему, конечно, при создании собственного интерфейса на канвасе нужно отключать управление мышью и клавиатурой (CHART_MOUSE_SCROLL, CHART_KEYBOARD_CONTROL ...) и писать свой обработчик мыши и клавиатуры. 
Но это не так сложно, как может показаться на первый взгляд. 
Но зато скорость такого интерфейса будет значительно выше базового, т.к. можно не применять очень тормознутые асинхронные функции ChartGetInteger

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
Причина обращения: