Как увеличить скорость?
Atom Ответить
19.03.2010


Для сравнения переписал SampleConsole чтоб он выставлял заявку после
прохождения сделки с определённой ценой...
разница времени сигнальной сделки и заявки получается в среднем 4-6
секунд! в то время как купиловский бот справляется за 1-2... как это
побороть?

Теги:


Спасибо:




14 Ответов
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 врезали какой-то замедляющий код.

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy