Нужен совет как сделать лучше

 

Есть код который сканирует все тайм фреймы и символы, при определенных условиях открывается чарт на этом чарте две кнопки, 1 продолжить сканирование рынка , вторая удалить данный чарт.

до тех пор пока ненажата ни одна из кнопок, должна быть пауза.

Вопрос 1 как организовать паузу в течении которой будут сканироваться кнопки?

           2 как организовать проверку нажатий кнопок? 

 
Документация по MQL5: Работа с событиями / EventChartCustom
Документация по MQL5: Работа с событиями / EventChartCustom
  • www.mql5.com
Работа с событиями / EventChartCustom - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Справку читал, непонял как это применить
 
dentraf:
Справку читал, непонял как это применить

Вот тут посмотрите:

https://www.mql5.com/ru/forum/36450/page3#comment_1097983

 
dentraf:

Есть код который сканирует все тайм фреймы и символы, при определенных условиях открывается чарт на этом чарте две кнопки, 1 продолжить сканирование рынка , вторая удалить данный чарт.

до тех пор пока ненажата ни одна из кнопок, должна быть пауза.

Вопрос 1 как организовать паузу в течении которой будут сканироваться кнопки?

           2 как организовать проверку нажатий кнопок? 

1 Первый вопрос не понял.

2 См. ниже, если МТ-5 и кнопку создаёте сами, то обработка нажатия кнопки:

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  long b_state;
  if ( id == CHARTEVENT_OBJECT_CLICK )
  {
    if ( sparam == "stop_button" )
    {
      if ( ObjectGetInteger( 0, "stop_button", OBJPROP_STATE, 0, b_state ) )
      {
      }
    }
  }
}

b_state - состояние кнопки. 

 Если кнопка создаётся с помощью стандартной библиотеки:

То у неё есть свойство "Pressed' (Save_Button.Pressed() ) 

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  if ( id == CHARTEVENT_OBJECT_CLICK )
  {
    if ( ( sparam == "stop_button" ) && ( Stop_button.Pressed() ) )
    {
      .....
    }
  }
}
 

Проще вот так, чтоб не вспоминать какое у кого название:

    if(( sparam == Stop_button.Name( )) && Stop_button.Pressed( ))
    {
      .....
    }
 
Dima_S:

Проще вот так, чтоб не вспоминать какое у кого название:

+1 :)
 

Понимаете, вся сложность в том, что OnChartEvent отслеживает нажатие на том таймфрейме к которому присоединен советник, а нажатие на новых он неотслеживает, вот и вопрос как сделать?

 
вариантов нет?
 

Действительно тут OnChartEvent не поможет, видимо остается один способ:

- из советника создаете кнопки на нужных чартах,

- проверяете по таймеру состояние (нажата/не нажата) каждой из них

Состояние кнопки можно вытянуть из ее свойств.

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

Для себя делал такое, работает. 

 
kPVT:

Действительно тут OnChartEvent не поможет, видимо остается один способ:

- из советника создаете кнопки на нужных чартах,

- проверяете по таймеру состояние (нажата/не нажата) каждой из них

Состояние кнопки можно вытянуть из ее свойств.

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

Для себя делал такое, работает. 

Спасибо за содержательный ответ
Причина обращения: