//+——————————————————————+
//| ChartEvent function |
//+——————————————————————+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//— Show the event parameters on the chart
Comment(__FUNCTION__,“: id=”,id,” lparam=”,lparam,” dparam=”,dparam,” sparam=”,sparam);
//— If this is an event of a mouse click on the chart
if(id==CHARTEVENT_CLICK)
{
//— Prepare variables
int x =(int)lparam;
int y =(int)dparam;
datetime dt =0;
double price =0;
int window=0;
//— Convert the X and Y coordinates in terms of date/time
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);
//— Perform reverse conversion: (X,Y) => (Time,Price)
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());
//— delete lines
ObjectDelete(0,“V Line”);
ObjectDelete(0,“H Line”);
//— create horizontal and vertical lines of the crosshair
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(“+————————————————————–+”);
}
}
|