Как вы ищете ошибки в программе? - страница 3

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes
Админ
27021
Renat Fatkhullin  
Для информации: мы в следующем билде выпустим профайлер на исторических данных, что позволит оптимизировать программы оораздо легче.

Плюс пофиксим тормоза на доступе к истории, особенно на мервых инструментах. Можно будет легко писать глобальные сканеры символов без тормозов.
Alexey Volchanskiy
30040
Alexey Volchanskiy  
Renat Fatkhullin:
Для информации: мы в следующем билде выпустим профайлер на исторических данных, что позволит оптимизировать программы оораздо легче.

Плюс пофиксим тормоза на доступе к истории, особенно на мервых инструментах. Можно будет легко писать глобальные сканеры символов без тормозов.

Это здорово. Особенно радует фраза "в следующем билде", а то многие анонсы растягиваются на годы. А что такое мертвые инструменты?
Aliaksandr Hryshyn
2614
Aliaksandr Hryshyn  
Каждый кусок кода тестирую по отдельности, проверяю, всё ли работает как надо. Присутствуют разного рода проверки, ошибки логируются, для отладки ещё есть дополнительная опция, которая включает большее количество проверок и логирование ключевых данных. В советнике может быть несколько стратегий, в местах большего влияния человеческого фактора, при добавлении стратегии или индикаторов для получения данных, проверки усилены. Даже, можно сказать, что носом тыкается в проблему, иногда указывается как должно быть, соответствие результата вычисления стратегии ограничениям. Например, нельзя одновременно давать сигнал на покупку и сигнал на закрытие данного типа позиции, даже есть требование указание уникального имени стратеги, нужно в основном для управления ордерами и позициями, да, связано это. И др...
Georgiy Merts
8875
Georgiy Merts  
Renat Fatkhullin:
Для информации: мы в следующем билде выпустим профайлер на исторических данных, что позволит оптимизировать программы оораздо легче.

Плюс пофиксим тормоза на доступе к истории, особенно на мервых инструментах. Можно будет легко писать глобальные сканеры символов без тормозов.
Вау !!! Профайлер на исторических данных - это нужная фишка !!!
Georgiy Merts
8875
Georgiy Merts  

Я участвовал в разработке довольно серьезных проектов, написаных на MS VC++ с использованием MFC, соответственно, мой "стиль" - в основном идет оттуда.

Сам использую:

0. Пишу код сразу для DEBUG и RELEASE вариантов, имеется ряд макросов, которые в релизе пустые, а в дебаге - раскрываются в проверки, трассировку, дополнительные действия. Причем, трассировка может включаться-выключаться специальным дефайном и для релиза (в дебаге она включена всегда), Алексей прав - когда все грубые ошибки исправлены - трассировка в логфайл здорово помогает в выявлении "особых случаев". Print - практически не использую (здесь тоже полностью согласенс Алексеем насчет его минусов).

1. Все объявляемые переменные всегда сразу при создании заполняются невалидными значениями. Это позволяет легче выявлять ошибки "забыл инициализировать".

2. На входе каждой функции ставлю ASSERT'ы - все входные значения проверяются на валидность-невалидность.

3. Прохожу функцию под отладчиком, стараясь пройти все "линии работы", контролируя значение переменных и результатов.

4. Во всех "подозрительных местах" делаю TRACE'ы в лог-файл всех значений.

5. В особо хитрых случаях - использую кастомное возвращаемое значение, и вылавливаю баги, запуская полную оптимизацию на нужном диапазоне параметров, пытаясь понять, в каких случаях появляется ошибка.

Georgiy Merts
8875
Georgiy Merts  
Alexey Volchanskiy:


Кстати, я большие проекты из десятков файлов часто редактирую в Visual Studio. Надо в настройках задать расширения mql , как с++

А я - все до этого просветления никак не дойду.

Хотя, у меня каждый класс оформляется в виде пары mqh-mq5, так что даже простые проекты у меня включают более сотни файлов. В самом файле советника - всегда буквально десяток строк. Объявление объекта-фабрики частей эксперта и подключения шаблона, в котором описаны все стандартные точки входа типа OnInit(), OnTick() и так далее. Но, с объявлением объекта-фабрики - сразу происходит подключение всех необходимых файлов.

Надо бы попробовать перейти к работе на VS...

Konstantin
746
Konstantin  
George Merts:

А я - все до этого просветления никак не дойду.

Хотя, у меня каждый класс оформляется в виде пары mqh-mq5, так что даже простые проекты у меня включают более сотни файлов. В самом файле советника - всегда буквально десяток строк. Объявление объекта-фабрики частей эксперта и подключения шаблона, в котором описаны все стандартные точки входа типа OnInit(), OnTick() и так далее. Но, с объявлением объекта-фабрики - сразу происходит подключение всех необходимых файлов.

Надо бы попробовать перейти к работе на VS...

а зачем так делать? ведь класс это исходник включаемого файла, зачем класс или его часть вставлять в mq5?

Alexander Bereznyak
29740
Alexander Bereznyak  
Denis Sartakov:

у меня ошибок не бывает.

брехня...
Uladzimir Izerski
7240
Uladzimir Izerski  
Alexander Bereznyak:

брехня...

Вполне возможно если код из 20 строк. А в большом проекте без ошибок никак.
Alexander Bereznyak
29740
Alexander Bereznyak  
Uladzimir Izerski:

Вполне возможно если код из 20 строк. А в большом проекте без ошибок никак.

речь идет о кодах имеющих практическое применения
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий