ChartXYToTimePrice

Convertit les coordonnées X et Y du graphique en valeurs le temps et le prix.

bool  ChartXYToTimePrice(
   long           chart_id,     // l'identificateur du graphique
   int            x,            // la coordonnée X sur le graphique
   int            y,            // la coordonnée Y sur le graphique
   int&           sub_window,   // le numéro de la sous-fenêtre
   datetime&      time,         // le temps sur le graphique
   double&        price         // le prix sur le graphique
   );

Paramètres

chart_id

[in]  L'identificateur du graphique. 0 signifie le graphique actuel.

x

[in] La coordonnée X.

y

[in]  La coordonnée Y.

sub_window

[out]  La variable, où sera inscrit le numéro de la sous- fenêtre du graphique. 0 signifie la fenêtre principale du graphique.

time

[out]  La signification du temps sur le graphique, pour laquelle sera reçue la valeur en pixels sur l'axe X. Le début des coordonnées se trouve dans un angle gauche supérieur de la fenêtre principale du graphique.

price

[out]   La signification du prix sur le graphique, pour laquelle sera reçue la valeur en pixels sur l'axe Y. Le début des coordonnées se trouve dans un angle gauche supérieur de la fenêtre principale du graphique.

La valeur rendue

Rend true en cas de l'exécution réussie, autrement - false. Pour recevoir l'information sur l'erreuril faut appeler la fonction GetLastError () .

Exemple:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- déduisons les paramètres de l'événement sur le graphique
   Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);
//--- Si ce sont les événements du clic de la souris sur le graphique
   if(id==CHARTEVENT_CLICK)
     {
      //--- préparons les variables
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
      //--- transformons les coordonnées X et Y dans les termes la date/temps 
      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);
         //--- faisons la transformation inverse: (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("+--------------------------------------------------------------+");
     }
  }

Voir aussi

ChartTimePriceToXY()