ChartXYToTimePrice

Converte le coordinate X ed Y sul grafico, nei valori tempo e prezzo.

bool  ChartXYToTimePrice(
   long           chart_id,     // ID del Grafico
   int            x,            // La coordinata X sul grafico
   int            y,            // La coordinata Y sul grafico
   int&           sub_window,   // Il numero di sottofinestra
   datetime&      time,         // Orario sul grafico
   double&        price         // Prezzo sul grafico
   );

Parametri

chart_id

[in] ID del Grafico. 0 significa il grafico corrente.

x

[in]  La coordinata X .

y

[in]  La coordinata Y.

sub_window

[out]  La variabile, in cui verrà scritto il numero della sottofinestra del grafico. 0 significa la finestra principale del grafico.

time

[out] Il valore temporale sul grafico, per cui il valore in pixel lungo l'asse X verrà ricevuto. L'origine è l'angolo superiore sinistro della finestra principale del grafico.

price

[out]  Il valore prezzo sul grafico, per cui il valore in pixel lungo l'asse Y verrà ricevuto. L'origine è l'angolo superiore sinistro della finestra principale del grafico.

Valore restituito

Restituisce true se ha successo, altrimenti false. Per ottenere informazioni sull'errore, chiamare la funzione GetLastError().

Esempio:

//+--------------------------------------------------------------------------------+
//| Funzione ChartEvent                                                            |
//+--------------------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Mostra i parametri dell'evento sul chart
   Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);
//--- Se questo è un evento di un click del mouse sul chart
   if(id==CHARTEVENT_CLICK)
     {
      //--- Prepara le variabili
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
      //--- Converte le coordinate X ed Y in termini di data/orario
      if(ChartXYToTimePrice(0,x,y,window,dt,price))
        {
         PrintFormat("Window=%d X=%d  Y=%d  =>  Orario=%s  Prezzo=%G",window,x,y,TimeToString(dt),price);
         //--- Esegue la conversione rovesciata: (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("+--------------------------------------------------------------+");
     }
  }

Vedi anche

ChartTimePriceToXY()