Download MetaTrader 5

Mouse coordinates and CHARTEVENT_OBJECT_CLICK

To add comments, please log in or register
Do you know that MQL5 has event handling?
Mihai Ionescu
1301
Mihai Ionescu 2010.07.22 20:41 

How can I get mouse coordinates under an object when I click on it?

Is it possible for MT5 to generate 2 events when I click on an object? I mean, CHARTEVENT_OBJECT_CLICK and CHARTEVENT_CLICK also?

I tried almost every idea I had, but now I'm stuck. I cannot get mouse coordinates when I click on the chart, when there's an object there. 

---- 

I have to draw some objects, and I have to get the coordinates under the mouse when I click somewhere on the chart.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Chart Constants / Types of Chart Events
  • www.mql5.com
Standard Constants, Enumerations and Structures / Chart Constants / Types of Chart Events - Documentation on MQL5
Alexey Da
Moderator
6606
Alexey Da 2010.07.23 11:10  

Thank for your message.

We'll discuss it. 

 

Rashid Umarov
Admin
11836
Rashid Umarov 2010.07.23 11:40  

Try this  EA from Types of Chart Events:

#define KEY_NUMPAD_5       12
#define KEY_LEFT           37
#define KEY_UP             38
#define KEY_RIGHT          39
#define KEY_DOWN           40
#define KEY_NUMLOCK_DOWN   98
#define KEY_NUMLOCK_LEFT  100
#define KEY_NUMLOCK_5     101
#define KEY_NUMLOCK_RIGHT 102
#define KEY_NUMLOCK_UP    104
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Print("The expert with name",MQL5InfoString(MQL5_PROGRAM_NAME),"is running");
//---
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // Event identifier  
                  const long& lparam,   // Event parameter of long type
                  const double& dparam, // Event parameter of double type
                  const string& sparam  // Event parameter of string type
                  )
  {
//--- the left mouse button has been pressed on the chart
   if(id==CHARTEVENT_CLICK)
     {
      Print("The coordinates of the mouse click on the chart are: x=",lparam,"  y=",dparam);
     }
//--- the mouse has been clicked on the graphic object
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      Print("The mouse has been clicked on the object with name '"+sparam+"'");
     }
//--- the key has been pressed
   if(id==CHARTEVENT_KEYDOWN)
     {
      switch(lparam)
        {
         case KEY_NUMLOCK_LEFT:  Print("The KEY_NUMLOCK_LEFT has been pressed");   break;
         case KEY_LEFT:          Print("The KEY_LEFT has been pressed");           break;
         case KEY_NUMLOCK_UP:    Print("The KEY_NUMLOCK_UP has been pressed");     break;
         case KEY_UP:            Print("The KEY_UP has been pressed");             break;
         case KEY_NUMLOCK_RIGHT: Print("The KEY_NUMLOCK_RIGHT has been pressed");  break;
         case KEY_RIGHT:         Print("The KEY_RIGHT has been pressed");          break;
         case KEY_NUMLOCK_DOWN:  Print("The KEY_NUMLOCK_DOWN has been pressed");   break;
         case KEY_DOWN:          Print("The KEY_DOWN has been pressed");           break;
         case KEY_NUMPAD_5:      Print("The KEY_NUMPAD_5 has been pressed");       break;
         case KEY_NUMLOCK_5:     Print("The KEY_NUMLOCK_5 has been pressed");      break;
         default:                Print("Some not listed key has been pressed");
        }
      ChartRedraw();
     }
//--- the object has been deleted
   if(id==CHARTEVENT_OBJECT_DELETE)
     {
      Print("The object with name",sparam,"has been deleted");
     }
//--- the object has been created
   if(id==CHARTEVENT_OBJECT_CREATE)
     {
      Print("The object with name",sparam,"has been created");
     }
//--- the object has been moved or its anchor point coordinates has been changed
   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      Print("The anchor point coordinates of the object with name",sparam,"has been changed");
     }
//--- the text in the Edit of object has been changed
   if(id==CHARTEVENT_OBJECT_ENDEDIT)
     {
      Print("The text in the Edit field of the object with name",sparam,"has been changed");
     }
  }

Alexey Da
Moderator
6606
Alexey Da 2010.07.23 12:48  
We decided not to generate two events. Mouse coordinates will be returned to you using arguments lparam and dparam.
void OnChartEvent(const int id,         // Event identifier  
                  const long& lparam,   // Event parameter of long type
                  const double& dparam, // Event parameter of double type
                  const string& sparam  // Event parameter of string type
                  )
Please wait for the next build.
Mihai Ionescu
1301
Mihai Ionescu 2010.07.23 16:03  
alexvd:
We decided not to generate two events. Mouse coordinates will be returned to you using arguments lparam and dparam.Please wait for the next build.

Very useful then... 

Mihai Ionescu
1301
Mihai Ionescu 2010.07.23 16:04  
Rosh:

Try this  EA from Types of Chart Events:


This is the main code I based everything on:).. Thanks
To add comments, please log in or register