Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 842

 
Vladimir Karputov:

Кто последний - тот и сверху. Проверил вручную - так и есть. Вы точно в своём коде НЕ ПЕРЕСОЗДАЁТЕ заново BMP?

Кто первый халат одел, тот и доктор. -:)))))

 
Sergey Likho:

Вопрос по графическим объектам в МТ5.

Не могу разместить Label поверх BMP объекта.

Рисую BMP, потом рисую Label. Label получается ниже

Как-то можно управлять расположением объектов на графике? Кого-то повыше, кого-то пониже разместить?

Вы это, из примера в документации по Label,  используете? или это только BMP касается? как по отношению к другим форматам ведёт? Какой режим видимости самого BMP?:

//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

 
Vladimir M.:
Вы это, из примера в документации по Label,  используете? или это только BMP касается? как по отношению к другим форматам ведёт? Какой режим видимости самого BMP?:

//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

Да, спасибо.

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

НА самом деле я почти в тупике. Сейчас  в списке объектов Labl-ы есть. (У них есть шрифт, цвет, текст...) А на графике их нету.  Как такое может быть, не пойму. 

---

Скорее всего, часа через 3, я найду строчку вроде - DeleteAllLabels, удалив которую все будет как нужно. 

 

Sergey Likho:

Подвигайте координаты, может быть текст ушел с поля или "скрылся" за другим объектом.

 
Sergey Likho:

Да, спасибо.

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

НА самом деле я почти в тупике. Сейчас  в списке объектов Labl-ы есть. (У них есть шрифт, цвет, текст...) А на графике их нету.  Как такое может быть, не пойму. 

---

Скорее всего, часа через 3, я найду строчку вроде - DeleteAllLabels, удалив которую все будет как нужно. 

Посмотрите в свойствах объекта - на каких графиках им велено показываться

Возможно на том периоде где вы их ищите - они не показываются

Или показываются где-то далеко в прошлом или за границей экрана

...в любом случае начните со свойств объекта

 

Поле ввода OBJ_EDIT

1. Выравнивание по середине в тестере не работает. Так должно быть?  (попробуйте код ниже запустить в тестере)


2. На реал графике В списке объектов есть, а на графике нету.

Стоит поменять одно свойство в настройках МТ4. Объект появляется.

Может в коде эксперта что-то напутал. 

void OnTick()
  {
//---
   Input("Name","text here",100,100,300,20,clrBlue,10,false,clrRed);
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Input(string name,string text,int x,int y,int sizex,int sizey,color clr=clrGreen,int tsize=10,bool readOnly=false,color txtcolor=clrRed,int align=ALIGN_CENTER)
  {
   if(!ObjectCreate(0,name,OBJ_EDIT,0,1,1)){printf(GetLastError());}
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(0,name,OBJPROP_XSIZE,sizex);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,sizey);
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,tsize);
   ObjectSetInteger(0,name,OBJPROP_COLOR,txtcolor);
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clr);
   ObjectSetString(0,name,OBJPROP_TEXT,text);
   ObjectSetInteger(0,name,OBJPROP_ALIGN,ALIGN_CENTER);
  }

Кстати, почти этот же код в МТ4 работает как нужно. 


3. Еще я решил наконец-то перейти на МТ5. И с этими ордерами и позициями все никак не разберусь. (Есть материал на эту тему?) Подскажите, как можно прочитать позиции по аналогии с МТ4?  Мне нужно найти сделку по тикету. Так же пока не пойму как прочитать СЛ и ТП в истории?

 
Sergey Likho:

Поле ввода OBJ_EDIT

1. Выравнивание по середине в тестере не работает. Так должно быть?  (попробуйте код ниже запустить в тестере)


2. На реал графике В списке объектов есть, а на графике нету.

Стоит поменять одно свойство в настройках МТ4. Объект появляется.

Может в коде эксперта что-то напутал. 

Кстати, почти этот же код в МТ4 работает как нужно. 


3. Еще я решил наконец-то перейти на МТ5. И с этими ордерами и позициями все никак не разберусь. (Есть материал на эту тему?) Подскажите, как можно прочитать позиции по аналогии с МТ4?  Мне нужно найти сделку по тикету. Так же пока не пойму как прочитать СЛ и ТП в истории?

Тестер мт5 с графикой не работает, можно только понажимать кнопки, и всё.

Что такое позиция и ордер, это общеизвестный факт: Ордер - это приказ(почитайте смысл/перевод слова, можно в вики), то есть, приказ если цена достигнет, то брокер обязан его исполнить(Отложные ордера), позиция - это ваша занятая позиция в рынке на определённой цена(место в рынке), то есть Buy и Sell.   Buy и Sell не может быть приказом(ордером), это уже выполнено.

По мт5 очень много материала написано в статьях, в кодобазе и на форуме

 
Vitaly Muzichenko:

Тестер мт5 с графикой не работает, можно только понажимать кнопки, и всё.

Что такое позиция и ордер, это общеизвестный факт: Ордер - это приказ(почитайте смысл/перевод слова, можно в вики), то есть, приказ если цена достигнет, то брокер обязан его исполнить(Отложные ордера), позиция - это ваша занятая позиция в рынке на определённой цена(место в рынке), то есть Buy и Sell.   Buy и Sell не может быть приказом(ордером), это уже выполнено.

По мт5 очень много материала написано в статьях, в кодобазе и на форуме

Спасибо. 

Подскажите, почему На реал графике OBJ_EDIT может не отображаться?

 
Sergey Likho:

Спасибо. 

Подскажите, почему На реал графике OBJ_EDIT может не отображаться?

Наверное не правильно выставили привязку объектов, и они ушли за край окна.

Привязку лучше указывать не 0,1,2 как это в мт4, а конкретно ENUM_BASE_CORNER

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
  • www.mql5.com
Существует ряд графических объектов, для которых можно задавать угол графика, относительно которого указываются координаты в пикселях. Это следующие типы объектов (в скобках указаны идентификаторы типа объекта): – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты вычисляются только...
 

Прошу помочь решить задачу, код работает на каждом тике, поэтому нужно наиболее лёгкое решение

Задача: Есть куча закрытых позиций в истории, и с этой кучи нужно извлечь размер профита который был на момент последнего закрытия, позиций может быть от 1, до 100(сетка).

Как правило, они не закрываются одновременно, но разница по времени от момента открытия до закрытия не превышает 2 минуты(мт4).

Если развернуть цикл или массив, то всё работает, но разворачивать ничего нельзя, нужно сделать с перебором от меньшего, к большем

//+------------------------------------------------------------------+
#property strict

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  datetime tm=0;
  datetime pos[5]={D'2018.04.04 10:07:55',
                   D'2018.04.04 10:08:19',
                   D'2018.04.04 12:08:43',
                   D'2018.04.04 12:08:43',
                   D'2018.04.04 12:08:59'
                  };
  
   for(int i=0; i<5; i++) {
    datetime date=pos[i];
    // ... ld = date;
    // Здесь много кода, и цикл/массив разворачивать нельзя
    // ...
    // 120 секунд разницы между закрытием первой и последней в сетке
    if((tm <= date && date <= tm+120) || tm==0) {
      tm = date;
      Print(i,"=",date); // Ожидаемый результат: 2018.04.04 12:08:59, 2018.04.04 12:08:43, 2018.04.04 12:08:43
    }

   }
    Print("");
    Sleep(10000);
  }
//+------------------------------------------------------------------+