API 4.2.2.26. Попытка записать неупорядоченные сделки


API 4.2.2.26. Попытка записать неупорядоченные сделки
Atom Ответить
09.04.2014


Вроде, в более ранних версиях такой ошибки не было. Можно как-то сделать, чтобы уже записанные сделки повторно в хранилище не писались, а сохранялись только те, что еще не записаны без вызова исключения?
Code
2014-04-09 09:40:52,755 [28] ERROR - Ошибка при сохранении сделок по инструменту SIM4@FORTS
System.ArgumentException: Попытка записать неупорядоченные сделки. Последнее записанное время равно 2014.04.08 23:49:59.954, новое 2014.04.08 19:00:00.228.
Parameter name: time
   at #=qupnVebKj5E_LfTEbmHe8KbG1dFxqwl7kUrWlGqaG0wI5uZKLsPtsVbnd5P7bDHQaAz2tCb6J9idMw3gvRjY1Mw==.#=qb0efB_0iWfYKV9dPpABQHw==(List`1 #=qRzSfjVkNOy_gJNbO1BzabQ==, DateTime #=qMk3IYP0EUku0w8TTMnxBsg==, DateTime #=qJ7budlo1qPRztaJejKVodg==, String #=qrJqJ8wrVY9Q55_L_PziYhg==)
   at #=qik$V9d0YIdt7a50_J_0pB51BqQfMZSNdri603R9UOkwkITuxxgzPFVi4iTEfxHNZ.#=qgaD_Tb$SEKVACHkmAGTisA==(List`1 #=qNJ2O7YVriWDgBVvYn8QUNg==, IEnumerable`1 #=qM59CUGlz1vm7o5jlWDYLmA==, #=qaEY6XdcItoIZhrbE_JQwk2wxYyltU_C97sm3DZRx5TWPlYw1V_KXXUaeyFPgi$uN #=q69YGPdCldqvfpJRlBX89tA==)
   at #=qSUou6FVxZ1h5BDJOlNq57MmNIouqlf9BTBrzOvrw1sN63XCWU3mHVHvulFvTqWdEsa0NLuVqyGXaOEMTqtKklw==.#=qkOUT4VUG7vd7cjfDOBNPsZ_B8CpdZWtHMMFzuEjwjOSH$$TTfAj90GB27rbnGE9MQNSiHNYIhWARk5sPnmPgwGN$wzEZXjPQJsPyOqGKpCY=(IEnumerable`1 #=qObQ0zo$unBgfMM41eeojew==, #=qDQE6UFyxY9ev55BGfq1mkC$y1CYqWdm2p3E5qBWHmwJee422YIKsU6YRi7n50Xzb #=qEX50oKddWjEyVBh1ljsroA==)
   at #=qtE5HPex3z_81QNLFBfrStGYr$HJbb97D2ocIM65d8mpdGq8_Rh0rf322J$LYyYNY.#=qoch2JfnxMeF_RRR1aIXzLQ==(DateTime #=qsjQUmsSmyDKnEr3UkWP9Hg==, #=qaOB$eFMURJ1m17N_SxlaNg==[] #=qyObO0JV1rCoXj11Xn$J$bA==, Boolean #=qT1bF99ka$PPH6jPZ2sy6Gw==)
   at #=qtE5HPex3z_81QNLFBfrStGYr$HJbb97D2ocIM65d8mpdGq8_Rh0rf322J$LYyYNY.Save(IEnumerable`1 #=qyObO0JV1rCoXj11Xn$J$bA==)
   at AlgoTrading.Features.Hydra.Model.SaveManager.SaveTrades() in d:\Temp\AlgoTrading\Build Process Data\Export\SourceCode\Applications\AlgoTrading\Features\Hydra\Model\SaveManager.cs:line 202

Теги:


Спасибо:




21 Ответов
Mikhail Sukhov

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


vk37 Go to
Можно как-то сделать, чтобы уже записанные сделки повторно в хранилище не писались,


Так и сделано сейчас.
Спасибо:

vk37

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


А зачем исключение выбрасывается? Получается, что в хранилище не запишутся и новые сделки, если в сохраняемх сделках есть уже ранее записанные. AppendOnlyNew, вроде равен true.
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Go to
А зачем исключение выбрасывается?


Потому что если есть ошибка, нужно как-то оповестить внешний код об ошибке.
Спасибо:

vk37

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


Каким-то образом можно определить время последней записанной сделки, чтобы перед записью отфильтровать уже записанные?
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Go to
Каким-то образом можно определить время последней записанной сделки, чтобы перед записью отфильтровать уже записанные?


Этого делать нет смысла, так как фильтрация уже сделана в хранилище.
Спасибо:

vk37

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


Неудобный режим. У меня часть сделок при записи теряется. Не знаю пока как исправить. Ситуации, когда нужно сохранить сделки, где часть уже сохранена, а часть еще не сохранялась возникают часто. В результате попытки такого сохранения возникает исключение и сделки, которые еще не сохранялись теряютсся. Было бы желательным иметь такой режим сохранения, когда уже записанные сделки не записываются, а новые записываются без появления исключения. Раньше считал, что именно так хранилище и работает.
Автор топика
Спасибо:

Mikhail Sukhov

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


Именно так оно и работает
Спасибо:

vk37

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


Михаил Сухов Go to
Именно так оно и работает
Ничего тогда не понимаю. Почему-то у меня так не работает.

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

Mikhail Sukhov

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


vk37 Go to
Михаил Сухов Go to
Именно так оно и работает
Ничего тогда не понимаю. Почему-то у меня так не работает.



А как было проверено, что не работает?
Спасибо:

vk37

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


Михаил Сухов Go to
А как было проверено, что не работает?

Пробовал на IQFeed коннекторе.
1 шаг. Запустил приложение. Подключился к куфиду. Загрузил сделки по инструменту +GC#@IQ за период с 06.10.13 по 31.10.13 включительно. Сохранил сделки. Отключился. Закрыл приложение. Проверил хранилище. Почему-то в хранилище оказались и сделки за 01.11.13.
2 шаг. Запустил приложение. Подключился к куфиду. Загрузил сделки по инструменту +GC#@IQ за период с 01.11.13 по 31.12.13 включительно. Попытался сохранить сделки. Получил сообщение об ошибке:
Code
2014-04-10 15:10:59,009 [23] ERROR - Ошибка при сохранении сделок по инструменту +GC#@IQ
System.ArgumentException: Попытка записать неупорядоченные сделки. Последнее записанное время равно 2013.11.01 00:00:00.996, новое 2013.11.01 00:00:00.143.
Parameter name: time
   at #=qupnVebKj5E_LfTEbmHe8KbG1dFxqwl7kUrWlGqaG0wI5uZKLsPtsVbnd5P7bDHQaAz2tCb6J9idMw3gvRjY1Mw==.#=qb0efB_0iWfYKV9dPpABQHw==(List`1 #=qRzSfjVkNOy_gJNbO1BzabQ==, DateTime #=qMk3IYP0EUku0w8TTMnxBsg==, DateTime #=qJ7budlo1qPRztaJejKVodg==, String #=qrJqJ8wrVY9Q55_L_PziYhg==)
   at #=qik$V9d0YIdt7a50_J_0pB51BqQfMZSNdri603R9UOkwkITuxxgzPFVi4iTEfxHNZ.#=qgaD_Tb$SEKVACHkmAGTisA==(List`1 #=qNJ2O7YVriWDgBVvYn8QUNg==, IEnumerable`1 #=qM59CUGlz1vm7o5jlWDYLmA==, #=qaEY6XdcItoIZhrbE_JQwk2wxYyltU_C97sm3DZRx5TWPlYw1V_KXXUaeyFPgi$uN #=q69YGPdCldqvfpJRlBX89tA==)
   at #=qSUou6FVxZ1h5BDJOlNq57MmNIouqlf9BTBrzOvrw1sN63XCWU3mHVHvulFvTqWdEsa0NLuVqyGXaOEMTqtKklw==.#=qkOUT4VUG7vd7cjfDOBNPsZ_B8CpdZWtHMMFzuEjwjOSH$$TTfAj90GB27rbnGE9MQNSiHNYIhWARk5sPnmPgwGN$wzEZXjPQJsPyOqGKpCY=(IEnumerable`1 #=qObQ0zo$unBgfMM41eeojew==, #=qDQE6UFyxY9ev55BGfq1mkC$y1CYqWdm2p3E5qBWHmwJee422YIKsU6YRi7n50Xzb #=qEX50oKddWjEyVBh1ljsroA==)
   at #=qtE5HPex3z_81QNLFBfrStGYr$HJbb97D2ocIM65d8mpdGq8_Rh0rf322J$LYyYNY.#=qoch2JfnxMeF_RRR1aIXzLQ==(DateTime #=qsjQUmsSmyDKnEr3UkWP9Hg==, #=qaOB$eFMURJ1m17N_SxlaNg==[] #=qyObO0JV1rCoXj11Xn$J$bA==, Boolean #=qT1bF99ka$PPH6jPZ2sy6Gw==)
   at #=qtE5HPex3z_81QNLFBfrStGYr$HJbb97D2ocIM65d8mpdGq8_Rh0rf322J$LYyYNY.Save(IEnumerable`1 #=qyObO0JV1rCoXj11Xn$J$bA==)
   at AlgoTrading.Features.Hydra.Model.SaveManager.SaveTrades() in d:\Temp\AlgoTrading\Build Process Data\Export\SourceCode\Applications\AlgoTrading\Features\Hydra\Model\SaveManager.cs:line 222
Удостоверился, что в хранилище полученные на шаге 2 сделки не сохранились.
Прилагаю к посту хранилище, сформированное на шаге 1.

TestStorage.zip 5 MB (0)
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Go to



" Попытка записать неупорядоченные сделки." - значит сами сделки передаваемые не упорядочены по времени. А не то, что хранилище не может отфильтровать.
Спасибо:

towace

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


может вот это свойство хранилища поможет, AppendOnlyNew
Спасибо:

vk37

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


Михаил Сухов Go to
" Попытка записать неупорядоченные сделки." - значит сами сделки передаваемые не упорядочены по времени. А не то, что хранилище не может отфильтровать.
Упорядочил сделки перед сохранением по времени:
Code
tradesStorage.Save(tradeBySecurity.OrderBy(t => t.Time));
Исключение при сохранении по-прежнему осталось, часть сделок не сохранилась.
Если из хранилища удалить сделки за 01.11.13 после окончания действий по шагу 1, то ошибок при выполнении шага 2 не будет. Выходит, что все-таки хранилище не может отфильтровать.
Автор топика
Спасибо:

vk37

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


towace Go to
может вот это свойство хранилища поможет, AppendOnlyNew
Оно по умолчанию == true.

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

Mikhail Sukhov

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


vk37 Go to
Упорядочил сделки перед сохранением по времени:
Code
tradesStorage.Save(tradeBySecurity.OrderBy(t => t.Time));
Исключение при сохранении по-прежнему осталось


Тогда не знаю в чем дело. Надо больше информации. Может как-то эти сделки сохранить.
Спасибо:

vk37

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


Михаил Сухов Go to
Надо больше информации.
Могу сохранить отдельно сделки, полученные на шаге 1 и отдельно сделки полученные на шаге 2 и приложить хранилище к посту. Могу попробовать простой проект сделать, демонстрирующий проблему. Что конкретно нужно?
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Go to
Михаил Сухов Go to
Надо больше информации.
Могу сохранить отдельно сделки, полученные на шаге 1 и отдельно сделки полученные на шаге 2 и приложить хранилище к посту. Могу попробовать простой проект сделать, демонстрирующий проблему. Что конкретно нужно?


Второе было бы лучше.
Спасибо:

vk37

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


Михаил Сухов Go to
Второе было бы лучше.
Сделал проект.
Подключаюсь к куфиду. Нахожу инструмент +GC#. Получаю сделки за 01.11.2013. Сохраняю полученные сделки в хранилище, в котором уже содержатся несколько сделок за первую секунду 01.11.2013 (как-то попали при запросе данных за предыдущий день). Получаю исключение "Попытка записать неупорядоченные сделки". Убеждаюсь, что новые сделки в хранилище не записаны. Отключаюсь от куфида.
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Go to


А можно как-то по проще? С захардкожены значениями?
Спасибо:

vk37

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


Михаил Сухов Go to
А можно как-то по проще? С захардкожены значениями?
Что значит с захардкоженными значениями? Вроде и так максимально просто: запускаешь код - получаешь ошибку, ничего корректировать в коде не нужно. 130 строк кода.
Автор топика
Спасибо:

vk37

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


Версия 4.2.2.27 без изменений
Автор топика
Спасибо:


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

loading
clippy