← Zurück

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

Вроде, в более ранних версиях такой ошибки не было. Можно как-то сделать, чтобы уже записанные сделки повторно в хранилище не писались, а сохранялись только те, что еще не записаны без вызова исключения?```plain 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==(List1 #=qRzSfjVkNOy_gJNbO1BzabQ==, DateTime #=qMk3IYP0EUku0w8TTMnxBsg==, DateTime #=qJ7budlo1qPRztaJejKVodg==, String #=qrJqJ8wrVY9Q55_L_PziYhg==) at #=qik$V9d0YIdt7a50_J_0pB51BqQfMZSNdri603R9UOkwkITuxxgzPFVi4iTEfxHNZ.#=qgaD_Tb$SEKVACHkmAGTisA==(List1 #=qNJ2O7YVriWDgBVvYn8QUNg==, IEnumerable1 #=qM59CUGlz1vm7o5jlWDYLmA==, #=qaEY6XdcItoIZhrbE_JQwk2wxYyltU_C97sm3DZRx5TWPlYw1V_KXXUaeyFPgi$uN #=q69YGPdCldqvfpJRlBX89tA==) at #=qSUou6FVxZ1h5BDJOlNq57MmNIouqlf9BTBrzOvrw1sN63XCWU3mHVHvulFvTqWdEsa0NLuVqyGXaOEMTqtKklw==.#=qkOUT4VUG7vd7cjfDOBNPsZ_B8CpdZWtHMMFzuEjwjOSH$$TTfAj90GB27rbnGE9MQNSiHNYIhWARk5sPnmPgwGN$wzEZXjPQJsPyOqGKpCY=(IEnumerable1 #=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

War dieses Thema hilfreich?

Thema teilen

Kommentare (21)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

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

Так и сделано сейчас.

vk37
vk37 Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

vk37
vk37 Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

vk37
vk37 Autor

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

Mikhail Sukhov
Mikhail Sukhov

Именно так оно и работает

vk37
vk37 Autor

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

Mikhail Sukhov
Mikhail Sukhov

vk37:

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

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

vk37
vk37 Autor

Михаил Сухов: А как было проверено, что не работает? Пробовал на IQFeed коннекторе. 1 шаг. Запустил приложение. Подключился к куфиду. Загрузил сделки по инструменту +GC#@IQ за период с 06.10.13 по 31.10.13 включительно. Сохранил сделки. Отключился. Закрыл приложение. Проверил хранилище. Почему-то в хранилище оказались и сделки за 01.11.13. 2 шаг. Запустил приложение. Подключился к куфиду. Загрузил сделки по инструменту +GC#@IQ за период с 01.11.13 по 31.12.13 включительно. Попытался сохранить сделки. Получил сообщение об ошибке:```plain 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==(List1 #=qRzSfjVkNOy_gJNbO1BzabQ==, DateTime #=qMk3IYP0EUku0w8TTMnxBsg==, DateTime #=qJ7budlo1qPRztaJejKVodg==, String #=qrJqJ8wrVY9Q55_L_PziYhg==) at #=qik$V9d0YIdt7a50_J_0pB51BqQfMZSNdri603R9UOkwkITuxxgzPFVi4iTEfxHNZ.#=qgaD_Tb$SEKVACHkmAGTisA==(List1 #=qNJ2O7YVriWDgBVvYn8QUNg==, IEnumerable1 #=qM59CUGlz1vm7o5jlWDYLmA==, #=qaEY6XdcItoIZhrbE_JQwk2wxYyltU_C97sm3DZRx5TWPlYw1V_KXXUaeyFPgi$uN #=q69YGPdCldqvfpJRlBX89tA==) at #=qSUou6FVxZ1h5BDJOlNq57MmNIouqlf9BTBrzOvrw1sN63XCWU3mHVHvulFvTqWdEsa0NLuVqyGXaOEMTqtKklw==.#=qkOUT4VUG7vd7cjfDOBNPsZ_B8CpdZWtHMMFzuEjwjOSH$$TTfAj90GB27rbnGE9MQNSiHNYIhWARk5sPnmPgwGN$wzEZXjPQJsPyOqGKpCY=(IEnumerable1 #=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

Прилагаю к посту хранилище, сформированное на шаге 1.

Mikhail Sukhov
Mikhail Sukhov

vk37:

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

vk37
vk37 Autor

Михаил Сухов: " Попытка записать неупорядоченные сделки." - значит сами сделки передаваемые не упорядочены по времени. А не то, что хранилище не может отфильтровать.Упорядочил сделки перед сохранением по времени: ```csharp tradesStorage.Save(tradeBySecurity.OrderBy(t => t.Time));

Если из хранилища удалить сделки за 01.11.13 после окончания действий по шагу 1, то ошибок при выполнении шага 2 не будет. Выходит, что все-таки хранилище не может отфильтровать.
Mikhail Sukhov
Mikhail Sukhov

vk37: Упорядочил сделки перед сохранением по времени: ```csharp tradesStorage.Save(tradeBySecurity.OrderBy(t => t.Time));


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

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

Mikhail Sukhov
Mikhail Sukhov

vk37:

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

Второе было бы лучше.

vk37
vk37 Autor

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

Mikhail Sukhov
Mikhail Sukhov

vk37:

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

vk37
vk37 Autor

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

towace
towace

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

vk37
vk37 Autor

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

vk37
vk37 Autor

Версия 4.2.2.27 без изменений