Загадочное поведение IsTradeAllowed()

 

В советнике код:

void OnTick()
  {
    if (!IsTradeAllowed()) { Comment("\nНеобходимо разрешить советнику торговать!"); Print("Необходимо разрешить советнику торговать!"); return;}  
    else Comment("");
   
  }

Так вот, если советник включать, когда торговля разрешена:  btn

То код работает безупречно. Запретила торговлю - в комментарии надпись, что "Необходимо разрешить советнику торговать!" и во вкладке "эксперты" на каждом тике такая же надпись. Разрешила торговлю - в комментарии и во вкладке "эксперты" надписи не стало.

Но если же запустить советник, когда торговля запрещена! То тут чудеса. Даже если разрешить торговлю, советник её не начинает! Он продолжает писать и в комментарии и во вкладе "эксперты", что "Необходимо разрешить советнику торговать!".

Я конечно решила проблему, еще и в OnInit() стала проверять, разрешена ли торговля или нет. Но мне непонятно такое поведение функции IsTradeAllowed()

 
Oksana Berenko:

В советнике код:

Так вот, если советник включать, когда торговля разрешена: 

То код работает безупречно. Запретила торговлю - в комментарии надпись, что "Необходимо разрешить советнику торговать!" и во вкладке "эксперты" на каждом тике такая же надпись. Разрешила торговлю - в комментарии и во вкладке "эксперты" надписи не стало.

Но если же запустить советник, когда торговля запрещена! То тут чудеса. Даже если разрешить торговлю, советник её не начинает! Он продолжает писать и в комментарии и во вкладе "эксперты", что "Необходимо разрешить советнику торговать!".

Я конечно решила проблему, еще и в OnInit() стала проверять, разрешена ли торговля или нет. Но мне непонятно такое поведение функции IsTradeAllowed()

А Вы проверяйте ещё и MQL_TRADE_ALLOWED - так как если при запрещённой торговле (для всего терминала) прикрепить советника, то для советника сразу устанавливается запрет торговать. И потом хоть кликай на кнопку, хоть не кликай - с советника запрет сам собой не снимется.
 
Karputov Vladimir:
А Вы проверяйте ещё и MQL_TRADE_ALLOWED - так как если при запрещённой торговле (для всего терминала) прикрепить советника, то для советника сразу устанавливается запрет торговать. И потом хоть кликай на кнопку, хоть не кликай - с советника запрет сам собой не снимется.
Нашла! https://docs.mql4.com/ru/runtime/tradepermission Спасибо!
Разрешение на торговлю - Документация на MQL4
  • docs.mql4.com
Разрешение на торговлю - Документация на MQL4