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


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

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

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

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

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

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

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

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

Теги:


Спасибо:




3 Ответов
Tauler

Фотография
Дата: 23.08.2010
Ответить


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

Спасибо:

ustas

Фотография
Дата: 23.08.2010
Ответить


Спасибо, но нет не в файл. Я просто вижу задержку 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 будет не обновлён.
Почему?

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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.08.2010
Ответить


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

Спасибо:


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

loading
clippy