ChartTimePriceToXY
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, _Period, BAR_NUMBER, 1, rates)!=1)
{
PrintFormat("CopyRates() failed for bar %d. Error %d", BAR_NUMBER, GetLastError());
return;
}
//--- 把取得的价格和时间转换成图表的像素坐标
int x=0, y=0;
ResetLastError();
if(!ChartTimePriceToXY(ChartID(), 0, rates[0].time, rates[0].close, x, y))
{
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_NUMBER, TimeToString(rates[0].time), _Digits, rates[0].close, x, y);
/*
结果:
For bar[0] with opening time 2024.08.09 15:06 and price 1.27378, the chart coordinates are x: 784, y: 240
*/
}