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

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


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

System.ArgumentException: Попытка записать неупорядоченные стаканы. (или бывает сделки)
Parameter name: time
at #=qw1XTJ7dV75pMzOz0hBo$siihDG5OZdJczlcSqCrqHeUyxlEsmsAtnXp2udZg_U2NbEZ$ip5_9tsblQGkl18bdw==.#=qlTbzCDxbsFRMhdXeRnHLcA==(List`1 #=qEZ$zSTu6NTimWrkeQ4ymLA==, DateTime #=qLHkFpgenDVQAbq_VEalrLw==, DateTime #=q1YTcmQ0aSkITnw2_u9_JGw==, String #=qRJWXZ_iDXJ5e6CyFySggxw==)
at #=qUW3a2a_zU_oArSSOiBn3FLpJvD1is2zltkAN_lWp2$4QggKmPLesfcTNGEJsfTBj.#=q0XPS289_jbJQep3DL8Cfqg==(List`1 #=qkTgCSAlcZNPcZEy9AZBFuw==, IEnumerable`1 #=qqG_QHQ$oLWGmKV91zoKX7g==, #=qQE3gxfWjLob0eT4xQKg$lvKLXN_F2oep$WGSiQW9e_pG7GggJyb9DKRw7jrVdvBV #=qkKGlqzlXkfX$fJnU2J9jjg==)
at #=qa_4zGoLcsro_feFbb0XM9_BlRhaxasQ1UrzoL3NsS5BLfjz_CcaLI5iqpy27MHoyWvADyOilwiIL8FNu4Ao2ig==.#=qwYoBzTre3Rqwrq$18odFFwAs16vZvPFKnBVlKACndM$R7_7lh23LQejqEr6XeJEHQS6AOtFMS5dX_4$Y7MoiGxjg027VUhTmQo_TuK$K4As=(IEnumerable`1 #=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(IEnumerable`1 #=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==(List`1 #=qEZ$zSTu6NTimWrkeQ4ymLA==, DateTime #=qLHkFpgenDVQAbq_VEalrLw==, DateTime #=q1YTcmQ0aSkITnw2_u9_JGw==, String #=qRJWXZ_iDXJ5e6CyFySggxw==)
at #=qUW3a2a_zU_oArSSOiBn3FLpJvD1is2zltkAN_lWp2$4QggKmPLesfcTNGEJsfTBj.#=q0XPS289_jbJQep3DL8Cfqg==(List`1 #=qkTgCSAlcZNPcZEy9AZBFuw==, IEnumerable`1 #=qqG_QHQ$oLWGmKV91zoKX7g==, #=qQE3gxfWjLob0eT4xQKg$lvKLXN_F2oep$WGSiQW9e_pG7GggJyb9DKRw7jrVdvBV #=qkKGlqzlXkfX$fJnU2J9jjg==)
at #=qa_4zGoLcsro_feFbb0XM9_BlRhaxasQ1UrzoL3NsS5BLfjz_CcaLI5iqpy27MHoyWvADyOilwiIL8FNu4Ao2ig==.#=qwYoBzTre3Rqwrq$18odFFwAs16vZvPFKnBVlKACndM$R7_7lh23LQejqEr6XeJEHQS6AOtFMS5dX_4$Y7MoiGxjg027VUhTmQo_TuK$K4As=(IEnumerable`1 #=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(IEnumerable`1 #=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/fo...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<TData>.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