Скорость обновления свойств стратегии

Скорость обновления свойств стратегии
Atom
8/21/2010


Приветствую Михаила и коллег.

Прежде чем задать вопрос еще раз хочу поблагодарить Михаила за
профессионализм и терпение.

У меня немного мутный вопрос. не знаю как объяснить. Но с чего то
надо начинать...

Первый вопрос.
Михаил, скажите, пжл, какая скорость (интервал) появления события
"собственных новых "сделок ? Подписавшись в роботе на события "мои
сделки", у меня разница между появлением сделки в Quik-е и выводом
роботом сообщения о сделке пара-тройка секунд. Что вообще то уже не
быстро.
Это первый наводящий вопрос.

Второй вопрос. Какая скорость обновления свойства
strategy.PositionManager.Position ?
Стратегия совершила сделку. Более того факт сделки даже успел
отметиться в событии "мои сделки" и даже робот об этой сделке
сообщил (то, что в первом вопросе). Но при этом
strategy.PositionManager.Position не изменился (например все ещё равен
0) И только через несколько мгновений
strategy.PositionManager.Position наконец то поменяется, но точно
только после события "мои сделки"

Чем можно объяснить такие задержки? Есть ли какие способы ускорения?

Робот консольный (т.е. без гуёвой синхронизации).
Связь с брокером у меня более менее - примерно 3-5мс
Windows 7 x64
S# 2.2.1

Спасибо и с уважением!

Tags:


Thanks:


Tauler

Avatar
Date: 8/23/2010
Reply


насчет разницы в пару тройку секунд. - а вы как замерете? на глаз или
время в файл пишете? если файл - то сравните локальное время компа и
время на сервре квика - могут отличаться

Thanks:

ustas

Avatar
Date: 8/23/2010
Reply


Спасибо, но нет не в файл. Я просто вижу задержку 1-2 секунды это
достаточно заметно. Я просто думал что может это как то возможно
настроить - как скорость обновления стакана (в конфиг файле), например

Но вопрос мой был не об том.
Почему strategy.PositionManager.Position обновляется только ПОСЛЕ,
например прибытия события "мои сделки"
они как то завязаны? Какая логика там.

Вы можете проверить сами.
Вывести в обработке событий "мои сделки" по событию сделки вывести
размер позиции в стратегии.
напрмиер так

trader.NewMyTrades += trades =>
{

foreach (var _myTrade in trades)
{
var trade = _myTrade.Trade;
Console.WriteLine("{5} {0} по цене {1}
по бумаге {2} по объему {3} в {4} всего:{6}", trade.Id, trade.Price,
trade.Security.Code, trade.Volume, trade.Time,
_myTrade.Order.Direction, total);
if (_strategy != null )
{ Console.WriteLine("Позиция:{0}",
_strategy.PositionManager.Position.ToString()}

}
}
};

_strategy.PositionManager.Position будет не обновлён.
Почему?

Спасибо и с уважением.

Thanks:

Mikhail Sukhov

Avatar
Date: 8/24/2010
Reply


1. А Вы сами где нибудь на NewMyTrades подписывались?
2. Конечно, позиция расчитывает по своим сделкам. Есть другие
варианты?
3. События передаются в код робота последовательно. Тоесть, если робот
подписался на одно и то же событие (такое, как, например,
NewMyTrades), то все эти места будут вызваны в одном потоке
последовательно. PositionManager ничем не приоритетнее вашего
обработчика. Поэтому, может быть просто возникла такая ситуация, когда
Ваш обработки получил новые сделки раньше, чем PositionManager.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy