ChartXYToTimePrice

チャートのX座標とY座標を時間と価格の値に変換します。

bool  ChartXYToTimePrice(
   long           chart_id,     // Chart ID
   int            x,            // The X coordinate on the chart
   int            y,            // The Y coordinate on the chart
   int&           sub_window,   // The number of the subwindow
   datetime&      time,         // Time on the chart
   double&        price         // Price on the chart
   );

パラメーター

chart_id

[in]チャートID。0は現在のチャートを意味します。

バツ

[入力] X座標。原点は、メインチャートウィンドウの左上隅にあります。

そして

[入力] Y座標。原点は、メインチャートウィンドウの左上隅にあります。

sub_window

[出力]グラフのサブウィンドウ番号が書き込まれる変数。0はメインチャートウィンドウを意味します。

時間

[out]チャート上の時間値。X軸に沿ったピクセル単位の値が受信されます。

価格

[out]チャート上の価格値。Y軸に沿ったピクセル単位の値が受信されます。

戻り値

成功した場合はtrue、それ以外の場合はfalseを返します。エラーに関する情報を取得するには、GetLastError()関数を呼び出します。

例:

//+——————————————————————+
//| ChartEvent function                                              |
//+——————————————————————+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//— Show the event parameters on the chart
   Comment(__FUNCTION__,“: id=”,id,” lparam=”,lparam,” dparam=”,dparam,” sparam=”,sparam);
//— If this is an event of a mouse click on the chart
   if(id==CHARTEVENT_CLICK)
     {
      //— Prepare variables
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
      //— Convert the X and Y coordinates in terms of date/time
      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);
         //— Perform reverse conversion: (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(“+————————————————————–+”);
     }
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">