hydra. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=tag&id=hydra&type=forum&page=15Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T13:35:50Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/3095/И у меня не запускается гидра2012-10-18T10:27:49Z2012-10-18T10:27:49ZKazai Mazaihttps://stocksharp.ru/users/5954/info@stocksharp.ruОшибок никаких не выдает. В процессах появляется на несколько секунд и бесследно исчезает.<br /><br />Пробовал 4.1.4 и 4.1.5 и последнюю что на кодплекс есть.<br /><br />Последний раз гидру пол года назад использовал, но уже и систему переустанавливал, так что в моих документах\StockSharp stocksharp.db не лежит.<br /><br />А старая гидра - 4.0.23 при запуске выдает вот что <a href='http://s1.ipicture.ru/uploads/20121018/6eWd2MQ5.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://s1.ipicture.ru/uploads/20121018/6eWd2MQ5.png" style='max-width: 600px;' alt="Hydra Error" title="Hydra Error" /></a><br /><br />Может с лицензией не так что то? Я ее еще когда она только появилась получал. В мои документы\StockSharp положил, и к гидре положил. <br /> https://stocksharp.ru/topic/3094/Гидра не подключается по Плазе к Украинской бирже2012-10-18T10:05:26Z2012-10-18T10:05:26Zgreg_bondhttps://stocksharp.ru/users/6381/info@stocksharp.ruИсходная информация:<br />1. Версия S# 19984.<br />2. При установке роутера был введен логин и пароль поэтому при редактировании настроек источника соответствующие поля не заполнялись.<br />3. Поскольку шлюз установлен как служба на данном компьютере IP-адрес локальный.<br />4. Времена сессии устанавливались как у Украинской биржи.<br /><br />В результате запуска выдало следующую ошибку:<br /><br /><span style="font-size:90%">12:15:55.117| |PlazaTrader|OnConnect<br />12:15:57.647| |PlazaTrader|OnConnectionStatusChanged: conn HYD_0 - status: Disconnected<br />12:15:57.668| |PlazaTrader|RaiseConnectionError - disconnected<br />12:15:57.672|Error |PlazaTrader|StockSharp.Plaza.PlazaException: Ошибка подключения к серверу Плазы. Код -2147196924, описание 'P2ERR_MQ_TIMEOUT'. ---> System.Runtime.InteropServices.COMException: Couldn't connect to MQ<br /> в P2ClientGateMTA64.CP2ConnectionClass.Connect()<br /> в #=qtEOwcFdv6qrH4pZxXKioM012o$fvPLm_7HFoTk34H4FuUW6bH4Hhb0JWa0HdfodA.#=qn$qQyVrvK2nnaFJjcmYS8g==()<br /> в #=qULpFD3DVudGPg66f7bHCU4AlxqmxNwM$OOnJPh7YIw74d_slFPc4cAUMQ6dldy6S.#=qHzscV4dpTJhBgp5NQTkfLg==(#=qMy6VJNnTeU9DQ$INy4z9JeDBbcM8IMpdLTjFafPKaDrwJPSyP85X1apwUKALKFWu #=qZj1hJoW5PXH4nJ9PCQygwg==, Boolean #=qKXAyopBaFF1DgcbgYFFLQD7HHl5cpaRr0H8AZiDwO1E=)<br /> --- Конец трассировки внутреннего стека исключений ---<br />12:16:15.199|Error |Plaza |System.TimeoutException: Ожидание подключения превысило максимально допустимый интервал.<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.MarketDataTrader.GetNewSecurities()<br /> в StockSharp.Hydra.MainWindow.<>c__DisplayClass39.<ExecutedSourceEnabledChanged>b__36()<br />12:17:00.313| |PlazaTrader|OnConnect<br />12:17:00.328| |PlazaTrader|Attempted to connect _0.<br />12:17:00.334| |PlazaTrader|Запуск экспорта.<br />12:18:00.390| |PlazaTrader|OnConnectionStatusChanged: conn _0 - status: Disconnected<br />12:18:00.390| |PlazaTrader|RaiseConnectionError - disconnected<br />12:18:00.390|Error |PlazaTrader|System.TimeoutException: Соединение не было установлено в отведенный отрезок времени.<br /></span><br /><br />По совету Moadip проверил работу SampleGUI с теми же настройками с первого раза выдал ошибку - firewall CoMoDo не пропустил.<br />При повторном запуске SampleGUI с биржей соединился, инструменты скачал и начал выдавать сделки и последние котировки по инструментам.<br /><br />Вывод какие-то проблемы с Гидрой или ее настройками.<br /><br />Кто знает подскажите! https://stocksharp.ru/topic/3089/Ошибка: Hydra ver200112012-10-17T08:04:19Z2012-10-17T08:04:19Zgreg_bondhttps://stocksharp.ru/users/6381/info@stocksharp.ruОписание проблемы:<br />Hydra ver20011 даже не пытается скачивать исторические данные с UX.<br /><br />Вот пример log-a: <br />10:59:42.247| |UX |Инициализируется.<br />10:59:42.316| |UX |Запущен.<br />10:59:42.329| |UX |Дата 14.10.2012 вне диапазона.<br />10:59:42.331| |UX |Интервал изменен на 1 день.<br />11:01:59.789| |UX |Останавливается.<br />11:01:59.792| |UX |Остановлен.<br /><br />В то же время версия 19868 вполне нормально качает с UX, правда только сделки<br /><br />Вот пример log-a:<br />10:09:37.326| |UX |Инициализируется.<br />10:09:37.394| |UX |Запущен.<br />10:09:37.407| |UX |Старт с 27.05.2010.<br />10:09:42.168| |UX |Сохранение сделок для UXM0@UX.<br />10:09:42.251| |UX |Сохранение сделок для UXU0@UX.<br />10:09:42.397| |UX |Для UXM0@UX загружено 498 сделок.<br />10:09:42.590| |UX |Для UXU0@UX загружено 5 сделок.<br />10:09:43.463| |UX |Старт с 28.05.2010.<br />10:09:43.698| |UX |Сохранение сделок для UXM0@UX.<br />10:09:43.710| |UX |Для UXM0@UX загружено 342 сделок.<br />.................................<br />10:36:59.634| |UX |Для UXZ2@UX загружено 9439 сделок.<br />10:36:59.751| |UX |Для UXH3@UX загружено 9 сделок.<br />10:36:59.810| |UX |Для UX950BV2@UX загружено 35 сделок.<br />10:36:59.880| |UX |Для UX900BV2@UX загружено 31 сделок.<br />10:36:59.943| |UX |Для UX900BL2@UX загружено 20 сделок.<br />10:37:00.000| |UX |Для UX900BJ2@UX загружено 19 сделок.<br />10:37:00.067| |UX |Для UX950BJ2@UX загружено 6 сделок.<br />10:37:00.179| |UX |Для UX950BX2@UX загружено 7 сделок.<br />10:37:00.262| |UX |Для UX900BX2@UX загружено 8 сделок.<br />10:37:00.328| |UX |Для UX850BL2@UX загружено 4 сделок.<br />10:37:00.566| |UX |Для UX1050BL2@UX загружено 15 сделок.<br />10:37:00.659| |UX |Для UX1150BJ2@UX загружено 15 сделок.<br />10:37:00.741| |UX |Для UX750BX2@UX загружено 4 сделок.<br />10:37:00.832| |UX |Для UX1200BL2@UX загружено 8 сделок.<br />10:37:00.926| |UX |Для UX1000BX2@UX загружено 10 сделок.<br />10:37:01.016| |UX |Для UX700BV2@UX загружено 1 сделок.<br />10:37:01.088| |UX |Для UX1150BL2@UX загружено 15 сделок.<br />10:37:01.174| |UX |Для UX1050BX2@UX загружено 10 сделок.<br />10:37:01.258| |UX |Для UX950BL2@UX загружено 11 сделок.<br />10:37:01.349| |UX |Для UX1100BL2@UX загружено 18 сделок.<br />10:37:01.441| |UX |Для UX700BX2@UX загружено 7 сделок.<br />10:37:01.532| |UX |Для UX850BX2@UX загружено 7 сделок.<br />10:37:01.609| |UX |Для UX1000BL2@UX загружено 10 сделок.<br />10:37:01.690| |UX |Для UX1050BJ2@UX загружено 2 сделок.<br />10:37:01.766| |UX |Для UX1000BJ2@UX загружено 3 сделок.<br />10:37:01.840| |UX |Для UX850BV2@UX загружено 11 сделок.<br />10:37:01.935| |UX |Для UX1000BV2@UX загружено 3 сделок.<br />10:37:02.022| |UX |Для UX1050BV2@UX загружено 1 сделок.<br />10:37:02.100| |UX |Для UX1100BX2@UX загружено 3 сделок.<br />10:37:02.176| |UX |Для UX1100BJ2@UX загружено 11 сделок.<br />10:37:02.267| |UX |Для UX700BL2@UX загружено 1 сделок.<br />10:37:03.126| |UX |Старт с 13.10.2012.<br />10:37:04.140| |UX |Дата 14.10.2012 вне диапазона.<br />10:37:04.142| |UX |Интервал изменен на 1 день.<br />10:38:05.792| |UX |Останавливается.<br />10:38:05.795| |UX |Остановлен.<br /><br />Что-то там поломали!https://stocksharp.ru/topic/3084/MarketDepth.QuotesChanged vs Trader.MarketDepthsChanged2012-10-15T18:47:58Z2012-10-15T18:47:58ZDrChemisthttps://stocksharp.ru/users/6376/info@stocksharp.ruВообще, вопрос скорее общий, а не только по гидре.<br /><br />Насколько я понял, существует по крайне мере два способа быстро получать обновления стаканов. <br />Это подписка на события<br /><br />MarketDepth.QuotesChanged<br /> или<br />Trader.MarketDepthsChanged<br /><br />Вопрос в том, есть ли какая-либо принципиальная разница между этими способами?<br />Какой из способов быстрее и какой из способов рекомендуется для использования?<br />https://stocksharp.ru/topic/3083/Ошибка гидры 199972012-10-15T16:48:10Z2012-10-15T16:48:10Zanotharhttps://stocksharp.ru/users/6089/info@stocksharp.ruЗапускаю плазу с коннектом к тестовому контуру:<br />20:41:33.489|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:41:38.457|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:41:43.488|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:41:48.473|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:41:53.473|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:41:58.472|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:42:03.472|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:42:08.472|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:42:13.472|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:42:18.472|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:45:11.609|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:45:16.594|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:45:21.594|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />20:45:26.594|Error |Plaza |System.FormatException: Invalid endpoint format.<br /> в Ecng.Common.Converter.To(Object value, Type destinationType)<br /> в Ecng.Common.Converter.To[T](Object value)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreatePlazaTrader()<br /> в StockSharp.Hydra.Core.MarketDataTrader.Start()<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.Start()<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.Start()<br /> в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__12(IMarketDataSource source)<br />https://stocksharp.ru/topic/3073/Не запускается Гидра из сборки S# 198682012-10-10T09:35:08Z2012-10-10T09:35:08Zgreg_bondhttps://stocksharp.ru/users/6381/info@stocksharp.ruПомогите Гуру.<br />Что я делаю не так?<br /><br />1. Получил тестовый доступ на Украинскую биржу.<br />2. Установил шлюз Плаза 2.<br />3. Установил терминал.<br />4. Открыл требуемые порты в Comodo.<br />5. Запустил терминал и убедился в том что информация поступает.<br />6. С codeplex скачал исходники S#.<br />7. Из папки trunk gостроил решения Hydra.csproj, Core.csproj, а также все решения из папки Plugins.<br />8. Перенес недостающие 2 ini файла из релиза Гидры на Box.<br /><br />В результате запуска в процессе создания последнего источник, а именно UX получил следующее сообщение об исключении:<br />12:26:19.204|Error |StockSharp|System.ArgumentException: Item with name 'Id' doesn't exists.<br />Имя параметра: name<br /> в Ecng.Serialization.SerializationItemCollection.get_Item(String name)<br /> в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)<br /> в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean& canProcess)<br /> в Ecng.Collections.BaseEnumerator`2.MoveNext()<br /> в StockSharp.Hydra.MainWindow.InitializeMarketSources()<br /> в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)<br /> в System.Threading.Tasks.Task.Execute()<br /><br />Дальнейшие действия:<br />С Box скачал Hydra_4.1.5_19634, распаковал, запустил, получил:<br />012.10.10 09:59:45.107|Error |StockSharp|System.ArgumentException: Item with name 'Id' doesn't exists.<br />Имя параметра: name<br /> в Ecng.Serialization.SerializationItemCollection.get_Item(String name)<br /> в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)<br /> в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean& canProcess)<br /> в Ecng.Collections.BaseEnumerator`2.MoveNext()<br /> в StockSharp.Hydra.MainWindow.InitializeMarketSources()<br /> <span class="highlight">в StockSharp.Hydra.MainWindow.<MainWindowLoaded>b__26()</span><br /> в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)<br /> в System.Threading.Tasks.Task.Execute()<br /><br />как видим отличия только в выделенной строке.<br />Сразу хочу отметить до создания базы дело даже не доходитhttps://stocksharp.ru/topic/3071/Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)2012-10-08T20:35:54Z2012-10-08T20:35:54ZXMbIPbhttps://stocksharp.ru/users/6200/info@stocksharp.ru<div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_c058a5d6045740cbb0ce0346bb61584d');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_c058a5d6045740cbb0ce0346bb61584d' style='display:none'>System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).<br /> at System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)<br /> at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result)<br /> at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)<br /> at System.Guid..ctor(String g)<br /> at Ecng.Common.Converter.To(Object value, Type destinationType)<br /> at Ecng.Common.Converter.To[T](Object value)<br /> at StockSharp.Hydra.Core.Extensions.<GetList>b__0(String s) in c:\Hydra\Core\Extensions.cs:line 72<br /> at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()<br /> at Ecng.Collections.CollectionHelper.AddRange[T](ICollection`1 source, IEnumerable`1 items)<br /> at StockSharp.Hydra.Core.Extensions.GetList(Security security, String key) in c:\Hydra\Core\Extensions.cs:line 72<br /> at StockSharp.Hydra.Core.Extensions.ContainsSource(Security security, String key, IMarketDataSource source) in c:\Hydra\Core\Extensions.cs:line 153<br /> at StockSharp.Hydra.Core.Extensions.ContainsSource(Security security, Type dataType, IMarketDataSource source) in c:\Hydra\Core\Extensions.cs:line 137<br /> at StockSharp.Hydra.Core.Extensions.ContainsSource[T](Security security, IMarketDataSource source) in c:\Hydra\Core\Extensions.cs:line 116<br /> at StockSharp.Hydra.Core.TraderMarketDataSource.Start() in c:\Hydra\Core\TraderMarketDataSource.cs:line 74<br /> at StockSharp.Hydra.Worker.Start(IEnumerable`1 securities) in c:\Hydra\Hydra\Worker.cs:line 257<br /> at StockSharp.Hydra.MainWindow.Start(Boolean auto) in c:\Hydra\Hydra\MainWindow.xaml.cs:line 1012<br /> at StockSharp.Hydra.MainWindow.StartStopClick(Object sender, RoutedEventArgs e) in c:\Hydra\Hydra\MainWindow.xaml.cs:line 735<br /> at StockSharp.Hydra.MainWindow.OnUpdateUi(Object sender, EventArgs e) in c:\Hydra\Hydra\MainWindow.xaml.cs:line 676<br /> at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)<br /> at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<br /> at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)<br /></div><br /><br />Вылетает при старте экспорта.. жалуется на вот эту строку: <div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
retVal.AddRange(str.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.To<Guid>()));
</pre>
</div></div>https://stocksharp.ru/topic/3065/Ускорение работы Гидры при большом количестве инструментов2012-10-07T19:36:40Z2012-10-07T19:36:40ZЦифровойhttps://stocksharp.ru/users/6267/info@stocksharp.ruДоброго времени суток!<br /><br />Недавно обнаружил, что Гидра начинает прилично подтормаживать при большом количестве инструментов.<br />Получил такую ситуацию довольно просто: запустил импорт инструментов у источника Smart (из демо-сервера),<br />в ходе которого мне прилетело около 30 000 инструментов.<br />После этого запуск Гидры и переход между вкладками начали тормозить,<br />а запуска импорта маркет-данных из Smart было не дождаться: он отваливался по таймауту.<br /><br />Начал копать и обнаружил, что долго выполняется чтение данных из хранилища:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
entityRegistry.Securities
</pre>
</div></div><br /><br />Сразу оговорюсь: в качестве хранилища я использую <b>SQLLite</b>, и, возможно, MS SQL Server тормозит значительно меньше.<br /><br /><br /><b>0.</b> Понятно, что хотя бы один раз данные об инструментах из базы данных зачитать надо.<br />Это происходит в классе SecurityStorage:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public SecurityStorage(IEntityRegistry entityRegistry)
{
if (entityRegistry == null)
throw new ArgumentNullException("entityRegistry");
foreach (var security in entityRegistry.Securities)
AddToCache(security);
}
</pre>
</div></div><br />Здесь все зачитанные данные мудро кладутся в кэш.<br /><br /><br /><b>1.</b> Но вот если посмотреть на класс FinamSecurityStorage, то здесь все уже не так радужно:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public FinamSecurityStorage(ISecurityStorage underlyingStorage, HydraEntityRegistry entityRegistry)
{
if (underlyingStorage == null)
throw new ArgumentNullException("underlyingStorage");
foreach (var security in entityRegistry.Securities)
TryAddToCache(security);
_underlyingStorage = underlyingStorage;
}
}
</pre>
</div></div><br /><br />Т.к. интерфейс ISecurityStorage не позволяет читать данные из кэша underlyingStorage,<br />для построения особого "финамовского" кэша снова зачитываются данные напрямую из хранилища,<br />что не очень-то быстро.<br />Стоит ли вносить методы работы с кэшами в ISecurityStorage или выделить особый интерфейс для этого,<br />скажем "ICachedSecurityStorage", я сказать не могу - это дело архитекторов StockSharp,<br />но можно сделать вот такой "костыль":<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public FinamSecurityStorage(ISecurityStorage underlyingStorage, HydraEntityRegistry entityRegistry)
{
if (underlyingStorage == null)
throw new ArgumentNullException("underlyingStorage");
_underlyingStorage = underlyingStorage;
if (underlyingStorage is SecurityStorage)
{
foreach (var security in ((SecurityStorage)_underlyingStorage).CachedSecurities)
TryAddToCache(security);
((SecurityStorage)_underlyingStorage).Reloaded += OnReloaded;
}
else
{
foreach (var security in entityRegistry.Securities)
TryAddToCache(security);
}
}
</pre>
</div></div><br />Т.к. в случае Гидры underlyingStorage относится к классу SecurityStorage, этот код быстро код данные из имеющегося кэша.<br /><br /><br /><b>2.</b> Старт импорта маркет-данных происходит долго из-за следующиего кода в классе Worker:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public bool Start(IEnumerable<VisualSecurity> securities)
{
...
_securities.Clear();
foreach (var group in securities.GroupBy(s => s.TradeInfo.Source)
.Concat(securities.GroupBy(s => s.DepthInfo.Source))
.Concat(securities.GroupBy(s => s.OrderLogInfo.Source))
.Concat(securities.GroupBy(s => s.SecurityChangeInfo.Source))
.Concat(securities.GroupBy(s => s.CandleInfo.Source))
.Where(g => !g.Key.IsEmpty()))
{
_securities.SafeAdd(group.Key).AddRange(group);
}
...
}
</pre>
</div></div><br />Здесь проблема заключается в том, что при каждом вызове securities.GroupBy происходит повторный перебор securities.<br />За счет того, что построение securities заключается в чтении их напрямую из хранилища здесь мы получаем ударную дозу<br />из 5 подряд чтений из хранилища, что и приводит к превышению довольно солидного тайм-аута при старте.<br /><br />Оптимизировать выполнение можно, построив один раз массив и использовав его для группировки:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public bool Start(IEnumerable<VisualSecurity> securities)
{
...
_securities.Clear();
var securitiesArray = securities.ToArray();
foreach (var group in securitiesArray.GroupBy(s => s.TradeInfo.Source)
.Concat(securitiesArray.GroupBy(s => s.DepthInfo.Source))
.Concat(securitiesArray.GroupBy(s => s.OrderLogInfo.Source))
.Concat(securitiesArray.GroupBy(s => s.SecurityChangeInfo.Source))
.Concat(securitiesArray.GroupBy(s => s.CandleInfo.Source))
.Where(g => !g.Key.IsEmpty()))
{
_securities.SafeAdd(group.Key).AddRange(group);
}
...
}
</pre>
</div></div><br /><br /><br /><b>3.</b> Но, собственно, почему в метод Start передается IEnumerable<VisualSecurity>,<br />который приводит к чтению из хранилища, а не из кэша?<br />Собственно код в методе StartStopClick класса MainWindow такой (в методе AutoStart аналогичный):<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var selectedSecurities = _entityRegistry.Securities.Select(s => s.ToVisualSecurity()).Where(s => s.IsSelected);
if (_worker.Start(selectedSecurities))
{
...
}
else
{
...
}
</pre>
</div></div><br /><br />Здесь тоже можно воспользоваться имеющимся кэшем и переписать построение выбранных интрументов таким образом:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var selectedSecurities = _securityStorage.CachedSecurities
.Where(s => s.IsSelected())
.Select(s => s.ToVisualSecurity())
.ToArray();
</pre>
</div></div><br />В принципе, если бы код был написан сразу так, то оптимизация номер 2 с GroupBy даже не нужна.<br />Но, имхо, правильнее сделать и то, и другое.<br /><br /><br /><b>4.</b> Еще невыносимо долго при большом числе инструментов переключаются вкладки.<br />Код построения всех выбранных интрументов в классе MarketDataSourceControl такой:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void FillSecurities()
{
var selectedSource = Source.Name;
var storage = HydraEntityRegistry;
SecuritiesCtrl.Securities.Clear();
_selectedSecurities.Clear();
System.Windows.Input.Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
System.Threading.Tasks.Task.Factory.StartNew(
() =>
{
var securities = storage
.Securities
.Select(s => s.ToVisualSecurity()).Where(s => s.IsSelected && (selectedSource == null || (s.TradeInfo.Source == selectedSource ||
s.DepthInfo.Source == selectedSource || s.OrderLogInfo.Source == selectedSource || s.SecurityChangeInfo.Source == selectedSource ||
s.Source == selectedSource || s.CandleInfo.Source == selectedSource)));
_selectedSecurities.AddRange(securities);
})
.ContinueWith(sec =>
{
...
}, System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext());
}
</pre>
</div></div><br />Недостаток здесь такой же - чтение данных напрямую из хранилища.<br />Видимо для того, чтобы при этом не тормозило само переключение вкладки, чтение вынесено в отдельный поток.<br /><br />Ускорить переключение вкладок можно опять же за счет использование кэша:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void FillSecurities()
{
var selectedSource = Source.Name;
SecuritiesCtrl.Securities.Clear();
_selectedSecurities.Clear();
var securities = SecurityStorage.CachedSecurities
.Where(s => s.IsSelected())
.Select(s => s.ToVisualSecurity()).Where(s =>selectedSource == null || (s.TradeInfo.Source == selectedSource ||
s.DepthInfo.Source == selectedSource || s.OrderLogInfo.Source == selectedSource || s.SecurityChangeInfo.Source == selectedSource ||
s.Source == selectedSource || s.CandleInfo.Source == selectedSource));
_selectedSecurities.AddRange(securities);
...
}
</pre>
</div></div><br />Так как из кэша все берется быстро, да и чтобы не возиться с GUI-синхронизацией, я разобрал использование отдельного потока.<br /><br /><br /><b>5.</b> Последний нюанс, который вызвал у меня сомнения: зачем при старте импорта маркет-данных обновляются инструменты?<br />Необходимость этого я себе объяснить не смог, поэтому поменял этот код в классе MarketDataTrader:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public void Start()
{
Trader = _createTrader();
try
{
...
Trader.SecuritiesChanged += OnSecuritiesChanged;
using (var su = new SecurityUpdate(Trader))
{
Trader.Connect();
lock (_connectedLock)
{
if (!Trader.IsConnected && !Monitor.Wait(_connectedLock, TimeSpan.FromSeconds(20)))
throw new TimeoutException("Ожидание подключения превысило максимально допустимый интервал.");
}
su.Wait();
}
}
catch
{
...
}
}
</pre>
</div></div><br /><br />На следующий:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public void Start(bool updateSecurities = false)
{
Trader = _createTrader();
try
{
...
Trader.SecuritiesChanged += OnSecuritiesChanged;
if (updateSecurities)
{
using (var su = new SecurityUpdate(Trader))
{
Trader.Connect();
lock (_connectedLock)
{
if (!Trader.IsConnected && !Monitor.Wait(_connectedLock, TimeSpan.FromSeconds(20)))
throw new TimeoutException("Ожидание подключения превысило максимально допустимый интервал.");
}
su.Wait();
}
}
else
{
Trader.Connect();
lock (_connectedLock)
{
if (!Trader.IsConnected && !Monitor.Wait(_connectedLock, TimeSpan.FromSeconds(20)))
throw new TimeoutException("Ожидание подключения превысило максимально допустимый интервал.");
}
}
}
catch
{
...
}
}
</pre>
</div></div><br />При этом причем updateSecurities == true только при запуске из метода MarketDataTrader.GetNewSecurities.<br /><br /><br />Вот такие оптимизации я сделал в своей Гидре версии 4.1.3.<br />Предлагаю разработчикам StockSharp высказать свое мнение по поводу предложенных изменений и внести удачные в Гидру.https://stocksharp.ru/topic/3057/Как изменить путь к маркет-данным?2012-10-03T23:51:16Z2012-10-03T23:51:16ZXMbIPbhttps://stocksharp.ru/users/6200/info@stocksharp.ruУ меня не запускается гидра если разкоментить эту строку в конфиге:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:jscript">
<property name="BasePath" propertyType="System.String" value="" /></pre>
</div></div>https://stocksharp.ru/topic/3056/Ошибки при запуске Гидры версии 196342012-10-03T11:17:11Z2012-10-03T11:17:11Zgreg_bondhttps://stocksharp.ru/users/6381/info@stocksharp.ruСкомпилированная Гидра из S# версии 19661 висит не подавая признаков жизни.<br /><br />В Log следующая ошибка:<br /><br />13:57:05.303 | Error | UnhandleException | System.AggregateException: При ожидании задачи или доступе к ее свойству исключения не были замечены исключения задачи. В результате незамеченные исключения были созданы повторно потоком завершения. ---> System.AggregateException: Произошла одна или несколько ошибок. ---> System.ArgumentException: Item with name 'Id' doesn't exists.<br />Имя параметра: name<br /> в Ecng.Serialization.SerializationItemCollection.get_Item(String name)<br /> в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)<br /> в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean& canProcess)<br /> в Ecng.Collections.BaseEnumerator`2.MoveNext()<br /> в StockSharp.Hydra.MainWindow.InitializeMarketSources()<br /> в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)<br /> в System.Threading.Tasks.Task.Execute()<br /> --- Конец трассировки внутреннего стека исключений ---<br /> в System.Threading.Tasks.Task`1.get_Result()<br /> в StockSharp.Hydra.MainWindow.<.ctor>b__1(Task`1 task)<br /> в System.Threading.Tasks.Task.Execute()<br /> --- Конец трассировки внутреннего стека исключений ---<br /> в System.Threading.Tasks.TaskExceptionHolder.Finalize()<br />---> (Внутреннее исключение #0) System.AggregateException: Произошла одна или несколько ошибок. ---> System.ArgumentException: Item with name 'Id' doesn't exists.<br />Имя параметра: name<br /> в Ecng.Serialization.SerializationItemCollection.get_Item(String name)<br /> в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)<br /> в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean& canProcess)<br /> в Ecng.Collections.BaseEnumerator`2.MoveNext()<br /> в StockSharp.Hydra.MainWindow.InitializeMarketSources()<br /> в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)<br /> в System.Threading.Tasks.Task.Execute()<br /> --- Конец трассировки внутреннего стека исключений ---<br /> в System.Threading.Tasks.Task`1.get_Result()<br /> в StockSharp.Hydra.MainWindow.<.ctor>b__1(Task`1 task)<br /> в System.Threading.Tasks.Task.Execute()<br />---> (Внутреннее исключение #0) System.ArgumentException: Item with name 'Id' doesn't exists.<br />Имя параметра: name<br /> в Ecng.Serialization.SerializationItemCollection.get_Item(String name)<br /> в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)<br /> в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)<br /> в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean& canProcess)<br /> в Ecng.Collections.BaseEnumerator`2.MoveNext()<br /> в StockSharp.Hydra.MainWindow.InitializeMarketSources()<br /> в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)<br /> в System.Threading.Tasks.Task.Execute()<---<br /><---https://stocksharp.ru/topic/3055/Ошибка генерации свечек2012-10-03T06:30:51Z2012-10-03T06:30:51Zseashamanhttps://stocksharp.ru/users/772/info@stocksharp.ruПри попытки генерировать свечки через интерфейс с картинки:<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABH9JDbJP28xXOHsTedmEzm2hdaHX7r7qJH0u7FwH27j6kbGxRufkly3Fz8Oi425oTEs2Sv8nV5yOEb_mDAF2Rdq1Xz0IvTzz1yj1MLzNpcUMbQLc-W_U5v_66Pt2KrGNM" title="http://s2.hostingkartinok.com/uploads/images/2012/10/8dd8cbaac76bb290879b00e42886aba5.jpg
">http://s2.hostingkartino...290879b00e42886aba5.jpg
</a><br />Ловлю код ошибки: <div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_47b086c21ec6443caf23b8ae53dd1148');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_47b086c21ec6443caf23b8ae53dd1148' style='display:none'>10:19:46.548 | Error | StockSharp | System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в StockSharp.Hydra.CandlesWindow.GetCandles() в c:\stock\stocksharp\dev\Hydra\Hydra\CandlesWindow.xaml.cs:строка 151<br /> в StockSharp.Hydra.CandlesWindow.FindClick(Object sender, RoutedEventArgs e) в c:\stock\stocksharp\dev\Hydra\Hydra\CandlesWindow.xaml.cs:строка 203<br /> в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)<br /> в System.Windows.Controls.Button.OnClick()<br /> в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)<br /> в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)<br /> в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)<br /> в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)<br /> в System.Windows.Input.InputManager.ProcessStagingArea()<br /> в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)<br /> в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)<br /> в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)<br /> в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<br /> в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)<br /></div><br />В студии это выглядит так:<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABH9JDbJP28xXOHsTedmEzm2hdaHX7r7qJH0u7FwH27j6kbGxRufkly3Fz8Oi425oRVGdx7YwUhlklnkYLIHJRuRzg5oBBBJY1WmnKMrRTc3YugTKJKWKBSoPv2F3IsB-0" title="http://s2.hostingkartinok.com/uploads/images/2012/10/c9cc20c7ea9f0190205ea208dbf5c618.jpg
">http://s2.hostingkartino...190205ea208dbf5c618.jpg
</a><br /><br />Сейчас использую более раннюю версию гидры. Там все ок.https://stocksharp.ru/topic/3051/Ошибки версии 196252012-10-01T13:31:37Z2012-10-01T13:31:37Zanotharhttps://stocksharp.ru/users/6089/info@stocksharp.ruСкачал последнюю версию. Удалил все источники. Получил ошибку:<br />17:25:34.369|Error |StockSharp|System.ArgumentNullException: Значение не может быть неопределенным.<br />Имя параметра: source<br /> в StockSharp.Hydra.Core.Extensions.GetAllSecurityId(IMarketDataSource source)<br /> в StockSharp.Hydra.MarketDataSourceControl.<.ctor>b__0(Object arg1, DependencyPropertyChangedEventArgs arg2)<br /> в System.Windows.FrameworkElement.RaiseDependencyPropertyChanged(EventPrivateKey key, DependencyPropertyChangedEventArgs args)<br /> в System.Windows.FrameworkElement.OnDataContextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)<br /> в System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)<br /> в System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)<br /> в System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)<br /> в System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)<br /> в System.Windows.TreeWalkHelper.OnInheritablePropertyChanged(DependencyObject d, InheritablePropertyChangeInfo info)<br /><br />После чего попытался добавить источник "Плаза". Получил ошибку:<br />2012.10.01 17:24:18.930|Error |StockSharp|System.TypeLoadException: Не удалось загрузить тип "StockSharp.Algo.Logging.LogLevels" из сборки "StockSharp.Algo, Version=4.1.5.0, Culture=neutral, PublicKeyToken=null".<br /> в StockSharp.Plaza.PlazaTrader..ctor(EndPoint address)<br /> в StockSharp.Hydra.Plaza.PlazaTraderSource.CreateTrader(MarketDataSourceSettings settings, Boolean isNew)<br /> в StockSharp.Hydra.Core.TraderMarketDataSource.ApplySettings(MarketDataSourceSettings settings, Boolean isNew)<br /> в StockSharp.Hydra.Core.BaseMarketDataSource.Init(MarketDataSourceSettings settings)<br /> в StockSharp.Hydra.MainWindow.InitSource(IMarketDataSource source, MarketDataSourceSettings settings)<br /> в StockSharp.Hydra.MainWindow.CreateSource(IMarketDataSource source)<br /> в StockSharp.Hydra.MainWindow.InitializeMarketSources()<br /><br />https://stocksharp.ru/topic/3050/Как правильно мигрировать на новые версии?2012-10-01T11:33:10Z2012-10-01T11:33:10ZXMbIPbhttps://stocksharp.ru/users/6200/info@stocksharp.ruВот я например ищу стабильную версию гидры уже наверное где-то с 4.0.17.. и каждый раз, при тестировании новой версии, приходится скачивать новый архив, распаковывать, корректировать нужные параметры, добавлять в нужные файлы свой код, ссылки и т.д.. компилишь, запускаешь, хоп какой-то новый эксепшн и опять пять кругов отчаянья) всё по новой.. тошнит уже от этой процедуры.. сотню раз уже наверно её проделывал.. да и куча времени теряется.. неужели у всех так? Может можно как-то с codeplex засинхрониться, чтоб обновлялись только изменённые файлы.. или ещё как? https://stocksharp.ru/topic/3048/Гидра + MS SQL 2008 R22012-09-30T20:12:14Z2012-09-30T20:12:14ZDrChemisthttps://stocksharp.ru/users/6376/info@stocksharp.ruВторой день долблюсь – пытаюсь настроить связку с MSSQL, и не удается. <br />Использую MS SQL 2008 R2 standard.<br />Гидра 4.1.4<br />Базу создал скриптом trading.sql (взял с stocksharp.codeplex.com, dev/Documentation)<br />Скрипт отработал нормально. База создалась, проблем не было.<br />Добиться того, чтобы Гидра хоть как-то цеплялась к базе мне удалось только в такой конфигурации (из файла Hydra.exe.config):<br /><br /><hr /><connectionStrings><br /> <add name="SqlServerConStr" connectionString="Server=(local);Database=Trading;User ID=trading;Password=trading;" providerName=""/><br /></connectionStrings><br /><br />……………..<br /><param name="connectionString"><br /><value value="SqlServerConStr" typeConverter="Ecng.Configuration.ConnectionSettingsTypeConverter, Ecng.Configuration"/><br /></param><br /><br />……………..<br /><property name="Provider"><br /><!--<dependency type="Ecng.Data.Providers.SQLiteDatabaseProvider, Ecng.Data.Providers" />--><br /><dependency type="Ecng.Data.SqlServerDatabaseProvider, Ecng.Data" /><br /></property><br /><hr /><br />Остальные конфигурации не трогал<br />При запуске гидра валится на этом коде:<br /><br /><hr />private void InitializeDataSource()<br />{<br />_storageRegistry = new StorageRegistry();<br />ConfigManager.RegisterService(_storageRegistry);<br /><br />……………..<br />if (_entityRegistry.Exchanges.Count < 4)<br />{<br />_entityRegistry.Exchanges.Save(Exchange.Test); <= Здесь валимся<br /> _entityRegistry.Exchanges.Save(Exchange.Micex);<br /> _entityRegistry.Exchanges.Save(Exchange.Rts);<br /> _entityRegistry.Exchanges.Save(Exchange.Ux);<br />}<br /><hr /><br />Поначалу эксепшен говори о том, что нет прав для INSERT операции. Проверил – действительно, скрипт создавал пользователя trading без прав. Тал пользователю trading все права на базу Trading. Но это помогло не сильно. После этого эксепшен стал другой:<br /><br /><hr /><br />2012-10-01 00:03:55.073|Error |StockSharp|System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'TimeZoneInfo'.<br /> at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)<br /> at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)<br /> at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()<br /> at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)<br /> at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)<br /> at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)<br /> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)<br /> at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)<br /> at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()<br /> at Ecng.Data.DatabaseCommand.<ExecuteNonQuery>b__6(DbCommand cmd)<br /> at Ecng.Data.DatabaseCommand.<>c__DisplayClass4`1.<Execute>b__1(DbConnection connection)<br /> at Ecng.Data.Database.GetConnection(Action`1 action)<br /> at Ecng.Data.DatabaseCommand.Execute[TResult](IEnumerable`1 input, Func`2 handler)<br /> at Ecng.Data.DatabaseCommand.ExecuteNonQuery(SerializationItemCollection input)<br /> at Ecng.Data.Database.Execute(DatabaseCommand command, SerializationItemCollection source, Boolean needRetVal)<br /> at Ecng.Data.Database.Create(DatabaseCommand command, SerializationItemCollection input, Boolean needRetVal)<br /> at Ecng.Data.Database.<>c__DisplayClassc`1.<Create>b__b()<br /> at Ecng.Data.Database.Create[TEntity](TEntity entity)<br /> at Ecng.Data.Database.Ecng.Serialization.IStorage.Add[TEntity](TEntity entity)<br /> at Ecng.Serialization.RelationManyList`1.OnAdd(TEntity entity)<br /> at Ecng.Data.HierarchicalPageLoadList`1.OnAdd(TEntity entity)<br /> at Ecng.Serialization.RelationManyList`1.Add(TEntity item)<br /> at StockSharp.Algo.Storages.BaseStorageEntityList`1.Save(T entity)<br /> at StockSharp.Hydra.MainWindow.InitializeDataSource() in D:\Work\StockSharp\StockSharp_4.1.4_Sources.Up\Hydra\Hydra\MainWindow.xaml.cs:line 160<br /> at StockSharp.Hydra.MainWindow.<MainWindowLoaded>b__21() in D:\Work\StockSharp\StockSharp_4.1.4_Sources.Up\Hydra\Hydra\MainWindow.xaml.cs:line 483<br /> at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)<br /> at System.Threading.Tasks.Task.InnerInvoke()<br /> at System.Threading.Tasks.Task.Execute()<br /><hr /><br />Пытался добавить колонку TimeZoneInfo в таблицу Exchange. Вроде проходило, но потом опять где-то что-то ломалось.<br />В общем, что-то делаю не так.<br />Подскажите, люди добрые, как же подцепится-то к MSSQL базе.<br />https://stocksharp.ru/topic/3037/Не запускается Hydra 4.1.42012-09-26T06:48:54Z2012-09-26T06:48:54Zguest13https://stocksharp.ru/users/6116/info@stocksharp.ruДобрый день!<br /><br />Подскажите, пожалуйста, почему не запускается Hydra 4.1.4.<br />Windows 7 x64, В настройках даты краткая дата установлена MM/dd/yyyy.<br />И почему кстати пути к исходникам "E:\StockSharpReleases\StockSharp_4.1.4"? Это может влиять на запуск?<br />В логе:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:coldfusion">
2012/09/26 10:37:26.394|Error |StockSharp|System.AggregateException: Произошла одна или несколько ошибок. ---> System.FormatException: Строка не распознана как действительное значение DateTime.
в System.DateTime.Parse(String s, IFormatProvider provider)
в System.Convert.ToDateTime(String value, IFormatProvider provider)
в System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
в Ecng.Common.Converter.To(Object value, Type destinationType)
в Ecng.Serialization.XmlSerializer`1.Deserialize(Stream stream, FieldList fields, SerializationItemCollection source)
в Ecng.Serialization.XmlSerializer`1.Deserialize(Stream stream, FieldList fields, SerializationItemCollection source)
в Ecng.Serialization.XmlSerializer`1.Deserialize(Stream stream, FieldList fields, SerializationItemCollection source)
в Ecng.Data.Database.<>c__DisplayClass3b.<GroupSource>b__37(Object v)
в System.Linq.Parallel.PartitionedDataSource`1.ListContiguousIndexRangeEnumerator.MoveNext(T& currentElement, Int32& currentKey)
в System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
в System.Linq.Parallel.SpoolingTaskBase.Work()
в System.Linq.Parallel.QueryTask.BaseWork(Object unused)
в System.Threading.Tasks.Task.Execute()
--- Конец трассировки внутреннего стека исключений ---
в System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose)
в System.Linq.Parallel.DefaultMergeHelper`2.System.Linq.Parallel.IMergeHelper<TInputOutput>.Execute()
в System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId)
в System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream)
в System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
в System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings)
в System.Linq.Parallel.QueryOpeningEnumerator`1.OpenQuery()
в System.Linq.Parallel.QueryOpeningEnumerator`1.MoveNext()
в System.Linq.ParallelEnumerable.ToList[TSource](ParallelQuery`1 source)
в Ecng.Data.Database.GroupSource(IEnumerable`1 fields, SerializationItemCollection input, IEnumerable`1 innerSchemaNameOverrides)
в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)
в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)
в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)
в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)
в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean& canProcess)
в Ecng.Collections.BaseEnumerator`2.MoveNext()
в StockSharp.Hydra.MainWindow.InitializeMarketSources() в E:\StockSharpReleases\StockSharp_4.1.4\Hydra\Hydra\MainWindow.xaml.cs:строка 264
в StockSharp.Hydra.MainWindow.<MainWindowLoaded>b__21() в E:\StockSharpReleases\StockSharp_4.1.4\Hydra\Hydra\MainWindow.xaml.cs:строка 484
в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
в System.Threading.Tasks.Task.Execute()
---> (Внутреннее исключение #0) System.FormatException: Строка не распознана как действительное значение DateTime.
в System.DateTime.Parse(String s, IFormatProvider provider)
в System.Convert.ToDateTime(String value, IFormatProvider provider)
в System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
в Ecng.Common.Converter.To(Object value, Type destinationType)
в Ecng.Serialization.XmlSerializer`1.Deserialize(Stream stream, FieldList fields, SerializationItemCollection source)
в Ecng.Serialization.XmlSerializer`1.Deserialize(Stream stream, FieldList fields, SerializationItemCollection source)
в Ecng.Serialization.XmlSerializer`1.Deserialize(Stream stream, FieldList fields, SerializationItemCollection source)
в Ecng.Data.Database.<>c__DisplayClass3b.<GroupSource>b__37(Object v)
в System.Linq.Parallel.PartitionedDataSource`1.ListContiguousIndexRangeEnumerator.MoveNext(T& currentElement, Int32& currentKey)
в System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
в System.Linq.Parallel.SpoolingTaskBase.Work()
в System.Linq.Parallel.QueryTask.BaseWork(Object unused)
в System.Threading.Tasks.Task.Execute()<---
</pre>
</div></div>https://stocksharp.ru/topic/3036/ВАЖНО! Какие источники вы используете в гидре2012-09-25T19:02:57Z2012-09-25T19:02:57ZStockSharphttps://stocksharp.ru/users/341/info@stocksharp.ruИдет активная работа по доработке и улучшению гидры. Работа ведется по очереди над каждым источником.<br />Нам необходимо понять, какие источники более популярные, чтобы сделать их в первую очередь<br /><br />Итак, голосуем, вы используете в гидре источники<br /><br />https://stocksharp.ru/topic/3011/QUIK+Гидра+робот на S#2012-09-15T20:45:13Z2012-09-15T20:45:13ZDrChemisthttps://stocksharp.ru/users/6376/info@stocksharp.ruНачал разбираться с библиотекой.<br />Возникла такая задача.<br />Работаю с терминалом QUIK.<br /><br />Мне нужно чтобы одновременно с ОДНИМ терминалом работало две программы:<br /><br />Гидра: записывает массивы исторических данных, больше от нее пока не требуется. Его задача – записать все без разрывов и остановок.<br />Робот или привод на базе S#. Он работает время от времени. Иногда его нужно закрывать. Иногда вместо одного привода нужно запускать другой. В общем, смысл в том что программа привода запущена не всегда.<br /><br />Вопрос в том, как сделать так, чтобы это все могло работать одновременно и друг другу не мешать.<br /><br />Для примера можно попытаться одновременно запустить<br />Samples\Quik\Sample\bin\Debug\Sample.exe<br />И<br />Hydra\Hydra\bin\Debug\Hydra.exe<br />Вместе они работать не будут, потому что им нужны одни и те же таблицы в квике.<br /><br />Я пытаюсь сделать это путем создания разных таблиц для S# и для Гидры.<br />Почти получилось – инструменты и сделки работают. <br />Для этого я всего лишь переделал <br /> public HydraQuikTrader(string path, string ddeServer) : base(path)<br /> {<br /> DdeServer = ddeServer;<br /> SecuritiesTable.Caption = "HYDRA инструменты";<br /> TradesTable.Caption = "HYDRA Все сделки";<br /> base.SecurityIdGenerator.Delimiter = "$";<br /> }<br /><br />И переименовал таблицы в квике.<br />Но проблемы со стаканами решить не могу. <br />Строка base.SecurityIdGenerator.Delimiter = "$";<br />Проблему не решает – почему-то используется прежний разделитель "@"<br />Кроме того, почему-то S# не допускает двух стаканов в квике по одному инструменту, хотя это возможно.<br /><br />Как поступить?<br />https://stocksharp.ru/topic/2999/Источник Smart не запускается под Win Srv 2008 R22012-09-10T10:58:51Z2012-09-10T10:58:51ZRobbiehttps://stocksharp.ru/users/6310/info@stocksharp.ruПри запуске Гидры 4.1.3 под Win Srv 2008 R2 выводится ошибка "Источник Smart не совместим с операционной системой". Это как-то можно исправить? https://stocksharp.ru/topic/2986/Ошибка при сохранении стаканов со Смарта2012-09-04T11:03:40Z2012-09-04T11:03:40Zvk37https://stocksharp.ru/users/6296/info@stocksharp.ruНе понравилась мне качать Гидрой со Смарткома: медленно работает, соединение теряет, ошибки. Сделал свою консольную Гидру на основе SampleSmartConsole. Пока работает нормально. Столкнулся с ошибкой при сохранении стакана:<br /><br />System.ArgumentException: Лучший бид 140855 больше или равен лучшему офферу 140855.<br />Parameter name: depths<br /> at #=qBqzAfx4eX6jbAhjwSd62HDxRx7KjXUhZdaqXaKrbhWNK89$cczN7Ybo1P582C383.#=qPNbrzoo63qiPKAB3RxCH5A==(List`1 #=qHaHP4WZSVdKz53Hwzy$ekw==, IEnumerable`1 #=qASUWOKDOCFZ2Wu9LWXkBtQ==, #=qvs0CsnLs_Ss1esfBSm5zwBJaDoBW$uY3FBMC6svegSZeQ2rqGZkXJaXHGH7s1irW #=qMfciDzi6G743_rIzu43_Aw==)<br /> at #=qz04YdXG2$YAOxeHvpD93kpzjtGGmn$CBMgLGYgYx3D5hyvyfpJ92$IJuzvbahT9DbHGoXECLGq73jVeWqoM7WA==.#=qhS5pEqj0jxrC3EkM2L2ByLP81D1u7MoFLP3gC9SmO2Ha62X2cRDXdnIw_qFSrI0yPZNVSXkqSrWbXB_ShwaNMF27KENqU9n7vKpFW$rzX$w=(IEnumerable`1 #=qVh5t1g33tQf$GUY1wukgfA==, #=qT_JKyf8jvmdh8CnDd2erv404Kgk89rxorXnimUV3J5ygkrYMLo9XjjmlV7xs65$6 #=qSWB2y1ELx12TguZDCS1CWQ==)<br /> at #=qh2YSDa39RBEjCcO4rb2nambbPWQx618j_mhbAjIJkMVjnwGRGU3KGJb5NYvLGTBn.#=qteF9LpJJBLkC9LySoZdzwA==(DateTime #=qZ5Kd0lhJbrY2DbBE04yF9Q==, #=qZHHnzqkYDg7xCyaxj6PR9A==[] #=qh5tCqhElr2D_oYbBKomIaQ==, Boolean #=qSVNcMUfTvym2UYUPwu0xcQ==)<br /> at #=qh2YSDa39RBEjCcO4rb2nambbPWQx618j_mhbAjIJkMVjnwGRGU3KGJb5NYvLGTBn.Save(IEnumerable`1 #=qDijncmxOZuMVXEQZJ6Gg9w==)<br /> at HydraConsole.Initializer.SaveMarketDepths() in C:\ActiveProjects\AlgoTrading2\trunk\SourceCode\Hydra3\Hydra\Initializer.cs:line 270<br /> at HydraConsole.Initializer.<Run>b__6(Object sender, DoWorkEventArgs args) in C:\ActiveProjects\AlgoTrading2\trunk\SourceCode\Hydra3\Hydra\Initializer.cs:line 123<br /> at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)<br /> at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)<br /><br />У себя ошибку обработаю. Так для справки.https://stocksharp.ru/topic/2964/Виснет ГУИ2012-08-24T08:51:27Z2012-08-24T08:51:27ZXMbIPbhttps://stocksharp.ru/users/6200/info@stocksharp.ruПримерно через пол часа после старта экспорта окно гидры(4.1.3) перестаёт обновляться и реагировать на нажатия... <br />Ресурсов вроде хватает.. проц грузит примерно на 50%.. оперативки тоже где-то половина свободна.. экспорт идёт.. логи пишутся...