﻿<?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">Первый робот</title>
  <id>~/topic/3769/pervyi-robot/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-08T16:10:11Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3769" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/26387/</id>
    <title type="text">День добры всем! У меня возникла проблема, изучаю S# (и параллельно C#, может поэтому до чего то не ...</title>
    <published>2013-06-20T09:09:50Z</published>
    <updated>2013-06-20T09:11:27Z</updated>
    <author>
      <name>serzah</name>
      <uri>https://stocksharp.ru/users/39280/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">День добры всем!&lt;br /&gt;У меня возникла проблема, изучаю S# (и параллельно C#, может поэтому до чего то не догоняю).&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;
namespace SampleSmartConsole
{
	using System;
	using System.Linq;
	using System.Threading;

	using Ecng.Collections;
	using Ecng.Common;

	using StockSharp.BusinessEntities;
	using StockSharp.Smart;
	using StockSharp.Algo;
        using MainSms;

	class Program
	{
		private static Security _rts;
		private static Portfolio _portfolio;
                private static Security _instrument;
                private static MarketDepth _depth;
                private static Position _position;

        
 
		static void Main()
		{
			try
			{
				сonst string secCode = &amp;quot;RIU3&amp;quot;;

				var login = &amp;quot;*****&amp;quot;;

				var password = &amp;quot;*****&amp;quot;;

				var account = &amp;quot;*********&amp;quot;;

				using (var waitHandle = new AutoResetEvent(false))
				{
					// создаем шлюз к Smart-у
                                        using (var trader = new SmartTrader(login, password))
					{
						// подписываемся на событие успешного подключения
						// все действия необходимо производить только после подключения
						trader.Connected += () =&amp;gt;
						{
							Console.WriteLine(&amp;quot;Подключение было произведено успешно.&amp;quot;);

							// извещаем об успешном соединени
							waitHandle.Set();
						};

						Console.WriteLine(&amp;quot;Производим подключение...&amp;quot;);

						trader.Connect();

						// дожидаемся события об успешном соединении
						waitHandle.WaitOne();

						// подписываемся на все портфели-счета
						trader.NewPortfolios += portfolios =&amp;gt;
						{
							// необходимое условие работы в SmartCOM
							portfolios.ForEach(trader.RegisterPortfolio);

							if (_portfolio == null)
							{
								// находим нужный портфель и присваиваем его переменной _portfolio
								_portfolio = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account);

								if (_portfolio != null)
								{
									Console.WriteLine(&amp;quot;Портфель {0} появился.&amp;quot;, account);

									if (_rts != null)
									waitHandle.Set();
								}
							}
						};

						// подписываемся на событие появление инструментов
						trader.NewSecurities += securities =&amp;gt;
						{
                                                  if (_rts == null)
							{
						          // находим RTS и присваиваем ее переменной _rts
                                                          _rts = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode &amp;amp;&amp;amp; sec.Type == SecurityTypes.Future);

                                                           if (_rts != null)
								{
									Console.WriteLine(&amp;quot;Инструмент RTS появился.&amp;quot;);

                                                                       // запускаем экспорт стакана
                                                                        trader.RegisterMarketDepth(_rts);

									if (_portfolio != null)
										waitHandle.Set();
								}
							}
						};
                        // подписываемся на событие обновления стакана
                        trader.MarketDepthsChanged += depths =&amp;gt;
                        {
                            if (_depth == null &amp;amp;&amp;amp; _instrument != null)
                            {
                                _depth = depths.FirstOrDefault(d =&amp;gt; d.Security == _instrument);

                                if (_depth != null)
                                {
                                    Console.WriteLine(&amp;quot;Стакан появился.&amp;quot;);

                                    if (_portfolio != null &amp;amp;&amp;amp; _position != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        
						// подписываемся на событие появления моих новых сделок
						trader.NewMyTrades += myTrades =&amp;gt;
						{
							foreach (var myTrade in myTrades)
							{
							  var trade = myTrade.Trade;
							  Console.WriteLine(&amp;quot;Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.&amp;quot;, trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
							}
						};

						Console.WriteLine(&amp;quot;Дожидаемся появления в программе инструмента RTS и портфеля {0}...&amp;quot;.Put(account));

						// запускаем экспорт по инструментам и портфелям
						trader.StartExport();

						// дожидаемся появления портфеля и инструмента
						waitHandle.WaitOne();

						trader.SecuritiesChanged += securities =&amp;gt;
						{
							// если инструмент хоть раз изменился (по нему пришли актуальные данные)
                                                                if (securities.Contains(_rts))
								waitHandle.Set();
						};

						Console.WriteLine(&amp;quot;Дожидаемся обновления данных по инструменту RTS...&amp;quot;);

						// запускаем обновление по инструменту
                                                trader.RegisterSecurity(_rts);
                                              
						waitHandle.WaitOne();

                        while (true)
                        {
                            MarketDepth x = new MarketDepth (_rts);

                            var totb = x.TotalBidsVolume;
                            var tota = x.TotalAsksVolume;
                         

                            Console.WriteLine(&amp;quot;общий объем bid {0}&amp;quot;, totb);
                            Console.WriteLine(&amp;quot;общий объем ask {0}&amp;quot;, tota);

                            Thread.Sleep(1000);
                        }
                        // останавливаем экспорт
                        trader.StopExport();
                        Console.WriteLine(&amp;quot;StopExport&amp;quot;);
                        Console.ReadKey();

						}
					}
				}
		    catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.WriteLine(&amp;quot;catch&amp;quot;);
                Console.ReadKey();
            }

		}
	}
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Но он не работает, вроде все на месте, но выдает сплошные нули. Помогите разобраться, а то уже 3 день из головы кактусы....</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>