EmulationTrader не понимает тиков с одинаковым Time
Atom Ответить
01.09.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мс и т.д.

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



Спасибо:




3 Ответов
Mikhail Sukhov

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


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


Тоесть, 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
Ответить


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


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


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

loading
clippy