Ошибки, баги, вопросы - страница 2747
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#define GETCURRENTTICK GetCurrentTick1(Tick)#define GETCURRENTTICK GetCurrentTick2(Tick, !i)#define GETCURRENTTICK GetCurrentTick3(Tick)На тему бесплатности SymbolInfo-функций.
возможно метод инлайнится, тогда это проблема не отладчика, а компилятора для дебаг-режима
Вот-вот, проект получился переполненным макросами вдоль и поперек, как моими, так и из стандартных модулей. Возможно, поэтому, у отладчика не всегда получается сопоставить команды в дебаг файле *.ex5 со строками в исходном файле *.mq5 и остальных модулях...
На тему бесплатности SymbolInfo-функций.
так это стоимость самой функции а не передачи строки по значению а не по ссылке!
тем более ваш вариант с кэшем вполне себе решение, если выполнение этой функции занимает значимый процент времени от времени выполнения советника (во что я слабо верю)
Вот-вот, проект получился переполненным макросами вдоль и поперек, как моими, так и из стандартных модулей. Возможно, поэтому, у отладчика не всегда получается сопоставить команды в дебаг файле *.ex5 со строками в исходном файле *.mq5 и остальных модулях...
так это стоимость самой функции а не передачи строки по значению а не по ссылке!
Изначально к этому подводил.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2020.05.20 13:24
А лучше, конечно, иметь
В Оптимизаторе эти функции вызываются десятки миллиардов раз.
тем более ваш вариант с кэшем вполне себе решение, если выполнение этой функции занимает значимый процент времени от времени выполнения советника (во что я слабо верю)
На определенном этапе становится важным не только относительное часть занимаемого времени, но и абсолютная.
Очень много текста, все не читал.
Но если у вас что-то работает в дебаг версии и при этом не работает в релиз, или наоборот, то проверьте все ли переменные и поля, особенно в классе/структуре, были инициализированы.
Те данные, которые нуждались в инициализации я проинициализировал. А если, вдруг и окажутся где-то случайные данные, то это вызовет ошибку самой программы (например Array out of range или Invalid pointer). По крайней мере, на работу отладчика это не повлияет. И подобные баги он как раз и помогает найти.
Может у вас проявляется данныей дефект:
(не исправлено ME5(build 2390)) ** (new) Debuger, не работает StepInto (F11) и установленные breakpoints.
возможно у вас такая сложная структура файлов, что отладчик не может ассоциировать точку останова, тогда это проблема отладчика.
Думаю, что структура файлов стандартных элементов UI, которые я использую в своем проекте еще сложнее, чем моих наработок. Для того чтобы сделать что-то подобное мне пришлось бы очень много работать. А так, бери и пользуйся, как говорится. Если всё сложить вместе, как в моём случае. То, действительно, получается нечто сложное. Но для работающих программ это вполне нормально.
Изначально к этому подводил.
На определенном этапе становится важным не только относительное часть занимаемого времени, но и абсолютная.
Попишите немного на Си языке, появится хорошая привычка аллоцировать переменные.
В первой пользовательской функции входящая MqlTick структура, сразу передаётся в функцию MQL, без выделения памяти.
Такая запись называется плохим кодингом.
Во втором примере, создаётся переменная CurrentTick; под которую выделяется память.
И такая запись считается более правильной.
Так как память уже выделена, то входные данные обрабатываются быстрее, без лишних затрат.
Попишите немного на Си языке, появится хорошая привычка аллоцировать переменные.