﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">общий объем по бидам</title>
  <id>~/topic/2294/obshshii-obem-po-bidam/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-15T03:08:59Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2294" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/15428/</id>
    <title type="text">Объясните пожалуйста, как получить общий объем из стакана. нужно создать стакан? - как правильно его...</title>
    <published>2012-01-05T14:29:03Z</published>
    <updated>2012-01-17T08:05:56Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Объясните пожалуйста, как получить общий объем из стакана.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;нужно создать стакан? - как правильно его создать?&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;_lkoh = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode &amp;amp;&amp;amp; sec.Type == SecurityTypes.Future);
var stakan = MarketDepth(_lkoh);
так ошибка, пробовал по разному..
2) в консольном примере для смарт добавьте ввод ip'а, тк из-за этого я долго думал, почему он не коннектится..
Console.Write(&amp;quot;Введите ip адрес торгового сервера: &amp;quot;);
var ipv = Console.ReadLine();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;            IPAddress ipadress = IPAddress.Parse(ipv);
            IPEndPoint ip = new IPEndPoint(ipadress, 8090);

  		using (var waitHandle = new AutoResetEvent(false))
  		{
  			// создаем шлюз к Smart-у
  			using (var trader = new SmartTrader(login, password, ip))
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15489/</id>
    <title type="text">Ты подписался на событие обновления стакана, но не вижу, где запустил экспорт стакана. Можно сделать...</title>
    <published>2012-01-09T16:25:39Z</published>
    <updated>2012-01-09T16:25:39Z</updated>
    <author>
      <name>BigBen</name>
      <uri>https://stocksharp.com/users/6302/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Ты подписался на событие обновления стакана, но не вижу, где запустил экспорт стакана.
Можно сделать так:&lt;/p&gt;
&lt;p&gt;...
// подписываемся на событие появление инструментов
trader.NewSecurities += securities =&amp;gt;
{
if (_instrument == null)
{
// находим инструмент и присваиваем ее переменной _instrument
_instrument = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode &amp;amp;&amp;amp; sec.Type == SecurityTypes.Future);&lt;/p&gt;
&lt;p&gt;if (_instrument != null)
{
Console.WriteLine(&amp;quot;Инструмент появился.&amp;quot;);&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;mark&gt;trader.RegisterQuotes(_instrument);            // запускаем экспорт стакана&lt;/mark&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;if (_portfolio != null &amp;amp;&amp;amp; _depth != null)
waitHandle.Set();
}
}
};
...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15487/</id>
    <title type="text">вобщем ошибок у меня больше не вылазиет. но вот программа не работает.. вся загвоздка с тем же.. доб...</title>
    <published>2012-01-09T15:58:19Z</published>
    <updated>2012-01-09T15:58:19Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;вобщем ошибок у меня больше не вылазиет. но вот программа не работает.. вся загвоздка с тем же..
добавил &amp;gt; private static MarketDepth _depth;
и&amp;gt; // подписываемся на событие обновления стакана&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;                    trader.QuotesChanged += 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)
                                   waitHandle.Set();
                            }
                        }
                    };
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;ну и программа не идет дальше, тк depth у меня равное null остается&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;namespace SampleSmartConsole
{
using System;
using System.Net;
using System.Linq;
using System.Threading;&lt;/p&gt;
&lt;p&gt;using Ecng.Collections;
using Ecng.Common;&lt;/p&gt;
&lt;p&gt;using StockSharp.BusinessEntities;
using StockSharp.Smart;
using StockSharp.Algo;&lt;/p&gt;
&lt;p&gt;class Program
{
private static Security _instrument;
private static Portfolio _portfolio;
private static MarketDepth _depth;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  static void Main()
  {
  	try
  	{
  		// для теста выбираем бумагу
  		const string secCode = &amp;quot;RIH2&amp;quot;;

  		//Console.Write(&amp;quot;Введите логин: &amp;quot;);
  		//var login = Console.ReadLine();
            var login = &amp;quot;ST12858&amp;quot;;

  		//Console.Write(&amp;quot;Введите пароль: &amp;quot;);
  		//var password = Console.ReadLine();
            var password = &amp;quot;8YDJ7E&amp;quot;;

  		//Console.Write(&amp;quot;Введите номер счета, через который будет выставлена заявка: &amp;quot;);
  		//var account = Console.ReadLine();
            var account = &amp;quot;ST12858-RF-01&amp;quot;;

            IPAddress ipadress = IPAddress.Parse(&amp;quot;95.131.26.246&amp;quot;);
            IPEndPoint ip = new IPEndPoint(ipadress, 8090);

  		using (var waitHandle = new AutoResetEvent(false))
  		{
  			// создаем шлюз к Smart-у
  			using (var trader = new SmartTrader(login, password, ip))
  			{
  				// подписываемся на событие успешного подключения
  				// все действия необходимо производить только после подключения
  				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 = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account);

  						if (_portfolio != null)
  						{
  							Console.WriteLine(&amp;quot;Портфель {0} появился.&amp;quot;, account);

                                if (_instrument != null &amp;amp;&amp;amp; _depth != null)
  								waitHandle.Set();
  						}
  					}
  				};

  				// подписываемся на событие появление инструментов
  				trader.NewSecurities += securities =&amp;gt;
  				{
  					if (_instrument == null)
  					{
                            // находим инструмент и присваиваем ее переменной _instrument
                            _instrument = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode &amp;amp;&amp;amp; sec.Type == SecurityTypes.Future);

  						if (_instrument != null)
  						{
  							Console.WriteLine(&amp;quot;Инструмент появился.&amp;quot;);

                                if (_portfolio != null &amp;amp;&amp;amp; _depth != null)
  								waitHandle.Set();
  						}
  					}
  				};

                    // подписываемся на событие обновления стакана
                    trader.QuotesChanged += 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)
                                   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;Дожидаемся появления в программе инструмента и портфеля {0}...&amp;quot;.Put(account));

  				// запускаем экспорт по инструментам и портфелям
  				trader.StartExport();

  				// дожидаемся появления портфеля и инструмента
  				waitHandle.WaitOne();

  				trader.SecuritiesChanged += securities =&amp;gt;
  				{
  					// если инструмент хоть раз изменился (по нему пришли актуальные данные)
  					if (securities.Contains(_instrument))
  						waitHandle.Set();
  				};

  				Console.WriteLine(&amp;quot;Дожидаемся обновления данных по инструменту...&amp;quot;);

  				// запускаем обновление по инструменту
  				trader.RegisterSecurity(_instrument);
  				waitHandle.WaitOne();

  				// запоминаем первоначальное значение середины спреда
                    var totb = _depth.TotalBidsVolume;
                    var tota = _depth.TotalBidsVolume;
  				if (_instrument.BestBid == null)
  					throw new Exception(&amp;quot;Нет лучшего бида для котировки.&amp;quot;);

                    Console.WriteLine(&amp;quot;общий объем bid&amp;quot;, totb);
                    Console.WriteLine(&amp;quot;общий объем ask&amp;quot;, tota);

  				while (true)
  				{
  					var mid = _instrument.BestPair.SpreadPrice / 2;

  					// если спред вышел за пределы нашего диапазона
                        if (totb &amp;gt; tota)
                        {
                            var order = new Order
                            {
                                Portfolio = _portfolio,
                                Price = _instrument.ShrinkPrice(_instrument.BestAsk.Price),
                                Security = _instrument,
                                Volume = 1,
                                Direction = OrderDirections.Sell,
                            };
                            trader.RegisterOrder(order);
                            Console.WriteLine(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, order.Id);
                            break;
                        }
                        else
                        {
                            var order = new Order
                            {
                                Portfolio = _portfolio,
                                Price = _instrument.ShrinkPrice(_instrument.BestBid.Price),
                                Security = _instrument,
                                Volume = 1,
                                Direction = OrderDirections.Buy,
                            };
                            trader.RegisterOrder(order);
                            Console.WriteLine(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, order.Id);
                            break;
                        }
  						//Console.WriteLine(&amp;quot;Текущее значение середины спреда {0:0.##}&amp;quot;, _instrument.BestBid.Price + mid);

  					// ждем 60 секунду
  					//Thread.Sleep(60000);
  				}

  				// останавливаем экспорт
  				trader.StopExport();
  			}
  		}
  	}
  	catch (Exception ex)
  	{
  		Console.WriteLine(ex);
  	}
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}
}&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15474/</id>
    <title type="text">Посмотри в примере для Quik http://stocksharp.com/doc/html/b6fea084-f43c-4eb7-ab63-ad3031d748a5.htm </title>
    <published>2012-01-09T10:30:59Z</published>
    <updated>2012-01-09T10:30:59Z</updated>
    <author>
      <name>BigBen</name>
      <uri>https://stocksharp.com/users/6302/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Посмотри в примере для Quik &lt;a href="http://stocksharp.com/doc/html/b6fea084-f43c-4eb7-ab63-ad3031d748a5.htm"&gt;http://stocksharp.com/doc/html/b6fea084-f43c-4eb7-ab63-ad3031d748a5.htm&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15473/</id>
    <title type="text">Для SmartCOM стакан используется в примере SampleSmart. </title>
    <published>2012-01-09T10:17:41Z</published>
    <updated>2012-01-09T10:17:41Z</updated>
    <author>
      <name>BigBen</name>
      <uri>https://stocksharp.com/users/6302/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Для SmartCOM стакан используется в примере SampleSmart.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15472/</id>
    <title type="text">tmt: а не мог бы подсказать пример где используется этот класс? поиск по форуму? </title>
    <published>2012-01-09T10:12:33Z</published>
    <updated>2012-01-09T10:12:33Z</updated>
    <author>
      <name>fau</name>
      <uri>https://stocksharp.com/users/27584/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(15471)" rel="nofollow" target="_blank"&gt;tmt&lt;/a&gt;:&lt;/strong&gt;
а не мог бы подсказать пример где используется этот класс?
поиск по форуму?&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15471/</id>
    <title type="text">а не мог бы подсказать пример где используется этот класс? </title>
    <published>2012-01-09T10:01:41Z</published>
    <updated>2012-01-09T10:01:41Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;а не мог бы подсказать пример где используется этот класс?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15470/</id>
    <title type="text">Примером, как я понимаю, является SampleSmartConsole. var firstMid = _lkoh.BestPair.SpreadPrice / 2;...</title>
    <published>2012-01-09T09:45:41Z</published>
    <updated>2012-01-09T09:45:41Z</updated>
    <author>
      <name>BigBen</name>
      <uri>https://stocksharp.com/users/6302/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Примером, как я понимаю, является SampleSmartConsole.
var firstMid = _lkoh.BestPair.SpreadPrice / 2; - здесь BestPair является свойством класса Security, экземпляр которого _lkoh имеет код = &amp;quot;LKOH&amp;quot;.
В данном примере класс MarketDepth не используется.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15469/</id>
    <title type="text">ну это понятно, но как? ведь если рассуждать отсюда http://www.stocksharp.com/doc/html/Properties_T_...</title>
    <published>2012-01-09T09:17:18Z</published>
    <updated>2012-01-09T09:17:18Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;ну это понятно, но как? ведь если рассуждать отсюда &lt;a href="http://www.stocksharp.com/doc/html/Properties_T_StockSharp_BusinessEntities_MarketDepth.htm"&gt;http://www.stocksharp.com/doc/html/Properties_T_StockSharp_BusinessEntities_MarketDepth.htm&lt;/a&gt; , то BestPair тоже имеет класс MarketDepth (и я имею пример с этим BestPair, а как от него сделать TotalBidsVolume)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15468/</id>
    <title type="text">Для работы со стаканом в S# есть класс MarketDepth. У него есть свойства TotalBidsVolume (Получить о...</title>
    <published>2012-01-09T09:11:12Z</published>
    <updated>2012-01-09T09:11:12Z</updated>
    <author>
      <name>BigBen</name>
      <uri>https://stocksharp.com/users/6302/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Для работы со стаканом в S# есть класс MarketDepth. У него есть свойства TotalBidsVolume (Получить общий объем по бидам) и TotalAsksVolume (Получить общий объем по офферам) - вот здесь и нужно копать.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15466/</id>
    <title type="text">насколько я понял из примера для смарт, то стакан мы вызываем вот так _lkoh = securities.FirstOrDefa...</title>
    <published>2012-01-09T07:50:30Z</published>
    <updated>2012-01-09T07:50:30Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;насколько я понял из примера для смарт, то стакан мы вызываем вот так&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;_lkoh = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode &amp;amp;&amp;amp; sec.Type == SecurityTypes.Future);
затем мы берем лучшую пару котировок
var firstMid = _lkoh.BestPair.SpreadPrice / 2;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;судя по всему чтобы показать общий объем бид.. надо как то вот так..&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;var firstMid = _lkoh.TotalBidsVolume;
ведь надо же еще что то передавать (public decimal TotalBidsVolume { get; }) но вот мне пишет&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ошибка	1	&amp;quot;StockSharp.BusinessEntities.Security&amp;quot; не содержит определения для &amp;quot;TotalBidsVolume&amp;quot; и не был найден метод расширения &amp;quot;TotalBidsVolume&amp;quot;, принимающий тип &amp;quot;StockSharp.BusinessEntities.Security&amp;quot; в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)	C:\Users\user\Desktop\StockSharp_4.0.14\Samples\Smart\SampleSmartConsole\Program.cs	138	46	SampleSmartConsole&lt;/p&gt;
&lt;p&gt;подскажите пожалуйста&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>