Ошибки, баги, вопросы - страница 2301

 
fxsaber:

Результаты профилировщика на исторических данных


Штатная OrderSend треть времени занимает. За счет чего такие неприятные показатели?

В тестере вся торговая логика здесь же, а не на торговом сервере.

 
Slava:

В тестере вся торговая логика здесь же, а не на торговом сервере.

Почти три миллиона тиков и всего 16К OrderSend. Но эти торговые приказы занимают треть времени. А ведь на каждом тике идут расчеты в советнике.

Отсюда и вопрос. Могли бы Вы прогнать код OrderSend в профилировщике? В каком месте там такой затык?

Предполагаю, что если заменить штатную функцию на свою, то будет работать быстрее. Наверное, в OrderSend идут какие-то дорогостоящие проверки и телодвижения. Например, если в советнике (+ индикаторы) нигде нет History-функций и OnTrade*, то формирование соответствующих записей/событий - пустая трата времени.

Понимаю, что у некоторых один прогон длится многие минуты. Но бывают случаи, как выше, - единицы секунд, если уделять внимание скорости выполнения. А тут оказывается, что запускаю Оптимизацию на три часа, а из них час - это OrderSend, среднее время выполнения которой 69 мкс (см. скрин):

  • TRADE_ACTION_PENDING - 104 мкс.
  • TRADE_ACTION_SLTP/TRADE_ACTION_MODIFY/TRADE_ACTION_REMOVE - 68 мкс.
 
Я многократно профилировал тестер. И знаю, где там "затык". Это финансовые расчёты, которые предполагают несколько нормализаций результатов к числу знаков валюты депозита
 
Slava:
Я многократно профилировал тестер. И знаю, где там "затык". Это финансовые расчёты, которые предполагают несколько нормализаций результатов к числу знаков валюты депозита

Напишу свой OrderSend, сравню.

 
Привет Всем! Я недавно в трейдинге,вотуже пол года как вникаю во все подробности связаные с этой деятельностю,сама деятельность вполне заманчевая но я не знаю но мне чясто кажется ,что вся прибыль и убытки за месяцы или годы по большому счёту сводится к нулю,это в лучшем случяе.Я никого не хочю разачяровывать в этой деятельности это выбор каждого,но один очень сушественый факт мне точно покоя не даст никогда в этом деле,это НАЦЕНКА (НАЦЕНКА это когда сделка открывается уже с -16пунктов или -21 пункт) В 16 пунктов или 21 пункт а то и в 34 пункта,видимо она плавающея,Бог знает,ну и  как тут можно заработать???У меня один только вопрос:Скажите пожалуйсто кто нибудь кто по опытнее,такая большая НАЦЕНКА это дело рук брокера моего (мой брокер говорит что у него нет наценки и что это от поставщика ликвидности)  или это в целом у всех,кто нибудь раскажите по подробнее есть ли у него НАЦЕНКА и в сколько пунктов. 
 
Прошу обратить внимание на этот пост (или могу перенести сюда, а там можно будет грохнуть): https://www.mql5.com/ru/forum/281440
Помогите разобраться (баг или я не понимаю чего?)
Помогите разобраться (баг или я не понимаю чего?)
  • 2018.09.28
  • www.mql5.com
Всем привет, сразу к делу...
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Правильный перевод double в int

Slava, 2018.09.28 07:10

Я тоже отмечусь. Зачем нужна нормализация даблов?

Первый ответ. Для преобразования цены таким образом, чтобы торговый сервер мог опознать цену как свою, из этой же системы, правильно округленную, как будто это сам сервер округлял.

Правильно ли понимаю работу Тестера?

  1. Шлем приказ на выставление BuyLimit по BuyLimit_PriceRequest.
  2. Тестер создает BuyLimit, у которого BuyLimit_Price = NormalizeDouble(BuyLimit_PriceRequest).
  3. На каждом тике Тестер делает проверку (BuyLimit_Price <= Ask) БЕЗ NormalizeDouble.


Т.е. очень дорогой второй шаг делается ради того, чтобы не делать очень дорогим третий шаг. Т.к. тиков (третий шаг) на порядки больше, чем OrderSend (второй шаг).


ЗЫ Когда Digits == 0, NormalizeDouble тормозит?

 
Slava:
Я многократно профилировал тестер. И знаю, где там "затык". Это финансовые расчёты, которые предполагают несколько нормализаций результатов к числу знаков валюты депозита

Обернул OrderSend в замер времени и прогнал в режиме Оптимизации, чтобы не тормозили логи одиночного прохода и посмотреть на реальное время выполнения функции в Тестере.

Получил среднее время выполнения ~4.5 мкс. Это соответствует 500 NormalizeDouble (скрипт запускал с таким количеством)!

Поэтому могу с полной уверенностью сказать, что тормоза не в нормализации.


Также было интересно посмотреть, какую часть от Оптимизационного прохода отжирает OrderSend, по сравнению с данными профилировщика. Получил совпадение - от четверти до трети.


Повторю ужас, с которым столкнулся, и из-за чего сыр-бор

 
подскажите пожалуйста. Почему я не могу закрыть ордер? Терминал пишет "нет цены". Что это может быть?
 
Zhams84:
подскажите пожалуйста. Почему я не могу закрыть ордер? Терминал пишет "нет цены". Что это может быть?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

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, если перед запуском включить в Обзор рынка все символы.