Как получить дату и время трендовой линии

 

Добрый день, хочу сделать подобное:

т.е трендовая линия и к ней привязать ценовые метки, да так чтобы если линию смещаю(двигаю) метки были как бы закреплены к ней.

допустим для прямоугольника я координаты х и у получаю вот так:

  
//+------------------------------------------------------------------+
//|    Координата икс                                    |
//+------------------------------------------------------------------+
long IntGetX(const string name)
  {
   return ObjectGetInteger(0,prefix+name,OBJPROP_XDISTANCE);
  }
//+------------------------------------------------------------------+
//|   Координата игрик 	                                       |
//+------------------------------------------------------------------+
long IntGetY(const string name)
  {
   return ObjectGetInteger(0,prefix+name,OBJPROP_YDISTANCE);
  }

Как мне получить подобное для прайс1 и прайс 2а так же время 1 и время2

 
vebster005:

Добрый день, хочу сделать подобное:

т.е трендовая линия и к ней привязать ценовые метки, да так чтобы если линию смещаю(двигаю) метки были как бы закреплены к ней.

допустим для прямоугольника я координаты х и у получаю вот так:

Как мне получить подобное для прайс1 и прайс 2а так же время 1 и время2

Можно использовать функцию такую:

bool  ChartTimePriceToXY( 
   long           chart_id,     // идентификатор графика 
   int            sub_window,   // номер подокна 
   datetime       time,         // время на графике 
   double         price,        // цена на графике 
   int&           x,            // координата X для времени на графике 
   int&           y             // координата Y для цены на графике 
   );
 

Используйте ту же самую функцию ObjectGetInteger() для получения координат по времени. Идентификатор OBJPROP_TIME. А в следующем аргументе (модификаторе) указывается индекс точки привязки. 0 - для первой точки, 1 - для второй.

Аналогично с получением цен. Только функция ObjectGetDouble(). Идентификатор OBJPROP_PRICE. Индекс точки тоже указывается в модификаторе.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д.  Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов...
 
Yevhenii Levchenko:

Можно использовать функцию такую:

Тут нужно получить данные, а не преобразовать.

 
Yevhenii Levchenko:

Можно использовать функцию такую:

Спасибо что ответили, как мне приобразовать:

   PutTrendLine("line",Time[0],PriceMax,Time[10],PriceMin,Black);
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,0);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
 
Ihor Herasko:

Тут нужно получить данные, а не преобразовать.

пожалуйста подскажите как сделать?

 
vebster005:

пожалуйста подскажите как сделать?

Так вот ведь уже ответил. Что именно тут непонятно? Какие нюансы интересуют?

Как получить дату и время трендовой линии
Как получить дату и время трендовой линии
  • 2020.08.04
  • www.mql5.com
Добрый день, хочу сделать подобное: т...
 
Ihor Herasko:

Так вот ведь уже ответил. Что именно тут непонятно? Какие нюансы интересуют?

вот так:

//+------------------------------------------------------------------+
//|    Координата прайс1                                             |
//+------------------------------------------------------------------+
long IntGetPr1(const string name)
  {
   return ObjectGetInteger(0,prefix+name,OBJPROP_TIME);
   return ObjectGetDouble(0,prefix+name,OBJPROP_PRICE);   
  }
//+------------------------------------------------------------------+
//|   Координата прайс2                                              |
//+------------------------------------------------------------------+
long IntGetPr1(const string name)
  {
   return ObjectGetInteger(1,prefix+name,OBJPROP_TIME);
   return ObjectGetDouble(1,prefix+name,OBJPROP_PRICE);   
  }
 
   double WPMax=WindowPriceMax();
   double WPMin=WindowPriceMin();
   double PriceMax = WPMax-(WPMax-WPMin)/5;
   double PriceMin = WPMin+(WPMax-WPMin)/5;
   
   PutTrendLine(prefix+"line",Time[0],PriceMax,Time[10],PriceMin,DodgerBlue);
как связать эту линию с кодом что выше?  или же в коде выше нужно поменять название на
prefix+"line"
? но это думаю не правильно
 
Ihor Herasko:

Тут нужно получить данные, а не преобразовать.

Точно! Что-то невнимательно так поступил...
 
vebster005:
как связать эту линию с кодом что выше?  или же в коде выше нужно поменять название на ? но это думаю не правильно

на каком баре нужно определить время?

от туда и пляшите, т.е. Time[0] - это нулевой бар

если известны бары начала и конца трендовой, то дело в шляпе

;)

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