
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Алексей, ASSERT'ы и runtime проверки - наше все.
Народа, кому были бы нужны исключения - крайне немного.
Ты ж сам погляди на большую часть кода в КодоБазе - в 90% случаев возвращаемые значения не проверяются. Какие-такие "исключения" ???
Лично мне почти все равно. Будут исключения - буду ими пользоваться. Не будет - не буду. Количество кода по обработке нештатных ситуаций - в обоих случаях одинаково. Разница лишь в том, что с исключениями этот код "концентрируется", а без исключений - "размазывается", соответственно, поддержка вроде как с исключениями получше... Но, с исключениями приходится следить за тем, какие функции бросают исключения, а какие нет...
Можно пример ASSERT в MQL? Всегда думал, их тут нет, сейчас спецом посмотрел в справке - нет.
Ну, на качество кода в КБ ориентироваться не стоит.
А разве в Матлабе при ошибке не возвращается никаких признаков ошибки ?
Почему бы не пропустить строку безо всяких там эксепшенов - просто если распарсить не удалось - ну и не записываем строку, а переходим к следующей ? К чему возня с try-catch ?
Я так понимаю, в Matlab для быстродействия проверки строк отключены и вся обработка возложена на эксепшены. На картинке во второй строке возникает ошибка, в реале валится программа, если не обернуть в try - catch.
Вот вся функция + справка
Я на самом деле удивлён что у экспертов нету экстренного режима режима "ай-ай-ай, всё плохо, покинуть торговлю!" для выхода из всех сделок и завершения работы эксперта. Ведь все условия логики проверками не покроешь, всегда может произойти ошибка на практически пустом месте, и эксперт тупо вылетит и оставит все сделки висеть без сопровождения. А ведь это почти 100% означает потерю денег (кроме случаев с грамотным тейком и стопом и без мартина, но разве таких советников много?).
Мне бы хватило ещё одного ивента - OnError(), который срабатывал бы перед экстренным вылетом советника. В него можно бы напихать логики для закрытия сделок, или хотя бы захеджить всё что можно.
Мне бы хватило ещё одного ивента - OnError(), который срабатывал бы перед экстренным вылетом советника. В него можно бы напихать логики для закрытия сделок, или хотя бы захеджить всё что можно.
Если нужна железобетонная гарантия, что все позиции будут закрыты нормально при падении эксперта - делаем отдельный следящий эксперт. Такой эксперт может следить за всеми позициями по всем инструментам на торговом счете, отслеживая нормальность работы "хозяина" по транслируемым в пользовательское событие маджику. Так если в течении заданного промежутка времени не приходило сообщений с маджиком от "хозяина" и присутствует открытая с таким маджиком позиция, значит это бесхозная позиция и за ней никто не смотрит - её нужно закрыть. Такой следящий эксперт очень прост в логике и там просто нечему ломаться.
Почему не делают в самолётах стоп-кран? Потому что бесполезно пить боржоми и всё такое... Т.е. не нужно пытаться спасти положение изнутри падающей программы.
Если нужна железобетонная гарантия, что все позиции будут закрыты нормально при падении эксперта - делаем отдельный следящий эксперт. Такой эксперт может следить за всеми позициями по всем инструментам на торговом счете, отслеживая нормальность работы "хозяина" по транслируемым в пользовательское событие маджику. Так если в течении заданного промежутка времени не приходило сообщений с маджиком от "хозяина" и присутствует открытая с таким маджиком позиция, значит это бесхозная позиция и за ней никто не смотрит - её нужно закрыть. Такой следящий эксперт очень прост в логике и там просто нечему ломаться.
Но делают же надувные трапы , и маски кислородные в салоне есть и спасательные жилеты под креслом, и даже в истории авиации эти предметы не раз спасали жизни.
>>>Т.е. не нужно пытаться спасти положение изнутри падающей программы.
что значит не нужно , вообще то обработка исключительной ситуации , это нормальное явление.
Но делают же надувные трапы , и маски кислородные в салоне есть и спасательные жилеты под креслом, и даже в истории авиации эти предметы не раз спасали жизни.
>>>Т.е. не нужно пытаться спасти положение изнутри падающей программы.
что значит не нужно , вообще то обработка исключительной ситуации , это нормальное явление.
Я не говорю, что исключения вовсе не нужны, нужны. Но Алексей привел пример, когда игнорируются битые данные, это значит он не хочет анализировать все данные, а просто игнорировать их, если машина не сможет их "переварить". За это я же и говорю - что всё что касается торговой логики, исключения противопоказаны. А для всего остального - полезная вешь, я не отрицаю этого.
Почему не делают в самолётах стоп-кран?
Делают, на уровне софта. В современных самолётах уже давно нету прямой механической связи между кнопками, штурвалами к двигателям и крыльям. Если пилот решит сделать петельку и резко дёрнет штурвалом куда-то не туда - умная система заранее определит что это действие очень плохо, и не передаст действия штурвала к крыльям, и включит автопилот пока сам пилот не вернётся к адекватности.
Т.е. если управляющая логика (пилот) сделает недопустимое действие, то специальный хэндлер включит аварийный режим и постарается организовать всё без последствий.
Если нужна железобетонная гарантия, что все позиции будут закрыты нормально при падении эксперта - делаем отдельный следящий эксперт.
Тоже хорошо, и сейчас это единственный вариант, но разговор о том чтоб такую операцию делать внутри самого эксперта с помощью обработчика исключений. В два раза меньше экспертов - в два раза больше ресурсов.
Кстати, исключения есть не только в С++/C#, но даже в Matlab! (Привет Сан Санычу :) )
Всегда рад людям, которые передают мне привет - Вам привет
try также имеется в R.
На счет деления на ноль не знаю, но сам пользуюсь try в такой трактовкt
fm1 <- try(lm(hp1$cycle ~
.....
# Класс не lm - значит при подгонке была ошибка
if(class(fm1) != "lm")
{
.......
}
Надувные трапы и желеты - это уже инструменты ликвидации последствия крушения, а не средство предотвращения крушения. Если крыло отвалилось - остается надеяться только на жилет и противоакулий свисток, это я и предложил делать - следящий эксперт, который и будет заниматься ликвидацией последствия.
Я не говорю, что исключения вовсе не нужны, нужны. Но Алексей привел пример, когда игнорируются битые данные, это значит он не хочет анализировать все данные, а просто игнорировать их, если машина не сможет их "переварить". За это я же и говорю - что всё что касается торговой логики, исключения противопоказаны. А для всего остального - полезная вешь, я не отрицаю этого.
Андрей, ну сколько можно повторять одно и то же? Вы ведь не глупый человек, но уперлись и ни с места.
Да, я могу их анализировать, но тогда конвертация данных за год будет занимать не 10 мин, а 10000. Мне выгоднее пропустить битую строчку, это всего один тик, которых обычно несколько в 1 сек. От пропуска я абсолютно ничего не теряю.
Все, больше я к этому занудному вопросу не возвращаюсь. Если опять непонятно....ну значит такова судьба ))
Всегда рад людям, которые передают мне привет - Вам привет
try также имеется в R.
На счет деления на ноль не знаю, но сам пользуюсь try в такой трактовкt
fm1 <- try(lm(hp1$cycle ~
.....
# Класс не lm - значит при подгонке была ошибка
if(class(fm1) != "lm")
{
.......
}