EmulationTrader не понимает тиков с одинаковым Time

EmulationTrader не понимает тиков с одинаковым Time
Atom
01.09.2011
valenock


Есть локальная база тиков по фучу РТС в формате FileStorage. Создана перегонкой из текстовых файлов с финама, соответственно все Time атрибуты идут без миллисекунд. В секунду могут проходить десятки разных сделок с разным объёмом и ценой. StorageAPI нормально к этому относится и умеет их выдавать последовательно - так, как они записаны в файл. EmulationTrader.NewTrades их так же видит без проблем. Но уже когда мы тестируем стратегию в EmulationTrader то Strategy.NewTrades уже видит ТОЛЬКО ОДНУ сделку в секунду, а именно из всех сделок в заданную секунду он видит ТОЛЬКО последнюю сделку.

Проверялось так - выводим все сделки в EmulationTrader.NewTrades и сравниваем со сделками в Strategy.When(Security.SecurityNewTrades()).Do(Process); Первый метод вываливает ВСЕ - второй только последнюю сделку за секунду. Параметр EmulationTrader.MarketTimeChangedInterval особого влияния не оказал - чаще чем 1 секунда сделки не появлялись, Strategy.Process() не вызывался.

Без какого-либо изменения кода проблему удалось решить перегонкой базы FileStorage - просто добавив миллисекунды всем сделкам по возрастанию - первая сделка в секунду 00мс, вторая 01мс и т.д.

видимо, баг ? пофиксить не могу - нет кода




Спасибо:


Mikhail Sukhov

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


[quote=valenock;10766]Проверялось так - выводим все сделки в EmulationTrader.NewTrades и сравниваем со сделками в Strategy.When(Security.SecurityNewTrades()).Do(Process); Первый метод вываливает ВСЕ - второй только последнюю сделку за секунду.[/quote]

Тоесть, EmulationTrader.NewTrades вываливает за одну секунду несколько сделок?

Спасибо:

valenock

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


Хм, как-то не пришло в голову это проверить - следил больше за Strategy.SecurityNewtrade. Сейчас возможности проверить нет - база FileStorage уже с миллисекундами - работает вполне корректно. Я постараюсь что-нибудь придумать, но пока будем считать, что возможны оба варианта - и одна сделка за раз и список сделок за эту секунду.

В любом случае - как я понимаю - ошибка локализуется прежде всего в Strategy.SecurityNewtrade - и она больше логическая, а именно: Слушая EmulationTrader.NewTrades мы получаем все сделки, а Strategy.SecurityNewtrade не даёт списка сделок - мы имеем доступ только к Secutiry.LastTrade, либо должны сами искать все сделки со времени последней в ITrader.Trades.

Видимо, нужно привести NewTrades в Trader и в Strategy к некому единому виду - иначе будут различия в отправке событий.

Спасибо:

Mikhail Sukhov

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


[quote=valenock;10775]Видимо, нужно привести NewTrades в Trader и в Strategy к некому единому виду - иначе будут различия в отправке событий.[/quote]

Давайте сначала проверим EmulationTrader.NewTrades. А уж дальше в зависимости от показателей.

Спасибо:


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

loading
clippy