﻿<?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=community&amp;page=164</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-15T17:08:19Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=community&amp;page=164" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3512/</id>
    <title type="text">Добавление окон/закладок в quik из *.wnd</title>
    <published>2013-03-27T06:28:40Z</published>
    <updated>2013-03-27T06:28:40Z</updated>
    <author>
      <name>Default</name>
      <uri>https://stocksharp.ru/users/28859/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Здравствуйте, подскажите кто знает, как в квик добавлять новые закладки из настроек *.wnd чтобы все мои текущие закладки не закрывались? Вроде покопался в настройках - не помогло, в интернете тоже найти не удалось, но вроде как такое точно можно как-то делать.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3511/</id>
    <title type="text">Ошибки версии 4.1.9.0</title>
    <published>2013-03-27T03:08:43Z</published>
    <updated>2013-03-27T03:08:43Z</updated>
    <author>
      <name>anothar</name>
      <uri>https://stocksharp.ru/users/6089/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Во-первых логи за прошлый день блокируются-видимо не вызывается метод Stream.Close() или Stream.Dispose().&lt;br /&gt;&lt;br /&gt;Во-вторых получил ошибку с запущенным логом ордеров.&lt;br /&gt;20:31:53.710|Error  |Plaza     |System.OverflowException: Value was either too large or too small for an Int32.&lt;br /&gt;   at System.Decimal.ToInt32(Decimal d)&lt;br /&gt;   at #=q0JgtHapkQYVTtjYP4wglPcxXXR$qpqI2YyQUMUIeKfl3pBiW9yzWmHamsipnprlEAGxUbrQHQa3wGKa$CHp$ew==.#=qZ8txTqPxm$3Izhd5wOaN6w==(List`1 #=qLuAHYj2ZioycrX0Q58zU3w==, Decimal #=qy_XsUwIjI1QvjbZZrQ1kfA==, Decimal #=qW7QLBQGC0s3hC5zqjIk0Og==, Decimal #=qFMFwZ93ndDt9Cq4w254rpw==, Security #=qfZKZC7pct33NRrzgjOsjyQ==)&lt;br /&gt;   at #=qqw7DKb0POrTz7KKXPbljaw$Zha1SNWzNniKKSfqxMwkB_gkByF54uJCH2CLpcUSGxXLTUMrlzOPkPVeDBNSk7w==.#=qN2dIwjvbTn9r5Pta1FHxww==(List`1 #=qlludmflDZI3Dze7nj01y8A==, #=qNG6quPhNTeA_lNcDEZ8_5cvZ7udeZdMO47P2O8amgZXExIxE092OY3IIN7hfCOZ3 #=q44J$W7oJoGpEQKDT6WuHqQ==, Decimal #=qKmA6ze_0Yaw2hShe$9Msfw==)&lt;br /&gt;   at #=qqw7DKb0POrTz7KKXPbljaw$Zha1SNWzNniKKSfqxMwkB_gkByF54uJCH2CLpcUSGxXLTUMrlzOPkPVeDBNSk7w==.#=qb3T0sxGq$bdXcycmB9uU1g==(List`1 #=qbUFe_5fmUeWqYTD0qRKlhQ==, IEnumerable`1 #=qf_O63ObMrcG03DgKtFfr9g==, #=qNG6quPhNTeA_lNcDEZ8_5cvZ7udeZdMO47P2O8amgZXExIxE092OY3IIN7hfCOZ3 #=qBkx0y9TbqqKvMF$BaHPlzw==)&lt;br /&gt;   at #=qX3OhqnqEph0ylOwbVoprdX1srcF9c1dB41xXyq_36B$gtMqbwjnZkBLdMpYtoq$m2UnoFQDQbQnXu54FK8CNkQ==.#=qh29W$pKHIJEWmJ4aKOg5GCTNW0GslrtHpop_s9Zn8TY7lyipPMllUA9LfaSL$65dW1upcDDT4h7aAUfgZW27UTt22P4stVLZ5c2sj7YSrYw=(IEnumerable`1 #=qM9aViFL9FoUaYNPAR5EQlA==, #=q0bq_6wFeov3yOJgLnRCzVYciLR61z4kiqIDegOgdjT_6YhdC39n1i52D13DO2Zni #=qDmyCChG2SZl8AtrZxGiRmQ==)&lt;br /&gt;   at #=qh5OubS5xh7gDG0OMHR6nr3xXWKlov18A9WtmobPOhe_Xz4uoUAby0kkPNddHxzlD.#=qAxHlRi3Qu5eEZW_GARHtnQ==(DateTime #=qYB91FhjvypjkV7xJrom9WA==, #=qUr_tkAJI830yhtJ6qYEFuw==[] #=qJdAKS46m$Z4abi$aKMTb9w==, Boolean #=qesUgx5yQgapqJyZDVBv_iA==)&lt;br /&gt;   at #=qh5OubS5xh7gDG0OMHR6nr3xXWKlov18A9WtmobPOhe_Xz4uoUAby0kkPNddHxzlD.Save(IEnumerable`1 #=qzmfQtwAVRU8lELgisTmWCg==)&lt;br /&gt;   at StockSharp.Hydra.Core.BaseMarketDataSource.SaveSecurityChanges(Security security, IEnumerable`1 changes, Boolean raiseDataLoadedEvent) in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\BaseMarketDataSource.cs:line 306&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource`1.SaveValues[T](IDictionary`2 data, Func`1 getNewValues, Func`4 saveValues) in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\TraderMarketDataSource.cs:line 111&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource`1.ProcessNewData() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\TraderMarketDataSource.cs:line 122&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource`1.Load() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\TraderMarketDataSource.cs:line 104&lt;br /&gt;   at StockSharp.Hydra.Plaza.PlazaTraderSource.Load() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Plugins\Plaza\PlazaTraderSource.cs:line 102&lt;br /&gt;   at StockSharp.Hydra.Worker.Downloader.Download() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Hydra\Worker.cs:line 172&lt;br /&gt;&lt;br /&gt;В третьих вот еще одна ошибка&lt;br /&gt;17:27:55.228|Error  |Plaza     |System.ArgumentOutOfRangeException: Неправильная цена сделки 127805965.&lt;br /&gt;Parameter name: trades&lt;br /&gt;Actual value was 0.&lt;br /&gt;   at #=q9O6X$zb$S4eKJ_y59En3VZz1vcJyln5tGtg1sD7cPjMKCM5CXXwdOOJNPXRYxO_r.#=qb3T0sxGq$bdXcycmB9uU1g==(List`1 #=qCt6cS37Asw12_NaITHPB1g==, IEnumerable`1 #=qNMh47e2bHQJYJ_c$5ahapg==, #=qjKzL3$3_NePBk1jCt_Qq7j_tSVec_RcqQKJ9oUQR$zvY_ItSdhC9wfqvL_$KKb3j #=q8f8ZgEWBHxa0JNL3I7gGZA==)&lt;br /&gt;   at #=qX3OhqnqEph0ylOwbVoprdX1srcF9c1dB41xXyq_36B$gtMqbwjnZkBLdMpYtoq$m2UnoFQDQbQnXu54FK8CNkQ==.#=qh29W$pKHIJEWmJ4aKOg5GCTNW0GslrtHpop_s9Zn8TY7lyipPMllUA9LfaSL$65dW1upcDDT4h7aAUfgZW27UTt22P4stVLZ5c2sj7YSrYw=(IEnumerable`1 #=qM9aViFL9FoUaYNPAR5EQlA==, #=q0bq_6wFeov3yOJgLnRCzVYciLR61z4kiqIDegOgdjT_6YhdC39n1i52D13DO2Zni #=qDmyCChG2SZl8AtrZxGiRmQ==)&lt;br /&gt;   at #=qh5OubS5xh7gDG0OMHR6nr3xXWKlov18A9WtmobPOhe_Xz4uoUAby0kkPNddHxzlD.#=qAxHlRi3Qu5eEZW_GARHtnQ==(DateTime #=qYB91FhjvypjkV7xJrom9WA==, #=qUr_tkAJI830yhtJ6qYEFuw==[] #=qJdAKS46m$Z4abi$aKMTb9w==, Boolean #=qesUgx5yQgapqJyZDVBv_iA==)&lt;br /&gt;   at #=qh5OubS5xh7gDG0OMHR6nr3xXWKlov18A9WtmobPOhe_Xz4uoUAby0kkPNddHxzlD.Save(IEnumerable`1 #=qzmfQtwAVRU8lELgisTmWCg==)&lt;br /&gt;   at StockSharp.Hydra.Core.BaseMarketDataSource.SaveTrades(Security security, IEnumerable`1 trades, Boolean raiseDataLoadedEvent) in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\BaseMarketDataSource.cs:line 243&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource`1.SaveValues[T](IDictionary`2 data, Func`1 getNewValues, Func`4 saveValues) in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\TraderMarketDataSource.cs:line 111&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource`1.ProcessNewData() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\TraderMarketDataSource.cs:line 119&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource`1.Load() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Core\TraderMarketDataSource.cs:line 104&lt;br /&gt;   at StockSharp.Hydra.Plaza.PlazaTraderSource.Load() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Plugins\Plaza\PlazaTraderSource.cs:line 102&lt;br /&gt;   at StockSharp.Hydra.Worker.Downloader.Download() in e:\StockSharpReleases\StockSharp_4.1.9\Hydra\Hydra\Worker.cs:line 172&lt;br /&gt;Она кстати и в других версиях гидры была</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3510/</id>
    <title type="text">e Trade</title>
    <published>2013-03-26T19:39:45Z</published>
    <updated>2013-03-26T19:39:45Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">&lt;iframe width="640" height="390" src="//www.youtube.com/embed/Eu3AVk60Drw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3509/</id>
    <title type="text">Несколько стратегий через quik</title>
    <published>2013-03-26T17:04:16Z</published>
    <updated>2013-03-26T17:04:16Z</updated>
    <author>
      <name>Макс</name>
      <uri>https://stocksharp.ru/users/6040/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Как запускать несколько стратегий через quik ?&lt;br /&gt;Если мне надо поправить одну, то приходиться все выключать и перезапускать после правки.&lt;br /&gt;2-й quik не выход т.к. если будет 3-4 стратегии.&lt;br /&gt;&lt;br /&gt;Есть какие то варианты, чтобы можно было остановить одну стратегию, ее поправить и перезапустить в то время как остальные продолжают работать?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3508/</id>
    <title type="text">Одновременно выставление заявок</title>
    <published>2013-03-26T14:57:03Z</published>
    <updated>2013-03-26T14:57:03Z</updated>
    <author>
      <name>qpile</name>
      <uri>https://stocksharp.ru/users/6397/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="AlfaDirect" />
    <content type="html">Попытался выставить 3 заявки одновременно. Выставляется, то одна, то две в систему. С чем это связано?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3507/</id>
    <title type="text">Заявки без портфеля (Quik, Частный случай)</title>
    <published>2013-03-26T14:28:52Z</published>
    <updated>2013-03-26T14:28:52Z</updated>
    <author>
      <name>dec99</name>
      <uri>https://stocksharp.ru/users/26939/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">Помогите с проблемкой.&lt;br /&gt;&lt;br /&gt;Покупка , продажа происходит через Quik без портфеля. &lt;br /&gt;CLIENT_CODE= - пустой&lt;br /&gt;&lt;br /&gt;Это уходит на TRANS2QUIK&lt;br /&gt;ACCOUNT=S01-00000F00;CLIENT_CODE=;TYPE=L;TRANS_ID=59258283;CLASSCODE=EQBR;SECCODE=SBER;ACTION=NEW_ORDER;OPERATION=S;PRICE=97.19;QUANTITY=1;&lt;br /&gt;&lt;br /&gt;Что нужно поменять в портфеле перед созданием заявок, что бы пропускало? И работали дочерние стратегии.&lt;br /&gt;&lt;br /&gt;С уважением Олег</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3505/</id>
    <title type="text">Гидра формирует кривые свечки?</title>
    <published>2013-03-26T12:48:49Z</published>
    <updated>2013-03-26T12:48:49Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.ru/users/6174/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">или я чего-то не понимаю... &lt;br /&gt;&lt;br /&gt;15 минутные:&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADyMdwVgy40oA0PybopSJgUPN4lmZ3a3oFmQQKec6uEa1Sqr-5TPU-3cUjkKsipxuTAuFUPO0bNDV0rBxWu1V0H" title="http://gyazo.com/e23af51eede79c2930b9e5270edd389e"&gt;15min&lt;/a&gt;&lt;br /&gt;лишняя свечка в конце дня.  &lt;br /&gt;&lt;br /&gt;часовые:&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADyMdwVgy40oA0PybopSJgUaS--aXyQkRs0ToatS9-zRTBSU9fXPCOH3XCNCrV3-RVSauq0C8Z2-iI-bIZgNxCY" title="http://gyazo.com/a03214f5b1d75f8352ac28d4851159ce"&gt;час&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;лишняя в конце дня, плюс свечка с окончанием в 18.45 отображается с временем окончания 18  и OHLC одинаковые...&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3504/</id>
    <title type="text">Как узнать цену закрытия предыдущего дня</title>
    <published>2013-03-26T09:58:04Z</published>
    <updated>2013-03-26T09:58:04Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Хочется отслеживать изменение текущей цены от закрытия последнего дня, т. е. Close свечки в 23:45.&lt;br /&gt;Есть ли удобный инструмент для данной операции. Или единственный нормальный способ - это вводить переменную, которая будет забирать Close свечи каждый раз в 23:45 и на следующий день от нее искать разницу?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3503/</id>
    <title type="text">Пропуски свечек в SciChart</title>
    <published>2013-03-26T09:22:20Z</published>
    <updated>2013-03-26T09:22:20Z</updated>
    <author>
      <name>akoz</name>
      <uri>https://stocksharp.ru/users/26817/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <content type="html">Добрый день.&lt;br /&gt;&lt;br /&gt;Как можно сделать в SciChart пропуски для свечек, если их действительно не было в некоторые периоды?&lt;br /&gt;По умолчанию рисуются все свечки одна за другой без пропусков, даже если между ними был временной разрыв. Из-за этого в одном окне невозможно 2 графика строить, т.к. они по времени не синхронизируются из-за пропусков свечек.&lt;br /&gt;&lt;br /&gt;В Chart есть свойство IsIndexed, а в SciChart ничего такого нет.&lt;br /&gt;Подскажите как быть, плз.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3502/</id>
    <title type="text">Корректная работа с событийной моделью на примере простого алгоритма</title>
    <published>2013-03-25T19:31:50Z</published>
    <updated>2013-03-25T19:31:50Z</updated>
    <author>
      <name>Андрей Шабанов</name>
      <uri>https://stocksharp.ru/users/16691/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Доброго времени суток. Начал знакомиться с событийной моделью в S#.&lt;br /&gt;Чтобы разобраться как все работает решил реализовать простой алгоритм, который выглядит следующим образом.&lt;br /&gt;На вход дается два параметра CurrentMidPrice и Step.&lt;br /&gt;Робот выставляет две заявки на куплю и на продажу (по цене CurrentPrice+Step и СurrentPrice-Step)&lt;br /&gt;Далее если произошла сделка на покупку то оставшаяся заявка снимается, CurrentPrice-=Step и алгоритм повторяется. Если произошла сделка на продажу то CurrentPrice+=Step соответственно.&lt;br /&gt;&lt;br /&gt;В моем понимании код стратегии выглядит примерно так:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

 class Mesh:Strategy
    {
        public decimal Step;
        public decimal CurrentMidPrice;
    
        protected override void OnStarted()
        {
           Security.WhenMarketDepthChanged()
               .Do(() =&amp;gt; SetBidAskOrders(CurrentMidPrice))
                    .Once().Apply(this);
            base.OnStarted();
        }

        public void SetBidAskOrders(decimal price)//выставляем спред шириной 2*Step вокруг цены price
        {
            var h = new SyncObject();
            CancelActiveOrders();
            var sellOrder = this.CreateOrder(OrderDirections.Sell, price + Step);
            var buyOrder = this.CreateOrder(OrderDirections.Buy, price - Step);
            sellOrder.WhenNewTrades()
                     .Sync(h)
                     .Do(t =&amp;gt;
                         {
                             CurrentMidPrice += Step;
                             SetBidAskOrders(CurrentMidPrice);
                         })
                     .Once().Apply(this);

            buyOrder.WhenNewTrades()
                    .Sync(h)
                    .Do(t =&amp;gt;
                        {
                            CurrentMidPrice -= Step;
                            SetBidAskOrders(CurrentMidPrice);
                        })
                    .Once().Apply(this);
            lock (h)
            {
                RegisterOrder(sellOrder);
                RegisterOrder(buyOrder);
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Теперь суть вопроса. В целом алгоритм работает  как ему и положено но если выставить Step=минимальный шаг цены то из-за задержек. В какой-то момент он начинает множить заявки выставлять по 2-3 спреда и не отменять те заявки которые висят в терминале. Хотя CancelOrders ему полагается делать на каждую сделку.&lt;br /&gt;&lt;br /&gt;Очевидно можно вводить флаги и останавливать работу всего алгоритма пока мы на каждый чих не получим возвратный чих от биржи, но я хотел бы в столь простом учебном примере обойтись без лишних костылей. вопрос какие вообще существуют пути решения проблемы транзакционости и синхронизации в такого рода роботах. Надо усложнять код или может я что-то проглядел в документации/подходах.&lt;br /&gt;&lt;br /&gt;Спасибо.&lt;br /&gt;(проверял на тестовом квике, есть плаза и это первое решение естественно но она не решает проблему устойчивости событийного алгоритма к задержкам)</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3501/</id>
    <title type="text">Как выставлять заявки сразу по нескольким инструментам</title>
    <published>2013-03-25T19:20:01Z</published>
    <updated>2013-03-25T19:20:01Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Где можно прочитать, - каким образом работать в рамках одной стратегии с несколькими инструментами?&lt;br /&gt;Слышал, что делается это через BasketSecurity, но какой-либо другой информации не нашел.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3500/</id>
    <title type="text">MarketRule1.And(MarketRule2) как работает?</title>
    <published>2013-03-25T18:24:37Z</published>
    <updated>2013-03-25T18:24:37Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.ru/users/16669/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Как работает комбинация правил MarketRule1.And(MarketRule2).Do(smth)? Она сработает сразу как только выполнятся оба правила? Не важно в каком порядке? И теоретически может быть, что к моменту срабатывания комбинации одно из двух правил может сработать несколько раз? Если да, то лечится так: MarketRule1.Once().And(MarketRule2.Once()).Do(smth)? Спасибо.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3499/</id>
    <title type="text">В RealTimeEmulationTrader не происходят сделки</title>
    <published>2013-03-25T13:00:59Z</published>
    <updated>2013-03-25T13:00:59Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Специально для проверки StopLossStrategy кидаю лимитки близко к спреду. Но сделки, судя по логу, не происходят.&lt;br /&gt;Что-то делаю не так?&lt;br /&gt;&lt;br /&gt;Лог файл&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:59:00.104 |            | Правило &amp;#39;Интервал 00:01:00 (0x1C4D180)&amp;#39;. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:54:53.440 |            | Переход из состояния Stopped в Started.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:54:53.442 |            | Стратегия запущена. [0,-1]. Позиция при старте 0.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.039 |            | Правило &amp;#39;Интервал 00:01:00 (0x1C4D180)&amp;#39;. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.064 |            | Регистрация новой Limit (0x31AE540) заявки на Buy с ценой 9847 и объемом 1. 
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.112 |            | Правило &amp;#39;Полное исполнение  60886354/0 (0x36B20B7)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.113 |            | Правило &amp;#39;Отмена заявки  60886354/0 (0x283D6C)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.113 |            | Правило &amp;#39;Ошибка регистрации заявки  60886354/0 (0x271D65F)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.062 |            | Правило &amp;#39;Интервал 00:01:00 (0x1C4D180)&amp;#39;. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.063 |            | Регистрация новой Limit (0xEB7DE3) заявки на Buy с ценой 9841 и объемом 1. 
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.064 |            | Правило &amp;#39;Полное исполнение  60886355/0 (0x4D82E1)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.064 |            | Правило &amp;#39;Отмена заявки  60886355/0 (0x86693B)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.064 |            | Правило &amp;#39;Ошибка регистрации заявки  60886355/0 (0x2874BB6)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило &amp;#39;Интервал 00:01:00 (0x1C4D180)&amp;#39;. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Регистрация новой Limit (0x3F13BE6) заявки на Buy с ценой 9845 и объемом 1. 
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило &amp;#39;Полное исполнение  60886356/0 (0xCEF4B6)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило &amp;#39;Отмена заявки  60886356/0 (0x17B6DE0)&amp;#39;. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило &amp;#39;Ошибка регистрации заявки  60886356/0 (0xDC417)&amp;#39;. Подписалось на события.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Код стратегии&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

using System;
using System.Globalization;
using System.Windows;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ecng.Collections;
using Ecng.Xaml;

using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Candles;
using System.Threading;
using StockSharp.BusinessEntities;


namespace Spikes_Test_it
{
    internal class RobotStrategy : TimeFrameStrategy
    {
        private readonly CandleManager _candleManager;  //Менеджер свечей

        private readonly CandleSeries _candleSeries;    //Свечи

        private DateTime _nextTime;                     

        private decimal _delta;

        private readonly decimal _deltaPercent;

        private decimal _stopLoss;

        private readonly decimal _stopLossPercent;

        public RobotStrategy(CandleManager candleManager, CandleSeries candleSeries, decimal deltaPercent, decimal stopLossPercent, TimeSpan timeFrame)
            : base(timeFrame)
        {
            _candleManager = candleManager;

            _candleSeries = candleSeries;

            _deltaPercent = deltaPercent;

            _stopLossPercent = stopLossPercent;
            
        }


        /// &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.ProcessStates.Started&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        protected override void OnStarted()
        {

            //Вычисляем время окончания текущей свечки
            _nextTime = Interval.GetCandleBounds(base.Trader.GetMarketTime(Exchange.Me)).Max;
            
            Thread.Sleep(_nextTime - base.Trader.GetMarketTime(Exchange.Me));

            base.OnStarted();
        }


        protected override ProcessResults OnProcess()
        {
            //Если наша стратегия в процессе остановки 
            if (base.ProcessState == ProcessStates.Stopping)
            {
                //Отменяем активные заявки 
                CancelActiveOrders();

                //Так как все активные заявки гарантированно были отменены, то возвращаем ProcessResults.Stop 
                return ProcessResults.Stop;
            }
            
            
            //Событие обработки торговой стратегии вызвалось в первый раз, что раньше, чем окончания текущей свечки 
            if (Trader.GetMarketTime(Exchange.Me) &amp;lt; _nextTime)
            {
                
                //Возвращаем ProcessResults.Continue, так как наш алгоритм еще не закончил свою работу, а просто ожидает следующего вызова. 
                return ProcessResults.Continue;
                
            }
             
            //Получаем сформированную свечку
            var candle = _candleSeries.GetTimeFrameCandle(_nextTime-TimeFrame);
            
            //если свечки не существует (не было ни одной сделке в тайм-фрейме), то ждем окончания следующей свечки. 
            if (candle == null)
            {
                // если прошло больше 10 секунд с момента окончания свечки, а она так и не появилась, 
                // значит сделок в прошедшей 5-минутке не было, и переходим на следующую свечку 
                if ((this.GetMarketTime() - _nextTime) &amp;gt; TimeSpan.FromSeconds(10))
                    _nextTime = TimeFrame.GetCandleBounds(Trader.GetMarketTime(Exchange.Me)).Max;
                
                return ProcessResults.Continue;
            }
            
            _nextTime += TimeFrame;

            //Создаем заявку
            var order = this.CreateOrder(OrderDirections.Buy, candle.ClosePrice - 3, Volume);

            //Регистрируем правило, отслеживающее появление новых сделок, осуществленных трейдером
            Trader
                .WhenNewMyTrades()
                .Do(OnNewMyTrades)
                .Apply(this);

            RegisterOrder(order);

            return ProcessResults.Continue;
        }

        protected override void OnNewMyTrades(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
        {
            //Для каждой сделки добавляем защитную стоп-лосс стратегию
            var protectiveStrategies = trades.Select(t =&amp;gt;
                                                         {
                                                             MessageBox.Show(&amp;quot;Идентификатор сделки: &amp;quot; +
                                                                             t.Trade.Id.ToString(
                                                                                 CultureInfo.InvariantCulture));
                _stopLoss = t.Trade.Price * _stopLossPercent/100;
                //Выставляем стоп-лосс 2% от цены входа
                var stopLossStrategy = new AutoProtectiveStrategy
                                           {
                                               StopLossLevel = _stopLoss,
                                               //TakeProfitTimeOut = TimeSpan.FromMinutes(TimeFrame.Minutes*2)
                                               TakeProfitTimeOut = TimeSpan.FromSeconds((_nextTime+TimeFrame+TimeFrame).Second-t.Trade.Time.Second)
                                           };
                MessageBox.Show(stopLossStrategy.TakeProfitTimeOut.ToString());
                return stopLossStrategy;
            });

            ChildStrategies.AddRange(protectiveStrategies);
            
            base.OnNewMyTrades(trades);
        }


    }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3498/</id>
    <title type="text">Как заставить TimeFrameStrategy стартовать с начала свечки</title>
    <published>2013-03-25T09:48:31Z</published>
    <updated>2013-03-25T09:48:31Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Есть TimeFrameStrategy. Хочется, чтобы как в WealthLab&amp;#39;е обработка входящей информации происходила после формирования соответствующей таймфрейму свечи.&lt;br /&gt;Но, если запускать стратегию в любой момент времени, то, она начинает обрабатывать информацию исходя и этого времени.&lt;br /&gt;Т. е., если запустили в 12:45:30, то следующая итерация пойдет с 12:46:30(для минуток).&lt;br /&gt;А хочется, чтобы, следующая итерация началась именно в 12:46:00 и последующие стартовали соответственно в 12:47:00, 12:48:00 итд.&lt;br /&gt;Подскажите, пожалуйста, как это реализовать?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3497/</id>
    <title type="text">Чат. Реинкарнируем идею?</title>
    <published>2013-03-24T22:41:13Z</published>
    <updated>2013-03-24T22:41:13Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">И так, прошла неделя с того времени, как чат алго трейдеров умер. Собственно, помер он еще пол года назад, когда его перестали модерировать, и ушел костяк.&lt;br /&gt;&lt;br /&gt;Я по своей природе не могу сдаться, и хочу все таки восстановить идею совместного, пусть не ко-воркинга, но обсуждения алго идей. Но в начале приведу некоторые пункты, которые должны быть сделаны (и которые были не сделаны в первом чате, из-за чего тот и скоропостижно скончался).&lt;br /&gt;&lt;br /&gt;1. Нужно четко разделить тематику. Потому что в чате писали на разные темы. Есть темы связанные с реализацией роботов. Есть темы связанные с анализом торговых идей. Есть темы связанные больше с математикой (квант анализ), который по сути не так уж близок к алго трейдингу. Это все нужно разделять.&lt;br /&gt;&lt;br /&gt;2. Нужна модерация. Причем жесткая. Троллинг недопустим. Понятно, что все мы люди и хотим показать свое острословие, но чат должен содержать только ту инфомрацию, ради которой он был создан. Личное мое мнение - пускай лучше в чате пишут несколько раз в неделю, чем флудят без остановки каждую минуту.&lt;br /&gt;&lt;br /&gt;3. Оффтоп нужен. Пусть это и покажется противоположным пункту 2, но он действительно нужен. Хотя бы поделиться своей радостью. Не всегда друзья-родственники-соседи смогут понять рыночный успех (если, конечно, им с этого ничего не переподает [wink]).&lt;br /&gt;&lt;br /&gt;4. Нужно рецензирование контекста с целью сохранения идей на постоянный носитель. В чате все быстро уходит в никуда.&lt;br /&gt;&lt;br /&gt;Скажем так, это пункты своеобразного требования. Предлагаю из обсудить и подумать, как это можно воплотить в жизнь организационно и технически.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3496/</id>
    <title type="text">Не работает стратегия Stoploss при тестировании на истории.</title>
    <published>2013-03-24T20:01:31Z</published>
    <updated>2013-03-24T20:01:31Z</updated>
    <author>
      <name>Gii</name>
      <uri>https://stocksharp.ru/users/5912/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Добрый день!&lt;br /&gt;Столкнулся с проблемой, не работает Protective стратегия Stoploss, при тестировании на истории. Проверял с библиотеками &amp;quot;Stock Sharp&amp;quot;  4.1.6, 4.1.8,4.1.9.&lt;br /&gt;Хотелось бы узнать, кто-нибудь использовал &amp;quot;Stoploss&amp;quot; с &amp;quot;EmulationTrader&amp;quot;, если да, то в какой версии &amp;quot;Stock Sharp&amp;quot; &amp;quot;Stoploss&amp;quot; работает?&lt;br /&gt;&lt;br /&gt;Прилагается:&lt;br /&gt;1. Тест &amp;quot;Stoploss&amp;quot; стратегии - &amp;quot;Stock Sharp v4.1.9&amp;quot;.&lt;br /&gt;2. Лог стратегии.&lt;br /&gt;&lt;br /&gt;С уважением Игорь.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3494/</id>
    <title type="text">Во время переподключения к квику вылетает ошибка</title>
    <published>2013-03-23T23:06:36Z</published>
    <updated>2013-03-23T23:06:36Z</updated>
    <author>
      <name>Yegor Hi And</name>
      <uri>https://stocksharp.ru/users/6061/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Когда переподключается коннектор возникает сообщение об ошибке что колонки таблиц уже добавлены&lt;br /&gt;и действительно при первом подключении добавляются дополнительные колонки :&lt;br /&gt; _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestAskPrice);&lt;br /&gt; _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestBidPrice);&lt;br /&gt;&lt;br /&gt;Как сделать так что-бы не вылетало это &lt;br /&gt;Вся процедура подключения ниже в коде.&lt;br /&gt;Заранее благодарен&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
        {

            var guiListener = new GuiLogListener();

            _logManager.Listeners.Add(guiListener);


            if (_trader == null &amp;amp;&amp;amp; terminals.cbTerminals.Text != &amp;quot;&amp;quot;)
            {

                _trader = new QuikTrader(terminals.cbTerminals.Text) { SupportManualOrders = true };
                _trader.ReConnectionSettings.ExportTimeOutInterval = TimeSpan.FromSeconds(10);
                
                _trader.ReConnectionSettings.WorkingTime = _trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime; //.Test.WorkingTime;//

                _trader.ReConnectionSettings.ConnectionRestored += () =&amp;gt; this.GuiAsync(() =&amp;gt; 
                    {
                        //MessageBox.Show(this, &amp;quot;Соединение восстановлено&amp;quot;);
                        connect_disconect(&amp;quot;connected&amp;quot;);
                        start_copy();
                    }
                    );
                _trader.ReConnectionSettings.IsReStartExport = true;
                _trader.ConnectionError += error =&amp;gt; this.GuiAsync(() =&amp;gt; MessageBox.Show(this, error.ToString()));

                //_trader.Disconnected += new Action(_trader_Disconnected);

                Q_path = terminals.cbTerminals.Text;

                _trader.Connected += () =&amp;gt;
                {

                    try
                    {

                        _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestAskPrice);
                        _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestBidPrice);

                        //lbConn.Content = &amp;quot;1&amp;quot;;

                        _trader.StartExport();

                        if (SelectedPortfolio != null &amp;amp;&amp;amp; SelectedSecurity != null)//SelectedPortfolio
                        {
                            var myposition = _trader.GetPosition(SelectedPortfolio, SelectedSecurity).CurrentValue;
                           
                            this.GuiAsync(() =&amp;gt;
                            {
                                lbCPose2.Content = myposition;
                                
                            });

                        }

                    }//try
                    catch (Exception ee)
                    {

                        MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 1 &amp;quot; + ee.ToString());

                    }

                };

                

                
                _trader.NewSecurities += securities =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    try
                    {
                        cbSecuritites.ItemsSource = _trader.Securities;
                        cbSecuritites.SelectedIndex = 0;
                       
                    }//try
                    catch (Exception ee)
                    {
                        MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 2 &amp;quot; + ee.ToString());
                       

                        connect_disconect(&amp;quot;0&amp;quot;);

                    }

                });


                _trader.SecuritiesChanged += security =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    try
                    {
                        if (_trader != null)
                        {
                            cbSecuritites.ItemsSource = _trader.Securities;

                            if (SelectedSecurity != null)
                            {

                                label2.Content = SelectedSecurity.BestBid.Price.ToString();
                                lbBestAsk.Content = SelectedSecurity.BestAsk.Price.ToString();
                            }
                        }
                    }//try
                    catch (Exception ee)
                    {

                        if (_trader != null)
                        {
                            MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 2.1 &amp;quot; + ee.ToString());

                            connect_disconect(&amp;quot;0&amp;quot;);

                        }
                    }

                });

                _trader.NewPortfolios += portfolios =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    try
                    {
                        Portfolios.ItemsSource = _trader.Portfolios; //cbSecuritites.ItemsSource = _trader.Securities;//  _trader.StartExport();
                        Portfolios.SelectedIndex = 1;
                        if (SelectedPortfolio != null)// &amp;amp;&amp;amp; SelectedSecurity != null)//SelectedPortfolio SelectedSecurity);//
                        {
                            //  _trader.RegisterMarketDepth(SelectedSecurity);
                        }
                        //lbConnected.Content = &amp;quot;Connected&amp;quot;;
                        connect_disconect(&amp;quot;connected&amp;quot;);
                        tbVolume.Text = &amp;quot;1&amp;quot;;
                        //tbDelta.Text = &amp;quot;0&amp;quot;;
                        btConnect.Background = default_but_color;
                        // Connect_.Background = default();//    System.Windows.Media.LinearGradientBrush;// Brushes.LightPink;
                        // register_MDs();
                    }//try
                    catch (Exception ee)
                    {
                        MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 3 &amp;quot; + ee.ToString());
                    }

                });


                _trader.PositionsChanged += positions =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    //конркетная позиция по конкретному портфелю инструменту
                    if (SelectedPortfolio != null &amp;amp;&amp;amp; SelectedSecurity != null)//SelectedPortfolio
                    {
                        var myposition = positions.FirstOrDefault(p =&amp;gt; p.Portfolio == SelectedPortfolio &amp;amp;&amp;amp; p.Security == SelectedSecurity);//SelectedPortfolio
                        if (myposition != null)
                        {
                            lbCPose2.Content = myposition.CurrentValue;
                            //on_change_pose();
                        }

                    }

                });

                try
                {
                    _trader.Connect();
                }//try
                catch (Exception ee)
                {
                    MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 5&amp;quot; + ee.ToString());
                    // return;
                }

                _trader.ConnectionError += errror =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    if (_trader != null)
                    {
                       // _trader.Dispose();
                        connect_disconect(&amp;quot;0&amp;quot;);
                        //_trader = null;
                        //clear_all();
                    }
                });

            }
            else
            {
                if (_trader != null &amp;amp;&amp;amp; _trader.IsConnected)
                {
                   // if (_trader != null)  _trader.Dispose();
                    connect_disconect(&amp;quot;0&amp;quot;);
                   // _trader = null;
                    clear_all();
                }
            }
           

        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3492/</id>
    <title type="text">У кого-нибудь получалось в Quik&amp;apos;е изменить заявку?</title>
    <published>2013-03-23T09:37:12Z</published>
    <updated>2013-03-23T09:37:12Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Изменяю заявку через метод ReRegisterOrder.&lt;br /&gt;Почему-то ничего не происходит.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3491/</id>
    <title type="text">Как в Strategy задать количество контрактов по инструенту</title>
    <published>2013-03-22T08:23:30Z</published>
    <updated>2013-03-22T08:23:30Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Указывая Strategy.Volume = 2, стратегия выставляет заявки на 1 контракт.&lt;br /&gt;Я правильно понимаю, что Volume это количество денег используемых под заявку? Тогда понятно почему 1 контракт.&lt;br /&gt;&lt;br /&gt;Но как задавать тогда конкретно количество контрактов?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3490/</id>
    <title type="text">Как узнать ГО по инструменту</title>
    <published>2013-03-21T21:02:41Z</published>
    <updated>2013-03-21T21:02:41Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Возможно ли, используя средства S#, узнать ГО по фьючерсу, а также количество доступных денежных средств по портфелю?&lt;br /&gt;Можно ли это сделать в Quik и SmartCom?&lt;br /&gt;Ткните носом, пожалуйста, если не сложно. ^^&lt;br /&gt;Спасибо.</content>
  </entry>
</feed>