Ошибки, баги, вопросы - страница 2301
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Результаты профилировщика на исторических данных
Штатная OrderSend треть времени занимает. За счет чего такие неприятные показатели?
В тестере вся торговая логика здесь же, а не на торговом сервере.
В тестере вся торговая логика здесь же, а не на торговом сервере.
Почти три миллиона тиков и всего 16К OrderSend. Но эти торговые приказы занимают треть времени. А ведь на каждом тике идут расчеты в советнике.
Отсюда и вопрос. Могли бы Вы прогнать код OrderSend в профилировщике? В каком месте там такой затык?
Предполагаю, что если заменить штатную функцию на свою, то будет работать быстрее. Наверное, в OrderSend идут какие-то дорогостоящие проверки и телодвижения. Например, если в советнике (+ индикаторы) нигде нет History-функций и OnTrade*, то формирование соответствующих записей/событий - пустая трата времени.
Понимаю, что у некоторых один прогон длится многие минуты. Но бывают случаи, как выше, - единицы секунд, если уделять внимание скорости выполнения. А тут оказывается, что запускаю Оптимизацию на три часа, а из них час - это OrderSend, среднее время выполнения которой 69 мкс (см. скрин):
Я многократно профилировал тестер. И знаю, где там "затык". Это финансовые расчёты, которые предполагают несколько нормализаций результатов к числу знаков валюты депозита
Напишу свой OrderSend, сравню.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Правильный перевод double в int
Slava, 2018.09.28 07:10
Я тоже отмечусь. Зачем нужна нормализация даблов?Правильно ли понимаю работу Тестера?
Т.е. очень дорогой второй шаг делается ради того, чтобы не делать очень дорогим третий шаг. Т.к. тиков (третий шаг) на порядки больше, чем OrderSend (второй шаг).
ЗЫ Когда Digits == 0, NormalizeDouble тормозит?
Я многократно профилировал тестер. И знаю, где там "затык". Это финансовые расчёты, которые предполагают несколько нормализаций результатов к числу знаков валюты депозита
Обернул OrderSend в замер времени и прогнал в режиме Оптимизации, чтобы не тормозили логи одиночного прохода и посмотреть на реальное время выполнения функции в Тестере.
Получил среднее время выполнения ~4.5 мкс. Это соответствует 500 NormalizeDouble (скрипт запускал с таким количеством)!
Поэтому могу с полной уверенностью сказать, что тормоза не в нормализации.
Также было интересно посмотреть, какую часть от Оптимизационного прохода отжирает OrderSend, по сравнению с данными профилировщика. Получил совпадение - от четверти до трети.
Повторю ужас, с которым столкнулся, и из-за чего сыр-бор
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.09.27 17:18
запускаю Оптимизацию на три часа, а из них час - это OrderSend
подскажите пожалуйста. Почему я не могу закрыть ордер? Терминал пишет "нет цены". Что это может быть?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.07.23 13:56
Постоянно стал нарываться на эту ошибкуЭта же ошибка возникает, когда пытаешься руками делать торговый запрос. Через ~минуту, вдруг, все начинает работать снова. Через какое-то время ошибка повторяется.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Andrey Khatimlianskii, 2018.07.23 14:15
Насколько я помню, там настраивается тайм-аут, после которого цена считается безнадежно устаревшей. То есть если не менялась 3 минуты, то открываться по ней нельзя.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.07.23 16:46
Написал тестовый скрипт этого дела. Словил NoPrice через 64 секунды, как пришел последний тик. Возможно, минутный таймаут, действительно, стоит. Помониторю...
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.07.23 22:00
На некоторых символах стоит таймаут, на некоторых - нет. Как узнать максимальный возраст тика, который еще может восприниматься OrderSend (нет [No price])?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.07.23 23:59
Бывает, что последний тик, полученный 16 секунд назад, не воспринимается актуальным для OrderSend. Наверное, это все таки баг.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.07.24 09:51
Этот баг
где-то за минуту можно воспроизвести с помощью данного скрипта на ForexTimeFXTM-Demo01, если перед запуском включить в Обзор рынка все символы.