Ошибки, баги, вопросы - страница 2301
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Для текстового объекта, располагающегося на High[], точка привязки (свойство OBJPROP_ANCHOR) должно иметь значение ANCHOR_LOWER (точка привязки снизу по центру).
Для текстового объекта, располагающегося на Low[], точка привязки (свойство OBJPROP_ANCHOR) должно иметь значение ANCHOR_UPPER (точка привязки сверху по центру).
Либо ANCHOR_CENTER для обоих расположений - точка привязки по центру.
Попробуйте.
Но это получается, что надо создавать ДВА объекта с именами, например, Hi и Lo (верхний и нижний экстремумы зигзага или верхний и нижний концы фактического восходящего или нисходящего локального тренда), и оба привязывать к графику с соответствующими значениями ANCHOR_LOWER и ANCHOR_UPPER. Не проще ли выполнить (как-нибудь) привязку Верха Зигзага - к ранее "привязанному" Низу? Примерно это я и сделал, добавив в прежнюю функцию строку
ObjectSetInteger(0,Obj,OBJPROP_ANCHOR,ANCHOR_CENTER); и введя "поправки смещения" в строку вывода if(tvT) ORT(kBtT,Low[kBtT]-2*_Point,DtT,LowClr); else ORT(kBtT,High[kBtT]+2*_Point,DtT,HighClr); //
Пока вроде работает. Спасибо!
Но это получается, что надо создавать ДВА объекта с именами, например, Hi и Lo (верхний и нижний экстремумы зигзага или верхний и нижний концы фактического восходящего или нисходящего локального тренда), и оба привязывать к графику с соответствующими значениями ANCHOR_LOWER и ANCHOR_UPPER. Не проще ли выполнить (как-нибудь) привязку Верха Зигзага - к ранее "привязанному" Низу? Примерно это я и сделал, добавив в прежнюю функцию строку
ObjectSetInteger(0,Obj,OBJPROP_ANCHOR,ANCHOR_CENTER); и введя "поправки смещения" в строку вывода if(tvT) ORT(kBtT,Low[kBtT]-2*_Point,DtT,LowClr); else ORT(kBtT,High[kBtT]+2*_Point,DtT,HighClr); //
Пока вроде работает. Спасибо!
Зачем? Привязку же можно менять в любое время. Или я чего не понял? Вы же цвет меняете. Так же и привязку меняйте.
После закрытия окна дебаг-визуализатора, перекомпиляции и запуска в Тестере одиночного прогона без визуализации получил такое
20 секунд ничего не мог сделать. Кнопка Старт была серой все этой время.
Записи Агента
Из логов следует, что Тестер попытался подключиться к Агенту в 01:52, а сам Агент (Server) остановился только в 01:54. Отсюда невозможность подключения и зависание. Давний баг, но сейчас хоть стала понятна причина.
Результаты профилировщика на исторических данных
Штатная OrderSend треть времени занимает. За счет чего такие неприятные показатели?
Результаты профилировщика на исторических данных
Штатная OrderSend треть времени занимает. За счет чего такие неприятные показатели?
В тестере вся торговая логика здесь же, а не на торговом сервере.
В тестере вся торговая логика здесь же, а не на торговом сервере.
Почти три миллиона тиков и всего 16К OrderSend. Но эти торговые приказы занимают треть времени. А ведь на каждом тике идут расчеты в советнике.
Отсюда и вопрос. Могли бы Вы прогнать код OrderSend в профилировщике? В каком месте там такой затык?
Предполагаю, что если заменить штатную функцию на свою, то будет работать быстрее. Наверное, в OrderSend идут какие-то дорогостоящие проверки и телодвижения. Например, если в советнике (+ индикаторы) нигде нет History-функций и OnTrade*, то формирование соответствующих записей/событий - пустая трата времени.
Понимаю, что у некоторых один прогон длится многие минуты. Но бывают случаи, как выше, - единицы секунд, если уделять внимание скорости выполнения. А тут оказывается, что запускаю Оптимизацию на три часа, а из них час - это OrderSend, среднее время выполнения которой 69 мкс (см. скрин):
Я многократно профилировал тестер. И знаю, где там "затык". Это финансовые расчёты, которые предполагают несколько нормализаций результатов к числу знаков валюты депозита
Напишу свой OrderSend, сравню.