ChartXYToTimePrice

转变图表的X和Y轴到时间和价格值

bool  ChartXYToTimePrice(

   long           chart_id,     // 图表 ID

   int            x,            // 图表的 X 轴

   int            y,            // 图表的 Y 轴

   int&           sub_window,   // 子窗口的数量

   datetime&      time,         // 图表上的时间

   double&        price,        // 图表上的价格

   );

参数

chart_id

[in] 图表 ID。0意味着当前图表。

x

[in]  X 轴。

y

[in]  Y 轴。

sub_window

[out]  变量,将写入图表的子窗口数。0意味着主图表窗口。

time

[out]  图表上的时间值,像素值将沿着X轴被接收。起点是窗口/子窗口的左上角。

price

[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) => (时间,价格)

         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("+--------------------------------------------------------------+");

     }

  }

See also

ChartTimePriceToXY()