Добрый день!
А почему Вы не рассмотрели вопрос "Обработка кодов возврата торгового сервера" ?
Это гораздо ВАЖНЕЕ, чем всё изложенное в Вашей статье.
Добрый день!
А почему Вы не рассмотрели вопрос "Обработка кодов возврата торгового сервера" ?
Это гораздо ВАЖНЕЕ, чем всё изложенное в Вашей статье.
Для начала прочтите всю статью. Если не поймёте - тогда ещё и ещё читайте - до полного понимания. Только в таком случае поймёте, что Ваше сообщение вообще никаким боком не относится к теме затронутой в статье.
Статью нужно было назвать не "Обработка ошибок и логирование в МТ5",
а "Обработка СОБСТВЕННЫХ ошибок и логирование в МТ5"!
Добрый день!
А почему Вы не рассмотрели вопрос "Обработка кодов возврата торгового сервера" ?
Это гораздо ВАЖНЕЕ, чем всё изложенное в Вашей статье.
Михаил, а почему бы Вам просто не написать такую статью? Прямо готовая тема! :)
Я вот не посчитал, что эта тема важнее, чем всё изложенное в статье. Если Вы так считаете - ну дык просто сделайте это, к чему ругать за не сделанное?
В самом деле этот момент я не стремился подробно рассматривать, т.к. хотел более общие вопросы затронуть. Так мы можем удариться и в подробное рассмотрение возвращаемых кодов ошибок стандартных функций языка. Например, как ещё одна тема статьи - "Обработка ошибок, возникающих при работе с графическими объектами на MQL5".
Моя цель была не та. Впрочем да, спустя месяц после написания статьи вижу, что получилось "так себе". Что ж, постараюсь быть лучше в будущем.
Почему бы Вам просто не написать такую статью? Прямо готовая тема! :)
В самом деле этот момент я не стремился подробно рассматривать, т.к. хотел более общие вопросы затронуть. Так мы можем удариться и в подробное рассмотрение возвращаемых кодов ошибок стандартных функций языка. Например, как ещё одна тема статьи - "Обработка ошибок, возникающих при работе с графическими объектами на MQL5".
Моя цель была не та. Впрочем да, спустя месяц после написания статьи вижу, что получилось "так себе". Что ж, постараюсь быть лучше в будущем.
Сергей!
Да всё нормально, только я бы назвал статью
"Расширенные методы отладки экспертов в МТ5 с логированием."
Потому что когда эксперт отлажен, ошибок (разработчика уже нет) ,
а вот коды возврата торгового сервера, могут "пестрить" ошибками,
которые необходимо обрабатывать как раз в штатном режиме эксперта.
Сергей!
Да всё нормально, только я бы назвал статью
"Расширенные методы отладки экспертов в МТ5 с логированием."
Но ведь обработка ошибок это не отладка :)
Или Вы хотите сказать, что, к примеру, обработка ошибки "недостаточно средств" (о чём в качестве примера говорится в статье) есть отладка?
Но ведь обработка ошибок это не отладка :)
Или Вы хотите сказать, что, к примеру, обработка ошибки "недостаточно средств" (о чём в качестве примера говорится в статье) есть отладка?
"Недостаточно средств", это не ошибка а сообщение Вам (эксперту о состоянии Вашего счёта) и
эта СТАНДАРТНАЯ обрабатываемая ситуация. И нормальный разработчик ОБЯЗАН, перед сделкой или выставлением
ордера ПРОВЕРИТЬ наличие средств.
//+------------------------------------------------------------------+ //| Expert Check money function | //+------------------------------------------------------------------+ bool CheckMoney( const long volume ) { double a_go = SymbolInfoDouble( _Symbol, SYMBOL_MARGIN_INITIAL ) * double(volume); double free_margin = ( AccountInfoDouble( ACCOUNT_FREEMARGIN ) / 100 ) * 90; //--- if ( a_go <= free_margin ) { return( true ); } Print( "Check Money: Не достаточно средств!" ); return( false ); }
"Недостаточно средств", это не ошибка а сообщение Вам (эксперту о состоянии Вашего счёта) и
эта СТАНДАРТНАЯ обрабатываемая ситуация.
Но это и не отладочный момент. Называйте как хотите, но обработать это надо (причём как я вижу в этом мы согласны). В моём понимании это ошибочная ситуация относительно нормального течения вещей. Ведь эксперт может предполагать, что средств таки достаточно. И если никак это не проверять и не обрабатывать, то получится ерунда.
Равно как, к примеру, и ошибка открытия файла из-за его отсутствия - с одной стороны стандартная ситуация, которую нужно обрабатывать, а с другой всё таки это ошибка предположения, что файл на месте и мы с ним можем работать.
Ну и ещё раз: всё таки в статье я стремился больше рассмотреть вопросы именно обработки ошибок уже в процессе работы программы, а не вопросы отладки ПО. Это вообще другая тема и коррелирует со статьёй только в рамках логгирования (и то лишь частично).
И не было целью рассмотреть конкретные ошибки (будь то коды возврата торгового сервера, или, как я выше сказал, к примеру возможные ошибки при работе с граф. объектами). Лишь общие методы, которые применимы и к ошибкам (или к стандартным ситуациям, если Вам так угодно), которые возвращает и торговый сервер в том числе.
Мне очень жаль, если мой посыл остался непонятным. Надеюсь, теперь всё встанет на свои места.
эта СТАНДАРТНАЯ обрабатываемая ситуация. И нормальный разработчик ОБЯЗАН, перед сделкой или выставлением
ордера ПРОВЕРИТЬ наличие средств.
Увы, я вынужден спросить: Вы всё таки читали статью или так, пробежались и давай осуждать? Я говорил о предварительных проверках в статье (каюсь, конкретно о проверке средств не говорил, но думал это итак понятно). А обработать возможную ошибку "недостаточно средств" и после попытки открытия сделки - не самая плохая идея, даже если мы сделали эту проверку до. Всякое может случиться за время между проверкой "до" и непосредственной попыткой открытия.
Увы, я вынужден спросить: Вы всё таки читали статью или так, пробежались и давай осуждать? Я говорил о предварительных проверках в статье (каюсь, конкретно о проверке средств не говорил, но думал это итак понятно). А обработать возможную ошибку "недостаточно средств" и после попытки открытия сделки - не самая плохая идея, даже если мы сделали эту проверку до. Всякое может случиться за время между проверкой "до" и непосредственной попыткой открытия.
Сергей!
Вот для таких ситуаций и существуют коды возврата торгового сервера.
Пример: Вы проверили наличие свободных средств и получили утвердительный результат.
Отсылаете ордер, а он не был принят (как Вы сказали : "Да мало ли что может произойти "),
так вот, торговый сервер вернёт Вам в коде возврата ошибку "Недостаточно средств".
И получается, что совершенно "по-барабану" сколько раз Вы будете проверять наличие ошибки
в промежутке от Вашей проверки (CheckMoney) до кода возврата торгового сервера!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Обработка ошибок и логирование в MQL5:
В статье рассматриваются общие вопросы обработки ошибок в программном обеспечении. Кроме того, затрагивается тема логирования и демонстрируется пример реализации логгера средствами MQL5.
В процессе работы большинства программ время от времени могут возникать ошибки. Их адекватная обработка — один из важных аспектов функционирования качественного и устойчивого программного обеспечения. В данной статье будут рассмотрены основные методы обработки ошибок, будут даны рекомендации по их применению, а также будет рассмотрен вопрос логирования средствами MQL5.
Обработка ошибок является довольно непростой и неоднозначной темой. Существует множество способов обработки ошибок, каждый из которых обладает теми или иными достоинствами и недостатками. Многие из этих способов допускают совместное использование, однако универсального рецепта не существует — для каждой конкретной задачи следует выбирать адекватный задаче подход.
Логирование средствами MQL5
Как правило, лог-файлы создаются программой для самих программистов с целью облегчить поиск причин различных сбоев, ошибок, для оценки состояния системы в тот или иной момент времени и т.д. Кроме того, логирование может применяться для профилирования программного обеспечения.
Уровни логирования
Сообщения, которые поступают в лог-файлы, чаще всего несут в себе разную критичность и требуют к себе разного внимания. Для того чтобы отделять сообщения разной критичности друг от друга, а также иметь возможность настройки степени критичности выводимых сообщений, применяются уровни логирования. Как правило, реализуется несколько уровней логирования:
Автор: Sergey Eremin