мини чарт ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Maxim Kuznetsov
13631
Maxim Kuznetsov  

напомните библиотеку с которой просто построить чарт на 5-7 свечей в виде картинки (Canvas)

а то поиск на сайте, такой что лучше-бы его и не было :-)

Igor Makanu
9876
Igor Makanu  

в МТ4 нет такого, только в МТ5 есть обьект типа OBJ_CHART https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_chart

нет и для индикаторов МТ4 возможности установить тип индикаторного буфера  DRAW_CANDLES https://www.mql5.com/ru/docs/customind/indicators_examples/draw_candles

хотя если рисовать на Canvas , то в КБ есть альтернативная библиотека Canvas https://www.mql5.com/ru/code/22164  - но не проверял под МТ4, скорее всего должна работать

Ihor Herasko
21768
Ihor Herasko  
По канвасу у нас специалист - Nikolai Semko. У него нужно смотреть. Вот его тема, а вот и библиотека.
Canvas - это круто!
Canvas - это круто!
  • 2018.02.16
  • www.mql5.com
Поставил себе задачу: коротким кодом эффектно продемонстрировать возможности пользовательской графики через класс CCanvas...
Nikolai Semko
6735
Nikolai Semko  
Ihor Herasko:
По канвасу у нас специалист - Nikolai Semko. У него нужно смотреть. Вот его тема, а вот и библиотека.

Спасибо!

Maxim Kuznetsov:

напомните библиотеку с которой просто построить чарт на 5-7 свечей в виде картинки (Canvas)

а то поиск на сайте, такой что лучше-бы его и не было :-)

рекомендую изучить небольшой код  этого индикатора.

как правило код mql5 с iCanvas работает и в mql4.

Вся функция рисования канвас - баров из MqlRates массива:

void ShowBars(MqlRates &B[])
  {
   uint clrBody=0;
   Canvas.Erase(W.Color);
   int x=-1;
   int start=ArraySize(B)-1-W.Left_bar;
   int fin=ArraySize(B)-1-(int)W.Right_bar;
   if (start<0) { x=-W.dx_pix*start; start=0; }
   if (fin>=0) 
   for(int i=start; i<=fin; i++,x+=W.dx_pix)
     {
      if(B[i].close>B[i].open)  clrBody=clrBull;
      else if(B[i].close<=B[i].open) clrBody=clrBear;
      Canvas.LineVertical(x,(int)(Canvas.Y(B[i].high)-0.5),(int)(Canvas.Y(B[i].low)-0.5),clrBody);
      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();
  }
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий