Для сравнения переписал SampleConsole чтоб он выставлял заявку после прохождения сделки с определённой ценой... разница времени сигнальной сделки и заявки получается в среднем 4-6 секунд! в то время как купиловский бот справляется за 1-2... как это побороть?
Комментарии (14)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Я подозреваю, что эти секунды - плата за дополнительные прослойки между логикой работы и QUIK.
С уважением, Сергей Зуев
Что Вы подразумеваете под прослойками?
Я правильно понял порядок замера?
Можно ли привести кусок кода и лог, показывающий время?
Не понятны символы.
trade.OrderDirection, }; trader.RegisterOrder(order); } }
ìÏÇ ÎÅ ×£Ì..ÐÒÏÓÔÏ ÓÒÁ×ÎÉ×ÁÌ ×ÒÅÍÑ ÓÉÇÎÁÌØÎÏÊ ÓÄÅÌËÉ(× ÔÁÂÌÉÃÅ ×ÓÅÈ ÓÄÅÌÏË) É ×ÒÅÍÑ ×ÙÓÔÁ×ÌÅÎÉÑ ÚÁÑ×ËÉ(× ÔÁÂÌÉÃÅ ÚÁÑ×ÏË)...
Лучше все же вывести в лог, чтобы точно отмести сомнения в том, что проблема в коде. А Вы тестируете или работаете с реальным счетом?
Пытался вывести время прихода сделки так: if (trade.Price > 16774)
{Console.WriteLine("{0}",DateTime.Now); и так: Console.WriteLine(trader.MarketTime);
но выводимое время почему то больше времени заявки т.е. например выводится 15:27:57 а заявка была выставлена в 15:27:53...как узнать точное время прихода сделки?
реал
DateTime.Now = trader.MarketTime DateTime.Now - это локальное время на компьютере. Оно у Вас не точное? Подведите с интернетом.
Я кажется уже догадываюсь, откуда эта "разница" с qpile.
Время точное..я пробовал и системное, и серверное, разницы нет...
Последние две заявки были выставлены с задержкой:первая-13 секунд,а вторая-1 секунда..не пойму чем может быть вызван такой разброс?
Попробуйте на тесте. Если там нет таких задержек, то звоните к брокеру, спрашивать в чем проблема.
S# никаких блокировок не вставляет на отправку заявок. Все уходит как есть в Квик. Проблема или с подключением, или на стороне сервера.
На тесте трудно отследить момент формирования сигнала.. с сигнальной сделкой проще... Да и чтобы материть брокера с провайдером нужно узнать с какой задержкой сделка пришла в S#, вот только как? Я и не утверждаю что дело в S#, вот только как это доказать?
Все просто. Сделайте тест по выставленю лимитников с заведомо неисполнимой ценой. Прогоните на тесте и на реале (тест лучше брать не от вашего брокера). Тест - допустим цикл из 100 заявок.
Допонительно, перед отправкой заведите допустим в Order.ExtensionInfo["CreationDate"] = DateTime.Now; Затем, когда пришло событие OrdersChanged, посмотрите Order.Time и сравните со своим CreationDate. Сделайте так хотя бы для 10 заявок. Провайдер думаю не при чем, так как отправка сигнала - это срапвнительно небольшой пакет. Работать должен даже на модемных скоростях, не говоря уж о выделенке. Я думаю проблема именно у брокера
И мне кажется, что такие недетерминированные задержки будут у Вас и при работе QPILE и при S# и при ручном трейдинге. Мало вероятно, что в Quik API врезали какой-то замедляющий код.