Можно ли средствами MQL узнать координаты курсора мыши в окне котировок?

 

Уважаемые коллеги!


Подскажите, пожалуйста, можно ли средствами MQL узнать координаты курсора мыши в окне котировок?


Заранее благодарен.

 

Можно, вот он скрипт для получения координат мыши в окне с графиком цены (мне почемуто показалось чтовсетаки не "Окно котировок" нужно, а именно график)

//+------------------------------------------------------------------+
//|                                                     MousePos.mq4 |
//|                                                           Jhonny |
//|                                                 jhonnyfx@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Jhonny"
#property link      "jhonnyfx@mail.ru"
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
 
#import "user32.dll"
   bool      GetCursorPos(int& Pos[2]);
   bool      GetWindowRect(int hWnd,int& Pos[4]);
   
int start()
  {int p[2];
   int rect[4];
   int hwnd=WindowHandle(Symbol(),Period());
  while(!IsStopped())
   {  GetWindowRect(hwnd,rect);
      GetCursorPos(p);
      int X=-rect[0]+p[0];
      int Y=-rect[1]+p[1];
      string c="Глобальные координаты мыши x= "+p[0]+" y= "+p[1]+"\n";
      c=c+"Координаты мыши в окне котировок x= "+X+" y= "+Y";
      Comment(c);
      Sleep(10);
   }
   return(0);
  }
//+------------------------------------------------------------------+

PS Хмм.. оказывается с простенькими структурами можно работать... кто знает может и со сложными чтонибудь придумается...

 

Спасибо, это тот путь, который я безуспешно искал.


А то я нашел способ с применением IdleLib.dll, описанный на форуме, но сильно не хочется пользоваться чем-то, чего нет в исходниках. Нахлебаешься потом.

 

Вопрос почти аналогичный, но нужны координаты не в пикселях, а в единицах графика, X(datetime), Y(price), например, Х=D'2011.03.01 15:30 ' Y=1.2345

То есть получить ту же координату Х курсора Т(datetime), которую мы видим внизу графика, данные TOHLCV на инфо-панели, отслеживающие положение курсора.

П.С. При компиляции приведенного кода ошибка, в этой строчке нужно убрать лишнюю последнюю кавычку:

c=c+"Координаты мыши в окне котировок x= "+X+" y= "+Y ;


 

thecore:

Спасибо, это тот путь, который я безуспешно искал.
А то я нашел способ с применением IdleLib.dll, описанный на форуме, но сильно не хочется пользоваться чем-то, чего нет в исходниках. Нахлебаешься потом.

:-))) Много ли нахлебались от Word, Exel, Opera, QIP и многих других полезных программ?

 
Zhunko:

:-))) Много ли нахлебались от Word, Exel, Opera, QIP и многих других полезных программ?

Не многие, свои самопальные DLL, в ряд с этими продуктами ставят.

;)

 

Тогда, наверно, вопрос/просьба/мольба/взывание к разработчикам:

Дайте, плиз, возможность получать значение координат курсора в единицах графика, X(datetime), Y(price)!

Например, функцией наподобие GetCursor...(), или добавить курсор в список графических объектов, пусть только с возможностью получения (Get) его свойств. Желательно в зависимости от входного параметра, возвращать или пиксели или datetime/price, так как при работе с графическими объектами используются оба вида координат. Зачем на ровном месте создавать проблемы с использованием сторонних ДЛЛ, тем более что задача перевода пикселей в значения время/цена получается неоднозначной, нетривиальной и в общем случае нерешаемой. В то время как та же координата курсора по Х лежит на поверхности - под графиками выводятся значения ТOHLCV.

П.С. Могу перечислить проблемы перевода пикселей в значение X(datetime). Они возникнут из-за нарушения линейности шкалы времени на графике по таким причинам:

- пропущенные (отсутствующие) бары;

- пропущенные (отсутствующие) дни - выходные, праздники...

- по пятницам ранее время окончания торгов, причем это время не всегда одно и то же;

- то же самое может быть в пред- и после-праздничные дни;

- на разных ДЦ по разному отображаются выходные дни...

 
n-i-k:

Тогда, наверно, вопрос/просьба/мольба/взывание к разработчикам:

Дайте, плиз, возможность получать значение координат курсора в единицах графика, X(datetime), Y(price)!

Например, функцией наподобие GetCursor...(), или добавить курсор в список графических объектов, пусть только с возможностью получения (Get) его свойств. Желательно в зависимости от входного параметра, возвращать или пиксели или datetime/price, так как при работе с графическими объектами используются оба вида координат. Зачем на ровном месте создавать проблемы с использованием сторонних ДЛЛ, тем более что задача перевода пикселей в значения время/цена получается неоднозначной, нетривиальной и в общем случае нерешаемой. В то время как та же координата курсора по Х лежит на поверхности - под графиками выводятся значения ТOHLCV.

П.С. Могу перечислить проблемы перевода пикселей в значение X(datetime). Они возникнут из-за нарушения линейности шкалы времени на графике по таким причинам:

- пропущенные (отсутствующие) бары;

- пропущенные (отсутствующие) дни - выходные, праздники...

- по пятницам ранее время окончания торгов, причем это время не всегда одно и то же;

- то же самое может быть в пред- и после-праздничные дни;

- на разных ДЦ по разному отображаются выходные дни...

Это не проблемы. Проблема в том, что невозможно получить размеры подокон, если они есть. При наличие подокон невозможно узнать размер окна с графиком цены.

 
Integer:

Это не проблемы. Проблема в том, что невозможно получить размеры подокон, если они есть. При наличие подокон невозможно узнать размер окна с графиком цены.

Есть такая возможность, но очень всё это долго писать и тестировать.

Я бы взялся за 10000$ :-)) Шутка. Времени на это нет.

 

время прошедшее лучше всего брать из статусной строки, а будущее уже расчитывать - подобно тому, что мы видим со включеным перекрестием.

но средствами mql тут врятли обойдешься..

 
Как вариант попробуй создать какой нибуть маленький графический обект и таскай его по графику,а с него уже считуй данные.