Why am I getting zero values in the function
int window = 0;
double NewProfit;
datetime CurrTime;
ChartXYToTimePrice(0, 320, 410, window, CurrTime, NewProfit);
int window = 0;
double NewProfit;
datetime CurrTime;
ChartXYToTimePrice(0, 320, 410, window, CurrTime, NewProfit);
Check the returned value of ChartXYToTimePrice().
Return Value
Returns true if successful, otherwise false. To get information about the error, call the GetLastError() function.
Because you have not assigned any value to CurrTime or NewProfit
Because you have not assigned any value to CurrTime or NewProfit
//| 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("+--------------------------------------------------------------+");
}
}
Because you have not assigned any value to CurrTime or NewProfit
int window = 0;
double NewProfit;
datetime CurrTime;
ChartXYToTimePrice(0, 320, 410, window, CurrTime, NewProfit);
Works fine for me:
double NewProfit;
datetime CurrTime;
if(!ChartXYToTimePrice(0, 320, 410, window, CurrTime, NewProfit)) printf("Error: %i",GetLastError());
printf("NewProfit: %f",NewProfit);
printf("CurrTime: %s",TimeToStr(CurrTime));
2017.02.03 23:21:58.453 TestScript Ger30Sb317,M1: NewProfit: 11642.833572
Thanks folks
I don't really understand what you are trying to achieve.
Some objects are set by time / price e.g. OBJ_RECTANGLE and OBJ_TEXT
Some objects are set by x / y e.g. OBJ_RECTANGLE_LABEL and OBJ_LABEL
You will need to pick the object type that suits your needs.
Perhaps a screenshot will help us to understand?
int window = 0;
double NewProfit;
datetime CurrTime;
ChartXYToTimePrice(0, 320, 410, window, CurrTime, NewProfit);