Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 185
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день.
Необходимо, чтобы после после определенного события советник завершал работу.
я так понимаю это функция deinit(), мне нужно ее как то вызвать. Цитата из учебника:
"Специальная функция deinit() вызывается для исполнения клиентским терминалом также при завершении работы клиентского терминала, при закрытии окна финансового инструмента, непосредственно перед сменой финансового инструмента и/или периода графика, при удачной перекомпиляции программы в редакторе MetaEditor, при смене входных параметров, а также при смене счета. "
То есть мне нужно вручную, например, закрыть терминал, чтобы эта функция вызывалась?
Я пытался вызвать эту функцию при срабатывании условия, она выполнялась, но приходил новый тик и снова запускалась функция start.
Как мне все таки завершить программу?
Спасибо.
Добрый день.
Необходимо, чтобы после после определенного события советник завершал работу.
я так понимаю это функция deinit(), мне нужно ее как то вызвать. Цитата из учебника:
"Специальная функция deinit() вызывается для исполнения клиентским терминалом также при завершении работы клиентского терминала, при закрытии окна финансового инструмента, непосредственно перед сменой финансового инструмента и/или периода графика, при удачной перекомпиляции программы в редакторе MetaEditor, при смене входных параметров, а также при смене счета. "
То есть мне нужно вручную, например, закрыть терминал, чтобы эта функция вызывалась?
Я пытался вызвать эту функцию при срабатывании условия, она выполнялась, но приходил новый тик и снова запускалась функция start.
Как мне все таки завершить программу?
Спасибо.
Чтобы программно закрыть терминал, в самом начале кода перед функцией start() вставьте:
В функции start(), когда вам необходимо закрыть терминал, вызываете функцию ExitMT4(), которую объявляете за пределами функции start()
Чтобы программно закрыть терминал, в самом начале кода перед функцией start() вставьте:
В функции start(), когда вам необходимо закрыть терминал, вызываете функцию ExitMT4(), которую объявляете за пределами функции start()
Большое спасибо за развернутый ответ.
Мне в принципе было бы достаточно просто завершить работу советника, закрывать терминал необязательно. Неужели нет простого способа?
Я думаю deinit() как то должен решить этот вопрос, но видимо я что-то не так делаю..
Не могу удалить с компа Terminal.exe от Alpari Limited, build 509.
При использовании панели управления для удаления выдается "У Вас недостаточно прав для удаления. Обратитесь к системному Администратору!"
При использовании Uninstall.exe выдает "Сервер возвратил ссылку".
Техподдержка Alpari ничего вразумительного сказать не может, предлагает просто снести всю папку и установить терминал в другую директорию.
Стоит Win 7, Ultimate. Права администратора активированы, Uninstall.exe запускал от имени Администратора.
Буду очень благодарен за любой совет по решению данной проблемы
Большое спасибо за развернутый ответ.
Мне в принципе было бы достаточно просто завершить работу советника, закрывать терминал необязательно. Неужели нет простого способа?
Я думаю deinit() как то должен решить этот вопрос, но видимо я что-то не так делаю..
Не deinit(), а return(0);
Если не ошибаюсь, return(0) просто завершит текущую функцию start() и будет ждать следующего тика, а мне нужно, чтобы советник завершил работу, как если бы я вручную открепил советник от графика.
Я проверил на практике - бесконечно с каждым тиком выдает алерт "Открытых ордеров - 0"
Заветного "Пока" не дождался
Не могу удалить с компа Terminal.exe от Alpari Limited, build 509.
При использовании панели управления для удаления выдается "У Вас недостаточно прав для удаления. Обратитесь к системному Администратору!"
При использовании Uninstall.exe выдает "Сервер возвратил ссылку".
Техподдержка Alpari ничего вразумительного сказать не может, предлагает просто снести всю папку и установить терминал в другую директорию.
Стоит Win 7, Ultimate. Права администратора активированы, Uninstall.exe запускал от имени Администратора.
Буду очень благодарен за любой совет по решению данной проблемы
Некоторые злостные программки (mail.ru у меня было) перераспределяют права доступа и делают так что вы с правами администратора не имеете доступа к их удалению.
Проблема решалась методом научного тыка в перераспределении прав ( ПКМ на папке, свойства, безопасность, изменить, добавить,дополнительно,типы обьектов,поиск.......)
Но потом познакомился с "Revo uninstaller" и весь гемор с удалением чего-то пропал, + увереность что реестр почищен ОТ их деятельности.
Если не ошибаюсь, return(0) просто завершит текущую функцию start() и будет ждать следующего тика, а мне нужно, чтобы советник завершил работу, как если бы я вручную открепил советник от графика.
Я проверил на практике - бесконечно с каждым тиком выдает алерт "Открытых ордеров - 0"
Заветного "Пока" не дождался
Некоторые злостные программки (mail.ru у меня было) перераспределяют права доступа и делают так что вы с правами администратора не имеете доступа к их удалению.
Проблема решалась методом научного тыка в перераспределении прав ( ПКМ на папке, свойства, безопасность, изменить, добавить,дополнительно,типы обьектов,поиск.......)
Но потом познакомился с "Revo uninstaller" и весь гемор с удалением чего-то пропал, + увереность что реестр почищен ОТ их деятельности.
Ваше желание напоминает анекдот про "шашечки". Если нужно, чтобы советник перестал торговать, то через активацию (глобального) флага (после наступления каких-то условий), прерывание функции start() (выход через return) даст ожидаемый результат.
Это, примерно, выглядит так: