下载MetaTrader 5
MQL5参考图表操作ChartXYToTimePrice 

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()


更新: 2015.12.03