Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от divelse



индикатор aтp Комментариев 20
2018-04-29 17:47:09Рейтинг 0

Вопрос программисту Комментариев 1
2018-05-04 12:01:38Рейтинг 0

Доработка заказа Комментариев 4
2019-04-29 20:44:58Рейтинг 0

Индикатор из полос Комментариев 5
2022-08-26 10:48:35Рейтинг 0

Прошу создать помойника Комментариев 3
2022-10-24 18:23:43Рейтинг 0

Как сократить код


Здравствуйте, таких OBJ_RECTANGLE_LABEL нужно около 10, но как можно сократить код, чтобы не писать одно и тоже изменяя только: OBJPROP_YDISTANCE и OBJPROP_YSIZE. Спасибо за ответ

ObjectCreate(0,"LOB",OBJ_RECTANGLE_LABEL,0,0,0);
   ObjectSetInteger(0,"LOB", OBJPROP_SELECTABLE, true);
   ObjectSetInteger(0,"LOB",OBJPROP_WIDTH,0); 
   ObjectSetInteger(0,"LOB",OBJPROP_XDISTANCE,413);
   ObjectSetInteger(0,"LOB",OBJPROP_YDISTANCE,90);
   ObjectSetInteger(0,"LOB",OBJPROP_XSIZE,218);
   ObjectSetInteger(0,"LOB",OBJPROP_YSIZE,20);
   ObjectSetInteger(0,"LOB",OBJPROP_BGCOLOR,Red);
   ObjectSetInteger(0,"LOB",OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
   ObjectSetInteger(0,"LOB",OBJPROP_CORNER,0);
   ObjectSetInteger(0,"LOB",OBJPROP_BORDER_TYPE, 0);
   ObjectSetInteger(0,"LOB",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"LOB",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"LOB",OBJPROP_WIDTH,1);
   ObjectSetInteger(0,"LOB",OBJPROP_BACK,false);
   

   
   ObjectCreate(0,"LOB2",OBJ_RECTANGLE_LABEL,0,0,0);
   ObjectSetInteger(0,"LOB2", OBJPROP_SELECTABLE, true);
   ObjectSetInteger(0,"LOB2",OBJPROP_WIDTH,0); 
   ObjectSetInteger(0,"LOB2",OBJPROP_XDISTANCE,413);
   ObjectSetInteger(0,"LOB2",OBJPROP_YDISTANCE,150);
   ObjectSetInteger(0,"LOB2",OBJPROP_XSIZE,218);
   ObjectSetInteger(0,"LOB2",OBJPROP_YSIZE,80);
   ObjectSetInteger(0,"LOB2",OBJPROP_BGCOLOR,Red);
   ObjectSetInteger(0,"LOB2",OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
   ObjectSetInteger(0,"LOB2",OBJPROP_CORNER,0);
   ObjectSetInteger(0,"LOB2",OBJPROP_BORDER_TYPE, 0);
   ObjectSetInteger(0,"LOB2",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"LOB2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"LOB2",OBJPROP_WIDTH,1);
   ObjectSetInteger(0,"LOB2",OBJPROP_BACK,false);
  • 0
  • Просмотров: 2060
  • 12 августа 2018, 11:18
  • divelse
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Срветник монсон от игруна 2
11 августа 2018
12 августа 2018

Брокер для ваших роботов, 15 лет на рынке

Комментарии (6)

+
0
так:




//+------------------------------------------------------------------+
//|                                                        Label.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   for(int i=0;i<10;i++) PutRectLabel("R"+(string)i,22,22+i*22);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel(string name,int x,int y)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размеры метки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,55);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,11);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,Red);
//--- установим тип границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 12 августа 2018, 11:38
+
0
спасибо, я если не ошибаюсь уже видел это! Но как задать разные размеры прямоугольникам?
avatar

  7  divelse Автор Сообщений: 152

  • 12 августа 2018, 14:59
+
0
Но как задать разные размеры прямоугольникам?

опишите более подробно что хотите получить?
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 12 августа 2018, 22:26
+
0



//+------------------------------------------------------------------+
//|                                                        Label.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ObjectsDeleteAll();
   for(int i=0;i<10;i++) PutRectLabel("R"+(string)i,22+i*15*i,11+i*11);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel(string name,int y1,int y2)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,11);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y1);
//--- установим размеры метки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,55);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,y2);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,Red);
//--- установим тип границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 12 августа 2018, 22:45
+
0
Андрей Спасибо большое, но в прифмере выше поулчается что каждый последующий увеличивается мне такое не подходит.
Пожалуйста подскажите как прописать новый прямоугольник с трочку, т.е чтобы не нужно было всё время писать:
ObjectCreate(0,"info2",OBJ_RECTANGLE_LABEL,0,0,0);
   ObjectSetInteger(0,"HELP", OBJPROP_SELECTABLE, true);
   ObjectSetInteger(0,"HELP",OBJPROP_WIDTH,0); 
   ObjectSetInteger(0,"HELP",OBJPROP_XDISTANCE,13);
   ObjectSetInteger(0,"HELP",OBJPROP_YDISTANCE,gk+30);
   ObjectSetInteger(0,"HELP",OBJPROP_XSIZE,298);
   ObjectSetInteger(0,"HELP",OBJPROP_YSIZE,480);
   ObjectSetInteger(0,"HELP",OBJPROP_BGCOLOR,DimGray);
   ObjectSetInteger(0,"HELP",OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
   ObjectSetInteger(0,"HELP",OBJPROP_CORNER,0);
   ObjectSetInteger(0,"HELP",OBJPROP_BORDER_TYPE, 0);
   ObjectSetInteger(0,"HELP",OBJPROP_COLOR,DimGray);
   ObjectSetInteger(0,"HELP",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"HELP",OBJPROP_WIDTH,1);
   ObjectSetInteger(0,"HELP",OBJPROP_BACK,false);


Может можно как то указать:
void PutRectLabel(string name,int y1,int y2)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,11);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y1);
//--- установим размеры метки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,55);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,y2);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,Red);
//--- установим тип границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,0);
  }


А дальше код для построения прямоугольника в 1 строку

Спасибо
avatar

  7  divelse Автор Сообщений: 152

  • 13 августа 2018, 10:23
+
0
но в прифмере выше поулчается что каждый последующий увеличивается мне такое не подходит

просьба описывать все сразу подробно что хотите получить и со скринами
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 13 августа 2018, 17:21

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий