Как получить имя Trendline на низком уровне? - страница 3

 
pako:

@  elugovoy:     при создании об'екта передаете имя в Dollar Difference Line, кликаете мышью на Dollar Difference Line приложение уже знает имя линии

Вы не совсем в теме. Если таких линий 10,50,100... и ПКМ нажата на одной из них, то какое имя передавать в DDL?

В базе хранятся все созданные линии, но на какой конкретно линии кликнул пользователь ПКМ знает только он и терминал. Программно штатными средствами получить нельзя для MT4.

Для MT5 уже можно, спасибо tol64 и barabashkakvn.

 
tol64:

В общем, самый простой вариант это кликнуть сначала по объекту левой кнопкой мыши, чтобы запомнить его имя:

//---

Но хочется кликнуть просто правой и тоже получить имя. Средствами MQL. ))

Толик, ты юморист еще тот )))) 

Кстати натолкнул на мысль меня. Чтобы не париться со стандартной Popup менюхой, можно использовать Shift + или Ctrl + ЛКМ...

Но хочется сделать и красиво с менюшкой )) Для людей же... чтобы облегчить жизнь.

 
elugovoy:

Толик, ты юморист еще тот )))) 

Кстати натолкнул на мысль меня. Чтобы не париться со стандартной Popup менюхой, можно использовать Shift + или Ctrl + ЛКМ...

Но хочется сделать и красиво с менюшкой )) Для людей же... чтобы облегчить жизнь.

Да, такие комбинации тоже работают.

Это уже что-то. Плюс одна строчка в документации для пользователя. ))

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//---
void OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string MouseState(uint state)
  {
   string res;

   res+="\nML: "   +(((state& 1)== 1)?"DN":"UP");   // mouse left
   res+="\nMR: "   +(((state& 2)== 2)?"DN":"UP");   // mouse right (always zero)
   res+="\nMM: "   +(((state&16)==16)?"DN":"UP");   // mouse middle
   res+="\nMX: "   +(((state&32)==32)?"DN":"UP");   // mouse first X key
   res+="\nMY: "   +(((state&64)==64)?"DN":"UP");   // mouse second X key
   res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP");   // shift key
   res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP");   // control key

   return(res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   if(id==CHARTEVENT_KEYDOWN)
      Print("sparam: ",sparam);
   if(id==CHARTEVENT_OBJECT_CLICK)
      Print("sparam: ",sparam);
   if(id==CHARTEVENT_MOUSE_MOVE)
      Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam));
  }
 
tol64:
 

В общем, самый простой вариант это кликнуть сначала по объекту левой кнопкой мыши, чтобы запомнить его имя:

Так я это и предлагал. Прикрепил индюк - он всегда показывает имя объекта, с которым в данный момент работает пользователь. Как временный вариант можно его юзать.

Файлы:
 
elugovoy:

Вы не совсем в теме. Если таких линий 10,50,100... и ПКМ нажата на одной из них, то какое имя передавать в DDL?

В базе хранятся все созданные линии, но на какой конкретно линии кликнул пользователь ПКМ знает только он и терминал. Программно штатными средствами получить нельзя для MT4.

Для MT5 уже можно, спасибо tol64 и barabashkakvn.

попробуйте нажать на линию левой мышкой, и не отпуская левую,  правой

MT5 МТ4  "идинаково" 

 

 
pako:

попробуйте нажать на линию левой мышкой, и не отпуская левую,  правой

MT5 МТ4  "идинаково" 

Это конечно хорошо что есть и такой вариант, но хочется все-таки обрабатывать только ПКМ. Представьте что во всех программах нужно будет давить сначала ЛКМ, затем, не отпуская ее давить ПКМ, и только после этого появится меню.

В целом, расцениваю этот момент как "тонкий" баг, о чем и написал в сервисдеск. То есть, торговать-то можно и без исправления таких нюансов, но хочется чтобы была возможность программной обработки каждой мышинной клавиши.

Тему наверное можно закрывать.

Всем спасибо за идеи, примеры и "файлики"  ))

 
elugovoy:

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


Для истории...

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Обновление платформы MetaTrader 4 build 765: Расширение возможностей виртуального хостинга

MetaQuotes, 2014.12.09 16:47

В пятницу 12 декабря 2014 года будет опубликовано обновление платформы MetaTrader 4. Обновление содержит следующие изменения:

... 

12. MQL4: Добавлена генерация события CHARTEVENT_MOUSE_MOVE (в точке входа OnChartEvent) по нажатию правой кнопки мыши на графике.

... 


Причина обращения: