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

Попытка записать неупорядоченные стаканы.
Atom
12/7/2012
Garry


Помогите советом, пожалуйста! Пытаюсь писать сделки и стаканы с американского рынка через StockSharp API, на лету формирую классы Trade и MarketDepth добавляю их в List и скидываю через IMarketDataStorage.Save. До поры до времени все пишится отлично, но периодически вылазает следующий эксепшн:

System.ArgumentException: Попытка записать неупорядоченные стаканы. (или бывает сделки) Parameter name: time at #=qw1XTJ7dV75pMzOz0hBo$siihDG5OZdJczlcSqCrqHeUyxlEsmsAtnXp2udZg_U2NbEZ$ip5_9tsblQGkl18bdw==.#=qlTbzCDxbsFRMhdXeRnHLcA==(List1 #=qEZ$zSTu6NTimWrkeQ4ymLA==, DateTime #=qLHkFpgenDVQAbq_VEalrLw==, DateTime #=q1YTcmQ0aSkITnw2_u9_JGw==, String #=qRJWXZ_iDXJ5e6CyFySggxw==) at #=qUW3a2a_zU_oArSSOiBn3FLpJvD1is2zltkAN_lWp2$4QggKmPLesfcTNGEJsfTBj.#=q0XPS289_jbJQep3DL8Cfqg==(List1 #=qkTgCSAlcZNPcZEy9AZBFuw==, IEnumerable1 #=qqG_QHQ$oLWGmKV91zoKX7g==, #=qQE3gxfWjLob0eT4xQKg$lvKLXN_F2oep$WGSiQW9e_pG7GggJyb9DKRw7jrVdvBV #=qkKGlqzlXkfX$fJnU2J9jjg==) at #=qa_4zGoLcsro_feFbb0XM9_BlRhaxasQ1UrzoL3NsS5BLfjz_CcaLI5iqpy27MHoyWvADyOilwiIL8FNu4Ao2ig==.#=qwYoBzTre3Rqwrq$18odFFwAs16vZvPFKnBVlKACndM$R7_7lh23LQejqEr6XeJEHQS6AOtFMS5dX_4$Y7MoiGxjg027VUhTmQo_TuK$K4As=(IEnumerable1 #=qLQLfos6mvzvB9rAhsnoxLg==, #=qeTDkbpr2eeOjCLO$BGmaYqB0$_0v2N3UDYHi11JN7I8ARwjQbcOqhUBuEc4nnFMw #=qt22VzZuT_VCFx1qqarPCpw==) at #=qS_z4xglNzrousaCQdLYXkP_IjlUfppl$SeMe0e01sEcma$0uM2ViXhkzPsl2l6xC.#=q7q0eYZRA1iUY6p6r91AwpQ==(DateTime #=qW0qYrpmjZW0WsqbUpkvhew==, #=qFvJvQAioVGQfy_z_Ea6r1A==[] #=qA85ayI68bgFMuLNIN7NzUA==, Boolean #=qdZ$TS2XgaKiLLhbAouszfQ==) at #=qS_z4xglNzrousaCQdLYXkP_IjlUfppl$SeMe0e01sEcma$0uM2ViXhkzPsl2l6xC.Save(IEnumerable1 #=qCnHgFcoVHy5SJ3ZvbtahhQ==) at ArcheClient.MainGUI.frmMain.stakan(Object sender, EventArgs e) in F:\platforms\ArchePro\ISL\ArcheClient.MainGUI\frmMain.cs:line 3407 at #=qw1XTJ7dV75pMzOz0hBo$siihDG5OZdJczlcSqCrqHeUyxlEsmsAtnXp2udZg_U2NbEZ$ip5_9tsblQGkl18bdw==.#=qlTbzCDxbsFRMhdXeRnHLcA==(List1 #=qEZ$zSTu6NTimWrkeQ4ymLA==, DateTime #=qLHkFpgenDVQAbq_VEalrLw==, DateTime #=q1YTcmQ0aSkITnw2_u9_JGw==, String #=qRJWXZ_iDXJ5e6CyFySggxw==) at #=qUW3a2a_zU_oArSSOiBn3FLpJvD1is2zltkAN_lWp2$4QggKmPLesfcTNGEJsfTBj.#=q0XPS289_jbJQep3DL8Cfqg==(List1 #=qkTgCSAlcZNPcZEy9AZBFuw==, IEnumerable1 #=qqG_QHQ$oLWGmKV91zoKX7g==, #=qQE3gxfWjLob0eT4xQKg$lvKLXN_F2oep$WGSiQW9e_pG7GggJyb9DKRw7jrVdvBV #=qkKGlqzlXkfX$fJnU2J9jjg==) at #=qa_4zGoLcsro_feFbb0XM9_BlRhaxasQ1UrzoL3NsS5BLfjz_CcaLI5iqpy27MHoyWvADyOilwiIL8FNu4Ao2ig==.#=qwYoBzTre3Rqwrq$18odFFwAs16vZvPFKnBVlKACndM$R7_7lh23LQejqEr6XeJEHQS6AOtFMS5dX_4$Y7MoiGxjg027VUhTmQo_TuK$K4As=(IEnumerable1 #=qLQLfos6mvzvB9rAhsnoxLg==, #=qeTDkbpr2eeOjCLO$BGmaYqB0$_0v2N3UDYHi11JN7I8ARwjQbcOqhUBuEc4nnFMw #=qt22VzZuT_VCFx1qqarPCpw==) at #=qS_z4xglNzrousaCQdLYXkP_IjlUfppl$SeMe0e01sEcma$0uM2ViXhkzPsl2l6xC.#=q7q0eYZRA1iUY6p6r91AwpQ==(DateTime #=qW0qYrpmjZW0WsqbUpkvhew==, #=qFvJvQAioVGQfy_z_Ea6r1A==[] #=qA85ayI68bgFMuLNIN7NzUA==, Boolean #=qdZ$TS2XgaKiLLhbAouszfQ==) at #=qS_z4xglNzrousaCQdLYXkP_IjlUfppl$SeMe0e01sEcma$0uM2ViXhkzPsl2l6xC.Save(IEnumerable1 #=qCnHgFcoVHy5SJ3ZvbtahhQ==) at ArcheClient.MainGUI.frmMain.stakan(Object sender, EventArgs e) in F:\platforms\ArchePro\ISL\ArcheClient.MainGUI\frmMain.cs:line 3407

При этом в отладчике специально смотрю лист, время у стаканов или сделок идет по возрастанию. Помогите советом, отчего такой эксепшн может вылазить и как с ним бороться? S# 4.1.6


Tags:


Thanks:


1 2  >
Garry

Avatar
Date: 12/10/2012
Reply


Неупорядоченность по времени исключена, сделал необходимую проверку при добавлении данных. Такой же эксепшн вылазает при попытке скачать данные с ФТП РТС и записать данные новой гидрой(4.1.6) в папку с данными от старой гидры(4.1.3). Вот нашел тему на форуме http://stocksharp.com/forum/3089/Oshibka--Hydra-ver20011/

Thanks:

Mikhail Sukhov

Avatar
Date: 12/10/2012
Reply


Garry: Неупорядоченность по времени исключена, сделал необходимую проверку при добавлении данных.

А какая проверка?

Thanks:

Garry

Avatar
Date: 12/10/2012
Reply


Сортировка List по Time для сделок и LastChangeTime для стаканов.

Thanks:

Mikhail Sukhov

Avatar
Date: 12/10/2012
Reply


Garry: Сортировка List по Time для сделок и LastChangeTime для стаканов.

Не все так просто. Надо сравнивать не только поступающие данные, но так же и с последней меткой, что записана в файл. И удостоверится, что объекты не изменяются (особенно стаканы).

Thanks:

Garry

Avatar
Date: 12/10/2012
Reply


Ну то что не изменяются это точно, кроме меня изменить не кому, они ни к чему не привязаны, использую как структуру, заполняю по таймеру, перед добавлением в лист проверяю MarketDepth.Verify(), а вот что по поводу метки в файле, как ее сравнить?

Thanks:

Mikhail Sukhov

Avatar
Date: 12/10/2012
Reply


Garry: Ну то что не изменяются это точно, кроме меня изменить не кому, они ни к чему не привязаны, использую как структуру, заполняю по таймеру, перед добавлением в лист проверяю MarketDepth.Verify(), а вот что по поводу метки в файле, как ее сравнить?

Скорее всего самостоятельно где-то запоминать.

Thanks:

Garry

Avatar
Date: 12/11/2012
Reply


Михаил, такой вопрос, метка ставится при сохранении, непосредственно в файл с данными bin? Как она вычисляется, допустим в коллекции у меня стаканы с временем Нью Йорка, какая будет метка? Время изменения последнего элемента коллекции? Может быть проблема из-за часовых поясов или чего нибудь подобного? Сохранение IMarketDataStorage<TData>.Save идет в отдельном потоке? могут, например, данные не успеть дописаться до конца, а запрошено уже новое сохранение?

Thanks:

Mikhail Sukhov

Avatar
Date: 12/11/2012
Reply


Garry: Михаил, такой вопрос, метка ставится при сохранении, непосредственно в файл с данными bin? Как она вычисляется, допустим в коллекции у меня стаканы с временем Нью Йорка, какая будет метка? Время изменения последнего элемента коллекции? Может быть проблема из-за часовых поясов или чего нибудь подобного? Сохранение IMarketDataStorage.Save идет в отдельном потоке? могут, например, данные не успеть дописаться до конца, а запрошено уже новое сохранение?

Думаю проще всего будет записать блок данных в какое-то промежуточное хранилище, и потом его перегнать в S#. Там быстрее найдете ошибку. Сейчас 3 места: ваш код (я так понял это не Гидра, а следовательно косяков может быть где угодно, и мне можно только гадать об этом), наш код, неправильные данные. Надо сокращать область поиска.

Thanks:

Garry

Avatar
Date: 12/14/2012
Reply


В упор не могу понять почему выскакивает эксепшн, начал писать по одному стакану, раз в 500 Мс по таймеру. Все отлично: пишется пишется пишется, раз проскочил этот эксепшн, в обработчике эксепшена стакан удаляю, дальше все ок пишется пишется, потом опять эксепшн и т.д. специально скидывал в текстовик время последнего изменения стакана, во времени точно нет ошибки(хотя эксепшн именно об этом) в дебагере сравнивал косячный стакан с предыдущим нормальным никаких отличий, абсолютно одинаковые, стакан собирается вручную раз в 500мс непосредственно перед записью, каждый раз создается новый класс, всегда проверка Verify. В какие еще поля посмотреть стакана(косячного и нормального)? Реально не понимаю что править, хочется записывать америку очень удобный формат для хранения данных, но вот то пишется, то не пишется. Пример жирным косячный стакан: 14 29 2012 02:29:54:0548 14 29 2012 02:29:55:0688 14 29 2012 02:29:55:0688 14 29 2012 02:29:55:5698 14 29 2012 02:29:56:0829 14 29 2012 02:29:56:5829 Попытка записать неупорядоченные стаканы. Parameter name: time 14 29 2012 02:29:57:1089 Попытка записать неупорядоченные стаканы. Parameter name: time 14 29 2012 02:29:57:6120 14 29 2012 02:29:58:7131 14 29 2012 02:29:59:2221 14 29 2012 02:29:59:7301 14 30 2012 02:30:00:2361 14 30 2012 02:30:00:7362 14 30 2012 02:30:01:2502 14 30 2012 02:30:01:7512 14 30 2012 02:30:02:2653 14 30 2012 02:30:02:7693 14 30 2012 02:30:03:2773 14 30 2012 02:30:03:7773 14 30 2012 02:30:04:2914 14 30 2012 02:30:04:7924 14 30 2012 02:30:05:3054 14 30 2012 02:30:05:8065 14 30 2012 02:30:06:3195 Попытка записать неупорядоченные стаканы. Parameter name: time 14 30 2012 02:30:06:8255 14 30 2012 02:30:07:3335 14 30 2012 02:30:07:8336

Thanks:

Mikhail Sukhov

Avatar
Date: 12/15/2012
Reply


Garry: Реально не понимаю что править, хочется записывать америку очень удобный формат для хранения данных, но вот то пишется, то не пишется.

Да причем тут формат. Вы пишите неправильно данные. О чем S# и предупреждает. Ищите ошибку у себя. Ну или пишите данные как есть. Только потом не удивляйтесь, почему эквити на 90 градусов отличается от реального.[laugh]

Thanks:
1 2  >

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

loading
clippy