﻿<?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">[3.0.5] RealTimeTestTrader&lt;SmartTrader&gt;</title>
  <id>~/topic/1388/3_0_5-realtimetesttradersmarttrader/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-08T15:39:33Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1388" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/6476/</id>
    <title type="text">pyhta4og: Непонятно, толи смарт их передавал такие, или глюк в алгоритме компрессии. В алгоритме дек...</title>
    <published>2011-03-07T14:15:31Z</published>
    <updated>2011-03-07T14:15:31Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(6459)" rel="nofollow" target="_blank"&gt;pyhta4og&lt;/a&gt;:&lt;/strong&gt;
Непонятно, толи смарт их передавал такие, или глюк в алгоритме компрессии.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;В алгоритме декомпрессии, что явно лучше, когда наоборот.[smile]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6459/</id>
    <title type="text">[3.0.11] Писал гидрой стакан RIH1 из смарта. В результате записались стаканы с неправильными ценами,...</title>
    <published>2011-03-05T18:40:32Z</published>
    <updated>2011-03-05T18:40:32Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[3.0.11]
Писал гидрой стакан RIH1 из смарта.&lt;/p&gt;
&lt;p&gt;В результате записались стаканы с неправильными ценами, например BID=201762.5 201737.5. В общем на 2.5 сдвинутые от цены кратной 5.&lt;/p&gt;
&lt;p&gt;Непонятно, толи смарт их передавал такие, или глюк в алгоритме компрессии.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6342/</id>
    <title type="text">pyhta4og: [3.0.8] Снова пытался писать стаканы и сделки из smart-a. Раньше было исключение в DeleteT...</title>
    <published>2011-03-02T15:46:59Z</published>
    <updated>2011-03-02T15:46:59Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(6300)" rel="nofollow" target="_blank"&gt;pyhta4og&lt;/a&gt;:&lt;/strong&gt;
[3.0.8]
Снова пытался писать стаканы и сделки из smart-a.
Раньше было исключение в DeleteTrades, теперь в SaveMarketDepths&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ок, бага ясна. Сделал фикс, потестирую.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6300/</id>
    <title type="text">[3.0.8] Снова пытался писать стаканы и сделки из smart-a. Раньше было исключение в DeleteTrades, теп...</title>
    <published>2011-03-01T14:30:49Z</published>
    <updated>2011-03-01T14:30:49Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[3.0.8]
Снова пытался писать стаканы и сделки из smart-a.
Раньше было исключение в DeleteTrades, теперь в SaveMarketDepths&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Smart 17:23:24.7395341 System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at #=qy0RUoYLNYlqW0B_yati76yQLlF1y1sx_upRDGw64sltK5TcMQcaCdHkwYKu8cl8Y.#=qBv4dRfrP7FogGPMlCDm2rQ==(List`1 #=ql3KkknXDyqfAd1k4lx0bCQ==, IEnumerable`1 #=qbABKyBV6r8pDH9j$8kSBpA==, DateTime #=qRu8RIQ_ri0I$WV9icXS5Fg==, IDictionary`2 #=qVTyISirbCCMsUG$tAxBQ8Q==)
   at #=qISHYDk5RSfQ0l16TU_VuyOtzEHXYB9jvVWSF0dtT$aJtVzc06stTfkzpAAwhOqgr.#=qXYswPurs6ralv9zNnmytdg==(DateTime #=qV9lC0hKzLXxXFDwtYDa2Jw==, IEnumerable`1 #=qkhla0l1ajhOnacniEE0LvQ==, Boolean #=qThnvvftvehZoBLoIRIwHkg==)
   at #=qISHYDk5RSfQ0l16TU_VuyOtzEHXYB9jvVWSF0dtT$aJtVzc06stTfkzpAAwhOqgr.#=qXOFLyXQQ7OqmsYJeKd16_w==(IEnumerable`1 #=qLlX1_MdjdJCYpfRK4x$0ag==)
   at Ecng.Trading.Algo.Storages.TradingStorage.SaveMarketDepths(Security security, IEnumerable`1 depths)
   at Ecng.Trading.Hydra.Worker.&amp;lt;Download&amp;gt;b__10(IMarketDataSource source) in D:\SS\Sources\Hydra\Hydra\Worker.cs:line 174

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6251/</id>
    <title type="text">[3.0.6] Писал стакан Смарта Гидрой. Потом на HistoryTestTrader пытался воспроизвести его. Полезла ку...</title>
    <published>2011-02-25T18:08:13Z</published>
    <updated>2011-02-25T18:08:13Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[3.0.6]&lt;/p&gt;
&lt;p&gt;Писал стакан Смарта Гидрой.&lt;/p&gt;
&lt;p&gt;Потом на HistoryTestTrader пытался воспроизвести его.&lt;/p&gt;
&lt;p&gt;Полезла куча ArgumentException что мол Размер спреда равен нулю.&lt;/p&gt;
&lt;p&gt;Выходит что стаканы с нулевым спредом иногда приходят из Смарта. И пишутся гидрой.
Неизвестно что это значит, но ArgumentException надо или убрать или сделать опциональным.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6245/</id>
    <title type="text">pyhta4og: Михаил, прокомментируете насчет того как сделать SmartDepthSource источником и стаканов и ...</title>
    <published>2011-02-25T12:45:39Z</published>
    <updated>2011-02-25T12:45:39Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(6239)" rel="nofollow" target="_blank"&gt;pyhta4og&lt;/a&gt;:&lt;/strong&gt;
Михаил,&lt;/p&gt;
&lt;p&gt;прокомментируете насчет того как сделать SmartDepthSource источником и стаканов и сделок?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Сорри, не видел сообщение... Выглядит как баги у Гидры. Посмотрю, и если баги, поправлю. То, что со сделками - точно бага.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6239/</id>
    <title type="text">Михаил, прокомментируете насчет того как сделать SmartDepthSource источником и стаканов и сделок? Хо...</title>
    <published>2011-02-25T10:37:52Z</published>
    <updated>2011-02-25T10:37:52Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Михаил,&lt;/p&gt;
&lt;p&gt;прокомментируете насчет того как сделать SmartDepthSource источником и стаканов и сделок?&lt;/p&gt;
&lt;p&gt;Хочу записать несколько дней истории со сделками и со стаканами, чтобы разбираться с эмулятором.&lt;/p&gt;
&lt;p&gt;Но поскольку сижу на демо сделки там надо писать со смарта же (от тех что на ftp.rts.ru теоретически могут  отличаться)&lt;/p&gt;
&lt;p&gt;Проблема в exception&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Я захотел SmartDepthSource сделать помимо источника Quotes сделать источником Trade-ов.&lt;/p&gt;
&lt;p&gt;Для этого добавил реализацию ITradeSource&lt;/p&gt;
&lt;p&gt;И все можно сказать заработало, загрузился трейд, но при сохранении в базу в
DeleteTrades() все кончилось исключением
Код:&lt;/p&gt;
&lt;p&gt;Smart 20:06:44.1875577 Загружено 1 сделок.
Smart 20:06:44.1875577 Первая сделка 12281010 для RIH1@RTS за 22/02/2011 20:06:42.
Smart 20:06:44.1875577 Последняя сделка 12281010 для RIH1@RTS за 22/02/2011 20:06:42.
Smart 20:06:44.1875577 System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary&lt;code&gt;2.get_Item(TKey key) at #=qN8oiXslVNgiUhuKs9C5uZgAkFATVDAsBWbPNhjTHTwcSqhF8Jp2W6wFkC8iwG3qR.#=qfOFdegjrBN$1UO2aK2Dd1g==(IEnumerable&lt;/code&gt;1 #=q_ldcTM_jyhYkLszl5I2EKw==)
at Ecng.Trading.Algo.Storages.TradingStorage.DeleteTrades(Security security, IEnumerable`1 trades)
at Ecng.Trading.Hydra.Worker.&lt;Download&gt;b__10(IMarketDataSource source) in D:\SS\Sources\Hydra\Hydra\Worker.cs:line 136&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C уважением&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6179/</id>
    <title type="text">Еще пара вещей по гидре [3.0.6] 1) в SmartDepthSource public void Start(IEnumerable securities) { _t...</title>
    <published>2011-02-22T17:24:06Z</published>
    <updated>2011-02-22T17:24:06Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Еще пара вещей по гидре [3.0.6]&lt;/p&gt;
&lt;p&gt;1)&lt;/p&gt;
&lt;p&gt;в SmartDepthSource&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;	public void Start(IEnumerable&amp;lt;Security&amp;gt; securities)
	{
		_trader.Start();
		securities.ForEach(_trader.Trader.RegisterQuotes);
	}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;_trader.Start вызывает Connect. Но Trader.Connected не ждет
В итоге RegisterQuotes вызовется до Trader.Connected.&lt;/p&gt;
&lt;p&gt;Это разве правильно?&lt;/p&gt;
&lt;p&gt;2)&lt;/p&gt;
&lt;p&gt;Я захотел SmartDepthSource сделать помимо источника Quotes сделать источником Trade-ов.&lt;/p&gt;
&lt;p&gt;Для этого добавил реализацию ITradeSource&lt;/p&gt;
&lt;p&gt;И все можно сказать заработало, загрузился трейд, но при сохранении в базу в
DeleteTrades() все кончилось исключением&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Smart 20:06:44.1875577 Загружено 1 сделок.
Smart 20:06:44.1875577 Первая сделка 12281010 для RIH1@RTS за 22/02/2011 20:06:42.
Smart 20:06:44.1875577 Последняя сделка 12281010 для RIH1@RTS за 22/02/2011 20:06:42.
Smart 20:06:44.1875577 System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at #=qN8oiXslVNgiUhuKs9C5uZgAkFATVDAsBWbPNhjTHTwcSqhF8Jp2W6wFkC8iwG3qR.#=qfOFdegjrBN$1UO2aK2Dd1g==(IEnumerable`1 #=q_ldcTM_jyhYkLszl5I2EKw==)
   at Ecng.Trading.Algo.Storages.TradingStorage.DeleteTrades(Security security, IEnumerable`1 trades)
   at Ecng.Trading.Hydra.Worker.&amp;lt;Download&amp;gt;b__10(IMarketDataSource source) in D:\SS\Sources\Hydra\Hydra\Worker.cs:line 136

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Мой вариант SmartDepthSource.cs&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;

namespace Ecng.Trading.Hydra.Smart
{
	using System;
	using System.Collections.Generic;
	using System.ComponentModel;
	using System.Net;

	using Ecng.Collections;
	using Ecng.Common;
	using Ecng.Trading.BusinessEntities;
	using Ecng.Trading.Hydra.Core;
	using Ecng.Trading.Smart;
    using System.Linq;

	class SmartDepthSource : IMarketDepthSource, ISecuritySource, ITradeSource
	{
		private sealed class SmartSettings : MarketDataSourceSettings
		{
			public SmartSettings(MarketDataSourceSettings settings)
			{
				if (settings == null)
					throw new ArgumentNullException(&amp;quot;settings&amp;quot;);

				this.RealSettings = settings;
			}

			public override bool IsEnabled
			{
				get { return this.RealSettings.IsEnabled; }
				set { this.RealSettings.IsEnabled = value; }
			}

			public override TimeSpan WorkingFrom
			{
				get { return this.RealSettings.WorkingFrom; }
				set { this.RealSettings.WorkingFrom = value; }
			}

			public override TimeSpan WorkingTo
			{
				get { return this.RealSettings.WorkingTo; }
				set { this.RealSettings.WorkingTo = value; }
			}

			public override TimeSpan Interval
			{
				get { return this.RealSettings.Interval; }
				set { this.RealSettings.Interval = value; }
			}

			public override string DumpFolder
			{
				get { return this.RealSettings.DumpFolder; }
				set { this.RealSettings.DumpFolder = value; }
			}

			[Category(&amp;quot;Smart&amp;quot;)]
			[DisplayName(&amp;quot;Логин&amp;quot;)]
			public string Login
			{
				get { return (string)this.RealSettings.ExtensionInfo[&amp;quot;Login&amp;quot;]; }
				set { this.RealSettings.ExtensionInfo[&amp;quot;Login&amp;quot;] = value; }
			}

			[Category(&amp;quot;Smart&amp;quot;)]
			[DisplayName(&amp;quot;Пароль&amp;quot;)]
			public string Password
			{
				get { return (string)this.RealSettings.ExtensionInfo[&amp;quot;Password&amp;quot;]; }
				set { this.RealSettings.ExtensionInfo[&amp;quot;Password&amp;quot;] = value; }
			}

			[Category(&amp;quot;Smart&amp;quot;)]
			[DisplayName(&amp;quot;Адрес&amp;quot;)]
			public string Address
			{
				get { return this.RealSettings.ExtensionInfo[&amp;quot;Address&amp;quot;].To&amp;lt;string&amp;gt;(); }
				set { this.RealSettings.ExtensionInfo[&amp;quot;Address&amp;quot;] = value; }
			}

			internal MarketDataSourceSettings RealSettings { get; private set; }
		}

		private readonly Guid _id = &amp;quot;1ED92215-3E57-4EC9-89E5-22EC65786C67&amp;quot;.To&amp;lt;Guid&amp;gt;();
		private readonly HydraStorage _storage;
		private readonly SmartSettings _settings;
		private readonly MarketDataTrader _trader;

        private IEnumerable&amp;lt;Security&amp;gt; _securities;

		public SmartDepthSource(HydraStorage storage)
		{
			if (storage == null)
				throw new ArgumentNullException(&amp;quot;storage&amp;quot;);

			_storage = storage;

			var settings = _storage.SourcesSettings.LoadBySourceId(_id);

			if (settings == null)
			{
				settings = new MarketDataSourceSettings
				{
					SourceId = _id,
					WorkingFrom = new TimeSpan(0, 0, 0),
					WorkingTo = new TimeSpan(23, 59, 0),
					ExtensionInfo = new Dictionary&amp;lt;object, object&amp;gt;(),
					DumpFolder = string.Empty,
				};

				_settings = new SmartSettings(settings)
				{
					Login = string.Empty,
					Password = string.Empty,
					Address = SmartAddresses.Major.To&amp;lt;string&amp;gt;(),
				};

				SaveSettings();
			}
			else
				_settings = new SmartSettings(settings);

			_trader = new MarketDataTrader(new SecurityStorage(this), 
                CreateTrader);
		}

        ITrader CreateTrader()
        {
            SmartTrader st = new SmartTrader(_settings.Login, _settings.Password, _settings.Address.To&amp;lt;IPAddress&amp;gt;());
            st.Connected += new Action(TraderConnected);
            return st;
        }

        void TraderConnected()
        {
            if (_securities != null)
            {
                _securities.ForEach(_trader.Trader.RegisterQuotes);
                _securities.ForEach(_trader.Trader.RegisterTrades);
            }
        }

		Uri IMarketDataSource.Icon
		{
			get { return null; }
		}
 
		Guid IMarketDataSource.Id
		{
			get { return _id; }
		}

		public string Name
		{
			get { return &amp;quot;Smart&amp;quot;; }
		}
         
		HydraStorage IMarketDataSource.Storage
		{
			get { return _storage; }
		}

		MarketDataSourceSettings IMarketDataSource.Settings
		{
			get { return _settings; }
		}

		public void SaveSettings()
		{
			_storage.SourcesSettings.Save(_settings.RealSettings);
		}

		public void Start(IEnumerable&amp;lt;Security&amp;gt; securities)
		{
            _securities = securities;
            _trader.Start();
			//securities.ForEach(_trader.Trader.RegisterQuotes);
		}

		public void Stop()
		{
			_trader.Stop();
		}

		public IEnumerable&amp;lt;MarketDepth&amp;gt; Load(Security security)
		{
			if (_trader.LastError != null)
			{
				var copy = _trader.LastError;
				_trader.LastError = null;
				throw copy;
			}

			return _trader.GetMarketDepths(security);
		}

        IEnumerable&amp;lt;Trade&amp;gt; ITradeSource.Load(Security security)
        {
            if (_trader.LastError != null)
            {
                var copy = _trader.LastError;
                _trader.LastError = null;
                throw copy;
            }

            return _trader.GetTrades(security);
        }

		public void CommitLoad(Security security)
		{
		}

		public IEnumerable&amp;lt;Security&amp;gt; GetNewSecurities()
		{
			return _trader.GetNewSecurities();
		}
	}
}

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6175/</id>
    <title type="text">Чтобы тестирование вдвойне было качественнее. Тогда уж давайте вдесятерне ;) </title>
    <published>2011-02-22T16:07:25Z</published>
    <updated>2011-02-22T16:07:25Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&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.ru/posts/m/6168/</id>
    <title type="text">pyhta4og: Подписался на RealTimeTestTrader.NewTrade сделки приходят по два раза. Чтобы тестирование ...</title>
    <published>2011-02-22T15:12:34Z</published>
    <updated>2011-02-22T15:12:34Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(6164)" rel="nofollow" target="_blank"&gt;pyhta4og&lt;/a&gt;:&lt;/strong&gt;
Подписался на RealTimeTestTrader&lt;SmartTrader&gt;.NewTrade
сделки приходят по два раза.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Чтобы тестирование вдвойне было качественнее.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6164/</id>
    <title type="text">Подписался на RealTimeTestTrader.NewTrade сделки приходят по два раза. В комбобоксе Portfolio - все ...</title>
    <published>2011-02-22T10:40:04Z</published>
    <updated>2011-02-22T10:40:04Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.ru/users/497/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Подписался на RealTimeTestTrader&lt;SmartTrader&gt;.NewTrade
сделки приходят по два раза.&lt;/p&gt;
&lt;p&gt;В комбобоксе Portfolio - все cчета по два раза.&lt;/p&gt;
&lt;p&gt;Похоже враппер каким-то образом задваивает посылку всех event-ов&lt;/p&gt;
&lt;p&gt;С уважением&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>