кнопка на экране - это возможно?

 
Kаkим способом сделать кнопку (обьект - чуствительныи к нажатию мышкой) на экране графиков, при нажатии которои запустить указанную функцию из эксперта?
 
Никак. Вы можете отслеживать изменение координат привязки объекта через бесконечный цикл в скрипте.
 
Rosh:
Никак. Вы можете отслеживать изменение координат привязки объекта через бесконечный цикл в скрипте.

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

А вот и скрипт. После того как бросить на график рисует прямоугольник при щелчке по нем выбрасывает алерт



//+------------------------------------------------------------------+
//|                                                       button.mq4 |
//|                                                           Jhonny |
//|                                                 jhonnyfx@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Jhonny"
#property link      "jhonnyfx@mail.ru"
#include  <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
ObjectCreate( "Button", OBJ_RECTANGLE, 0,Time[0],Ask,Time[10], Ask+20*Point);
WindowRedraw() ;
SendMessageA( WindowHandle(Symbol(), Period()) , WM_COMMAND, 33247, 0 );
 
while(!IsStopped())
   {
   for(int i=0; i<ObjectsTotal();i++)
      if (StringFind(ObjectName(i),"Rectangle",0)>-1)
        { 
         if (ObjectGet(ObjectName(i),OBJPROP_TIME1)>=Time[10])
         if (ObjectGet(ObjectName(i),OBJPROP_TIME1)<=Time[0])
         if (ObjectGet(ObjectName(i),OBJPROP_PRICE1)>=Ask)
         if (ObjectGet(ObjectName(i),OBJPROP_PRICE1)<=Ask+20*Point)
         {
            
            
            Alert("Нажата кнопка!");
            
         }
         ObjectDelete(ObjectName(i));
         SendMessageA( WindowHandle(Symbol(), Period()) , WM_COMMAND, 33247, 0 );
         }
 
      Sleep(10);
   }
 
   return(0);
  }
//+------------------------------------------------------------------+
 
Jhonny:
////+------------------------------------------------------------------+

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

Спасибо огромное...Полагаю теперь смогу сильно упростить свою работу.

+100.

 

... и кто сказал что нельзя...

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

 
sasa999:

... и кто сказал что нельзя...

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

А наглость второе счастье ?!!!

Вам всё дали, всё работает и неоднократно проверено...умейте развиваться и сами что-то делать, а не только просить.

 
Lord_Shadows:
...умейте развиваться и сами что-то делать, а не только просить.
если бы умел, то бы не спрашивал :( пока у меня програмирование доволно темное дело :((
в данной ситуации я ищу вариант с которым можно без затруднений рисовать на графиках и при необходимости использовать кнопку. пока мои решения очень простые - графический обьект, которого я при необходимости чуть передвигаю (меняется координаты и активизируется функция). пока единственная беда в том, что чтобы передвигать обьект должен быть переведен в режим редактирования (двойнои шчелчок) и бывает когда нажимаю "делете" чтобы стереть лишние линии, забываю и пропадает и моя кнопка :( . 2 вариант вариант с постоянно обновлающиеся кнопкой, чтобы она всегда была последним обьектом и можно ее стереть нажатием "назад" при этом вызивая необходимую функцию - этот вариант немного удобнее, но есть и много недостаткав.. в коды Windows пока неразбираюсь и сделать чтото посерезнее неполучается. Может ктото знает как "горячые" клавиши задеисвовать???
 
Учебникомsasa999 писал (а):
Lord_Shadows:
...умейте развиваться и сами что-то делать, а не только просить.
если бы умел, то бы не спрашивал :( пока у меня програмирование доволно темное дело :((
в данной ситуации я ищу вариант с которым можно без затруднений рисовать на графиках и при необходимости использовать кнопку. пока мои решения очень простые - графический обьект, которого я при необходимости чуть передвигаю (меняется координаты и активизируется функция). пока единственная беда в том, что чтобы передвигать обьект должен быть переведен в режим редактирования (двойнои шчелчок) и бывает когда нажимаю "делете" чтобы стереть лишние линии, забываю и пропадает и моя кнопка :( . 2 вариант вариант с постоянно обновлающиеся кнопкой, чтобы она всегда была последним обьектом и можно ее стереть нажатием "назад" при этом вызивая необходимую функцию - этот вариант немного удобнее, но есть и много недостаткав.. в коды Windows пока неразбираюсь и сделать чтото посерезнее неполучается. Может ктото знает как "горячые" клавиши задеисвовать???
Что могу посоветовать: 1) долгий и достойный путь с Учебником от уважаемого SK.

2) заплатить тому кто хорошо программирует и пусть он всё сделает для вас и за вас

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

 
sasa999:

... и кто сказал что нельзя...

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

Ну ни капли воображения....

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

возможны и другие варианты.

а если скрипт доработать можно даже чтоб и прямоугольники рисовались там нужно будет использовать вот это https://www.mql5.com/ru/code/8135 для перехвата правой кнопки, ну и надо разобраться по какому принципу генерится имя для создаваемого обьекта, это чтоб правильно удалять только последний созданный прямоугольник а не все подряд.

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