![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Такого падучего ПО полно в Маркете. Я летом проводил исследования, был удивлен, сколько советников за сотни $ падают в тестере на 2-3-й день прогона.
Теперь про эксепшены. Вы пишете на чем-нибудь, кроме MQL? Вероятно нет, иначе не было бы написанного выше.
Вот живой недавний пример, правда на Матлабе, но не суть.
Надо было считать котировки в формате csv и преобразовать их в числовой формат Матлаб. Парсить надо строку в таком формате
Время парсится встроенной матлабовской функцией, аналог StringToTime в MQL, числа double аналогом StringToDouble.
И все было бы замечательно, но в файле по неизвестным причинам очень-очень редко встречаются мелкие бяки типа
По одной бяке на 5000 строк. Если проверять строку на бяки, скорость работы программы падает в 1000 раз. Если не проверять, падает программа на матлабовской функции преобразования. В данном случае выгодно завернуть код в try и в случае исключения просто пропустить строку. Понятен смысл?
И не надо важно повторять, что программа должна быть без ошибок, это и ежу понятно. Бывают ситуации, когда эксепшены выгоднее.
Хреново, что тут 98% кроме MQL ничего не знают и знать не хотят...
Проверяйте строку. Именно строку, пока она еще строка. После она превратится в структуру.
Проверяйте строку. Именно строку, пока она еще строка. После она превратится в структуру.
Не, в тыкву )) Сегодня вечер юмора, что ли?
Сам завел, сам и расхлебывай. Try-catch ему подавай.)) А событий пользователя не хотите? Делегатов пришлем.
Вообще, вопрос решенный - пишите DLL, уходите (или не уходите) из нее в шарп и будет вам все, что душа пожелает. На Маркете не продашь, а для себя или на заказ вполне можно.
ЗЫ Кстати, такое решение и Ренат предлагает. Недавно на его статью натыкался - типа, как написать DLL для МТ. Содержания не видел.
КАК ЗА 10 МИНУТ НАПИСАТЬ DLL БИБЛИОТЕКУ ДЛЯ MQL5 И ОБМЕНИВАТЬСЯ ДАННЫМИ?
Деление на ноль - частный и самый простой пример.
Для отключения ошибки при делении на ноль, используйте параметр FpNoZeroCheckOnDivision=1 в разделе [Experts] файла metaeditor.ini
В высшей математике делить на ноль можно и нужно.
Идею эксепшнов всячески поддерживаю!
Сам завел, сам и расхлебывай. Try-catch ему подавай.)) А событий пользователя не хотите? Делегатов пришлем.
Вообще, вопрос решенный - пишите DLL, уходите (или не уходите) из нее в шарп и будет вам все, что душа пожелает. На Маркете не продашь, а для себя или на заказ вполне можно.
ЗЫ Кстати, такое решение и Ренат предлагает. Недавно на его статью натыкался - типа, как написать DLL для МТ. Содержания не видел.
КАК ЗА 10 МИНУТ НАПИСАТЬ DLL БИБЛИОТЕКУ ДЛЯ MQL5 И ОБМЕНИВАТЬСЯ ДАННЫМИ?
Да, хочу события, делегаты, свойства, таски и много чего еще хочу )) Но я реалист и понимаю, что по щучьему веленью это все вдруг не возьмется ниоткуда. Тем не менее, такие темы поднимать нужно время от времени. Не все же обсуждать на форуме уныло из года в год "ах есть ли в этой вселенной роботы, которые не сливают" )))
DLL я писать умею, зачем мне статьи.
Для отключения ошибки при делении на ноль, используйте параметр FpNoZeroCheckOnDivision=1 в разделе [Experts] файла metaeditor.ini
В высшей математике делить на ноль можно и нужно.
Идею эксепшнов всячески поддерживаю!
В Дюкасе не может быть таких ошибок, там данные в бинарном виде лежат.
Тоже столкнулся в свое время со сторонней программой, пришлось свою скачивалку писать.
Меня правда интересует, почему?
Язык активно развивается, runtime усложняется, скоро обещают сервисы и межпроцесное взаимодействие, а спасательного круга - исключений нет.
Алексей, ASSERT'ы и runtime проверки - наше все.
Народа, кому были бы нужны исключения - крайне немного.
Ты ж сам погляди на большую часть кода в КодоБазе - в 90% случаев возвращаемые значения не проверяются. Какие-такие "исключения" ???
Лично мне почти все равно. Будут исключения - буду ими пользоваться. Не будет - не буду. Количество кода по обработке нештатных ситуаций - в обоих случаях одинаково. Разница лишь в том, что с исключениями этот код "концентрируется", а без исключений - "размазывается", соответственно, поддержка вроде как с исключениями получше... Но, с исключениями приходится следить за тем, какие функции бросают исключения, а какие нет...
По одной бяке на 5000 строк. Если проверять строку на бяки, скорость работы программы падает в 1000 раз. Если не проверять, падает программа на матлабовской функции преобразования. В данном случае выгодно завернуть код в try и в случае исключения просто пропустить строку. Понятен смысл?
А разве в Матлабе при ошибке не возвращается никаких признаков ошибки ?
Почему бы не пропустить строку безо всяких там эксепшенов - просто если распарсить не удалось - ну и не записываем строку, а переходим к следующей ? К чему возня с try-catch ?
Алексей, ASSERT'ы и runtime проверки - наше все.
Народа, кому были бы нужны исключения - крайне немного.
Я на самом деле удивлён что у экспертов нету экстренного режима режима "ай-ай-ай, всё плохо, покинуть торговлю!" для выхода из всех сделок и завершения работы эксперта. Ведь все условия логики проверками не покроешь, всегда может произойти ошибка на практически пустом месте, и эксперт тупо вылетит и оставит все сделки висеть без сопровождения. А ведь это почти 100% означает потерю денег (кроме случаев с грамотным тейком и стопом и без мартина, но разве таких советников много?).
Мне бы хватило ещё одного ивента - OnError(), который срабатывал бы перед экстренным вылетом советника. В него можно бы напихать логики для закрытия сделок, или хотя бы захеджить всё что можно.