﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Форум. StockSharp</title>
  <id>https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=172</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-19T21:27:26Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=172" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/2677/</id>
    <title type="text">Гидра + источник SmartCOM</title>
    <published>2012-05-11T08:23:41Z</published>
    <updated>2012-05-11T08:23:41Z</updated>
    <author>
      <name>dvoris</name>
      <uri>https://stocksharp.ru/users/5897/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;Пробую запускать экспорт тиков из источника SmartCOM.&lt;/p&gt;
&lt;p&gt;Полный лог:&lt;/p&gt;
&lt;div class="spoiler"&gt;&lt;p&gt;15:10:40.5084709 Smart Инициализируется.
15:10:48.3869215 Smart Экспорт запущен.
15:10:54.7972882 Smart SmartTrader.AddTrade: tradeId 554928106 orderId 7620039192 price 15865 volume 1 time 11.05.2012 10:00:44 security GAZR-6.12_FT
15:10:55.0903049 Smart SmartTrader.UpdateOrder: id 0 smartId 1145598706 type StOrder_Type_Stop direction Sell price 0 volume 1 balance 1 time 11.05.2012 11:11:10 security SBRF-6.12_FT state StOrder_State_Pending
15:10:55.1143063 Smart New order: TransactionId=0, Id=1145598706, Price=0, Balance=1, Security=SRM2@RTS, State=Active
15:10:55.1203067 Smart SmartTrader.AddTrade: tradeId 555073739 orderId 7621925154 price 9069 volume 1 time 11.05.2012 11:10:45 security SBRF-6.12_FT
15:11:04.2678299 Smart Получены новые инструменты:
15:11:04.2678299 Smart @EQBR
15:11:04.2678299 Smart @FISS
15:11:04.2678299 Smart @WEST
15:11:04.2678299 Smart @0
15:11:04.2678299 Smart @RTS
15:11:04.2678299 Smart @EQNE
15:11:04.2678299 Smart @EQNB
15:11:04.2678299 Smart @EQNL
15:11:04.2678299 Smart @EQNO
15:11:04.2678299 Smart @EQOB
15:11:04.2678299 Smart @EQOS
15:11:04.2678299 Smart @EQBS
15:11:04.2678299 Smart CSCO@0
15:11:04.2678299 Smart QCOM@0
15:11:04.2678299 Smart INTC@0
15:11:04.2678299 Smart MSFT@0
15:11:04.2678299 Smart AMZN@0
15:11:04.2678299 Smart DELL@0
15:11:04.2678299 Smart ORCL@0
15:11:04.2698300 Smart Сохранение изменений для @EQBR
15:11:04.3338336 Smart Сохранение изменений для @FISS
15:11:04.3398340 Smart Сохранение изменений для @WEST
15:11:04.3468344 Smart System.ArgumentException: Инструмент @WEST имеет нулевой шаг цены.
Имя параметра: security
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0..ctor(Security #=qultHXia_SGWOjM8Wa5kpAA==, String #=qF9e5loCuapjCYJN71KhPPw==, String #=q$4rmKtA7dmMXtosfC0oo7g==, Int32 #=qw1EDxnMW9sM11xDFcWC5Ww==, Func&lt;code&gt;2 #=qJAGq6WPuPu7Bb4MrpsxEZw==, Func&lt;/code&gt;2 #=qTAKPtSruwisjbk14oBTzFQ==, Func&lt;code&gt;2 #=qTS7bvrynJkgBqIeHnLic$g==) в #=q47pcTs$vhqCk7bcqb_pv_8WxmChHSIsPkHHCRTpwp$0tTIgeCDHlo4JNyPTxhxd3..ctor(Security #=qGxFPI4TVVm4wVgiofjtVOQ==, String #=qtbAy73$AaJOyvJ38gL4TZA==) в StockSharp.Algo.Storages.StorageRegistry.#=qFw6JFOO8rScIpdWgNf8Vzr3VXvFxXiozxJBRc7Uu9yBcU68ya0kuDqa2ViIvjtvf(Tuple&lt;/code&gt;2 #=q3GjCKMTx4E0IA1lwOY35zg==)
в Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary&lt;code&gt;2 dictionary, TKey key, Func&lt;/code&gt;2 handler)
в StockSharp.Algo.Storages.StorageRegistry.GetSecurityChangeStorage(Security security, String basePath)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveSecurityChanges(Security security, IEnumerable&lt;code&gt;1 changes, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:05.2508861 Smart Получены новые инструменты: 15:11:05.2508861 Smart SBER@EQBR 15:11:05.2518861 Smart Сохранение сделок для SBER@EQBR. 15:11:05.2788877 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,23. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:06.2649441 Smart Получены новые инструменты: 15:11:06.2649441 Smart SBER@EQBR 15:11:06.2649441 Smart Сохранение сделок для SBER@EQBR. 15:11:06.2659441 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,24. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:07.2790021 Smart Получены новые инструменты: 15:11:07.2790021 Smart SBER@EQBR 15:11:07.2790021 Smart Сохранение сделок для SBER@EQBR. 15:11:07.2800021 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,28. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:08.2940601 Smart Получены новые инструменты: 15:11:08.2940601 Smart SBER@EQBR 15:11:08.2940601 Smart GAZP@EQNE 15:11:08.2940601 Smart Сохранение сделок для SBER@EQBR. 15:11:08.2960603 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,28. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:09.3071181 Smart Получены новые инструменты: 15:11:09.3071181 Smart SBER@EQBR 15:11:09.3071181 Smart Сохранение сделок для SBER@EQBR. 15:11:09.3071181 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,29. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:10.3211761 Smart Получены новые инструменты: 15:11:10.3211761 Smart GAZP@EQNE 15:11:10.3211761 Smart SBER@EQBR 15:11:10.3211761 Smart Сохранение сделок для GAZP@EQNE. 15:11:10.3221762 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 158,19. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:11.3352341 Smart Получены новые инструменты: 15:11:11.3352341 Smart SBER@EQBR 15:11:11.3352341 Smart Сохранение сделок для SBER@EQBR. 15:11:11.3352341 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,3. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:12.3492921 Smart Получены новые инструменты: 15:11:12.3492921 Smart SBER@EQBR 15:11:12.3492921 Smart GAZP@EQNE 15:11:12.3492921 Smart Сохранение сделок для SBER@EQBR. 15:11:12.3492921 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,32. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable&lt;code&gt;1 trades, Boolean raiseDataLoadedEvent) в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source) 15:11:13.3633501 Smart Получены новые инструменты: 15:11:13.3633501 Smart SBER@EQBR 15:11:13.3633501 Smart GAZP@EQNE 15:11:13.3633501 Smart Сохранение сделок для SBER@EQBR. 15:11:13.3643502 Smart System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 90,33. Имя параметра: minStepSize в #=qpII238HFL_OaWxP07mgRjqImNv$t9T_t78$hkhJSYt2Kj4MDXhiBLEtCnJNe0QNw7kdgOPHnXw3d3uSXYz2xBw==.#=qKhk8OZ3UC91itr3UVxVF2g==(List&lt;/code&gt;1 #=qemH3YAbFDmz4Cwm4$RSaNw==, Decimal #=qqA6vdYCDAO8ZlvwOlHCxww==, Decimal #=qDtTllNqaCyMzM3mqeoBSKA==, Decimal #=qtaB_iuOCXVgHuwIYTKw6bQ==)
в #=qejiCf3UV$ld2XL_O00ClpDz36prL5gHkuTmVsnv3raoLTq6lWnYTM1tBNfBVFtRt.OnSave(List&lt;code&gt;1 #=q_qgemYaOiXf2K3YoYWMinw==, IEnumerable&lt;/code&gt;1 #=qF9vQJQBWFwqPBKRAA6sqnw==, DateTime #=q9kjgzK1Nm27W5NUQBf16gA==, #=qtnvAGzibdyI$06pqlJKrfMUiYj75tS75CrFw6LrXqjaCLQzorQQ4abyjLF8QJ59E #=q$wKzYuuRQJM33tDBWg015Q==)
в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qTCjZ3n$0qycugnmoYxqMiQ==(DateTime #=qV55GVyNZztdx$BQYC9R1iw==, IEnumerable&lt;code&gt;1 #=qyX0mfFoZKeNr4$WP0sdECg==, Boolean #=qQleumBLTExIeb1HK0Y1$IQ==) в #=qmeCKABkg2aKU0Gus0j68wVKRzJLD6CDG9rfr$gfmbcuzBRGPZe0B66fT1Qu_oSF0.#=qYNjvRXHQghRb5cWAIiLMP17nFyZmQX2zFvZawZ67hSEsv397Vu6zCZbksk4gpqx5VQi7hq9yFMZh6ybYjnH74w==(IEnumerable&lt;/code&gt;1 #=qsdBbLLC3pKwGGb_yd6603Q==)
в StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable`1 trades, Boolean raiseDataLoadedEvent)
в StockSharp.Hydra.Core.TraderMarketDataSource.Load()
в StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__18(IMarketDataSource source)
15:11:13.3643502 Smart Останавливается.
15:11:13.4323540 Smart Получены новые инструменты:
15:11:13.4323540 Smart GAZP@EQNE
15:11:13.4323540 Smart SBER@EQBR
15:11:13.4323540 Smart Остановлен.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;В инструментах настроено только GAZP и SBER.
&lt;img src="http://f1.s.qip.ru/YLAzZgLY.jpg" alt="" /&gt;
Уже полученные тики по ним были закачены до этого через Finam.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2676/</id>
    <title type="text">Выставление заявок(встречная и fill-or-kill)</title>
    <published>2012-05-10T16:39:29Z</published>
    <updated>2012-05-10T16:39:29Z</updated>
    <author>
      <name>Limfocit</name>
      <uri>https://stocksharp.ru/users/789/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;Можно ли выставить заявку с типом встречная(снимается после проведения аукциона) или Fill-or-Kill?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2675/</id>
    <title type="text">Специалистам по статистике. Проблема моделирования логнормального распределения.</title>
    <published>2012-05-09T11:08:46Z</published>
    <updated>2012-05-09T11:08:46Z</updated>
    <author>
      <name>karellin</name>
      <uri>https://stocksharp.ru/users/27777/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">&lt;p&gt;В процессе работы над программой оценки рисков по опционной позиции возник вопрос.
Каким образом можно смоделировать &lt;strong&gt;логнормальное&lt;/strong&gt; распределение с заданными мат.ожиданием и дисперсией &lt;strong&gt;именно для этого распределения&lt;/strong&gt;?
Все формулы, которые я нашел, моделируют логнормальное распределение через базовое нормальное распределение, и соответственно дают формулы для расчетов мат.ожидания и дисперсии полученного логнормального распределения через мат.ожидание и дисперсию базового нормального распределения. Но мне нужно создавать логнормальное распределение по его собственным параметрам, то есть нужны обратные формулы.
Пользоваться методами нелинейного программирования не хочется, поскольку долго.
А в математическом анализе я не специалист, поэтому прошу помочь засветившихся здесь специалистов по статистическому анализу, или хотя бы указать на источник, в котором эта тема рассматривается.
Я думаю, эта тема будет интересна и другим.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2674/</id>
    <title type="text">Математика. Книжки.</title>
    <published>2012-05-08T16:14:21Z</published>
    <updated>2012-05-08T16:14:21Z</updated>
    <author>
      <name>vlad1024</name>
      <uri>https://stocksharp.ru/users/768/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">&lt;p&gt;Обещал выложить книжки по математике, начиная от азов, теорвера, и заканчивая моделями числовых рядов и машинным обучением.
Структура примерно такая:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;basic  - матан, линейная алгебра, если прогуляли/никогда не знали/ничего не помните&lt;/li&gt;
&lt;li&gt;probability — базовая теория вероятности/статистика&lt;/li&gt;
&lt;li&gt;time_series — стандартные(в основном стационарные) статистические модели числовых рядов&lt;/li&gt;
&lt;li&gt;advanced — про продвинутые модели и машинное обучение
bonus. cointegration/r/bayes — про коинтеграцию, R (пакет для стат. расчетов), и Байесовскую статистику&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://www.sendspace.com/file/acwagq" rel="nofollow" target="_blank"&gt;http://www.sendspace.com/file/acwagq&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2673/</id>
    <title type="text">Работа с субсчетами</title>
    <published>2012-05-07T06:43:40Z</published>
    <updated>2012-05-07T06:43:40Z</updated>
    <author>
      <name>Romant</name>
      <uri>https://stocksharp.ru/users/299/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;Прошу пояснить, каким образом можно реализовать работу с субсчетами робота, написанного с использованием S#. Ситуация такая:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;У брокера открыто N субсчетов, на каждом своя сумма.&lt;/li&gt;
&lt;li&gt;Есть N роботов, у каждого свой алгоритм, каждый робот должен торговать на своём субсчёте, ничего не зная о прочих субсчетах.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Как это в принципе реализуется ? Нужно запускать N копий QUIK, настраивать каждую на свой субсчёт и с каждой связывать своего робота или же можно обойтись одним квиком ?&lt;/p&gt;
&lt;p&gt;Спасибо.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2672/</id>
    <title type="text">Тестирование на исторических данных - кто чем?</title>
    <published>2012-05-06T19:19:31Z</published>
    <updated>2012-05-06T19:19:31Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.ru/users/1927/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Добрый вечер!&lt;/p&gt;
&lt;p&gt;В StockSharp удобно тестировать код стратегии на исторических данных, но именно код от робота на Stock#.&lt;/p&gt;
&lt;p&gt;А как Вы тестируете идеи алгоритмов? Сразу в S#, или используете Wealth-Lab?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2671/</id>
    <title type="text">EmulationTrader добавить инструмент после создания объекта?</title>
    <published>2012-05-06T18:07:33Z</published>
    <updated>2012-05-06T18:07:33Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Добрый день, возможно ли добавить инструмент в EmulationTrader после создания объекта, или надо обязательно пересоздавать? Свойство EmulationTrader.Securities только на чтение. Нашел метод RegisterSecurity но он свойство Securities не меняет, и данные для нового инструмента подтягиваться не начинают.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2670/</id>
    <title type="text">sqlite база повредилась</title>
    <published>2012-05-05T14:35:06Z</published>
    <updated>2012-05-05T14:35:06Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;При запросах к базе пишет &amp;quot;The database disk image is malformed; database disk image is malformed&amp;quot; что сделать можно, подскажите. Дамп както реально вытащить? (нашел как вытащить на linux..)&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2669/</id>
    <title type="text">Некоторые возможности S#</title>
    <published>2012-05-05T14:13:26Z</published>
    <updated>2012-05-05T14:13:26Z</updated>
    <author>
      <name>meneo</name>
      <uri>https://stocksharp.ru/users/27812/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Доброго всем времени суток!&lt;/p&gt;
&lt;p&gt;В настоящий момент знакомлюсь с возможностями S#.&lt;/p&gt;
&lt;p&gt;Буду признателен если проясните некоторые моменты:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Можно ли с помощью S# создавать диалоговые окна с текстом, таблицами и стандартными элементами управления? Поясню: допустим, я пишу не робота, а нечто вроде анализатора в процессе торгов, которые производит различные расчеты, а сделки я буду совершать сам. Так вот, понимаю, что все эти расчеты можно реализовать в S#, а есть ли интерфейсный инструментарий для вывода результата этих расчетов в различных окнах.&lt;/li&gt;
&lt;li&gt;В разделе Гидра написано, что хранилище используется для тестирования стратегий. А если же мне для робота потребуются расчеты, как на свежих котировках из QUIK так и на исторических данных, как будет выстроена логика работы QUIK-S#-Хранилище-Гидра, возможно ли это?&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2668/</id>
    <title type="text">Работа с несколькими инструментами - подписка на события обновления стаканов</title>
    <published>2012-05-05T12:54:27Z</published>
    <updated>2012-05-05T12:54:27Z</updated>
    <author>
      <name>Algonavt</name>
      <uri>https://stocksharp.ru/users/639/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Не могу разобраться, как сделать следующее:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;подписаться на событие появления инструментов&lt;/li&gt;
&lt;li&gt;для каждого инструмента, по которому должна идти работа, при его появлении в таблице инструментов открыть стакан&lt;/li&gt;
&lt;li&gt;подписаться на событие обновления каждого стакана&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Список инструментов задается в массиве строк.&lt;/p&gt;
&lt;p&gt;Как это сделать?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2667/</id>
    <title type="text">Заявка для транзакции на регистрацию уже имеет номер</title>
    <published>2012-05-05T08:23:34Z</published>
    <updated>2012-05-05T08:23:34Z</updated>
    <author>
      <name>shumilov</name>
      <uri>https://stocksharp.ru/users/28059/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Здравствуйте! После прохождения заявки и исполнения сделки иногда появляется подобная запись.
2012-05-05T14:39:46 FatalError: vse.BasicTrader.QuikWorker:Ошибка при импорте данных из Quik&lt;/p&gt;
&lt;p&gt;Exception: System.InvalidOperationException
Message: Заявка для транзакции на регистрацию 52766391 уже имеет номер 1526903397.
Source: StockSharp.Quik
StackTrace:
в StockSharp.Quik.QuikTrader.#=qqKvbSKnCebnIqk_3UbLETN11Q9LSqs4vEyMvnDyW92A=(UInt32 #=qZMlFpe1sDPp8nYV8HIQO9A==, Codes #=qMBJ4DV7h2GDG4BJSE6piQw==, Codes #=q9c0c7lBkTUenHK0Yx8vjmw==, OrderStatus #=qZfORDPYhStdkbMNcplo$KA==, Int64 #=qUHO05_mEyTB820DL7zaqGg==, String #=q0AvmC_jjld8_f6BCGHovrg==)&lt;/p&gt;
&lt;p&gt;не обращать на это внимание или нужно исправлять?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2666/</id>
    <title type="text">Создание стратегий. Корзина защитных стратегий.</title>
    <published>2012-05-04T04:43:06Z</published>
    <updated>2012-05-04T04:43:06Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Решил поддержать хорошее начало по части написания статей на полезные темы. Попробую рассмотреть логику создания стратегий. Для многих начинающих я думаю это будет полезным подспорьем. Ну и возможно бывалые извлекут себе что-то полезное.&lt;/p&gt;
&lt;p&gt;Предположим,  что наши стратегии работают на таймфрэйме от 5 минут, нам не требуется работа с тиками.  Отсюда требования к скорости работы алгоритмов будет достаточно лояльные. При описанных допущениях наиболее логичным будет разделять алгоритмы на части. Каждая часть будет выполнять заранее определенную операцию. Собирая вместе части, мы будем получать целое.&lt;/p&gt;
&lt;p&gt;Рассмотрим такой момент как защита сделки. Когда стратегия входит в сделку и совершает трейд, часто требуется защитить сделку стопами, профитами и может быть чем-нибудь еще. Логично будет разделить разные элементы защиты и создать на каждый отдельную защитную  стратегию. В базовой поставке S# есть уже несколько готовых защитных стратегий: StopLoss, TakeProfit и так далее. Все они базируются на стратегии котирования, что не всегда бывает необходимо. Например, если ваш брокер имеет ограничение на количество транзакций в секунду, то запустив несколько одновременных стратегий котирования можно попасть в неудобную ситуацию превышения лимита транзакций. Поэтому для себя лично я реализовал свои защитные стратегии, базированные НЕ на котировании, а на простом рыночном входе. Для удобной работы с пачкой защитных стратегий, была реализована корзина защитных стратегий. Перейдем собственно к делу.&lt;/p&gt;
&lt;p&gt;Для реализации корзины стратегий, нам понадобится универсальный интерфейс защитной стратегии.&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
    /// &amp;lt;summary&amp;gt;
    /// Защитная стратегия, которая срабатывает при определенных условиях. Предназначена для защиты сделок.
    /// &amp;lt;/summary&amp;gt;
    public interface IProtectionStrategy
    {
        /// &amp;lt;summary&amp;gt;
        /// Событие вызывается сразу же как только защитная стратегия активировалась
        /// и начала закрывать позицию.
        /// &amp;lt;/summary&amp;gt;
        event Action Activated;
        /// &amp;lt;summary&amp;gt;
        /// Защищаемая сделка.
        /// &amp;lt;/summary&amp;gt;
        MyTrade ProtectedTrade { get; }
        /// &amp;lt;summary&amp;gt;
        /// Текущее состояние стратегии, активирована она лии нет.
        /// &amp;lt;/summary&amp;gt;
        bool IsActivated { get; }
    }

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Далее на базе интерфейса мы уже можем реализовать корзину стратегий. Каждая из защитных стратегий корзины, будет защищать одну конкретную сделку. И вся корзина будет защищать эту сделку. Смысл корзины в том, что когда активировалась одна из защитных стратегий, остальные должны быть остановлены. Защитная стратегия просто совершает сделку обратную защищаемой сделке, отсюда необходимо избегать ситуации, когда сработают несколько защитных стратегий. Как только активировалась защитная стратегия, корзина тоже переходит в Активное состояние. В принципе корзина сама реализует интерфейс защитной стратегии и ведет себя аналогичным образом. После завершения активной защитной стратегии, корзина тоже завершает свою работу. Ниже пример реализации:&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
 /// &amp;lt;summary&amp;gt;
    /// &amp;lt;para&amp;gt;
    ///     Стратегия, которая реализует корзину защитных стратегий. В стратегию объединяются несколько защитных стратегий защищающих
    ///     одну и ту же сделку. Как только будет активирована защита одной из нескольких защитных стратегий, остальные будут остановлены
    ///     и после завершения активировавшейся защитной стратегии, вся баскет стратегия будет тоже остановлена.
    ///     В момент активации одной из защитных стратегий, баскет стратегия переходит в активированное состояние и свойство &amp;lt;see cref=&amp;quot;FirstActivated&amp;quot;/&amp;gt;
    ///     указывает на активировавшуются защитную стратегию.
    /// &amp;lt;/para&amp;gt;
    /// &amp;lt;para&amp;gt;
    ///     Данная стратегия нужна если есть комбинация различных взаимоисключающих защитных техник и при срабатывании одной из них, нужно блокировать
    ///     работу остальных. Например несколько видов стопов, или стоплосс-тейпрофит итд.
    /// &amp;lt;/para&amp;gt;
    /// &amp;lt;/summary&amp;gt;
    public class BasketProtectionStrategy : Strategy, IProtectionStrategy
    {
        /// &amp;lt;summary&amp;gt;
        /// Объект для синхронизации правил активации дочерних защитных событий. Обеспечивает срабатывание одной из дочерних стратегий
        /// после которого все остальные железно будут остановлены.
        /// &amp;lt;/summary&amp;gt;
        private object _syncToken = new object();

        /// &amp;lt;summary&amp;gt;
        /// Защищаемая сделка.
        /// &amp;lt;/summary&amp;gt;
        public MyTrade ProtectedTrade { get; protected set; }
        /// &amp;lt;summary&amp;gt;
        /// Текущее состояние стратегии, активирована она лии нет.
        /// &amp;lt;/summary&amp;gt;
        public bool IsActivated { get; protected set; }
        /// &amp;lt;summary&amp;gt;
        /// Стратегия которая активировалась первой среди защитных.
        /// &amp;lt;/summary&amp;gt;
        public IProtectionStrategy FirstActivated { get; protected set; }

        /// &amp;lt;summary&amp;gt;
        /// Событие вызывается сразу же как только защитная стратегия активировалась
        /// и начала закрывать позицию.
        /// &amp;lt;/summary&amp;gt;
        public event Action Activated;



        public BasketProtectionStrategy()
        {
            ProtectedTrade = null;
            IsActivated = false;
            
            ChildStrategies.Adding += ChildStrategiesOnAdding;
        }

        /// &amp;lt;summary&amp;gt;
        /// Метод вызывается тогда, когда вызвался метод &amp;lt;see cref=&amp;quot;M:StockSharp.Algo.Strategies.Strategy.Start&amp;quot;/&amp;gt;, и состояние &amp;lt;see cref=&amp;quot;P:StockSharp.Algo.Strategies.Strategy.ProcessState&amp;quot;/&amp;gt; перешло в значение &amp;lt;see cref=&amp;quot;F:StockSharp.Algo.Strategies.ProcessStates.Started&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        protected override void OnStarting()
        {
            if (ChildStrategies.Count == 0)
                throw new InvalidOperationException(&amp;quot;Дочерние стратегии отсутствуют, невозможно запустить комплесную защитную стратегию.&amp;quot;);

            base.OnStarting();
        }

        protected override void OnStopping()
        {
            Debug.WriteLine(&amp;quot;OnStopping: Число правил {0}&amp;quot;.Put(Rules.Count));
            this.AddInfoLog(&amp;quot;Очищая список правил стратегии.&amp;quot;);
            Rules.Clear();

            this.AddInfoLog(&amp;quot;Останавливаю все дочерние стратегии.&amp;quot;);
            ChildStrategies.ToArray().ForEach(s =&amp;gt; s.Stop());

 
            base.OnStopping();
        }
        
        
        /// &amp;lt;summary&amp;gt;
        /// Метод вызывается при добавлении дочерней стратегии. Проверяет параметры стратегии и вешается на событие &amp;lt;see cref=&amp;quot;IProtectionStrategy.Activated&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;strategy&amp;quot;&amp;gt;Добавляемая защитная стратегия. Должна соответствовать интерфейсу &amp;lt;see cref=&amp;quot;IProtectionStrategy&amp;quot;/&amp;gt;&amp;lt;/param&amp;gt;
        private void ChildStrategiesOnAdding(Strategy strategy)
        {
            // проверяем чтобы защитная стратегия была, а не какая-то другая.
            if (!(strategy is IProtectionStrategy))
                throw new InvalidOperationException(&amp;quot;Дочерней может быть только защитная стратегия реализующая IProtectionStrategy.&amp;quot;);

            var protectionStrategy = strategy as IProtectionStrategy;

            // проверяем чтобы защитные стратегии были для одной сделки. Если защищаемая сделка еще не определена, берем из добавляемой стратегии.
            ProtectedTrade = ProtectedTrade ?? protectionStrategy.ProtectedTrade;
            if (ProtectedTrade != protectionStrategy.ProtectedTrade)
                throw new InvalidOperationException(&amp;quot;Добавляемые защитные стратегии должны защищать одну и ту же сделку.&amp;quot;);


            // как только активировалась защита одной из дочерних стратегий, сразу же активируем защиту комплексной стратегии.
            // Все правила будут синхронизированы через общий объект, так что вызываться смогут только по очереди. После вызова первого мы удалим все остальные.
            this
                .When(protectionStrategy.ProtectionActivated())
                .Do(s =&amp;gt; Activate(s) )
                .Once()
                .Sync(_syncToken);
        }


        /// &amp;lt;summary&amp;gt;
        /// Активирует защиту сделки, то есть начинает процедуру защиты.
        /// Если защита уже активирована, то ничего не делает. Состояние защиты проверяется 
        /// через свойство &amp;lt;see cref=&amp;quot;IsActivated&amp;quot;/&amp;gt;. В случае активации генерирует событие &amp;lt;see cref=&amp;quot;Activated&amp;quot;/&amp;gt;.
        /// Нужно самому обеспечивать потокобезопасность вызова метода. При одновременном вызове может быть коллизия.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;strategy&amp;quot;&amp;gt;Стратегия которая активировалась и вызвала активацию комплексной защитной стратегии. &amp;lt;/param&amp;gt;
        protected virtual void Activate(IProtectionStrategy strategy)
        {
            // защита от двойного входа в состояние защиты.
            if (IsActivated) return;

            IsActivated = true;
            FirstActivated = strategy;


            this.AddInfoLog(&amp;quot;Активировалась одна из дочерних стратегий защиты, завершаем остальные стратегии защиты.&amp;quot;);
            RaiseActivatedEvent();
            
            // очищаем все правила стратегии и останавливаем все дочерние кроме активной. Когда активная тоже остановится, защитная стратегия тоже остановится.
            Rules.Clear();
            // после остановки активной дочрней стратегии мы остановим и комплексную защитную.
            this
                .When((strategy as Strategy).Stopped())
                .Do(Stop);

            StopNotActiveChilds();
        }
        /// &amp;lt;summary&amp;gt;
        /// Останавливает все дочерние защитные стратегии для сделки, кроме той которая активировалась.
        /// &amp;lt;/summary&amp;gt;
        private void StopNotActiveChilds()
        {
            var firstActivated = FirstActivated as Strategy;
            var stoppingStrategies = ChildStrategies.Where(s =&amp;gt; s != firstActivated).ToArray();
            stoppingStrategies.ForEach(s =&amp;gt; s.Stop());
        }

        /// &amp;lt;summary&amp;gt;
        /// Сгенерировать событие об активации защиты.
        /// &amp;lt;/summary&amp;gt;
        protected virtual void RaiseActivatedEvent()
        {
            Activated.SafeInvoke();
        }

        protected override void DisposeManaged()
        {
            ChildStrategies.Adding -= ChildStrategiesOnAdding;
            base.DisposeManaged();
        }
    }

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Далее реализуем защитную стратегию которую будем добавлять в корзину. Первое что хочется показать, это реализацию стратегии, которая выставляет физический стоп и мониторит его состояние. Как только стоп активируется, стратегия становится активной. Если стратегию остановить, стоп заявка снимается. Я выбрал эту стратегию, из-за определенных нюансов в реализации, которые многим помогут.&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
    /// &amp;lt;summary&amp;gt;
    /// Данная стратегия используется для выставления реального стопа и слежения за его состоянием.
    /// Когда стоп начнет исполняться, стратегия активирует событие &amp;lt;see cref=&amp;quot;Activated&amp;quot;/&amp;gt; и переходит в активированное состояние.
    /// &amp;lt;/summary&amp;gt;
    public class RealStopLossStrategy : Strategy, IProtectionStrategy
    {
        private Unit _protectionLevel;
        private Unit _slippage;
        private Order _stopOrder;
        private object _globalLock = new object();

        /// &amp;lt;summary&amp;gt;
        /// Защищаемая сделка.
        /// &amp;lt;/summary&amp;gt;
        public MyTrade ProtectedTrade { get; protected set; }
        /// &amp;lt;summary&amp;gt;
        /// Текущее состояние стратегии, активирована она лии нет.
        /// &amp;lt;/summary&amp;gt;
        public bool IsActivated { get; protected set; }

        /// &amp;lt;summary&amp;gt;
        /// Событие вызывается сразу же как только защитная стратегия активировалась
        /// и начала закрывать позицию.
        /// &amp;lt;/summary&amp;gt;
        public event Action Activated;


        /// &amp;lt;summary&amp;gt;
        /// Создает стратегию защиты сделки на основе скользящей средней.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;protectedTrade&amp;quot;&amp;gt;Защищаемая сделка.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;protectionLevel&amp;quot;&amp;gt;Уровень на который стоп отстоит от цены сделки. Может быть фикс, или процент. &amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;slippage&amp;quot;&amp;gt;Проскальзывание, которое будет выставлено в стоп ордере. &amp;lt;/param&amp;gt;
        /// &amp;lt;exception cref=&amp;quot;ArgumentNullException&amp;quot;&amp;gt;Если не заданы аргументы.&amp;lt;/exception&amp;gt;
        /// &amp;lt;exception cref=&amp;quot;ArgumentException&amp;quot;&amp;gt;Если скользящая НЕ сформирована.&amp;lt;/exception&amp;gt;
        public RealStopLossStrategy(MyTrade protectedTrade, Unit protectionLevel, Unit slippage)
        {
            if (protectedTrade == null)
                throw new ArgumentNullException(&amp;quot;protectedTrade&amp;quot;);

            if (protectionLevel == null)
                throw new ArgumentNullException(&amp;quot;protectionLevel&amp;quot;);

            if (slippage == null)
                throw new ArgumentNullException(&amp;quot;slippage&amp;quot;);
            /*
            if ( (protectionLevel.Type != UnitTypes.Percent) &amp;amp;&amp;amp; (protectionLevel.Type != UnitTypes.Absolute) )
                throw new ArgumentException(&amp;quot;Уровень стопа можно задавать либо в абсолютных значениях либо в процентах.&amp;quot;, &amp;quot;protectionLevel&amp;quot;);

            if ((slippage.Type != UnitTypes.Percent) &amp;amp;&amp;amp; (slippage.Type != UnitTypes.Absolute))
                throw new ArgumentException(&amp;quot;Уровень проскальзывания можно задавать либо в абсолютных значениях либо в процентах.&amp;quot;, &amp;quot;slippage&amp;quot;);
            */

            
            ProtectedTrade = protectedTrade;
            // это нужно чтобы могли формироваться заявки через хелпер методы. Им нужен будет объем.
            this.Volume = ProtectedTrade.Trade.Volume;
            _protectionLevel = protectionLevel;
            _slippage = slippage;
        }


        protected override void OnStarting()
        {
            base.OnStarting();

            this.AddWarningLog(&amp;quot;Начинаю защищать сделку Id: {0} по ордеру Id: {1}&amp;quot;.Put(ProtectedTrade.Trade.Id, ProtectedTrade.Order.Id));


            // когда позиция стратегии изменилась, значит защита активировалась и стоп сработал войдя в сделку.
            this
                .When(this.PositionChanged())
                .Do(s =&amp;gt;
                {
                    Activate();

                    TryStop();
                });

            Begin();
        }

        protected override void OnStopping()
        {
            this.AddInfoLog(&amp;quot;Очищаю список правил стратегии.&amp;quot;);
            Rules.Clear();

            this.AddInfoLog(&amp;quot;Останавливаю все дочерние стратегии.&amp;quot;);
            ChildStrategies.SyncDo(c =&amp;gt; c.ToArray().ForEach(strat =&amp;gt; strat.Stop())); 

            base.OnStopping();
        }
        /// &amp;lt;summary&amp;gt;
        /// Метод вызывается тогда, когда состояние процесса &amp;lt;see cref=&amp;quot;P:StockSharp.Algo.Strategies.Strategy.ProcessState&amp;quot;/&amp;gt; перешло в значение &amp;lt;see cref=&amp;quot;F:StockSharp.Algo.Strategies.ProcessStates.Stopped&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        protected override void OnStopped()
        {
            var currVol = this.PositionManager.Position.Abs();
            var baseVol = ProtectedTrade.Trade.Volume;
            var restVol = baseVol - currVol;

            if (currVol != baseVol)
                this.AddWarningLog(&amp;quot;Стратегия RealStopLossStrategy завершила свою работу с оставшимся защищаемым объемом {0}. Исходный объем {1}&amp;quot;.Put(restVol, baseVol));
            else
                this.AddWarningLog(&amp;quot;Стратегия RealStopLossStrategy завершила свою работу с полностью исполненным защищаемым объемом. Исходный объем {0}&amp;quot;.Put(baseVol));


            base.OnStopped();
        }

        public override void Stop()
        {
            // если есть активные ордера, то не завершаем работу а пробуем сначала отменить эти ордера.
            // отменяем все оставшиеся активные ордера в стратегии. Например стратегия была частью баскет стратегии и была остановлена, останутся стопзаявки.
            // нужно удалить все зависшие стоп заявки стратегии.
            if (this.HaveActiveStopOrders())
            {
                this.AddInfoLog(&amp;quot;Стратегия имеет активные ордера, пробуем отменить их.&amp;quot;);
                this.GuarantyCancelOrders(new [] {_stopOrder});

                this
                    .When(_stopOrder.Canceled())
                    .Do(o =&amp;gt;
                            {
                                this.AddInfoLog(&amp;quot;Активные ордера отменены, останавливаем стратегию.&amp;quot;);
                                Stop();
                            });

                return;
            }
            
            base.Stop();
        }

        private void Begin()
        {
            Order order = null;
            var direction = ProtectedTrade.Order.Direction.Invert();
            var price = ProtectedTrade.Trade.Price;

            // сформируем ордер в зависимости от направления стратегии
            if (direction == OrderDirections.Buy)
            {
                var stopPrice = _protectionLevel.Type == UnitTypes.Limit
                                ? _protectionLevel.Value
                                : price + _protectionLevel;


                var slippage = _slippage.Type == UnitTypes.Limit ? _slippage : (price + _slippage) - price;

                order = this.CreateBuyStopOrder((double)slippage, (double)stopPrice);
            }

            if (direction == OrderDirections.Sell)
            {
                var stopPrice = _protectionLevel.Type == UnitTypes.Limit
                                ? _protectionLevel.Value
                                : price - _protectionLevel;


                var slippage = _slippage.Type == UnitTypes.Limit ? _slippage : (price + _slippage) - price;

                order = this.CreateSellStopOrder((double) slippage, (double)stopPrice);
            }

            // выставляем ордер
            SetOrder(order);
        }

        /// &amp;lt;summary&amp;gt;
        /// Выставляет ордер и все правила на ордер вешает.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;order&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        private void SetOrder(Order order)
        {

            #region Заводим стратегию выставления заяки для гарантии того что заявка поставилась.

            // сия стратегия нам гарантированно ордер поставит, или выдаст ошибку если поставить не получится.
            var setOrderStrategy = new GuarantyRegisterOrderStrategy(order);

            SuspendRules();
            var errorRule = StrategyRuleHelper.Error(setOrderStrategy);
            var stoppedRule = setOrderStrategy.Stopped();
            var syncToken = new object();

            // Если зарегать ордер не удается мы завершаем работу стратегии с ошибкой.
            this
                .When(errorRule)
                .Do(e =&amp;gt;
                {
                    Rules.Remove(stoppedRule);
                    var msg = &amp;quot;При регистрации ордера TransId: {0} произошла фатальная ошибка {1}.&amp;quot;.Put(setOrderStrategy.Order.TransactionId, e.Message);
                    FatalFinish(msg);
                })
                .Once()
                .Sync(syncToken);

            // Когда стратегия остановилась перед ошибкой, она значит завершилась успешно.
            this
                .When(stoppedRule)
                .Do(s =&amp;gt;
                {
                    Rules.Remove(errorRule);
                    this.AddInfoLog(&amp;quot;Ордер успешно зарегистрирован TransId: {0} State: {1}&amp;quot;, setOrderStrategy.Order.TransactionId, setOrderStrategy.Order.State);
                    SetOrderRules(setOrderStrategy.Order);
                })
                .Once()
                .Sync(syncToken);

            ResumeRules();
            // запуск стратегии регистрации ордера.
            ChildStrategies.Add(setOrderStrategy);

            #endregion
        }

        private void SetOrderRules(Order order)
        {
            if (order == null)
                throw new ArgumentNullException(&amp;quot;order&amp;quot;, &amp;quot;Стоп ордер не задан для стратегии&amp;quot;);

            _stopOrder = order;

            // когда состояние стоп ордера изменилось, и он стал активен, значит сработали стоп условия и защита активировалась.
            this
                .When(_stopOrder.Changed())
                .Do(o =&amp;gt;
                        {
                            if (o.State != OrderStates.Active) return;

                            Activate();
                        });
        }


        /// &amp;lt;summary&amp;gt;
        /// Активирует защиту сделки, то есть начинает процедуру защиты.
        /// Если защита уже активирована, то ничего не делает. Состояние защиты проверяется 
        /// через свойство &amp;lt;see cref=&amp;quot;IsActivated&amp;quot;/&amp;gt;. В случае активации генерирует событие &amp;lt;see cref=&amp;quot;Activated&amp;quot;/&amp;gt;
        /// &amp;lt;/summary&amp;gt;
        protected virtual void Activate()
        {
            // защита от двойного входа в состояние защиты.
            lock (_globalLock)
            {
                if (IsActivated) return;

                IsActivated = true;
            }

            this.AddInfoLog(&amp;quot;Стоп ордер Id: {0} сработал. Защита активировалась.&amp;quot;.Put(_stopOrder.Id));
            RaiseActivatedEvent();
        }
        /// &amp;lt;summary&amp;gt;
        /// Сгенерировать событие об активации защиты.
        /// &amp;lt;/summary&amp;gt;
        protected virtual void RaiseActivatedEvent()
        {
            Activated.SafeInvoke();
        }
        /// &amp;lt;summary&amp;gt;
        /// Метод проверяет текущую позицию стратегии, если она стала равна объему защищаемой сделки, значит стоп ордер
        /// исполнился, стратегия совершила контр сделку и может быть остановлена.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        protected virtual bool NeedStop()
        {
            var absPos = this.PositionManager.Position.Abs();
            var vol = ProtectedTrade.Trade.Volume;

            return absPos == vol;
        }

        protected virtual bool NeedActivate()
        {
            throw new NotImplementedException(&amp;quot;NeedActivate&amp;quot;);
        }

        private void TryStop()
        {
            if (NeedStop()) Stop();
        }



        protected virtual void Finish()
        {
            Stop();
        }

        protected virtual void FatalFinish(string message)
        {
            OnError(new Exception(message));
            Stop();
        }


    }

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Как видно, в стратегии используется подстратегии для регистрации ордеров и для отмены ордеров. Это укладывается в выбранную парадигму реализации операций в виде отдельных частей. При регистрации ордера, может произойти ошибка или еще какой неприятный момент. Заявку надо будет переподать и отследить ее регистрацию. Все это реализуемо в виде отдельной стратегии. Так же можно поступить с отменой заявок, что мной и сделано. Реализацию этих подстратегий не выкладываю, оставим как домашнее задание .&lt;/p&gt;
&lt;p&gt;Теперь  собственно пример использования всего этого добра . Смотрим ниже.&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
            var fixStopStrategy = new RealStopLossStrategy(trade, FixedStop, 2.Percents());
            var protectStrategy = new BasketProtectionStrategy();

            protectStrategy.ChildStrategies.Add(fixStopStrategy);
            ChildStrategies.Add(protectStrategy);


&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2665/</id>
    <title type="text">Ошибка подключения к серверу Плазы  &amp;apos;P2ERR_MQ_TIMEOUT&amp;apos;</title>
    <published>2012-05-03T18:53:14Z</published>
    <updated>2012-05-03T18:53:14Z</updated>
    <author>
      <name>Александр (ПАА)</name>
      <uri>https://stocksharp.ru/users/5968/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;После очередной попытки полностью пересобрать проект с 4.1 получаю ошибку подключения&lt;/p&gt;
&lt;p&gt;Ошибка подключения к серверу Плазы. Код -2147196924, описание 'P2ERR_MQ_TIMEOUT'&lt;/p&gt;
&lt;p&gt;В логе пишет вот это.&lt;/p&gt;
&lt;p&gt;2012-05-04 00:24:56.295;p2mq-cli;;MQ library started.
2012-05-04 00:24:56.299;p2repl-cli;;Client replication library started
2012-05-04 00:24:56.361;lrpcq;warning;Insufficient rights for file mapping Global\012af5bd0129, trying to use local file mapping 012af5bd0129
2012-05-04 00:24:59.362;P2ClientGate;error;p2err 24580=0x6004 - 'MQ:TIMEOUT';Couldn't connect to MQ&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2664/</id>
    <title type="text">PRICE,ASK,BID</title>
    <published>2012-05-03T18:17:10Z</published>
    <updated>2012-05-03T18:17:10Z</updated>
    <author>
      <name>Макс</name>
      <uri>https://stocksharp.ru/users/6040/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;Подписался на события новых сделок, отфильтровал по нужному инструменту.
Записываю в базу MSSQL PRICE, а заодно, ASK,BID на момент последней сделки(одной строкой).
После анализа смотрю, что за день на тестовом сервере совершается около 40000 сделок и в 3000 сделок(строк) PRICE либо больше ASK, либо меньше BID.
Пытался записывать в базу PRICE двумя способами:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;_ins1.LastTrade.Price&lt;/li&gt;
&lt;li&gt;trades.Last().Price (отфильтрованный по нужному инструменту)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Оба варианта иногда дают разную цену в один и тот же момент и PRICE в обоих случаях иногда выбивается из интервала ASK-BID.&lt;/p&gt;
&lt;p&gt;Какой вариант лучше использовать? В каком варианте данные быстрее обновляются?
И почему цена выпрыгивает из ASK-BID диапазона?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2663/</id>
    <title type="text">При попытке получить Код клиента - ошибка</title>
    <published>2012-05-03T14:09:24Z</published>
    <updated>2012-05-03T14:09:24Z</updated>
    <author>
      <name>vader</name>
      <uri>https://stocksharp.ru/users/28223/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Пытаюсь получить Код клиента для портфеля ММВБ таким образом,
var aa = portfolio.ExtensionInfo[DdeEquityPortfolioColumns.ClientCode];
выдает ошибку - System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре.
в System.Collections.Generic.Dictionary`2.get_Item(TKey key)&lt;/p&gt;
&lt;p&gt;Попытался добавить этот ключ в словарь,
trader.EquityPortfoliosTable.Columns.Add(DdeEquityPortfolioColumns.ClientCode);
но говорит, что уже экспортитруется.
В чем может быть проблема?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2662/</id>
    <title type="text">Переход на боевой сервер Плазы</title>
    <published>2012-05-03T12:09:45Z</published>
    <updated>2012-05-03T12:09:45Z</updated>
    <author>
      <name>Макс</name>
      <uri>https://stocksharp.ru/users/6040/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;Погонял 4.1 на тестовом сервере, в целом, все работает, даже что-то получается заработать там)
Правда там бывает за пару минут скачки на 5000 пунктов туда-сюда.
Обдумываю попробовать перейти на боевой, в связи с этим возникаю вопросы. Может кто-то переходил уже и поделиться опытом?
Интересует:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Какого брокера лучше выбрать (у них для HFT везде индивидуальных подход)&lt;/li&gt;
&lt;li&gt;При покупке основного логина есть ли смысл использовать промежуточный сервер брокера за 2000р или лучше воспользоваться публичным пром.сервер самой биржи РТС за 4000р. Какая разница в пинге?&lt;/li&gt;
&lt;li&gt;Нужно ли писать заявления для логина на биржу или все делается через брокера?&lt;/li&gt;
&lt;li&gt;Есть ли подводные камни с сертификацией робота? Отправил вопрос на биржу, жду ответ.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Если Вы перешли - поделитесь опытом плиз.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2661/</id>
    <title type="text">Какое количество роботов(стратегий) у вас работает с одним Trader&amp;apos;ом одновременно?</title>
    <published>2012-05-03T08:53:47Z</published>
    <updated>2012-05-03T08:53:47Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;В продолжение темы опроса &lt;a href="http://stocksharp.com/forum/2605/Iesli-Vy-ispol-zuietie-Stock---na-chiem-vy-siditie/"&gt;Если Вы используете Stock#, на чем вы сидите?)&lt;/a&gt; хотел бы задать следующий вопрос: Какое количество роботов(стратегий) у вас работает с одним Trader'ом одновременно?
Если у вас крутиться более одной стратегии было бы интересно почитать о вашей реализации.
Спасибо)&lt;/p&gt;
&lt;p&gt;upd: хочу внести маленькое уточнение интересуют реализации разнотипных стратегий.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2660/</id>
    <title type="text">WorkingTime.IsTradeDate некорректно работает при добавлении SpecialWorkingDays и SpecialHolidays</title>
    <published>2012-05-03T07:35:44Z</published>
    <updated>2012-05-03T07:35:44Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.ru/users/6003/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Уважаемые разработчики!&lt;/p&gt;
&lt;p&gt;S# 4.0.23
Обнаружил небольшую багу при добавлении SpecialWorkingDays и SpecialHolidays.
WorkingTime.IsTradeDate проверяет целиком весь DateTime, а не только компоненту Date, что есть неверно.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
            DateTime w0 = DateTime.ParseExact(&amp;quot;20120428&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;, CultureInfo.InvariantCulture);
            DateTime w1 = DateTime.ParseExact(&amp;quot;20120428-1000&amp;quot;, &amp;quot;yyyyMMdd-HHmm&amp;quot;, CultureInfo.InvariantCulture);
            DateTime w2 = DateTime.ParseExact(&amp;quot;20120428-1100&amp;quot;, &amp;quot;yyyyMMdd-HHmm&amp;quot;, CultureInfo.InvariantCulture);
            Exchange.Rts.WorkingTime.SpecialWorkingDays = new[] { w0 };
            Console.WriteLine(&amp;quot;{0}  isTradeDate: {1}&amp;quot;, w0, Exchange.Rts.WorkingTime.IsTradeDate(w0, true));
            Console.WriteLine(&amp;quot;{0}  isTradeDate: {1}&amp;quot;, w1, Exchange.Rts.WorkingTime.IsTradeDate(w1, true));
            Console.WriteLine(&amp;quot;{0}  isTradeDate: {1}&amp;quot;, w2, Exchange.Rts.WorkingTime.IsTradeDate(w2, true));

            DateTime h0 = DateTime.ParseExact(&amp;quot;20120427&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;, CultureInfo.InvariantCulture);
            DateTime h1 = DateTime.ParseExact(&amp;quot;20120427-1000&amp;quot;, &amp;quot;yyyyMMdd-HHmm&amp;quot;, CultureInfo.InvariantCulture);
            DateTime h2 = DateTime.ParseExact(&amp;quot;20120427-1100&amp;quot;, &amp;quot;yyyyMMdd-HHmm&amp;quot;, CultureInfo.InvariantCulture);
            Exchange.Rts.WorkingTime.SpecialHolidays = new[] { h0 };
            Console.WriteLine(&amp;quot;{0}  isTradeDate: {1}&amp;quot;, h0, Exchange.Rts.WorkingTime.IsTradeDate(h0, true));
            Console.WriteLine(&amp;quot;{0}  isTradeDate: {1}&amp;quot;, h1, Exchange.Rts.WorkingTime.IsTradeDate(h1, true));
            Console.WriteLine(&amp;quot;{0}  isTradeDate: {1}&amp;quot;, h2, Exchange.Rts.WorkingTime.IsTradeDate(h2, true));

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Получаем:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
28.04.2012 0:00:00  isTradeDate: True
28.04.2012 10:00:00  isTradeDate: False
28.04.2012 11:00:00  isTradeDate: False
27.04.2012 0:00:00  isTradeDate: False
27.04.2012 10:00:00  isTradeDate: True
27.04.2012 11:00:00  isTradeDate: True

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Вместо трех True и трех False&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2659/</id>
    <title type="text">Переход с 4.0 на 4.1</title>
    <published>2012-05-03T07:21:16Z</published>
    <updated>2012-05-03T07:21:16Z</updated>
    <author>
      <name>Александр (ПАА)</name>
      <uri>https://stocksharp.ru/users/5968/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;Добрый день. После перехода возникла проблема. В какой-то момент перестает приходить информация по последней сделке, т.е. последняя сделка по инструменту просто не меняется хотя в параллельно запущенной версии на 4.0 все изменения приходят. Что делать?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2658/</id>
    <title type="text">Вопрос по основам</title>
    <published>2012-05-03T06:58:26Z</published>
    <updated>2012-05-03T06:58:26Z</updated>
    <author>
      <name>Smelov</name>
      <uri>https://stocksharp.ru/users/27678/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Здравствуйте!&lt;/p&gt;
&lt;p&gt;Скажите пожалуйста, насколько будет целесообразным использовать Вашу библиотеку в Win Forms проекте (какие могут возникнуть трудности и все ли будет работать). Основные причины: 1. есть готовая программа на C# в winforms 2. Отсутствие опыта в WPF. Программа на winforms не из разряда HFT или других быстрых роботов, а скорее для формирования портфеля. Все что нужно - вставить функционал вывода заявок на биржу и просмотреть как они исполнились.&lt;/p&gt;
&lt;p&gt;Спасибо за внимание&lt;/p&gt;
</content>
  </entry>
</feed>