Одновременное срабатывание CHARTEVENT_CLICK и CHARTEVENT_OBJECT_CLICK Как решить задачу?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Igor Petrov
156
Igor Petrov  

Задача такая! При нажатии на кнопку Советник ожидает клика мышки на графике для модификации стоплосса используя координаты нажатия мышки на графике.

Проблема, при нажатии на кнопку сразу срабатывает и нажатие на графике в OnChartEvent, так что срабатывает клик мышки при                                      id == CHARTEVENT_CLICK

Пробовал запоминать кнопку в глобальные переменные при id = CHARTEVENT_OBJECT_CLICK и использовать если существует в глобальной переменной при id == CHARTEVENT_CLICK

Получается что переменная записывается и сразу используется и срабатывает при id== CHARTEVENT_CLICK.

Как можно решить задачу?

Vitaly Muzichenko
13914
Vitaly Muzichenko  
Igor Petrov:

Задача такая! При нажатии на кнопку Советник ожидает клика мышки на графике для модификации стоплосса используя координаты нажатия мышки на графике.

Проблема, при нажатии на кнопку сразу срабатывает и нажатие на графике в OnChartEvent, так что срабатывает клик мышки при                                      id == CHARTEVENT_CLICK

Пробовал запоминать кнопку в глобальные переменные при id = CHARTEVENT_OBJECT_CLICK и использовать если существует в глобальной переменной при id == CHARTEVENT_CLICK

Получается что переменная записывается и сразу используется и срабатывает при id== CHARTEVENT_CLICK.

Как можно решить задачу?

Проверил, это разные события

CHARTEVENT_CLICK = в любом месте на графике

CHARTEVENT_OBJECT_CLICK = только клик на графическом объекте

Сделайте так:

if(id==CHARTEVENT_OBJECT_CLICK && sparam!="ObjName") {
  ...
}
Igor Petrov
156
Igor Petrov  

   

if(id==CHARTEVENT_CLICK && sparam != "stopMause")


 Вот этот код Срабатывает при нажатии на кнопке с name =  "stopMause"

Vitaly Muzichenko
13914
Vitaly Muzichenko  
Igor Petrov:

   


 Вот этот код Срабатывает при нажатии на кнопке с name =  "stopMause"

Да, только что проверил, не помогает даже установка флага и выход

 bool flag=true;
   if(id==CHARTEVENT_OBJECT_CLICK && sparam=="bpu_AUD") {
     flag=false;
     Alert("==");
     return;
   }
   if(id==CHARTEVENT_CLICK && flag) { 
     Alert(dparam);
    // Alert(sparam);
   }


Может что не так делаю

Igor Petrov
156
Igor Petrov  
Vitaly Muzichenko:

Да, только что проверил, не помогает даже установка флага и выход


Может что не так делаю

Может флаг  на глобальный уровень, не в функции OnChartEvent .

Vitaly Muzichenko
13914
Vitaly Muzichenko  
Igor Petrov:

Может флаг  на глобальный уровень, не в функции OnChartEvent .

Пробуйте, у меня не пошло, всё-равно срабатывают 2 события одновременно

Artyom Trishkin
Модератор
52425
Artyom Trishkin  
Vitaly Muzichenko:

Пробуйте, у меня не пошло, всё-равно срабатывают 2 события одновременно

Если клик по кнопке - запускаем ожидание. Если клик по графику и ожидание закончилось - искомое событие.
Aleksey Mavrin
2654
Aleksey Mavrin  
Igor Petrov:

Задача такая! При нажатии на кнопку Советник ожидает клика мышки на графике для модификации стоплосса используя координаты нажатия мышки на графике.

Проблема, при нажатии на кнопку сразу срабатывает и нажатие на графике в OnChartEvent, так что срабатывает клик мышки при                                      id == CHARTEVENT_CLICK

Пробовал запоминать кнопку в глобальные переменные при id = CHARTEVENT_OBJECT_CLICK и использовать если существует в глобальной переменной при id == CHARTEVENT_CLICK

Получается что переменная записывается и сразу используется и срабатывает при id== CHARTEVENT_CLICK.

Как можно решить задачу?

Два события идут одновременно в очередь, а клик на графике уже третье событие. Нужно "отсеять" второе, т.е. CHARTEVENT_CLICK когда клик на кнопке. Либо проверкой координат клика, если попадаем на кнопку - выход, можно попробовать просто пропускать один CHARTEVENT_CLICK,

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

Pavel Verveyko
4353
Pavel Verveyko  
Igor Petrov:

Задача такая! При нажатии на кнопку Советник ожидает клика мышки на графике для модификации стоплосса используя координаты нажатия мышки на графике.

Проблема, при нажатии на кнопку сразу срабатывает и нажатие на графике в OnChartEvent, так что срабатывает клик мышки при                                      id == CHARTEVENT_CLICK

Пробовал запоминать кнопку в глобальные переменные при id = CHARTEVENT_OBJECT_CLICK и использовать если существует в глобальной переменной при id == CHARTEVENT_CLICK

Получается что переменная записывается и сразу используется и срабатывает при id== CHARTEVENT_CLICK.

Как можно решить задачу?

а вот если события через switch проверять
при нажатии на кнопку включаем флаг что кнопка нажата и break
следующее событие контроль мыши и проверка этого флага

то данной особенности вообще не будет заметно

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий