﻿<?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=174</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-06T02:44:43Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=community&amp;page=174" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3294/</id>
    <title type="text">RawConvertableCandleBuilderSource</title>
    <published>2013-01-13T17:39:24Z</published>
    <updated>2013-01-13T17:39:24Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Подскажите, пожалуйста!&lt;br /&gt; У меня есть готовая коллекция IEnumerable&amp;lt;Candle&amp;gt; Candles, содержащая свечи 10мин. Я хочу их запихнуть в источник.&lt;br /&gt;Как я понимаю это можно сделать через RawConvertableCandleBuilderSource&amp;lt;TSourceValue&amp;gt;. Но как именно это сделать ни где не нашел, ни в документации, ни на форуме. Везде пишут про сделки RawConvertableCandleBuilderSource&amp;lt;Trade&amp;gt;. А что в моем случае писать вместо TSourceValue? &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 cbs = new RawConvertableCandleBuilderSource&amp;lt;Candle&amp;gt;(security, startTime, endTime, Candles);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Выдает исключение:&lt;br /&gt;Вызвано: &amp;quot;Объект должен реализовывать интерфейс IConvertible.&amp;quot; (System.InvalidCastException)	Сообщение об исключении = &amp;quot;Объект должен реализовывать интерфейс IConvertible.&amp;quot;, Тип исключения = &amp;quot;System.InvalidCastException&amp;quot;, Данные среды выполнения Windows для исключения = &amp;quot;&amp;quot;	&lt;br /&gt;&lt;br /&gt;Может кто сталкивался подскажите!&lt;br /&gt;&lt;br /&gt;P.S. С наступающим Старым Новым годом! [biggrin] </content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3293/</id>
    <title type="text">Как устроено тестирование стратегии?</title>
    <published>2013-01-12T22:55:44Z</published>
    <updated>2013-01-12T22:55:44Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.ru/users/16669/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Подскажите пожалуйста такой момент:&lt;br /&gt;&lt;br /&gt;Предположим, я хочу протестировать какую-то стратегию на исторических данных. Создаю эмулятор трейдер, подсасываюсь к сохраненной истории. Запускаю эмулятор трейдер. Если просто его запустить - он пробежится от старт тайма до стоп тайма, отреагировав на все подписанные события (сделки, заявки итп итд) ну и остановится. А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - используй этот же эмулятор трейдер. Запускаю стратегию. Что в этот момент технически происходит? В дополнительном потоке заново запускается эмулятор трейдер от времени старта до стопа, но теперь исполняя стратегию? То есть вопрос больше вот в чем - эмулятор запустить все равно нужно, но важно ли когда я запускаю стратегию? Не получится ли так, что я запускаю стратегию почти одновременно с эмулятором, но чуть позже и она не с старт тайма начинает работать, а с того времени, которое было в эмуляторе на момент запуска стратегии? &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;И еще один вопрос. При тестировании на исторических данных тестер всегда тестирует на стаканах? То есть если я имею из истории - только трейды - он из них постарается сделать стаканы и на них тестировать? Ведь как тестировать на трейдах - непонятно. А если есть ордерлог и трейды - чтобы тестер тестил на стаканах, построенных на ордерлоге, я должен это дополнительно указать - в противном случае он будет стараться строить стаканы по трейдам, так? То есть интересует - как устроены умолчания. Что по умолчанию берется для тестинга - какой тип сохраненной истории.&lt;br /&gt;&lt;br /&gt;Заранее спасибо за ответ.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3292/</id>
    <title type="text">SampleHistoryTestingParallel - как запустить?</title>
    <published>2013-01-11T18:04:06Z</published>
    <updated>2013-01-11T18:04:06Z</updated>
    <author>
      <name>Геннадий Ванин (Gennady Vanin)</name>
      <uri>https://stocksharp.ru/users/6413/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">На всех версиях, начиная с 4.1.5, StockSharp при попытке открыть SampleHistoryTestingParallel выдаются ошибка в MainWindow.xaml  на линии:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:css"&gt;
&amp;lt;my:EquityCurveChart x:Name=&amp;quot;Curve&amp;quot; Grid.Row=&amp;quot;4&amp;quot; Grid.ColumnSpan=&amp;quot;3&amp;quot;  /&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; &lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;При этом, на версиях 4.1.5-4.1.6 картинка ваще не показывается на Design surface&lt;br /&gt;&lt;br /&gt;&lt;a href='http://i.imgur.com/F0fx1.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://i.imgur.com/F0fx1.jpg" style='max-width: 600px;' alt="S# 4.1.5 bug" title="S# 4.1.5 bug" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;на последней версии 22122 уже показывается, &lt;br /&gt;с уже более открытой информацией об ошибке:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;Could not load file or assembly &amp;#39;Microsoft.Practices.Unity, Version=2.1.505.0, Culture=neutral, PublicKeyToken=null&amp;#39; or one of its dependencies. The system cannot find the file specified.&lt;br /&gt;   at &lt;b&gt;Ecng.Configuration.ConfigManager..cctor()&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://i.imgur.com/sBLK9.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://i.imgur.com/sBLK9.jpg" style='max-width: 600px;' alt="StockSharp 22122 error" title="StockSharp 22122 error" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://i.imgur.com/Z1mxv.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://i.imgur.com/Z1mxv.jpg" style='max-width: 600px;' alt="StockSharp 22122 error" title="StockSharp 22122 error" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Самое весёленькое - на скрипте XAML показывается зелёная галочка &lt;br /&gt;&lt;b&gt;&amp;quot;No errors or warnings&amp;quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Как бы мне запустить проект, не потеряв ту самую историческую кривую?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3291/</id>
    <title type="text">При тестировании выдает исключение  ContextSwitchDeadlock was detected</title>
    <published>2013-01-11T09:35:33Z</published>
    <updated>2013-01-11T09:35:33Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.ru/users/6174/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">С тестирование на тиках так и не разобрался из-за переполнения индикаторов...  Пришлось тестировать на реале.&lt;br /&gt;&lt;br /&gt;Теперь к проблеме )))&lt;br /&gt;Тестировал свои стратегии на старых версиях S#.  Все было отлично.  Решил полностью перейти на 4.1.6. Набросал простенькую стратегию на 15мин свечках. Шаблон взял полностью из SampleHistoryTesting. Свечки не рисую.&lt;br /&gt;Начинается тест, первые два дня эквити рисуется достаточно быстро, потом начинает обновляться с интервалом секунд в 5 и в итоге форма вообще зависает, через минуту выскакивает это исключение:&lt;br /&gt;&lt;a href='http://gyazo.com/33487bf9f0488b3202765aa81a7b97c0' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://gyazo.com/33487bf9f0488b3202765aa81a7b97c0" style='max-width: 600px;' alt="Ошибка" title="Ошибка" /&gt;&lt;/a&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:plain"&gt;


 protected override void OnStarted()
        {
            //vcon.Open();
            CommissionRule commissionRule = new CommissionRule { Type = CommissionTypes.PerTradeVolume, Value = new Unit(3m) };
            _commissionManager.Rules.Add(commissionRule);
           
            Sostoyanie = &amp;quot;кэш&amp;quot;;
           
            takeprofit  = decimal.Parse(MainWindow.Instance.takeprofit_form.Text);
            proskalz = decimal.Parse(MainWindow.Instance.proskalz.Text);
            vol_kontr = decimal.Parse(MainWindow.Instance.vol_lotov.Text);
            vcon.Open();
           
            // Создание элемента графика представляющего свечки
            _candlesElem = new ChartCandleElement();
            MainWindow.Instance._area.Elements.Add(_candlesElem);

            //MainWindow.Instance._area_ind.Elements.Add(_longMaElem);
            //MainWindow.Instance._area_ind.Elements.Add(_shortMaElem);

         
            this
                .WhenNewMyTrades()
                .Do(ProcessNewTrades)
                .Apply(this);

            _series
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);
            
            base.OnStarted();
        }

             
        private void ProcessCandle(Candle candle)
        {

          //  if (candle.State == CandleStates.Finished) MainWindow.Instance.GuiAsync(() =&amp;gt; MainWindow.Instance.Chart.ProcessCandle(_candlesElem, candle));
            Indicator.Process(candle.ClosePrice);
            
            MainWindow.Instance.GuiAsync(() =&amp;gt;
            {
                MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
                MainWindow.Instance.pos2_form.Text = Sostoyanie;
                MainWindow.Instance.position_form.Text = Position.ToString();
            });

         
            if (!START)
            {
                if (Indicator.Container.Count &amp;gt; 2)
                {
                    START = true;
                    Security
               .WhenNewTrades()
               .Do(ProcessNewTrade)
               .Apply(this);

                }
            }

        }

        private void Comission_raschet()
        {
            comission = 0;
            foreach (MyTrade trade in MyTrades)
            {
                comission = comission + _commissionManager.ProcessMyTrade(trade);
            }
            //MainWindow.Instance.GuiAsync(() =&amp;gt;
            //{
            //    MainWindow.Instance.comission_form.Text = comission.ToString();
            //});
        }
       
        private void ProcessNewTrade()
        {
            if (Security.LastTrade == null)
            { goto propusk2; }

            if (Security.LastTrade.Time.Hour == 19 &amp;amp;&amp;amp; Security.LastTrade.Time.Minute == 0 &amp;amp;&amp;amp; Security.LastTrade.Time.Second &amp;lt; 10)
            { goto propusk2; }

            switch (Sostoyanie)
            {
                case &amp;quot;кэш&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;Long&amp;quot;;
                            Buy_Order(vol_kontr);
                        }
                        else if (...)
                        {
                            Sostoyanie = &amp;quot;Short&amp;quot;;
                            Sell_Order(vol_kontr);
                        }
                    }
                    break;
                case &amp;quot;Long&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;кэш&amp;quot;;
                            Sell_Order(vol_kontr);
                        }
                    }
                    break;
                case &amp;quot;Short&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;кэш&amp;quot;;
                            Buy_Order(vol_kontr);
                        }
                    }
                    break;
            }

        propusk2:
    
            //MainWindow.Instance.GuiAsync(() =&amp;gt;
            //{

            //    MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
            //    //MainWindow.Instance.now_time.Text = DateTime.Now.ToString();
            //    MainWindow.Instance.pos2_form.Text = pos;
            //    MainWindow.Instance.position_form.Text = Position.ToString();
            //    MainWindow.Instance.komiss_form.Text = comission.ToString();
               
            //});

        }

        private void Buy_Order(decimal volume)
        {

            EntryPrice = Security.LastTrade.Price; ;

            this.AddInfoLog(&amp;quot;Сигнал на покупку&amp;quot;);
            nomersdelki++;
            order_open_long = this.CreateOrder(OrderDirections.Buy, Security.LastTrade.Price + proskalz, volume);
            order_open_long.Security = Security;
            this.RegisterOrder(order_open_long);
            order_open_long
                                .WhenMatched()
                                .Do(pos_change_long)
                                .Apply(this);

            this.AddInfoLog(PnLManager.PnL.ToString());
            //string vsql = string.Format(&amp;quot;insert into Rez2 (nomer_sdelki, data_vxoda,vremya_vxoda, cena_vxoda, High, Low,stop_price) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6})&amp;quot;,
            //          (nomersdelki), (Security.LastTrade.Time.ToString(&amp;quot;dd.MM&amp;quot;)), (Security.LastTrade.Time.ToString(&amp;quot;HH.mmss&amp;quot;)), (order_open_long.Price.ToString()), (candle_high),(candle_low),(stop_price));


            //OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            //vcom.ExecuteNonQuery();
        }


        private void Sell_Order(decimal volume)
        {
            EntryPrice = Security.LastTrade.Price;
            this.AddInfoLog(&amp;quot;Сигнал на продажу&amp;quot;);
            nomersdelki++;
            order_open_short = this.CreateOrder(OrderDirections.Sell, Security.LastTrade.Price - proskalz, volume);
            order_open_short.Security = Security;

            this.RegisterOrder(order_open_short);
            order_open_short
                                .WhenMatched()
                                .Do(pos_change_short)
                                .Apply(this);
            //string vsql = string.Format(&amp;quot;insert into Rez2 (nomer_sdelki, data_vxoda,vremya_vxoda, cena_vxoda, High, Low,stop_price) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6})&amp;quot;,
            //          (nomersdelki), (Security.LastTrade.Time.ToString(&amp;quot;dd.MM&amp;quot;)), (Security.LastTrade.Time.ToString(&amp;quot;HH.mmss&amp;quot;)), (order_open_long.Price.ToString()), (candle_high), (candle_low), (stop_price));
            //OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            //vcom.ExecuteNonQuery();
        }


&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3290/</id>
    <title type="text">HistoryTesting-что нужно инициализировать, чтобы не соединяться к терминалу?</title>
    <published>2013-01-11T06:48:13Z</published>
    <updated>2013-01-11T06:48:13Z</updated>
    <author>
      <name>Геннадий Ванин (Gennady Vanin)</name>
      <uri>https://stocksharp.ru/users/6413/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Только начал разбираться с тестированием на исторических данных&lt;br /&gt;&lt;br /&gt;Пока не нашёл примера - можно ли провести тестирование без соединения к терминалу&lt;br /&gt;И, если можно то, что нужно инициализировать?&lt;br /&gt;&lt;br /&gt;Имеется SampleHistoryTesting, в котором устанавливается соединение с терминалом КВИК и экспортируются все таблицы из КВИК.&lt;br /&gt;Почему нельзя обойтись EmulationTrader - без соединения и экспорта?&lt;br /&gt;&lt;br /&gt;Даже если использовать соединение и экспорт - то, какой минимум таблиц нужен для работы SampleHistoryTesting, чтобы не перегружать компьютер ненужными загрузками?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3289/</id>
    <title type="text">GuiDispatcher.AddPeriodicalAction</title>
    <published>2013-01-10T18:04:14Z</published>
    <updated>2013-01-10T18:04:14Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.ru/users/16669/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <content type="html">Подскажите пожалуйста - как работает GuiDispatcher.AddPeriodicalAction? Судя из названия метода - действие вызывается периодически - но с какой частотой. Пример использования встречается в SampleGui, где с помощью этого метода обновляется информация в открытых стаканах. Логика там, как я понимаю, следующая - ведется два синхронизированных словаря ключ-значение: один - инструмент/окно стакана, другой - рыночный стакан/окно стакана. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;		private readonly SynchronizedDictionary&amp;lt;Security, QuotesWindow&amp;gt; _quotesWindows = new SynchronizedDictionary&amp;lt;Security, QuotesWindow&amp;gt;();&lt;br /&gt;                private readonly SynchronizedDictionary&amp;lt;MarketDepth, QuotesWindow&amp;gt; _changedDepths = new SynchronizedDictionary&amp;lt;MarketDepth, QuotesWindow&amp;gt;(); &lt;br /&gt;&lt;br /&gt;Далее происходит подписка на обновление стаканов trader.MarketDepthsChanged += TraderOnMarketDepthsChanged, и вот совсем мне непонятно, что делается в TraderOnMarketDepthsChanged: &lt;br /&gt;&lt;br /&gt;                private void TraderOnMarketDepthsChanged(IEnumerable&amp;lt;MarketDepth&amp;gt; depths)&lt;br /&gt;		{&lt;br /&gt;			foreach (var depth in depths)&lt;br /&gt;			{&lt;br /&gt;				var wnd = _quotesWindows.TryGetValue(depth.Security);&lt;br /&gt;&lt;br /&gt;				if (wnd != null)&lt;br /&gt;					_changedDepths[depth] = wnd;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;Что тут происходит, как я понимаю: рассматриваем каждый обновившийся стакан и ищем соответствующее ему окно стакана в _quotesWindows: &lt;br /&gt;                               var wnd = _quotesWindows.TryGetValue(depth.Security);&lt;br /&gt;&lt;br /&gt;Далее что происходит в этой строчке: _changedDepths[depth] = wnd; ? Откуда мы знаем, что в словаре _changedDepths есть элемент с ключом depth? И зачем на каждом обновлении стакана depth мы переприсваиваем значение wnd в словаре? Ну и самый главные вопрос - как потом в wnd появляются новые котировки с обновленного depth? Как работает .AddPeriodicalAction?&lt;br /&gt;&lt;br /&gt;Просто я думал логика должна была быть примерно такая - достаточно держать лишь один словарь - _quotesWindows и при получении обновленного MarketDepth - найти соответствующий ему элемент в _quotesWindows и обновить _quotesWindows.Value. Разве не так?&lt;br /&gt;&lt;br /&gt;Я еще только начинаю разбираться в программировании такого уровня, так что сильно не бейте и спасибо за помощь.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3288/</id>
    <title type="text">Не могу понять почему не видно свечей</title>
    <published>2013-01-08T15:49:09Z</published>
    <updated>2013-01-08T15:49:09Z</updated>
    <author>
      <name>RoboKrolik</name>
      <uri>https://stocksharp.ru/users/16730/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Пишу каркас для торговой стратегии.&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;

public partial class MainWindow : Window
    {

        // Объявление переменных
       
        private CandleManager _candleManager; // менеджер свечек

private void Connect_Click(object sender, RoutedEventArgs e)   // жму на кнопку подключения
        {

                _candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера

                _candleManager.Processing += DrawCandle; // подписываемся на событие

private void StartRobo_Click(object sender, RoutedEventArgs e)  // жму на кнопку запуска страты
        {

               CandleSeries series;

                series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);

                _candleManager.Start(series);
                
                Label3.Content = Convert.ToString(series.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(1).ClosePrice);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;При запуске стратегии выскакивает вот такая ошибка&lt;br /&gt;&lt;br /&gt;&lt;b&gt;An unhandled exception of type &amp;#39;System.NullReferenceException&amp;#39; occurred in WpfApplication1.exe&lt;br /&gt;&lt;br /&gt;Additional information: Ссылка на объект не указывает на экземпляр объекта.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Не знаю что и делать. Я так понял что свечи не экспортируются.&lt;br /&gt;&lt;br /&gt;Какой экземпляр я не создал?&lt;br /&gt;&lt;br /&gt;Что делать?&lt;br /&gt;&lt;br /&gt;Код основного окна&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_fa839d8666e34487bc3d2b0531568def');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_fa839d8666e34487bc3d2b0531568def' style='display:none'&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Threading.Tasks;&lt;br /&gt;using System.Windows;&lt;br /&gt;using System.Windows.Controls;&lt;br /&gt;using System.Windows.Data;&lt;br /&gt;using System.Windows.Documents;&lt;br /&gt;using System.Windows.Input;&lt;br /&gt;using System.Windows.Media;&lt;br /&gt;using System.Windows.Media.Imaging;&lt;br /&gt;using System.Windows.Navigation;&lt;br /&gt;using System.Windows.Shapes;&lt;br /&gt;using System.Configuration;&lt;br /&gt;&lt;br /&gt;// using S#&lt;br /&gt;using Ecng.Common;&lt;br /&gt;using Ecng.ComponentModel;&lt;br /&gt;using Ecng.Xaml;&lt;br /&gt;using Ecng.Serialization;&lt;br /&gt;using Ecng.Collections;&lt;br /&gt;using StockSharp.Algo;&lt;br /&gt;using StockSharp.Algo.Indicators;&lt;br /&gt;using StockSharp.Algo.Indicators.Trend;&lt;br /&gt;using StockSharp.Algo.Candles;&lt;br /&gt;using StockSharp.Algo.Strategies;&lt;br /&gt;using StockSharp.BusinessEntities;&lt;br /&gt;using StockSharp.Quik;&lt;br /&gt;using StockSharp.Logging;&lt;br /&gt;using StockSharp.Xaml;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace WpfApplication1&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    public partial class MainWindow : Window&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        // Объявление переменных&lt;br /&gt;&lt;br /&gt;        private QuikTrader _trader;   // квик трейдер&lt;br /&gt;&lt;br /&gt;        private TimeSpan _timeFrame = TimeSpan.FromMinutes(1);  // таймфрейм&lt;br /&gt;        private TimeSpan _timeRefreshStrategy = TimeSpan.FromSeconds(1);  // частота обновления стратегии&lt;br /&gt;        &lt;br /&gt;        int _sharecount; // количество торгуемых контрактов&lt;br /&gt;        private DartWeiderStretegy _strategy; // обявляем стратегию&lt;br /&gt;        &lt;br /&gt;        private Security _security; // инструмент&lt;br /&gt;        private Portfolio _portfolio; // портфель&lt;br /&gt;&lt;br /&gt;        private CandleManager _candleManager; // менеджер свечек&lt;br /&gt;                              &lt;br /&gt;&lt;br /&gt;        public MainWindow()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;          &lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Кнопка &amp;quot;Подключение&amp;quot; - Метод подключения к квику&lt;br /&gt;        private void Connect_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            if (_trader == null)&lt;br /&gt;            {&lt;br /&gt;                _trader = new QuikTrader(QuikTerminal.GetDefaultPath());&lt;br /&gt;&lt;br /&gt;                //Подписываемся на событие появления новых портфелей&lt;br /&gt;                _trader.NewPortfolios += portfolios =&amp;gt; this.GuiAsync(() =&amp;gt; {Portfolios.ItemsSource = _trader.Portfolios;});&lt;br /&gt;&lt;br /&gt;                //Подписываемся на событие появления новых инстументов&lt;br /&gt;                _trader.NewSecurities += securities =&amp;gt; this.GuiAsync(() =&amp;gt; {Securities.ItemsSource = _trader.Securities;});&lt;br /&gt;               &lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                // подключаем квик&lt;br /&gt;                _trader.Connect();&lt;br /&gt;            }&lt;br /&gt;            catch (System.IO.IOException err)&lt;br /&gt;            {&lt;br /&gt;                MessageBox.Show(&amp;quot;Не удается подключиться к квику&amp;quot; + err.Message);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            //Начинаем Экспорт данных&lt;br /&gt;&lt;br /&gt;                _trader.StartExport(); //получение он-лайн данных из квика Инструменты,Заявки , Портфели и так далее&lt;br /&gt;&lt;br /&gt;                _candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера&lt;br /&gt;&lt;br /&gt;                _candleManager.Processing += DrawCandle; // подписываемся на событие&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void DrawCandle(CandleSeries series, Candle candle)&lt;br /&gt;        {&lt;br /&gt;            this.GuiAsync(() =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;              //  _chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);&lt;br /&gt;&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Кнопка &amp;quot;Остановка&amp;quot; - Метод остановки робота&lt;br /&gt;        private void StopRobot_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            if (_trader != null)&lt;br /&gt;            {&lt;br /&gt;                //отключаем экспорт со стакана и останавливаем стратегию&lt;br /&gt;                _trader.UnRegisterMarketDepth(_security);&lt;br /&gt;                if (_strategy.ProcessState == ProcessStates.Started) _strategy.Stop();&lt;br /&gt;                if (_trader.Orders != null) _trader.CancelOrders();&lt;br /&gt;                _trader.StopExport();              &lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Метод на случай закрытия окна робота&lt;br /&gt;        private void ProgramWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            if (_trader != null)&lt;br /&gt;            {&lt;br /&gt;                //отключаем экспорт со стакана и останавливаем стратегию&lt;br /&gt;                _trader.UnRegisterMarketDepth(_security);&lt;br /&gt;                if (_strategy.ProcessState == ProcessStates.Started) _strategy.Stop();&lt;br /&gt;                if (_trader.Orders != null) _trader.CancelOrders();&lt;br /&gt;                _trader.StopExport();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Кнопка &amp;quot;Запуск робота&amp;quot; - метод запуск робота&lt;br /&gt;        private void StartRobo_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            // проверяем подключен ли квик трейдер, задан ли портфель, инструмент&lt;br /&gt;            if (_trader == null)&lt;br /&gt;            {&lt;br /&gt;                MessageBox.Show(&amp;quot;Терминал не задан&amp;quot;);&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (_trader.Portfolios == null)&lt;br /&gt;            {&lt;br /&gt;                MessageBox.Show(&amp;quot;Портфель не задан&amp;quot;);&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (_trader.Securities == null)&lt;br /&gt;            {&lt;br /&gt;                MessageBox.Show(&amp;quot;Инструмент не задан&amp;quot;);&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            // код запуска стратегии&lt;br /&gt;&lt;br /&gt;            if (_strategy == null)&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                CandleSeries series;&lt;br /&gt;&lt;br /&gt;                series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);&lt;br /&gt;&lt;br /&gt;                _candleManager.Start(series);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                Label3.Content = Convert.ToString(series.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(1).ClosePrice);&lt;br /&gt;                &lt;br /&gt;                this.GuiAsync(() =&amp;gt;&lt;br /&gt;                {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                _strategy = new DartWeiderStretegy(_candleManager, _timeFrame)&lt;br /&gt;                {&lt;br /&gt;                    Volume = _sharecount,&lt;br /&gt;                    Security = _security,&lt;br /&gt;                    Portfolio = _portfolio,&lt;br /&gt;                    Trader = _trader,&lt;br /&gt;                    Interval = _timeRefreshStrategy&lt;br /&gt;                };&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;                    &lt;br /&gt;                });&lt;br /&gt;&lt;br /&gt;           &lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            if (_strategy.ProcessState == ProcessStates.Stopped)&lt;br /&gt;            {&lt;br /&gt;                // запускаем процесс получения стакана, необходимый для работы алгоритма котирования&lt;br /&gt;                //_trader.RegisterQuotes(_strategy.Security);&lt;br /&gt;                _trader.RegisterMarketDepth(_security);&lt;br /&gt;                _strategy.Start();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void Securities_SelectionChanged(object sender, SelectionChangedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            string sec = Convert.ToString(Securities.SelectedItem);&lt;br /&gt;            sec = sec.Replace(&amp;quot;@RTS&amp;quot;, string.Empty);&lt;br /&gt;            _security = _trader.Securities.First(s =&amp;gt; s.Code == sec &amp;amp;&amp;amp; s.Type == SecurityTypes.Future);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void Portfolios_SelectionChanged(object sender, SelectionChangedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            _portfolio = _trader.Portfolios.FirstOrDefault(p =&amp;gt; p.Name == Convert.ToString(Portfolios.SelectedItem));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void PositionSize_TextChanged(object sender, TextChangedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                _sharecount = Convert.ToInt32(PositionSize.Text);&lt;br /&gt;            }&lt;br /&gt;            catch&lt;br /&gt;            {&lt;br /&gt;            MessageBox.Show(&amp;quot;Неправильный размер позиции&amp;quot;);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void Button_Click_1(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Код стратегии&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_d1fcb7c9464a4e459dfffcf05ac36270');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_d1fcb7c9464a4e459dfffcf05ac36270' style='display:none'&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;using StockSharp.Algo;&lt;br /&gt;using StockSharp.Algo.Strategies;&lt;br /&gt;using StockSharp.Algo.Candles;&lt;br /&gt;using Ecng.Xaml;&lt;br /&gt;using StockSharp.Quik;&lt;br /&gt;using StockSharp.BusinessEntities;&lt;br /&gt;&lt;br /&gt;namespace WpfApplication1&lt;br /&gt;{&lt;br /&gt;    class DartWeiderStretegy : TimeFrameStrategy&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        decimal openPrice; // цена открытия свечи&lt;br /&gt;        decimal lastPrice; // цена предПРЕДпоследней свечи&lt;br /&gt;&lt;br /&gt;        private Order _order;   // текущая заявка&lt;br /&gt;&lt;br /&gt;        private TimeSpan _timeFrame;  // таймфрейм&lt;br /&gt;&lt;br /&gt;        private CandleManager _candleManager;&lt;br /&gt;&lt;br /&gt;        // конструктор для работы стратегии&lt;br /&gt;        public DartWeiderStretegy(CandleManager candleManager, TimeSpan timeFrame) : base(timeFrame)&lt;br /&gt;        {&lt;br /&gt;            _candleManager = candleManager;&lt;br /&gt;&lt;br /&gt;            _timeFrame = TimeFrame;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// Запуск стратегии&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        protected void OnStarting()&lt;br /&gt;        {&lt;br /&gt;            base.OnStarted();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Выполнение стратегии&lt;br /&gt;        protected override ProcessResults OnProcess()&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;          &lt;br /&gt;&lt;br /&gt;            /*&lt;br /&gt;&lt;br /&gt;            //Определяем количество открытых позиций по инструменту&lt;br /&gt;            int openPos = Convert.ToInt32(this.MyTrades.GetPosition());&lt;br /&gt;            &lt;br /&gt;            //Получаем цену открытия этой свечи&lt;br /&gt;            openPrice = _lastCandle1.ClosePrice;&lt;br /&gt;&lt;br /&gt;            //Получаем цену открытия предПРЕДпоследней свечи&lt;br /&gt;            lastPrice = _lastCandle2.ClosePrice;&lt;br /&gt;&lt;br /&gt;            //Если есть 2 свечи и нет открытых позиций&lt;br /&gt;            if (_lastCandle1!=null &amp;amp;&amp;amp; _lastCandle2!=null &amp;amp;&amp;amp; openPos == 0)&lt;br /&gt;            {&lt;br /&gt;                // Если свеча выше предыдущей открываем лонг&lt;br /&gt;                if (openPrice &amp;gt; lastPrice)&lt;br /&gt;                {&lt;br /&gt;                    // создаем заявку на покупку&lt;br /&gt;                    _order = this.CreateOrder(OrderDirections.Buy, base.Security.GetMarketPrice(OrderDirections.Buy), base.Volume);&lt;br /&gt;                    &lt;br /&gt;                    // регистрируем ее&lt;br /&gt;                    base.RegisterOrder(_order);&lt;br /&gt;&lt;br /&gt;                    if (_order.IsMatched() == true)&lt;br /&gt;                    {&lt;br /&gt;&lt;br /&gt;                        //Выставляем стоп-лосс и тейкпрофит через метод&lt;br /&gt;                        _order = this.CreateStopLimitAndTakeProfit(openPrice);&lt;br /&gt;&lt;br /&gt;                        // регистрируем его&lt;br /&gt;                        base.RegisterOrder(_order);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;             * &lt;br /&gt;             * */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            return ProcessResults.Continue;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private Order CreateStopLimitAndTakeProfit(decimal openPrice2)&lt;br /&gt;        {&lt;br /&gt;            decimal stopPrice = Convert.ToDecimal(openPrice2) - 20;&lt;br /&gt;            decimal tpPrice = Convert.ToDecimal(openPrice2) + 20;&lt;br /&gt;&lt;br /&gt;            return new Order&lt;br /&gt;            {&lt;br /&gt;                Type = OrderTypes.Conditional,&lt;br /&gt;                Volume = base.Volume,&lt;br /&gt;                Price = Convert.ToDecimal(stopPrice),&lt;br /&gt;                Security = base.Security,&lt;br /&gt;                Portfolio = base.Portfolio,&lt;br /&gt;                Direction = OrderDirections.Sell,&lt;br /&gt;                StopCondition = new QuikStopCondition&lt;br /&gt;                {&lt;br /&gt;                    Type = QuikStopConditionTypes.LinkedOrder,&lt;br /&gt;                    LinkedOrderPrice = tpPrice,&lt;br /&gt;                },&lt;br /&gt;            };&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3287/</id>
    <title type="text">TRANStoQUIK.dll и WIN 7 64 бита</title>
    <published>2013-01-08T11:17:11Z</published>
    <updated>2013-01-08T11:17:11Z</updated>
    <author>
      <name>qpile</name>
      <uri>https://stocksharp.ru/users/6397/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Здравствуйте!&lt;br /&gt;Торговый робот без проблем работает на 32 битах, а на 64 то не находит библиотеку, то отказано в доступе. В чем может быть проблема?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3286/</id>
    <title type="text">Какие ресурсы нужны простому роботу на S#</title>
    <published>2013-01-04T10:20:30Z</published>
    <updated>2013-01-04T10:20:30Z</updated>
    <author>
      <name>votor</name>
      <uri>https://stocksharp.ru/users/5938/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">Какие ресурсы будут достаточны для простого робота на S#? Например, пересечение скользящих средних на 1 тикере 15мин.&lt;br /&gt;&lt;br /&gt;И каие ресурсы для робота с 7-10 простых стратегияими на 7-10 тикерах 15-60 мин, если работать будет все через Quik? Хватит ли ресурсов виртуальной машины ОЗУ 512 Мб, HDD 40Гб, 2400Mhz на технологии VDS Hyper-V ( Windows )</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3284/</id>
    <title type="text">Автоверсионность файлов</title>
    <published>2012-12-27T18:36:01Z</published>
    <updated>2012-12-27T18:36:01Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">Простой способ автоверсионности:&lt;br /&gt;1. Скачать и установить task&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACpsIlyOU4j3o0mGaMq82TJMKH_goeYLlw5ST7m1fortnWBB7PYz7hVci1NJ_wQcYG276GUmLgSgchGubj_WxSRDCfL8ITdh8f43zCalPukBn9LfmFNBI9aO70QCmOSgWPjexCdBpzaUntGCtn8Y8gm" title="http://archive.msdn.microsoft.com/AssemblyInfoTaskvers/Release/ProjectReleases.aspx?ReleaseId=232"&gt;AssemblyInfoTask&lt;/a&gt;&lt;br /&gt;2. Найти установленный файл &lt;em&gt;Microsoft.VersionNumber.targets&lt;/em&gt;&lt;br /&gt;3. Скопировать его в папку солюшна&lt;br /&gt;4. Прописать в проектах (в самом конце)&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:xml"&gt;
  &amp;lt;Import Project=&amp;quot;$(SolutionDir)\Microsoft.VersionNumber.Targets&amp;quot; /&amp;gt;
&amp;lt;/Project&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;5. Отредактировать &lt;em&gt;Microsoft.VersionNumber.targets&lt;/em&gt; по желанию. Например так&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:xml"&gt;
  
......
&amp;lt;PropertyGroup&amp;gt;
    &amp;lt;AssemblyMajorVersion&amp;gt;0&amp;lt;/AssemblyMajorVersion&amp;gt;
    &amp;lt;AssemblyMinorVersion&amp;gt;1&amp;lt;/AssemblyMinorVersion&amp;gt;
    &amp;lt;AssemblyBuildNumber&amp;gt;&amp;lt;/AssemblyBuildNumber&amp;gt;
    &amp;lt;AssemblyRevision&amp;gt;&amp;lt;/AssemblyRevision&amp;gt;
    &amp;lt;AssemblyBuildNumberType&amp;gt;DateString&amp;lt;/AssemblyBuildNumberType&amp;gt;
    &amp;lt;AssemblyBuildNumberFormat&amp;gt;MMdd&amp;lt;/AssemblyBuildNumberFormat&amp;gt;
    &amp;lt;AssemblyRevisionType&amp;gt;AutoIncrement&amp;lt;/AssemblyRevisionType&amp;gt;
    &amp;lt;AssemblyRevisionFormat&amp;gt;000&amp;lt;/AssemblyRevisionFormat&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;!-- Properties for controlling the Assembly File Version --&amp;gt;
  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;AssemblyFileMajorVersion&amp;gt;0&amp;lt;/AssemblyFileMajorVersion&amp;gt;
    &amp;lt;AssemblyFileMinorVersion&amp;gt;1&amp;lt;/AssemblyFileMinorVersion&amp;gt;
    &amp;lt;AssemblyFileBuildNumber&amp;gt;&amp;lt;/AssemblyFileBuildNumber&amp;gt;
    &amp;lt;AssemblyFileRevision&amp;gt;&amp;lt;/AssemblyFileRevision&amp;gt;
    &amp;lt;AssemblyFileBuildNumberType&amp;gt;DateString&amp;lt;/AssemblyFileBuildNumberType&amp;gt;
    &amp;lt;AssemblyFileBuildNumberFormat&amp;gt;MMdd&amp;lt;/AssemblyFileBuildNumberFormat&amp;gt;
    &amp;lt;AssemblyFileRevisionType&amp;gt;AutoIncrement&amp;lt;/AssemblyFileRevisionType&amp;gt;
    &amp;lt;AssemblyFileRevisionFormat&amp;gt;000&amp;lt;/AssemblyFileRevisionFormat&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;!-- Properties for controlling COM visibility --&amp;gt;
  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;AssemblyComVisible&amp;gt;&amp;lt;/AssemblyComVisible&amp;gt;
    &amp;lt;AssemblyGuid&amp;gt;&amp;lt;/AssemblyGuid&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;!-- Propeties for controlling extended assembly attributes --&amp;gt;
  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;AssemblyCompany&amp;gt;Pushkin&amp;lt;/AssemblyCompany&amp;gt;
 
    &amp;lt;AssemblyTrademark&amp;gt;Alex&amp;lt;/AssemblyTrademark&amp;gt;
    &amp;lt;AssemblyConfiguration&amp;gt;&amp;lt;/AssemblyConfiguration&amp;gt;
    &amp;lt;AssemblyCopyright&amp;gt;Pushkin &amp;#169; 2012&amp;lt;/AssemblyCopyright&amp;gt;
    &amp;lt;AssemblyCulture&amp;gt;&amp;lt;/AssemblyCulture&amp;gt;
    &amp;lt;AssemblyDescription&amp;gt;&amp;lt;/AssemblyDescription&amp;gt;
    &amp;lt;AssemblyProduct&amp;gt;PushkinRobot&amp;lt;/AssemblyProduct&amp;gt;
    &amp;lt;AssemblyTitle&amp;gt;&amp;lt;/AssemblyTitle&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;
.......
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Частично дёрнуто &lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADaUgqeUiMvqHjAqLN3xr_cYQ12WhxUIL45Q--L0kVVWsZ0jh_Oa4Ud_HUMnd8RyhDZWfh4aMV0tySxT8_bEjQmlzBZvUY3wKTKbV47pihEGujBvM9mU-e9szdWH74DPxnhbmlZl0jpBPMQn3HnHlk0" title="http://stackoverflow.com/questions/4562845/how-can-i-change-assembly-version-number-using-assemblyinfotask"&gt;отсюда&lt;/a&gt;&lt;br /&gt;Только проследите, чтоб в каждом номере версии было не более 4 цифр (код по ссылке нормально не работает).&lt;br /&gt;В итоге у вас при каждом билде номер версии будет изменяться в соответствии с шаблоном. Причём и номер версии файла тоже.&lt;br /&gt;И информацию о продукте также можно будет редактировать только в одном месте.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3283/</id>
    <title type="text">Изменения API</title>
    <published>2012-12-27T17:59:02Z</published>
    <updated>2012-12-27T17:59:02Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Вообще изменения существующего API в серьёзных проектах не приветствуются.&lt;br /&gt;Но если они жизненно необходимы, то это делается так:&lt;br /&gt;- устаревший метод/класс помечается атрибутом Obsolete ([System.Obsolete(&amp;quot;use class B&amp;quot;)]). При билде в Visual Studio это будет видно в warnings. &lt;br /&gt;- содержимое устаревшего метода заменяется рабочей обёрткой над новым функционалом&lt;br /&gt;- при выпуске мажорной версии (например 1.7 -&amp;gt; 2.0) устаревший код окончательно выбрасывается с указанием в описании релиза.&lt;br /&gt;Вот как-то так. </content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3282/</id>
    <title type="text">MarketDepthsChanged !!!</title>
    <published>2012-12-27T17:52:08Z</published>
    <updated>2012-12-27T17:52:08Z</updated>
    <author>
      <name>Tik_Time</name>
      <uri>https://stocksharp.ru/users/6440/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Добрый вечер.&lt;br /&gt;Помогите разобраться вот с чем.&lt;br /&gt;Как подписаться на изменения котировок конкретного стакана?&lt;br /&gt;Событие MarketDepthsChanged - подписывается на изменение последнего зарегистрированного стакана. А если я зарегистрировал их несколько (к примеру 3) как подписаться на изменение котировок 2-ого стакана? Или придется 2-ой стакан снова регистрировать и к нему уже подвязываться? &lt;br /&gt;Как, к примеру, через Trader.MarketDepthsChanged += Changeddepths подписаться на изменение котировок нужного стакана, а не последнего?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3281/</id>
    <title type="text">Ровно через 10 минут закрывается консольное приложение</title>
    <published>2012-12-27T16:11:17Z</published>
    <updated>2012-12-27T16:11:17Z</updated>
    <author>
      <name>Aleksey Bulygin</name>
      <uri>https://stocksharp.ru/users/6173/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="SmartCom" />
    <content type="html">Имеется непонятное поведение консольного приложения, использующего SmartTrader. А именно самопроизвольное закрытие консольного приложения ровно через 10 минут с момента создания экземпляра класса SmartTrader. При это даже не обязательно вызывать метод Connect().&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;

...
static void Main()
{
    Console.WriteLine(&amp;quot; Press any key to continue. #1&amp;quot;);
    Console.ReadKey(true);

    SmartTrader trader = new SmartTrader(login, password);

    Console.WriteLine(&amp;quot; Press any key to continue. #2&amp;quot;);
    Console.ReadKey(true);
    ...
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Т.е. в &amp;quot;месте #1&amp;quot; программа может находиться любое время, пока не будет нажата любая клавиша. В тоже время после создания объекта &amp;quot;trader&amp;quot;, в &amp;quot;месте #2&amp;quot;, если не будет нажимата никакая из клавиш, то программа проработает ровно 10 минут с момента создания экземпляра класса SmartTrader, после чего консольное приложение автоматически завершиться. При этом если даже весь код в методе main() обернуть в контрукцию try ... catch ..., то в область catch мы не попадаем и как бы никаких исключительных ситуаций не происходит. Более того, даже обернув весь код в методе main() в конструкцию try ... finally ..., то в область finally мы почему-то тоже не попадаем ((( При этом никаких сообщений об ошибках и прочее ни на экран, ни в консоль не выводится.&lt;br /&gt;В итоге единственное что есть в остатке после завершения приложения это все лишь код завершения программы равный &amp;quot;-1&amp;quot;:&lt;br /&gt;&amp;quot;The program &amp;#39;[8792] SampleSmartConsole.vshost.exe: Managed (v4.0.30319)&amp;#39; has exited with code -1 (0xffffffff).&amp;quot;&lt;br /&gt;&lt;br /&gt;На самом деле к такому (код выше) упрощенному варианту кода я дошел естественно от реального кода. При этом в реальном коде, есть рабочий робот, который выполняет подключение к СмартКому, принимает потоки, отправляет заявки и вообще отлично работает и делает все, что от него требуется, но, к сожалению, всего 10 минут, после чего консольная программа схлопывается.&lt;br /&gt;&lt;br /&gt;Самое интересное, что для такого поведения программы (схлопывания) даже не обязательно иметь установленный SmartCOM, в этом удостоверился, проверяя упрощенный код на другом компьютере, где вообще не стоял СмартКом (после установки СмартКом на этот компьютер, поведение не изменилось ).&lt;br /&gt;&lt;br /&gt;Самое обидное, что даже зацепиться не за что в этой проблеме, просмотрел ветки форума по SmartCOM-у тоже ничего подобного не увидел, что еще более странно.&lt;br /&gt;&lt;br /&gt;Версии ПО:&lt;br /&gt;StockSharp - 4.1.1.&lt;br /&gt;SmartCOM   - 2.2.&lt;br /&gt;Windows 7 64 bit (исходные коды скомпилированы под 32-х битную систему)</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3280/</id>
    <title type="text">Ыыыы</title>
    <published>2012-12-26T17:47:51Z</published>
    <updated>2012-12-26T17:47:51Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;workingTime&lt;br /&gt;    Тип: StockSharp.BusinessEntities.WorkingTime&lt;br /&gt;    Информация о режиме работы биржы.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;:)&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3279/</id>
    <title type="text">Как оставить заявки в стакане на вечерний клиринг?</title>
    <published>2012-12-26T15:11:02Z</published>
    <updated>2012-12-26T15:11:02Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.ru/users/6003/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">Коллеги, кто через плазу торгует!&lt;br /&gt;&lt;br /&gt;Правильно я понимаю, что в стакане на время вечернего клиринга остаются только заявки, выставленные через шлюз?&lt;br /&gt;&lt;br /&gt;А квик просто тупо все автоматически снимает?&lt;br /&gt;&lt;br /&gt;Неужели нужна обязательно plaza II, чтобы заявки не снимались?&lt;br /&gt;Или это не вопрос торговой платформы, а прихоть брокера?&lt;br /&gt;&lt;br /&gt;P.S. про стоп заявки я знаю, но они на спайке не сильно помогут…</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3278/</id>
    <title type="text">Гидра не сохраняет стаканы из Альфа-Директа</title>
    <published>2012-12-25T20:16:55Z</published>
    <updated>2012-12-25T20:16:55Z</updated>
    <author>
      <name>Osmosis</name>
      <uri>https://stocksharp.ru/users/16698/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Гидра не сохраняет почему-то стаканы из Альфа-Директа. Все включено, инструмент в Гидру добавлены, таблица всех сделок закачивается, а стаканы нет. Может должно быть что-то настроено в самой Альфе? В Альфе на данный момент открыты таблица всех сделок по инструменту и его стакан. Никто с проблемой не сталкивался с такой?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3276/</id>
    <title type="text">Как написать личное сообщение?</title>
    <published>2012-12-25T07:19:35Z</published>
    <updated>2012-12-25T07:19:35Z</updated>
    <author>
      <name>roof</name>
      <uri>https://stocksharp.ru/users/16649/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">Как написать личное сообщение участнику форума? Не нахожу нужных кнопок [cursing] </content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3275/</id>
    <title type="text">Ошибка Гидра-сервера</title>
    <published>2012-12-24T13:20:28Z</published>
    <updated>2012-12-24T13:20:28Z</updated>
    <author>
      <name>anothar</name>
      <uri>https://stocksharp.ru/users/6089/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Запустил клиента, сервер и получил&lt;br /&gt;19:04:56.676|Error  |Hydra Server|System.MissingMethodException: Method not found: &amp;#39;StockSharp.Algo.Storages.IMarketDataStorageDrive StockSharp.Algo.Storages.IMarketDataStorage.get_StorageDrive()&amp;#39;.&lt;br /&gt;   at StockSharp.Hydra.HydraServer.HydraServerSource.Load()&lt;br /&gt;   at StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__12(IMarketDataSource source)&lt;br /&gt;19:04:57.687|Error  |Hydra Server|System.MissingMethodException: Method not found: &amp;#39;StockSharp.Algo.Storages.IMarketDataStorageDrive StockSharp.Algo.Storages.IMarketDataStorage.get_StorageDrive()&amp;#39;.&lt;br /&gt;   at StockSharp.Hydra.HydraServer.HydraServerSource.Load()&lt;br /&gt;   at StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__12(IMarketDataSource source)&lt;br /&gt;19:04:58.668|Error  |Hydra Server|System.MissingMethodException: Method not found: &amp;#39;StockSharp.Algo.Storages.IMarketDataStorageDrive StockSharp.Algo.Storages.IMarketDataStorage.get_StorageDrive()&amp;#39;.&lt;br /&gt;   at StockSharp.Hydra.HydraServer.HydraServerSource.Load()&lt;br /&gt;   at StockSharp.Hydra.Worker.WorkerProcess.&amp;lt;Download&amp;gt;b__12(IMarketDataSource source)&lt;br /&gt;&lt;br /&gt;Версия 2 недельной - недельной давности.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3274/</id>
    <title type="text">Тиковые данные из OEC демо</title>
    <published>2012-12-24T08:46:33Z</published>
    <updated>2012-12-24T08:46:33Z</updated>
    <author>
      <name>ruticker</name>
      <uri>https://stocksharp.ru/users/27708/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="OpenECry" />
    <content type="html">  На сколько я понял, для подключения к OEC.API нужне отдельный пароль, нежели к самому терминалу, ибо для самого терминала он подходид, а для самплов и &amp;quot;гидры&amp;quot; - нет. &lt;br /&gt;Подскажите где его можно взять, как установить соединение?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3273/</id>
    <title type="text">Ошибки построения стакана</title>
    <published>2012-12-24T06:16:42Z</published>
    <updated>2012-12-24T06:16:42Z</updated>
    <author>
      <name>EugeneP</name>
      <uri>https://stocksharp.ru/users/603/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
QuikTrader      | 24.12.2012 12:10:37.749 | Ошибка     | System.InvalidOperationException: Ошибка построения стакана для RIH3@RTS. ---&amp;gt; System.ArgumentException: Элемент с тем же ключом уже был добавлен.
   в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   в System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   в System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   в StockSharp.Quik.QuikTrader.#=qV1bJizWql1tv_UUSGOOjrLfH69ucjN$EvDgpzfAwkx0=.#=qwAVu03f70PvGv2NmDj0UqV626SmM6LRr5ZabpHQrX3s=.#=qDh6Dk7LB9SGgAbG1aRBpug==(IList`1 #=qOF1EeunfkAZjmZSGHm934g==, Func`2 #=qLERt9rtmrX2kmdAcPm2q4w==)
   в #=q8uFRfoNJsfU4W$UpY0s1SP$Gqe8tWIXu4piUrTmBp$_3yNnol7xUbbX3gyogXFF_.#=qg2GqyLE2SHCYlseIz6XwYA==(DdeTable #=qWNKxPL2Jpxg3XirwsAmdVA==, IList`1 #=q9WzmDybFvwlOxceuSNq7Jw==, Action`2 #=q7OXPBKmNFYVPhvlRHQ5OdA==, Action`1 #=q0lYpUC3ZnxZxS5sJJR_VkA==, Boolean #=qHIvG_pCs14eLi$pHTQv9FA==)
   --- Конец трассировки внутреннего стека исключений ---
   в StockSharp.Quik.QuikTrader.#=qV1bJizWql1tv_UUSGOOjrLfH69ucjN$EvDgpzfAwkx0=.#=qwAVu03f70PvGv2NmDj0UqV626SmM6LRr5ZabpHQrX3s=.#=qvTq8R6vK9ETSz_XHBJwPbA==(Exception #=qYPkPUD36_U$t7emTlUty0Q==)
   в #=q8uFRfoNJsfU4W$UpY0s1SP$Gqe8tWIXu4piUrTmBp$_3yNnol7xUbbX3gyogXFF_.#=qg2GqyLE2SHCYlseIz6XwYA==(DdeTable #=qWNKxPL2Jpxg3XirwsAmdVA==, IList`1 #=q9WzmDybFvwlOxceuSNq7Jw==, Action`2 #=q7OXPBKmNFYVPhvlRHQ5OdA==, Action`1 #=q0lYpUC3ZnxZxS5sJJR_VkA==, Boolean #=qHIvG_pCs14eLi$pHTQv9FA==)
   в StockSharp.Quik.QuikTrader.#=qV1bJizWql1tv_UUSGOOjrLfH69ucjN$EvDgpzfAwkx0=.#=qex1dodB4LLmjubDztY2NHQ==(Security #=qGxFPI4TVVm4wVgiofjtVOQ==)
   в StockSharp.Algo.BaseTrader.ProcessSecurityAction(String securityId, Object nativeSecurityId, Action`1 action, Boolean ignoreIfNotExist)
   в StockSharp.Quik.QuikTrader.#=qV1bJizWql1tv_UUSGOOjrLfH69ucjN$EvDgpzfAwkx0=.#=qta8vvXCGjBmWr9OQyfTu8A==()
   в StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
</feed>