Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не понял, как вы реализуете самостоятельно обработку краша советника? Там же никакие деструкторы не вызываются, просто рантайм его прибивает.
Насколько помню, 100 графиков может быть открыто в терминале, а-а-а-а-а-а...
Кто-нибудь признается, что OnError и аналогичное в 99% случаев будет использоваться слабовольными и непрофессиональными программистами для маскировки своих ошибок?
Какой прекрасный подарок будет трейдерам, которые получат программы с замаскированными косяками. Как будут хвалить Метаквотс за поддержку заведомо ошибочных программ.
Как тут уже заявляли, try/catch хотят использовать как глобальный "перехватить и скрыть косяк". Да, подавляющее большинство кода в мире так и пишется - (полу)глобально ловим и маскируемся. Вы просто об этом не знаете или делаете вид, что "это не так, программисты - ответственны и все в мире идеально".
Вы как потребители, хотите программ с замаскированными ошибками? Особенно в области финансов?
Программисты - хотят. Как хотят меньше напрягаться, плюют на контроль качества и поголовно забывают проверять результаты критических операций.
Поэтому снятие программы после критической ошибки - правильное поведение, заставляющее программистов думать и заботиться о качестве программ.
Вот тут можно держать второго робота в помощниках. А у второго - третьего...
Насколько помню, 100 графиков может быть открыто в терминале, а-а-а-а-а-а...
При делении на ноль советник отключается с сообщением в терминале. Да, терминал не падает. Что делать с открытыми ордерами?
{
int a = 20, b = 21, c = 80, d = 0;
d = c/(a - --b);
return(INIT_SUCCEEDED);
}
2017.01.31 12:38:26.495 TestException (EURUSD,M1) zero divide in 'TestException.mq5' (15,12)
Бить по голове программиста, который написал этот код.
Иначе он такого наговнокодит и вы даже знать об ошибках не будете. Он ведь их все замаскирует и даже ни секунды не будет сомневаться о "правильности" своего решения.
Yuriy Zaytsev:
Понимаешь , я о той ситуации при которой достаточно добиться того, что бы программа не вылетала а продолжала работать.
я тебе опять повторяю , в любом серьезном процессоре есть аппаратная поддержка прерывания при делении на ноль. ( Вот Леша меня явно понимает, ибо он разработчик железа в прошлом )
Это уже из области фантастики.
Вопрос об исключениях уже неоднократно подымался и ответ всегда был однозначным - их в MQL не будет.
На мой взгляд вполне хватило бы 2 вещей, о реализации которых стоит подумать:
1. Добавить событие с обработкой ошибок, о нем уже выше писали - что-то вроде OnErrors();
2. Добавить в список причин деиницилизации торгового робота еще одну - критическая ошибка при выполнении программы.
Тогда все что не "фатально" для живучести торгового робота можно будет обработать в OnErrors, а фатальное и представляющее собой непоправимое (по факту) можно будет выловить при деинициализации торгового робота. Исправить понятно уже ничего не сможем, так хоть будет возможность трейдера известить, при необходимости.
Это уже из области фантастики.
Вопрос об исключениях уже неоднократно подымался и ответ всегда был однозначным - их в MQL не будет.
На мой взгляд вполне хватило бы 2 вещей, о реализации которых стоит подумать:
1. Добавить событие с обработкой ошибок, о нем уже выше писали - что-то вроде OnErrors();
2. Добавить в список причин деиницилизации торгового робота еще одну - критическая ошибка при выполнении программы.
Тогда все что не "фатально" для живучести торгового робота можно будет обработать в OnErrors, а фатальное и представляющее собой непоправимое (по факту) можно будет выловить при деинициализации торгового робота. Исправить понятно уже ничего не сможем, так хоть будет возможность трейдера известить, при необходимости.
+++
Варианты с девушкой или следящим роботом ненадежны.
Бить по голове программиста, который написал этот код.
Иначе он такого наговнокодит и вы даже знать об ошибках не будете. Он ведь их все замаскирует и даже ни секунды не будет сомневаться о "правильности" своего решения.
Программу из нескольких сот строчек можно написать без ошибок. Большую и сложную систему - нет. В доказательство - посмотрите количество баг-репортов по MT*/MQL*.
Да вы и сами все отлично понимаете, не вижу резонов спорить дальше.
Ответ насчет эксепшенов получен, спасибо, цель ветки выполнена, можно закрывать ))
Не понял, как вы реализуете самостоятельно обработку краша советника? Там же никакие деструкторы не вызываются, просто рантайм его прибивает.
OnError() не может "фатальные ошибки" исправить, жа ему это и не нужно.
Главное чтобы при падении торгового робота это было возможно отловить в обработке деинициализации, отловить и сделать всего две возможные и очевидные вещи:
а) предупредить трейдера о проблеме (надежда на то что сам трейдер разберется что делать с ордерами);
б) передать "сообщение" другому роботу/эксперту или скрипту,задачей которого будет закрыть все позиции.
Ничего иного исходя из позиции разработчиков нам не остается.
OnError() не может "фатальные ошибки" исправить, жа ему это и не нужно.
Главное чтобы при падении торгового робота это было возможно отловить в обработке деинициализации, отловить и сделать всего две возможные и очевидные вещи:
а) предупредить трейдера о проблеме (надежда на то что сам трейдер разберется что делать с ордерами);
б) передать "сообщение" другому роботу/эксперту или скрипту,задачей которого будет закрыть все позиции.
Ничего иного исходя из позиции разработчиков нам не остается.
Это ясно, этого пока нет.
Я о настоящем - писали, что делаете это с 2011 года, вроде вы писали, лень искать. Так как?
Программу из нескольких сот строчек можно написать без ошибок. Большую и сложную систему - нет. В доказательство - посмотрите количество баг-репортов по MT*/MQL*.
Как раз багрепорты(падаем с отчетом, а не игнорируем/скрываем) дают возможность исправлять ошибки. А предлагаемые публикой эксепшены в подавляющем большинстве случаев использовались бы для маскировки ошибок.