Справочник MQL4

ChartXYToTimePrice

Преобразует координаты  X и Y графика в значения время и цена.

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

Параметры

chart_id

[in]  Идентификатор графика. 0 означает текущий график.

x

[in]  Координата X. Начало координат находится в левом верхнем углу главного окна графика.

y

[in]  Координата Y. Начало координат находится в левом верхнем углу главного окна графика.

sub_window

[out]  Переменная, в которую будет записан номер подокна графика. 0 означает главное окно графика.

time

[out]  Значение времени на графике, для которого будет получено значение в пикселах на оси X.

price

[out]   Значение цены на графике, для которого будет получено значение в пикселах на оси Y.

Возвращаемое значение

Возвращает true в случае успешного выполнения, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Пример:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- выведем параметры события на график
   Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);
//--- если это события клика мышки на графике
   if(id==CHARTEVENT_CLICK)
     {
      //--- подготовим переменные
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
      //--- преобразуем координаты X и Y  в терминах дата/время
      if(ChartXYToTimePrice(0,x,y,window,dt,price))
        {
         PrintFormat("Window=%d X=%d  Y=%d  =>  Time=%s  Price=%G",window,x,y,TimeToString(dt),price);
         //--- сделаем обратное преобразование: (X,Y) => (Time,Price)
         if(ChartTimePriceToXY(0,window,dt,price,x,y))
            PrintFormat("Time=%s  Price=%G  =>  X=%d  Y=%d",TimeToString(dt),price,x,y);
         else
            Print("ChartTimePriceToXY return error code: ",GetLastError());
         //--- удаляем линии
         ObjectDelete(0,"V Line");
         ObjectDelete(0,"H Line");
         //--- создаем горизонтальную и вертикальную линии перекрестия
         ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price);
         ObjectCreate(0,"V Line",OBJ_VLINE,window,dt,price);
         ChartRedraw(0);
        }
      else
         Print("ChartXYToTimePrice return error code: ",GetLastError());
      Print("+--------------------------------------------------------------+");
     }

Смотри также

ChartTimePriceToXY()