Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Обновил до 2269. Результаты профилировщика большого (не синтетического) советника.
Tester
Virtual
Наверное, профилировщик делает неверные замеры. Иначе получается, что пятерочный OrderSend в среднем забирает 912 мс.
Любые нормализованые одним алгоритмом (например, через NormalizeDouble) даблы можно сравнивать между собой напрямую.
Данное очевидное обстоятельство позволяет во многих случаях избежать дорогостоящих конструкций сравнения вещественных чисел. Что в некоторых задачах может существенно поднять производительность.
Наверное, одна из самых показательных из таких задач - Тестер. Разберем на примере.
Стоит BuyLimit. Тестер обязан на каждом тике сравнивать BuyLimit с ценой Ask. Штатный Тестер сейчас делает это так
Т.е. любой торговый уровень (отложенный ордер или SL/TP) порождает вызов одной Нормализации.
Но можно всегда обойтись очень эффективной конструкцией сравнения, если цены предварительно (до начала бэктеста) были нормализованы.
if (BuyLimit_Price >= Ask) BuyLimit -> Buy;
Попробуем сравнить. Запустил этого робота в Тестере через Virtual.
Сравнение цен через нормализацию.
Без нормализации.
Видно, что выигрышь более 20%, если не делать нормализацию при сравнении цен.
Как следствие, если штатный Тестер перевести на нормализованные цены и отказаться от внутренней нормализации при сравнении цен, то можно достичь серьезного повышения производительности.
После прямого присвоения без мат. операций тоже
Присвовение, конечно, копирует байтовое представление числа без изменений.
Может, провести тест длительностью больше одной секунды для наглядности?
Тут в одном варианте разброс в 3 раза: shortest pass 0:00:00.604, longest pass 0:00:01.743. что сравниваем?
Может, провести тест длительностью больше одной секунды для наглядности?
Тут в одном варианте разброс в 3 раза: shortest pass 0:00:00.604, longest pass 0:00:01.743. что сравниваем?
Сравниваем shortest, конечно. Привык на фильтрованных тиках гонять. Подготовлю нефильтрованные попозже.
Сравниваем shortest, конечно.
Почему??? Оптимизация же не из одного прохода состоит. Какая разница, что один проскочил так быстро, если среднее не сильно отличается.
Привык на фильтрованных тиках гонять. Подготовлю нефильтрованные попозже.
Можно просто более длинный интервал. Чтобы хотя бы секунд 30 тест шел.
Почему??? Оптимизация же не из одного прохода состоит. Какая разница, что один проскочил так быстро, если среднее не сильно отличается.
Этот параметр оптимизируется
А он не влияет на логику. Поэтому и shortest.
Этот параметр оптимизируется
А он не влияет на логику. Поэтому и shortest.
При чем здесь логика советника? Замеряем же скорость тестера.
При чем здесь логика советника? Замеряем же скорость тестера.
Так один Агент работает, последовательно считает одно и то же. Если убрать всякие случайности, то чистая производительность близка именно к shortest.