Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1590
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, Владимир.
Если я правильно понимаю, то желтым вы выделили не время выполнения, а время на компиляцию этого кода. Компиляция происходит один раз, после этого вы запускаете на графике или в тестере уже скомпилированный файл. Поэтому можно не особо переживать за этот показатель. Он не отражает, насколько медленно или быстро будет работать советник на графике.
Здравствуйте, Юрий! Разве время компиляции этого кода будет сильно отличаться от времени исполнения? Честно говоря, не силён в этом вопросе. Хорошо, что если оно так и есть, как Вы написали. ) Решил прямо сейчас ещё раз проверить время компиляции своего кода и неожиданно получил совершенно другой результат:
Теперь вообще ничего не понял, почему получилась такая существенная разница времени компиляции по сравнению со вчерашними данными. ))
С уважением, Владимир.
Здравствуйте, Юрий! Разве время компиляции этого кода будет сильно отличаться от времени исполнения? Честно говоря, не силён в этом вопросе. Хорошо, что если оно так и есть, как Вы написали. )
Решил прямо сейчас ещё раз проверить время компиляции своего кода и неожиданно получил совершенно другой результат:
Компиляция, грубо говоря, - это процесс преобразования написанного вами кода на языке MQL5 в закодированные нулями и единицами команды, которые умеет выполнять процессор. Её выполняет MetaEditor, когда вы нажимаете кнопку "Компилировать". Поэтому длительность этого процесса зависит в основном от количества строк в написанной программе и подключаемых к ней библиотечных файлов .mqh. Но также ещё на длительность влияет текущая загрузка вашего компьютера другими фоновыми процессами в момент компиляции. Например, если вы параллельно слушаете музыку (на том же компьютере), то на её воспроизведение требуется часть вычислительных ресурсов, которая может быть отобрана у процесса компиляции. Но помимо музыки, обычно в фоновом режиме выполняются десятки других процессов, запущенных операционной системой. В разное время эти процессы создают разную нагрузку на процессор, из-за чего и длительность компиляции в разное время может быть отличаться.
При запуске программы, например, советника в терминале, повторной компиляции не происходит. Поэтому время на компиляцию не прибавляется к времени выполнения при каждом запуске. В этом отличие компилируемых языков от интерпретируемых.
На счёт того, есть ли зависимость между временем компиляции и временем выполнения, представьте себе такой пример:
С точки зрения количества операций, которые нуждаются в кодировании при компиляции, их очень мало: несколько арифметических, условных операций и операций перехода к определенной операции. Поэтому компиляция такого кода займет очень мало времени. А при запуске на выполнение такого кода получится, что цикл while будет бесконечным, так как значение x только уменьшается и никогда не станет больше 100. Поэтому время выполнения может быть сколь угодно долгим.
Понятно, что это намеренно преувеличенный пример. Однако в реальных программах довольно часто бывает, что достаточно компактный исходный код требует значительного времени на выполнение.
Всем доброго вечера и хорошего настроения!
Тут на днях мне нужно было придумать функцию, которая бы отслеживала время "жизни" каждой открытой позиции. Например, открыто пять разных позиций, в разное время, в разных направлениях и нужно. чтобы каждая из них "жила" не более 10-ти суток. Набросал вот такой код:
Однако код получился очень долгим по времени исполнения.
Почти секунда (выделил желтым цветом).
Вопрос к настоящим программистам - подскажите, пжл, какой-нибудь более простой и более быстрый по исполнению вариант.
С уважением, Владимир.
Привет Владимир. Замечание 1:
лучше записать так
Замечание 2:
Может проще посчитать количество дневных баров, чем учитывать время выходных?
Примерно так:
Компиляция, грубо говоря, - это процесс преобразования написанного вами кода на языке MQL5 в закодированные нулями и единицами команды, которые умеет выполнять процессор...........
Понятно, что это намеренно преувеличенный пример. Однако в реальных программах довольно часто бывает, что достаточно компактный исходный код требует значительного времени на выполнение.
Юрий, спасибо Вам за подробное объяснение. Буду теперь знать. Век живи - век учись!!! ))
С уважением, Владимир.
Долой все циклы, подготавливаем данные таким образом, чтобы ими можно было воспользоваться на следующем тике без циклов. Ну или почти. Всё.
Было бы здорово, Алексей, но пока у меня ещё не получается обойтись без циклов. ) За подсказку - спасибо!
С уважением, Владимир.
Привет Владимир. Замечание 1:
лучше записать так
Замечание 2:
Может проще посчитать количество дневных баров, чем учитывать время выходных?
Примерно так:
Привет, Алексей! Спасибо за подсказки. Обязательно протестирую твой вариант. )
С уважением, Владимир.
Всем доброго вечера и хорошего настроения!
Уже давно привык к слову хендл, а вот как кратко описать его истинное значение? Поисковиками всякое перелопатил и нашёл на мой взгляд самое лучшее объяснение. Хотя могу и заблуждаться!
Взято из Википедии и специально сжато до приемлемого для меня понятия:
Хендл (дескриптор - тоже не самое лучше название!) - это указатель на источник дальнейшего извлечения информации.
Уважаемые программисты!!! А как бы Вы кратко охарактеризовали слово хендл?
С уважением, Владимир.
А как бы Вы кратко охарактеризовали слово хендл?
Число)
Понятно. ) А если серьёзно? Вот взято из документации:
Алексей, исходя из Вашего определения хэндла поучается, что iMA возвращает число индикатора скользящего среднего? )) Абракадабра получается, да и только... )
С уважением, Владимир.