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


Помогите советом, пожалуйста! Пытаюсь писать сделки и стаканы с американского рынка через 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

Теги:


Спасибо:




1 2  >
Garry

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


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

Mikhail Sukhov

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


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


А какая проверка?
Спасибо:

Garry

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


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

Mikhail Sukhov

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


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


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

Garry

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


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

Mikhail Sukhov

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


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


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

Garry

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


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

Mikhail Sukhov

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


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


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

Garry

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


В упор не могу понять почему выскакивает эксепшн, начал писать по одному стакану, раз в 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
Спасибо:

Mikhail Sukhov

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


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


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

Спасибо:
1 2  >

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

loading
clippy