skzuev
|
Дата: 19.03.2010
Я подозреваю, что эти секунды - плата за дополнительные прослойки между логикой работы и QUIK.
С уважением, Сергей Зуев
|
|
|
|
XMbIPb
|
Дата: 19.03.2010
Что Вы подразумеваете под прослойками?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 19.03.2010
Я правильно понял порядок замера?
1. Вы получили сделку. Во время? 2. Выставляете заявку. Мгновенно? 3. Смотрите на результат. Где именно?
Можно ли привести кусок кода и лог, показывающий время?
|
|
|
|
Mikhail Sukhov
|
Дата: 19.03.2010
Не понятны символы.
|
|
|
|
XMbIPb
|
Дата: 19.03.2010
var LT = lkoh.LastTrade.Time;
trader.NewTrades += Trades => {
foreach (var trade in Trades) { if (LT < trade.Time) if (trade.Price > 16774) { var order = new Order { Account = account, Price = trade.Price, Security = lkoh, Volume = lot, Direction = trade.OrderDirection, }; trader.RegisterOrder(order); } }
};
while (true) { Thread.Sleep(1000000); }
ìÏÇ ÎÅ ×£Ì..ÐÒÏÓÔÏ ÓÒÁ×ÎÉ×ÁÌ ×ÒÅÍÑ ÓÉÇÎÁÌØÎÏÊ ÓÄÅÌËÉ(× ÔÁÂÌÉÃÅ ×ÓÅÈ ÓÄÅÌÏË) É ×ÒÅÍÑ ×ÙÓÔÁ×ÌÅÎÉÑ ÚÁÑ×ËÉ(× ÔÁÂÌÉÃÅ ÚÁÑ×ÏË)...
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 19.03.2010
Лучше все же вывести в лог, чтобы точно отмести сомнения в том, что проблема в коде. А Вы тестируете или работаете с реальным счетом?
|
|
|
|
XMbIPb
|
Дата: 19.03.2010
Пытался вывести время прихода сделки так: if (trade.Price > 16774)
{Console.WriteLine("{0}",DateTime.Now); и так: Console.WriteLine(trader.MarketTime);
но выводимое время почему то больше времени заявки т.е. например выводится 15:27:57 а заявка была выставлена в 15:27:53...как узнать точное время прихода сделки?
|
Автор топика
|
|
|
XMbIPb
|
Дата: 19.03.2010
реал
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 19.03.2010
DateTime.Now = trader.MarketTime DateTime.Now - это локальное время на компьютере. Оно у Вас не точное? Подведите с интернетом.
Я кажется уже догадываюсь, откуда эта "разница" с qpile.
|
|
|
|
XMbIPb
|
Дата: 21.03.2010
Время точное..я пробовал и системное, и серверное, разницы нет...
|
Автор топика
|
|
|
XMbIPb
|
Дата: 21.03.2010
Последние две заявки были выставлены с задержкой:первая-13 секунд,а вторая-1 секунда..не пойму чем может быть вызван такой разброс?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 23.03.2010
Попробуйте на тесте. Если там нет таких задержек, то звоните к брокеру, спрашивать в чем проблема.
S# никаких блокировок не вставляет на отправку заявок. Все уходит как есть в Квик. Проблема или с подключением, или на стороне сервера.
|
|
|
|
XMbIPb
|
Дата: 23.03.2010
На тесте трудно отследить момент формирования сигнала.. с сигнальной сделкой проще... Да и чтобы материть брокера с провайдером нужно узнать с какой задержкой сделка пришла в S#, вот только как? Я и не утверждаю что дело в S#, вот только как это доказать?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 23.03.2010
Все просто. Сделайте тест по выставленю лимитников с заведомо неисполнимой ценой. Прогоните на тесте и на реале (тест лучше брать не от вашего брокера). Тест - допустим цикл из 100 заявок.
Допонительно, перед отправкой заведите допустим в Order.ExtensionInfo["CreationDate"] = DateTime.Now; Затем, когда пришло событие OrdersChanged, посмотрите Order.Time и сравните со своим CreationDate. Сделайте так хотя бы для 10 заявок. Провайдер думаю не при чем, так как отправка сигнала - это срапвнительно небольшой пакет. Работать должен даже на модемных скоростях, не говоря уж о выделенке. Я думаю проблема именно у брокера - сервер не справляется.
И мне кажется, что такие недетерминированные задержки будут у Вас и при работе QPILE и при S# и при ручном трейдинге. Мало вероятно, что в Quik API врезали какой-то замедляющий код.
|
|
|