783 
Эксперт, поддерживающий диалог с пользователем (dialogue.mq4), может быть, например, 
таким: 
//-------------------------------------------------------------------- 
// dialogue.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4. 
//---------------------------------------------------------------  1  -- 
#include  <WinUser32.mqh>                // Нужно для MessageBox 
extern  double  Time_News=15.30;          // Время важных новостей 
bool  Question=false;                   //  Флажок  (вопрос  ещё  не  задан) 
//---------------------------------------------------------------  2  -- 
int  start()                            // Спец. функция start 
  { 
    PlaySound("tick.wav");              //  На  каждом  тике 
    double  Time_cur=Hour()+  Minute()/100.0;// Текущее время (double) 
    if  (OrdersTotal()>0  &&  Question==false  &&  Time_cur>=Time_News-0.05) 
      {                                  // При некоторых условиях 
      PlaySound("news.wav");            // На каждом тике 
      Question=true;                    // Флажок (вопрос уже задан) 
      int  ret=MessageBox("Время важных новостей. Закрыть все ордера?", 
      "Вопрос",  MB_YESNO|MB_ICONQUESTION|MB_TOPMOST);  // Диалог. окно 
      //---------------------------------------------------------  3  -- 
      if(ret==IDYES)                    // Если получен ответ ДА 
          Close_Orders();                // То закрываем все ордера 
      } 
    return;                              //  Выход  
  } 
//---------------------------------------------------------------  4  -- 
void  Close_Orders()                    // Польз. ф-ия закрытия ордеров 
  { 
    Alert("Работает функция закрытия всех ордеров.");// Для иллюстрации 
    return;                              //  Выход  
  } 
//--------------------------------------------------------------- 5 -- 
В блоке 1-2 в программу включён файл WinUser32.mqh, в котором определены коды 
возврата функции MessageBox(). В этом блоке также задана внешняя переменная 
Time_News - время выхода важных новостей. В течение всего периода исполнения 
эксперта вопрос о закрытии ордеров должен быть задан пользователю всего один раз. Для 
того, чтобы учитывать в эксперте был ли задан вопрос, объявлена переменная Question. 
При каждом запуске на исполнение функции start() (блок 2-3) исполняется функция 
PlaySound(). Воспроизводимый при этом звук tick.wav напоминает слабый щелчок,