
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Неправильный, вырожденный в абсолютную оптимизацию тест и неправильные выводы.
Столь же чудовищная ссылка на интерпретируемый Матлаб с заявлениями про замедления в 1000 раз. У нас компилируемый в натив язык, который не позволяет так тормозить. Доп проверка может вообще ничего не стоить, но дает гарантию корректности.
Тест специально сделан примитивный, так как в массе народ ассемблер не знает, а хотелось понимания. Как сделать правильный тест try-catch, подскажите пожалуйста?
И конкретно, без эмоций. В MQL неправильная строковая дата, как было в исходных данных для Matlab, обрезается, отбрасывая запорченную часть. При этом генерится код ошибки. Вполне нормальная обработка.
Как видно, никакого оверхеда блок try-catch не прибавляет.
Тест специально сделан примитивный, так как в массе народ ассемблер не знает, а хотелось понимания. Как сделать правильный тест try-catch, подскажите пожалуйста?
И конкретно, без эмоций. В MQL неправильная строковая дата, как было в исходных данных для Matlab, обрезается, отбрасывая запорченную часть. При этом генерится код ошибки. Вполне нормальная обработка.
- вы неправильно протестировали эксепшены, но сделали четкий вывод о них
- вы создали ощущение, что "проверка ошибок" в сотни-тысячи раз медленнее. причем неоднократно на это упирали
Вмешиваюсь тогда, когда вижу откровенно вредные и неправильные заявления. Время трачу на обучение людей, когда считаю нужным и полезным. В данном случае для меня нет ничего интересного в теме, чтобы я обучал людей.Я указал на ваши прямые ошибки, в которых вы сделали категорически неправильные выводы:
- вы неправильно протестировали эксепшены, но сделали четкий вывод о них
- вы создали ощущение, что "проверка ошибок" в сотни-тысячи раз медленнее. причем неоднократно на это упирали
Вмешиваюсь тогда, когда вижу откровенно вредные и неправильные заявления. Время трачу на обучение людей, когда считаю нужным и полезным. В данном случае для меня нет ничего интересного в теме, чтобы я обучал людей.Плиз, если можно вкратце Ваше мнение о try catch? На сколько это помогает, удачное ли это решение вообще?
Я уже высказывался на эту тему и не вижу смысла повторно участвовать в обсуждении.
Можно пример ASSERT в MQL? Всегда думал, их тут нет, сейчас спецом посмотрел в справке - нет.
Ну, на качество кода в КБ ориентироваться не стоит.
Дык мы программисты, или кто ?
Через #ifdef подключаем либо файл _DEBUG ассертов и трейсов, либо файл _RELEASE.
В отладочной версии:
void PerformAssert(bool x,string strFile,string strLine,ulong ulMagic,string strSymbol)
{
if (!x)
{
PerformTrace("Assertion failed !","File: " + strFile,strLine,ulMagic,strSymbol);
Print("Assertion failed ! File: " + strFile + "; Line: " + strLine);
DebugBreak();
}
};
#define ASSERT(boolValue) PerformAssert(boolValue,__FILE__,IntegerToString(__LINE__),_GetMagic(),_Symbol)
В рабочей версии - понятное дело
#define ASSERT(boolValue)
И все.
Ну и функция PerformTrace() - опять же, только в дебаг версии, выводит трассировочное сообщение в файл.
У меня все ASSERT'ы и TRACE'ы подключаются одним инклюдом:
Ясно, что в MQL эксепшенов не будет, но все же хочется разобраться в теме. Нашел статью, вроде обещают ковырнуть глубоко.
https://habrahabr.ru/post/279111/
А вы попробуйте в цикле прогнать и время сравнить.
Мне бы хватило ещё одного ивента - OnError(), который срабатывал бы перед экстренным вылетом советника. В него можно бы напихать логики для закрытия сделок, или хотя бы захеджить всё что можно.
+500. OnError(int Error_Code) в дополнение к той тьме проверок, к которой вроде уже все попривыкали, мне бы лично хватило без эксепшенов
делаем отдельный следящий эксперт
А потом следящий за следящим или кто-то сверху гарантировал отсутствие исключений в этом следящем? Не говоря о том, что в этого надзорного надо зашивать особенности работы каждой конкретной ТС, а в поднадзорных - соотв 'блок телеметрии'
Чаще всего спасаюсь просто if'ом, реже самописной функцией Assert().