ChartXYToTimePrice

Convierte las coordenadas X y Y del gráfico a los valores hora y precio.

bool  ChartXYToTimePrice(
   long           chart_id,     // identificador del gráfico
   int            x,            // coordinada X en el gráfico
   int            y,            // coordinada Y en el gráfico
   int&           sub_window,   // número de subventana
   datetime&      time,         // fecha/hora en el gráfico
   double&        price         // precio en el gráfico
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

x

[in]  Coordinada X.

y

[in]  Coordinada Y.

sub_window

[out]  Variable en la que será escrito el número de la subventana del gráfico. 0 significa la ventana principal del gráfico.

time

[out]  Valor de la hora en el gráfico para el cual se recibirá el valor en píxeles en el eje X. El inicio de las coordinadas se encuentra en la esquina superior izquierda de la principal del gráfico.

price

[out]   Valor del precio en el gráfico para el cual se recibirá el valor en píxeles en el eje Y. El inicio de las coordinadas se encuentra en la esquina superior izquierda de la principal del gráfico.

Valor devuelto

Devuelve true en caso de la ejecución con éxito, de lo contrario - false. Para obtener la información sobre el error, hay que llamar a la función GetLastError().

Ejemplo:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- mostramos los parámetros del evento en el gráfico
   Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);
//--- si se trata del evento del cliqueo sobre el gráfico
   if(id==CHARTEVENT_CLICK)
     {
      //--- preparamos las variables
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
      //--- convertimos las coordinadas X y Y  en los términos fecha/hora
      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);
         //--- hacemos la conversión inversa: (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());
         //--- delete lines
         ObjectDelete(0,"V Line");
         ObjectDelete(0,"H Line");
         //--- create horizontal and vertical lines of the crosshair
         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("+--------------------------------------------------------------+");
     }
  }

Véase también

ChartTimePriceToXY()