Вы запросили информацию из AccountInfo. Вам никто не запрещал торговать, так как подключение к счёту не с инвесторским паролем и брокер тоже не запрещал Вам торговать.
Чтобы узнать состояние кнопки "Авто-торговля"
bool trade_allowed=TerminalInfoInteger(TERMINAL_TRADE_ALLOWED);
bool trade_allowed=TerminalInfoInteger(TERMINAL_TRADE_ALLOWED);
Спасибо за разъяснения.
Ответьте, пожалуйста, еще на один вопрос, нигде не могу найти ответ на него. Верно ли или нет следующее утверждение: "Авто-торговля запрещена во время просмотра/редактирования свойств эксперта (горячая клавиша <F7>)".
Ссылку на это утверждение дайте, пожалуйста. Если это в документации, то надо срочно править документацию.
В MQL5 всё управление экспертом производится через очередь сообщений. Что проиисходит при вызове свойств эксперта?
1. Открывается диалог свойств
2. Если диалог свойств закрывается по крестику или по Cancel, то ничего не происходит
3. Если диалог свойств закрывается по OK
3.1. Если входные параметры не менялись, то ничего не происходит
3.2. Если входные параметры поменялись, то в очередь событий помещается событие deinit, событие смены параметров и событие init. При этом нужно иметь в виду, что если у Вас эксперт зациклен, то эти события так и не отработают. Обработка событий производится в строгой очерёдности - пока не отработано текущее событие (OnTick, OnTimer, OnTrade, OnTradeTransaction etc) следующее событие даже не начинает обрабатываться
Кстати, запрещение на торговлю может быть выставлено конкретному эксперту. Для проверки
MQLInfoInteger(MQL_TRADE_ALLOWED)
Ссылку на это утверждение дайте, пожалуйста. Если это в документации, то надо срочно править документацию.
В MQL5 всё управление экспертом производится через очередь сообщений. Что проиисходит при вызове свойств эксперта?
1. Открывается диалог свойств
2. Если диалог свойств закрывается по крестику или по Cancel, то ничего не происходит
3. Если диалог свойств закрывается по OK
3.1. Если входные параметры не менялись, то ничего не происходит
3.2. Если входные параметры поменялись, то в очередь событий помещается событие deinit, событие смены параметров и событие init. При этом нужно иметь в виду, что если у Вас эксперт зациклен, то эти события так и не отработают. Обработка событий производится в строгой очерёдности - пока не отработано текущее событие (OnTick, OnTimer, OnTrade, OnTradeTransaction etc) следующее событие даже не начинает обрабатываться
https://www.mql5.com/ru/docs/runtime/event_fire
https://docs.mql4.com/ru/runtime/event_fire
NewTick
Событие NewTick генерируется при поступлении новых котировок и обрабатывается функцией OnTick() у присоединенных советников. Если при поступлении новой котировки выполнялась функция OnTick, запущенная на предыдущей котировке, то пришедшая котировка будет проигнорирована советником, так как соответствующее событие не будет поставлено в очередь событий эксперта.
Все пришедшие во время выполнения программы новые котировки программой игнорируются до тех пор, пока не завершится очередное выполнение функции OnTick(). После этого функция будет запущена только после прихода очередной новой котировки.
Событие NewTick генерируется независимо от того, запрещена или разрешена автоматическая торговля (кнопка "Разрешить/запретить Авто-торговлю"). Запрет автоматической торговли означает только запрет на отправку торговых запросов из эксперта, работа эксперта не прекращается.
Запрет автоматической торговли путем нажатия на указанную кнопку не прерывает текущее выполнение функции OnTick(). Функция OnTick() не запускается на выполнение при открытом окне свойств советника.
Я по этому поводу обращался в сервисдеск.
#1041418

- docs.mql4.com
Значится, чтобы получить разрешение на авто-торговлю, действующее снаружи, т.е. со стороны сервера/брокера, надо использовать обращение к методу AccountInfo.TradeExpert(), а чтобы запросить разрешение на авто-торговлю со стороны терминала, надо обращаться к функции TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).
Спасибо за разъяснения.
https://www.mql5.com/ru/docs/runtime/event_fire
https://docs.mql4.com/ru/runtime/event_fire
Я по этому поводу обращался в сервисдеск.
#1041418
После того, как Вы закрыли ту заявку, реальные исполнители, на которых была назначена данная заявка в ответственность, её больше не увидели. Не успели проследить, поэтому не поправили. Извините
Исправим в ближайшее время
А оригинальный вопрос звучал несколько иначе ""Авто-торговля запрещена во время просмотра/редактирования свойств эксперта (горячая клавиша <F7>)".
Проверил, оказывается, все-таки открытое окно свойств советника не мешает запуску функции OnTick().

- www.mql5.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Класс CAccountInfo
Метод TradeExpert()
Приведенный ниже код предназначен для проверки метода TradeExpert(). Ожидается, что при включенной кнопке "Авто-торговля" на экране увидим значение true, а при выключенной кнопке "Авто-торговля" на экране должно появиться значение false.Однако, советник на каждом тике показывает только одно значение true, вне зависимости от положения кнопки "Авто-торговля".
Почему метод TradeAllowed() из класса CAccountInfo игнорирует состояние кнопки "Авто-торговля", ведь он для этого и предназначен?
Так и должно быть или это ошибка в коде?
MT5 Build 1340 от 13 мая 2016 г.
Ответьте, пожалуйста, еще на один вопрос, нигде не могу найти ответ на него. Верно ли или нет следующее утверждение: "Авто-торговля запрещена во время просмотра/редактирования свойств эксперта (горячая клавиша <F7>)".<F7>)".