Создание "Прямоугольника" с полным перекрытием баров (нужен совет(!)

 

Здравия, уважаемые профессионалы!

столкнулся с такой делемой:
хочу сделать простой индикатор, который просто рисовал-бы обычный объект "Прямоугольник" OBJ_RECTANGLE, но ПОВЕРХ баров !
чтобы он полностью перекрывал-бы бары под собой!
,,, + ввести параметр Прозрачности для частичного отображения баров под прямоугольником! :


... но как я понял - это сделать или очень ити-его сложно, или вообще нельзя (?!), так как в свойствах хоть и задано: 

ObjectSetInteger(0, RectName, OBJPROP_FILL, true);           // заливка
ObjectSetInteger(0, RectName, OBJPROP_BACK, false);        // рисовать перед барами

... но это не помогает, и Прямоугольник по прежнему рисуется ПОД барами ! ... тогда недопонятно - для какого-такого "икса" в МТ-5 предусмотрена возможность рисовать "на фоне", или "перед" барами, если оно "один икс" рисует ПОД барами (??!!) О_0 ... --_-- 

код в аттаче, может чего подскажете ?!

... или тогда вместо обычного прямоугольника - рисовать OBJ_RECTANGLE_LABEL ??

...но как я почитал в Справочнике - он больше предназначен именно для создания Панелей ...
Но тогда - придётся как-то совмещать координаты пикселей на экране - с время/дата баров (?!) 

в общем - прошу вас накидать идей, а я всёравно скормлю все предложения ИИ-шке - пусть делает! 

Благодарю за подсказки/советы/рекомендации !

Файлы:
 
//+------------------------------------------------------------------+
//| Отправка терминалу команды на показ графика поверх всех других.  |
//+------------------------------------------------------------------+
bool ChartBringToTop(const long chart_ID=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- покажем график поверх всех других
   if(!ChartSetInteger(chart_ID,CHART_BRING_TO_TOP,0,true))// или false
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
Это искусственному идиотизму не понять.
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
В этом разделе представлены примеры для работы со свойствами графика. Для каждого свойства приведены одна или две законченные функции, которые...
 
Alexey Viktorov #:
Это искусственному идиотизму не понять.

Благодарю)

Алексей, а в какую часть кода вставлять ваш фикс ?!
(до/после OnInit / OnCalculate ... ?!)

-------------------------------------------------------------------------------------------------
... ну у этого "Искусственного Импровизатора" ещё всё впереди! ... молодой-же ещё )

чё уж так говорить, когда он "рогом упирается" и постоянно пишет : "OBJPROP_TIME1" вместо "OBJPROP_TIME,1" ... хотя НЕКОТОРЫЕ вещи - пишет нормально )

(если уж вкратце рассказывать, то он сперва "накосячит", потом по списку ошибок выдаст правильный вариант, а потом в следующий раз совершит снова те-же ошибки ))
(,,, а в целом - скрафтил мне вполне рабочий скрипт отрисовки меток СтопЛоса на истории графика, этим - я доволен! ), остальное - тестирую )

 

OBJPROP_BACK

Объект на заднем плане

bool


https://www.mql5.com/ru/docs/objects/objectsetinteger

ObjectSetInteger(0, RectName, OBJPROP_BACK, true);   
Документация по MQL5: Графические объекты / ObjectSetInteger
Документация по MQL5: Графические объекты / ObjectSetInteger
  • www.mql5.com
Задает значение соответствующего свойства объекта. Свойство объекта должно быть типов datetime, int, color, bool или char . Существует 2 варианта...
 
Alexey Viktorov #:
Это искусственному идиотизму не понять.

Ремарка. Не CHART_BRING_TO_TOP, а CHART_FOREGROUND. Первое свойство - это про окно в целом, а не про ценовой график.

Только ничто не поможет именно с объектом OBJ_RECTANGLE. Через него всегда будет просвечивать график. Другое дело - OBJ_RECTANGLE_LABEL. Для него свойство графика CHART_FOREGROUND действует как положено.

 
Ihor Herasko #:

Ремарка. Не CHART_BRING_TO_TOP, а CHART_FOREGROUND. Первое свойство - это про окно в целом, а не про ценовой график.

Только ничто не поможет именно с объектом OBJ_RECTANGLE. Через него всегда будет просвечивать график. Другое дело - OBJ_RECTANGLE_LABEL. Для него свойство графика CHART_FOREGROUND действует как положено.

понял, благодарю , поколдую! ... 
 
.🤦
 
Ну так как я кодю с помощью ИИ, то у неё с OBJ_RECTANGLE_LABEL неполучилось!
Как она ни пыталась задавать координаты через :

// Принудительно задаём time/price свойства (чтобы избежать "прыжка в угол")
   if(!ObjectSetInteger(g_chart_id, InpObjName, OBJPROP_TIME,1, (long)time_left))
      PrintFormat("OBJPROP_TIME,1 set failed: %d", GetLastError());
   if(!ObjectSetDouble (g_chart_id, InpObjName, OBJPROP_PRICE,1, price_top))
      PrintFormat("OBJPROP_PRICE,1 set failed: %d", GetLastError());
   if(!ObjectSetInteger(g_chart_id, InpObjName, OBJPROP_TIME,2, (long)time_right))
      PrintFormat("OBJPROP_TIME,2 set failed: %d", GetLastError());
   if(!ObjectSetDouble (g_chart_id, InpObjName, OBJPROP_PRICE,2, price_bottom))
      PrintFormat("OBJPROP_PRICE,2 set failed: %d", GetLastError());

// Отключаем привязку к corner (делаем явную привязку к time/price)
   if(!ObjectSetInteger(g_chart_id, InpObjName, OBJPROP_CORNER, -1))
      PrintFormat("OBJPROP_CORNER set failed: %d", GetLastError());

... а ничего так и неполучилось ...

-------------------------------------------------------------------------------

Потом я вернулся к OBJ_RECTANGLE и в процессе наблюдения за ЦВЕТОМ, выяснил, что :
1) ПЕРВИЧНО - положение самих Баров "перед" или "после" переключается в самом Свойстве Графика: "F8 -->> График сверху" (!)
2) а ВТОРИЧНО - всё зависит от ЦВЕТА самого прямоугольника OBJ_RECTANGLE :
  - если он СВЕТЛЫЙ, например "Gray", то он ПОЛНОСТЬЮ перекрывает своим цветом ВСЕ БАРЫ (!!!)
  - но если он "ТЁМНЫЙ", например "DimGray", то бары уже начинают просвечиваться без всякой "Альфы" (прозрачности) (!).
  - ну и совсем уж тёмный цвет например в RGB = 50,50,50 делает бары под прямоугольником почти полностью видимыми (!!!)

На этом, скажем так и остановился ... хотелось-бы БЫ чтобы и заливка Прямоугольника была максимально-тёмной, и чтобы бары еле-еле просвечивались, но увы, пока не преодолел сей барьер :(, а подобрал для себя +/- оптимальный размер "Серой" заливки, чтобы Бары были чуть видны, на том и продолжу следущий этап своей Работы !

 
Vitaliy Kostrubko #:
Ну так как я кодю с помощью ИИ, то у неё с OBJ_RECTANGLE_LABEL неполучилось!
Как она ни пыталась задавать координаты через :

... а ничего так и неполучилось ...

-------------------------------------------------------------------------------

Потом я вернулся к OBJ_RECTANGLE и в процессе наблюдения за ЦВЕТОМ, выяснил, что :
1) ПЕРВИЧНО - положение самих Баров "перед" или "после" переключается в самом Свойстве Графика: "F8 -->> График сверху" (!)
2) а ВТОРИЧНО - всё зависит от ЦВЕТА самого прямоугольника OBJ_RECTANGLE :
  - если он СВЕТЛЫЙ, например "Gray", то он ПОЛНОСТЬЮ перекрывает своим цветом ВСЕ БАРЫ (!!!)
  - но если он "ТЁМНЫЙ", например "DimGray", то бары уже начинают просвечиваться без всякой "Альфы" (прозрачности) (!).
  - ну и совсем уж тёмный цвет например в RGB = 50,50,50 делает бары под прямоугольником почти полностью видимыми (!!!)

На этом, скажем так и остановился ... хотелось-бы БЫ чтобы и заливка Прямоугольника была максимально-тёмной, и чтобы бары еле-еле просвечивались, но увы, пока не преодолел сей барьер :(, а подобрал для себя +/- оптимальный размер "Серой" заливки, чтобы Бары были чуть видны, на том и продолжу следущий этап своей Работы !

я красил белым, все норм, ничего не видно за ним

сделай два прямоугольника, один на другой

одним закрась, а второй по усмотрению - цвет который нужен

 
Vitaliy Kostrubko #:
Ну так как я кодю с помощью ИИ, то у неё с OBJ_RECTANGLE_LABEL неполучилось!
Как она ни пыталась задавать координаты через :

... а ничего так и неполучилось ...

-------------------------------------------------------------------------------

Потом я вернулся к OBJ_RECTANGLE и в процессе наблюдения за ЦВЕТОМ, выяснил, что :
1) ПЕРВИЧНО - положение самих Баров "перед" или "после" переключается в самом Свойстве Графика: "F8 -->> График сверху" (!)
2) а ВТОРИЧНО - всё зависит от ЦВЕТА самого прямоугольника OBJ_RECTANGLE :
  - если он СВЕТЛЫЙ, например "Gray", то он ПОЛНОСТЬЮ перекрывает своим цветом ВСЕ БАРЫ (!!!)
  - но если он "ТЁМНЫЙ", например "DimGray", то бары уже начинают просвечиваться без всякой "Альфы" (прозрачности) (!).
  - ну и совсем уж тёмный цвет например в RGB = 50,50,50 делает бары под прямоугольником почти полностью видимыми (!!!)

На этом, скажем так и остановился ... хотелось-бы БЫ чтобы и заливка Прямоугольника была максимально-тёмной, и чтобы бары еле-еле просвечивались, но увы, пока не преодолел сей барьер :(, а подобрал для себя +/- оптимальный размер "Серой" заливки, чтобы Бары были чуть видны, на том и продолжу следущий этап своей Работы !

Используйте канвас
 
OBJ_BITMAP/Canvas рисуются поверх графика при выставлении  нужных атрибутов. Вам ведь всё равно надо будет рисовать что то в этом прямоугольнике