ChartTimePriceToXY

从表现时间/价格的图表坐标转变到X和Y轴

bool  ChartTimePriceToXY(
   long           chart_id,     // 图表 ID
   int            sub_window,   // 子窗口数量
   datetime       time,         // 图表上的时间轴
   double         price,        // 图表上的价格轴
   int&           x,            // 图表上时间的X轴
   int&           y             // 图表上价格的Y轴
   );

参数

chart_id

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

sub_window

[in]  图表子窗口的数量。0代表主图表窗口。

time

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

price

[in]   图表上的价格值,像素值将沿着Y轴被接收。起点是窗口/子窗口的左上角。

x

[out]  变量,将接收X轴的时间转换。

y

[out]  变量,将接收Y轴的价格转换。

返回值

如果成功返回true,否则返回false。若要获得的错误信息,请调用GetLastError()函数。

示例:

#define   BAR_NUMBER    0  // 我们要读取价格和时间的柱的编号
 
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 根据 BAR_NUMBER 索引复制一个柱的数据
   MqlRates rates[]={};
   if(CopyRates(_Symbol_PeriodBAR_NUMBER1rates)!=1)
     {
      PrintFormat("CopyRates() failed for bar %d. Error %d"BAR_NUMBERGetLastError());
      return;
     }
       
//--- 把取得的价格和时间转换成图表的像素坐标
   int x=0y=0;
   ResetLastError();
   if(!ChartTimePriceToXY(ChartID(), 0rates[0].timerates[0].closexy))
     {
      Print("ChartTimePriceToXY() failed. Error "GetLastError());
      return;
     }
     
//--- 在日志中打印取得的结果
   PrintFormat("For bar[%d] with opening time %s and price %.*f, the chart coordinates are x: %d, y: %d"BAR_NUMBERTimeToString(rates[0].time), _Digitsrates[0].closexy);
   
   /*
  结果:
   For bar[0with opening time 2024.08.09 15:06 and price 1.27378the chart coordinates are x784y240
   */
  }

另见

ChartXYToTimePrice()