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


EmulationTrader не понимает тиков с одинаковым Time
Atom
9/1/2011


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

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

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

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



Thanks:


Mikhail Sukhov

Avatar
Date: 9/1/2011
Reply


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


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

valenock

Avatar
Date: 9/1/2011
Reply


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

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

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

Mikhail Sukhov

Avatar
Date: 9/1/2011
Reply


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


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


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

loading
clippy