Предложение по поводу отрисовки графических объектов. - страница 2

 
Eugeni Neumoin #:

Вот задал вывод в виде рамки на заднем плане (то есть без заливки):

А это задал заливку прямоугольника опять же на заднем плане:

Чтоб найти ошибку в коде иногда достаточно знать, что ошибка на вашей стороне, а не у разрабов.

Я помог чем смог, дальше ваша работа. Ищите ошибку)

 
Aleksandr Slavskii #:

Чтоб найти ошибку в коде иногда достаточно знать, что ошибка на вашей стороне, а не у разрабов.

Я помог чем смог, дальше ваша работа. Ищите ошибку)

https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle

Пробуйте этот код

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
Прямоугольник. Примечание Для прямоугольника можно установить режим заливки при помощи свойства OBJPROP_FILL . Пример Следующий скрипт создает и...
 


//+------------------------------------------------------------------+
//|                                                     xrenoten.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                              https://www.mql5.com/ru/users/s22aa |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com/ru/users/s22aa"
#property version   "1.00"
#property indicator_chart_window
#property  indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated <= 0)
      RectangleCreate(0, "Rect", 0, time[rates_total - 20], high[rates_total - 20], time[rates_total - 1], low[rates_total - 1]);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
  {
   if(id == CHARTEVENT_OBJECT_CLICK)
     {
      if(ObjectGetInteger(0, "Rect", OBJPROP_BACK))
         ObjectSetInteger(0, "Rect", OBJPROP_BACK, false);
      else
         ObjectSetInteger(0, "Rect", OBJPROP_BACK, true);
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
bool RectangleCreate(const long            chart_ID = 0,      // ID графика
                     const string          name = "Rectangle", // имя прямоугольника
                     const int             sub_window = 0,    // номер подокна
                     datetime              time1 = 0,         // время первой точки
                     double                price1 = 0,        // цена первой точки
                     datetime              time2 = 0,         // время второй точки
                     double                price2 = 0,        // цена второй точки
                     const color           clr = clrRed,      // цвет прямоугольника
                     const ENUM_LINE_STYLE style = STYLE_SOLID, // стиль линий прямоугольника
                     const int             width = 1,         // толщина линий прямоугольника
                     const bool            fill = false,      // заливка прямоугольника цветом
                     const bool            back = false,      // на заднем плане
                     const bool            selection = true,  // выделить для перемещений
                     const bool            hidden = true,     // скрыт в списке объектов
                     const long            z_order = 0)       // приоритет на нажатие мышью
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим прямоугольник по заданным координатам
   if(!ObjectCreate(chart_ID, name, OBJ_RECTANGLE, sub_window, time1, price1, time2, price2))
     {
      Print(__FUNCTION__,
            ": не удалось создать прямоугольник! Код ошибки = ", GetLastError());
      return(false);
     }
//--- установим цвет прямоугольника
   ObjectSetInteger(chart_ID, name, OBJPROP_COLOR, clr);
//--- установим стиль линий прямоугольника
   ObjectSetInteger(chart_ID, name, OBJPROP_STYLE, style);
//--- установим толщину линий прямоугольника
   ObjectSetInteger(chart_ID, name, OBJPROP_WIDTH, width);
//--- включим (true) или отключим (false) режим заливки прямоугольника
   ObjectSetInteger(chart_ID, name, OBJPROP_FILL, fill);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID, name, OBJPROP_BACK, back);
//--- включим (true) или отключим (false) режим выделения прямоугольника для перемещений
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID, name, OBJPROP_SELECTABLE, selection);
   ObjectSetInteger(chart_ID, name, OBJPROP_SELECTED, selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID, name, OBJPROP_HIDDEN, hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID, name, OBJPROP_ZORDER, z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
Не заливает. или я делаю как то не так)
 
Aleksandr Slavskii #:
STYLE_SOLID

А вот так задайте:

RectangleCreate(0, "Rect", 0, time[rates_total - 20], high[rates_total - 20], time[rates_total - 1], low[rates_total - 1],clrRed,STYLE_SOLID,1,false,true,false,true,0);

 Для вывода на заднем плане 

OBJPROP_BACK

надо задать = true. А у Вас = false

 
Eugeni Neumoin #:

А вот так задайте:

RectangleCreate(0, "Rect", 0, time[rates_total - 20], high[rates_total - 20], time[rates_total - 1], low[rates_total - 1],clrRed,STYLE_SOLID,1,false,true,false,true,0);

 Для вывода на заднем плане 

надо задать = true. А у Вас = false

Вы на гифке видите, что при клике на прямоугольник он становится либо на заднем плане, либо на переднем?

Какая разница как задавать значения объекта? Можно вообще создать объект, а значения задать потом.

Что изменит то что вы предлагаете? Почему сами не попробуете это сделать?

 

Картинки. Уже так.. сегодня воскресенье...

Эта картинка выведена индикатором SniperX6

Эта картинка выводит уровни индикатора snioer на M15:

"Это также от sniper но на H1:


А это структура по смарт мани от Артема (Dobrunia) рисует и все внутренние структурные точки:

Наконец-то добил... 

===============

А Здесь все три индикатора для сравнения и выбора,  на любителя:


 
Eugeni Neumoin #:

Наконец-то добил... 

У вас получилось сделать, то что вы хотели?

 
Aleksandr Slavskii #:

У вас получилось сделать, то что вы хотели?

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

На каждый из трех индикаторов ушло на разработку и отладку примерно по полгода. Но все равно еще есть мелкие шероховатости.

А вот с проблемой, поднятой  этой теме решения пока нет.

Она меня не напрягает. Хотелось бы, чтобы была исправлена эта ошибка на системном уровне.

========

Программа позволяет мгновенно с помощью графического интерфейса настроить уровни открытия ордеров, стопа и профита. С заданным риском и риск ревортом.

А для ориентира на рынке встроенные индикаторы выявления структуры рынка также с мгновенной  настройкой.

 
Eugeni Neumoin #:

Понятно.

Это такой хитрый рекламный ход. 

Придумать проблему, создать тему, прорекламировать свою прогу. 

Такие рекламные решения, отбивают всякое желание помогать на форуме.

Пойду жаловаться модераторам.

 
Aleksandr Slavskii #:

Понятно.

Это такой хитрый рекламный ход. 

Придумать проблему, создать тему, прорекламировать свою прогу. 

Такие рекламные решения, отбивают всякое желание помогать на форуме.

Пойду жаловаться модераторам.

Это не хитрый рекламный ход. Почему нельзя просто порадоваться, что у кого-то получилось сделать работу, которую много лет вынашивал?

Почему обязательно выискивать всякие подводные течения?

Проблема, поднятая в этой теме действительно существует. И я не просил помочь. Проблема в языке MQL4.

Обращение было к разработчикам терминала.

А картинки выложил просто на эйфории. Наконец-то сделал сложную длительную работу.

Не люблю этот форум за то, что здесь появляются такие издевательские сообщения.

Но также здесь есть много адекватных  людей. С 2005 года мне здесь многие помогали. И хорошее сотрудничество получалось.

===============

Хотя да, рекламный ход. Большое количество программ было сделано и пущено в свободный доступ. Хорошая реклама.

В коде бэйс есть мои программы, которые кто-то выкладывал. Они просто валялись в свободном доступе на разных форумах....

=============

Булгаков вечен... у него был Латунский...

Причина обращения: