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 軸方向のピクセルの値が受ケ取られるチャートの時間値原点はメインチャートウィンドウの左上隅にあります。

価格

[out]  Y 軸方向のピクセルの値が受ケ取られるチャートの価格値原点はメインチャートウィンドウの左上隅にあります。

戻り値

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

例:

//+------------------------------------------------------------------+
//| ChartEvent 関数                                                  |
//+------------------------------------------------------------------+
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()