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