namespace StockSharp.BusinessEntities
{
	using System;
	using System.Collections.Generic;

	using Ecng.Serialization;

	using StockSharp.Logging;
	using StockSharp.Messages;

	/// <summary>
	/// Îñíîâíîé èíòåðôåéñ, ïðåäîñòàâëÿþùèé ïîäêëþ÷åíèå ñ òîðãîâûìè ñèñòåìàìè.
	/// </summary>
	public interface IConnector : IPersistable, ILogReceiver, IMarketDataProvider, ISecurityProvider
	{
		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ ñîáñòâåííûõ íîâûõ ñäåëîê.
		/// </summary>
		event Action<IEnumerable<MyTrade>> NewMyTrades;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ âñåõ íîâûõ ñäåëîê.
		/// </summary>
		event Action<IEnumerable<Trade>> NewTrades;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ çàÿâîê.
		/// </summary>
		event Action<IEnumerable<Order>> NewOrders;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ñîñòîÿíèÿ çàÿâîê (ñíÿòà, óäîâëåòâîðåíà).
		/// </summary>
		event Action<IEnumerable<Order>> OrdersChanged;

		/// <summary>
		/// Ñîáûòèå îá îøèáêàõ, ñâÿçàííûõ ñ ðåãèñòðàöèåé çàÿâîê.
		/// </summary>
		event Action<IEnumerable<OrderFail>> OrdersRegisterFailed;

		/// <summary>
		/// Ñîáûòèå îá îøèáêàõ, ñâÿçàííûõ ñî ñíÿòèåì çàÿâîê.
		/// </summary>
		event Action<IEnumerable<OrderFail>> OrdersCancelFailed;

		/// <summary>
		/// Ñîáûòèå îá îøèáêàõ, ñâÿçàííûõ ñ ðåãèñòðàöèåé ñòîï-çàÿâîê.
		/// </summary>
		event Action<IEnumerable<OrderFail>> StopOrdersRegisterFailed;

		/// <summary>
		/// Ñîáûòèå îá îøèáêàõ, ñâÿçàííûõ ñî ñíÿòèåì ñòîï-çàÿâîê.
		/// </summary>
		event Action<IEnumerable<OrderFail>> StopOrdersCancelFailed;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ ñòîï-çàÿâîê.
		/// </summary>
		event Action<IEnumerable<Order>> NewStopOrders;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ñîñòîÿíèÿ ñòîï-çàÿâîê.
		/// </summary>
		event Action<IEnumerable<Order>> StopOrdersChanged;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ èíñòðóìåíòîâ.
		/// </summary>
		event Action<IEnumerable<Security>> NewSecurities;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ïàðàìåòðîâ èíñòðóìåíòîâ.
		/// </summary>
		event Action<IEnumerable<Security>> SecuritiesChanged;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ ïîðòôåëåé.
		/// </summary>
		event Action<IEnumerable<Portfolio>> NewPortfolios;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ïàðàìåòðîâ ïîðòôåëåé.
		/// </summary>
		event Action<IEnumerable<Portfolio>> PortfoliosChanged;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ ïîçèöèé.
		/// </summary>
		event Action<IEnumerable<Position>> NewPositions;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ïàðàìåòðîâ ïîçèöèé.
		/// </summary>
		event Action<IEnumerable<Position>> PositionsChanged;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ ñòàêàíîâ ñ êîòèðîâêàìè.
		/// </summary>
		event Action<IEnumerable<MarketDepth>> NewMarketDepths;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ñòàêàíîâ ñ êîòèðîâêàìè.
		/// </summary>
		event Action<IEnumerable<MarketDepth>> MarketDepthsChanged;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâûõ çàïèñåé â ëîãå çàÿâîê.
		/// </summary>
		event Action<IEnumerable<OrderLogItem>> NewOrderLogItems;

		/// <summary>
		/// Ñîáûòèå ïîÿâëåíèÿ íîâîñòè.
		/// </summary>
		event Action<News> NewNews;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ íîâîñòè (íàïðèìåð, ïðè ñêà÷èâàíèè òåêñòà <see cref="StockSharp.BusinessEntities.News.Story"/>).
		/// </summary>
		event Action<News> NewsChanged;

		/// <summary>
		/// Ñîáûòèå îáðàáîòêè íîâîãî ñîîáùåíèÿ <see cref="Message"/>.
		/// </summary>
		event Action<Message> NewMessage;

		/// <summary>
		/// Ñîáûòèå óñïåøíîãî ïîäêëþ÷åíèÿ.
		/// </summary>
		event Action Connected;

		/// <summary>
		/// Ñîáûòèå óñïåøíîãî îòêëþ÷åíèÿ.
		/// </summary>
		event Action Disconnected;

		/// <summary>
		/// Ñîáûòèå îøèáêè ïîäêëþ÷åíèÿ (íàïðèìåð, ñîåäèíåíèÿ áûëî ðàçîðâàíî).
		/// </summary>
		event Action<Exception> ConnectionError;

		/// <summary>
		/// Ñîáûòèå, ñèãíàëèçèðóþùåå îá îøèáêå ïðè ïîëó÷åíèè èëè îáðàáîòêå íîâûõ äàííûõ ñ ñåðâåðà.
		/// </summary>
		event Action<Exception> Error;

		/// <summary>
		/// Ñîáûòèå, ñèãíàëèçèðóþùåå îá èçìåíåíèè òåêóùåãî âðåìåíè íà áèðæåâûõ ïëîùàäêàõ <see cref="ExchangeBoards"/>.
		/// Ïåðåäàåòñÿ ðàçíèöà âî âðåìåíè, ïðîøåäøåå ñ ïîñëåäíåãî âûçîâà ñîáûòèÿ. Ïåðâûé ðàç ñîáûòèå ïåðåäàåò çíà÷åíèå <see cref="TimeSpan.Zero"/>.
		/// </summary>
		event Action<TimeSpan> MarketTimeChanged;

		/// <summary>
		/// Ñîáûòèå, ïåðåäàþùåå ðåçóëüòàò ïîèñêà, çàïóùåííîãî ÷åðåç ìåòîä <see cref="LookupSecurities(StockSharp.BusinessEntities.Security)"/>.
		/// </summary>
		event Action<IEnumerable<Security>> LookupSecuritiesResult;

		/// <summary>
		/// Ñîáûòèå, ïåðåäàþùåå ðåçóëüòàò ïîèñêà, çàïóùåííîãî ÷åðåç ìåòîä <see cref="LookupPortfolios"/>.
		/// </summary>
		event Action<IEnumerable<Portfolio>> LookupPortfoliosResult;

		/// <summary>
		/// Ñîáûòèå óñïåøíîé ðåãèñòðàöèè èíñòðóìåíòà äëÿ ïîëó÷åíèÿ ìàðêåò-äàííûõ.
		/// </summary>
		event Action<Security, MarketDataTypes> MarketDataSubscriptionSucceeded;

		/// <summary>
		/// Ñîáûòèå îøèáêè ðåãèñòðàöèè èíñòðóìåíòà äëÿ ïîëó÷åíèÿ ìàðêåò-äàííûõ.
		/// </summary>
		event Action<Security, MarketDataTypes, Exception> MarketDataSubscriptionFailed;

		/// <summary>
		/// Ñîáûòèå èçìåíåíèÿ ñîñòîÿíèÿ ñåññèè äëÿ áèðæåâîé ïëîùàäêè.
		/// </summary>
		event Action<ExchangeBoard, SessionStates> SessionStateChanged;

		/// <summary>
		/// Ïîëó÷èòü ñîñòîÿíèå ñåññèè äëÿ çàäàííîé ïëîùàäêè.
		/// </summary>
		/// <param name="board">Áèðæåâàÿ ïëîùàäêà ýëåêòðîííûõ òîðãîâ.</param>
		/// <returns>Ñîñòîÿíèå ñåññèè. Åñëè èíôîðìàöèÿ î ñîñòîÿíèè ñåññèè îòñóòñòâóåò, òî áóäåò âîçâðàùåíî <see langword="null"/>.</returns>
		SessionStates? GetSessionState(ExchangeBoard board);

		/// <summary>
		/// Ñïèñîê âñåõ áèðæåâûõ ïëîùàäîê, äëÿ êîòîðûõ çàãðóæåíû èíñòðóìåíòû <see cref="Securities"/>.
		/// </summary>
		IEnumerable<ExchangeBoard> ExchangeBoards { get; }

		/// <summary>
		/// Ñïèñîê âñåõ çàãðóæåííûõ èíñòðóìåíòîâ.
		/// Âûçûâàòü íåîáõîäèìî ïîñëå òîãî, êàê ïðèøëî ñîáûòèå <see cref="NewSecurities" />. Èíà÷å áóäåò âîçâðàùåíî ïîñòîå ìíîæåñòâî.
		/// </summary>
		IEnumerable<Security> Securities { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå çàÿâêè.
		/// </summary>
		IEnumerable<Order> Orders { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå ñòîï-çàÿâêè.
		/// </summary>
		IEnumerable<Order> StopOrders { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå îøèáêè ïðè ðåãèñòðàöèè çàÿâîê.
		/// </summary>
		IEnumerable<OrderFail> OrderRegisterFails { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå îøèáêè ïðè ñíÿòèè çàÿâîê.
		/// </summary>
		IEnumerable<OrderFail> OrderCancelFails { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå ñäåëêè.
		/// </summary>
		IEnumerable<Trade> Trades { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå ñîáñòâåííûå ñäåëêè.
		/// </summary>
		IEnumerable<MyTrade> MyTrades { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå ïîðòôåëè.
		/// </summary>
		IEnumerable<Portfolio> Portfolios { get; }

		/// <summary>
		/// Ïîëó÷èòü âñå ïîçèöèè.
		/// </summary>
		IEnumerable<Position> Positions { get; }

		/// <summary>
		/// Âñå íîâîñòè.
		/// </summary>
		IEnumerable<News> News { get; }

		/// <summary>
		/// Ñîñòîÿíèå ñîåäèíåíèÿ.
		/// </summary>
		ConnectionStates ConnectionState { get; }

		/// <summary>
		/// Ïîääåðæèâàåòñÿ ëè ïåðåðåãèñòðàöèÿ çàÿâîê ÷åðåç ìåòîä <see cref="ReRegisterOrder(StockSharp.BusinessEntities.Order,StockSharp.BusinessEntities.Order)"/>
		/// â âèäå îäíîé òðàíçàêöèè.
		/// </summary>
		bool IsSupportAtomicReRegister { get; }

		/// <summary>
		/// Ñïèñîê âñåõ èíñòðóìåíòîâ, çàðåãèñòðèðîâàííûõ ÷åðåç <see cref="RegisterSecurity"/>.
		/// </summary>
		IEnumerable<Security> RegisteredSecurities { get; }

		/// <summary>
		/// Ñïèñîê âñåõ èíñòðóìåíòîâ, çàðåãèñòðèðîâàííûõ ÷åðåç <see cref="RegisterMarketDepth"/>.
		/// </summary>
		IEnumerable<Security> RegisteredMarketDepths { get; }

		/// <summary>
		/// Ñïèñîê âñåõ èíñòðóìåíòîâ, çàðåãèñòðèðîâàííûõ ÷åðåç <see cref="RegisterTrades"/>.
		/// </summary>
		IEnumerable<Security> RegisteredTrades { get; }

		/// <summary>
		/// Ñïèñîê âñåõ èíñòðóìåíòîâ, çàðåãèñòðèðîâàííûõ ÷åðåç <see cref="RegisterOrderLog"/>.
		/// </summary>
		IEnumerable<Security> RegisteredOrderLogs { get; }

		/// <summary>
		/// Ñïèñîê âñåõ ïîðòôåëåé, çàðåãèñòðèðîâàííûõ ÷åðåç <see cref="RegisterPortfolio"/>.
		/// </summary>
		IEnumerable<Portfolio> RegisteredPortfolios { get; }

		/// <summary>
		/// Àäàïòåð äëÿ òðàíçàêöèé.
		/// </summary>
		IMessageAdapter TransactionAdapter { get; }

		/// <summary>
		/// Àäàïòåð äëÿ ìàðêåò-äàííûõ.
		/// </summary>
		IMessageAdapter MarketDataAdapter { get; }

		/// <summary>
		/// Ïîäêëþ÷èòüñÿ ê òîðãîâîé ñèñòåìå.
		/// </summary>
		void Connect();

		/// <summary>
		/// Îòêëþ÷èòüñÿ îò òîðãîâîé ñèñòåìû.
		/// </summary>
		void Disconnect();

		/// <summary>
		/// Íàéòè èíñòðóìåíòû, ñîîòâåòñòâóþùèå ôèëüòðó <paramref name="criteria"/>.
		/// Íàéäåííûå èíñòðóìåíòû áóäóò ïåðåäàíû ÷åðåç ñîáûòèå <see cref="LookupSecuritiesResult"/>.
		/// </summary>
		/// <param name="criteria">Èíñòðóìåíò, ïîëÿ êîòîðîãî áóäóò èñïîëüçîâàòüñÿ â êà÷åñòâå ôèëüòðà.</param>
		void LookupSecurities(Security criteria);

		/// <summary>
		/// Íàéòè èíñòðóìåíòû, ñîîòâåòñòâóþùèå ôèëüòðó <paramref name="criteria"/>.
		/// Íàéäåííûå èíñòðóìåíòû áóäóò ïåðåäàíû ÷åðåç ñîáûòèå <see cref="LookupSecuritiesResult"/>.
		/// </summary>
		/// <param name="criteria">Êðèòåðèé, ïîëÿ êîòîðîãî áóäóò èñïîëüçîâàòüñÿ â êà÷åñòâå ôèëüòðà.</param>
		void LookupSecurities(SecurityLookupMessage criteria);

		/// <summary>
		/// Íàéòè ïîðòôåëè, ñîîòâåòñòâóþùèå ôèëüòðó <paramref name="criteria"/>.
		/// Íàéäåííûå ïîðòôåëè áóäóò ïåðåäàíû ÷åðåç ñîáûòèå <see cref="LookupPortfoliosResult"/>.
		/// </summary>
		/// <param name="criteria">Ïîðòôåëü, ïîëÿ êîòîðîãî áóäóò èñïîëüçîâàòüñÿ â êà÷åñòâå ôèëüòðà.</param>
		void LookupPortfolios(Portfolio criteria);

		/// <summary>
		/// Ïîëó÷èòü ïîçèöèþ ïî ïîðòôåëþ è èíñòðóìåíòó.
		/// </summary>
		/// <param name="portfolio">Ïîðòôåëü, ïî êîòîðîìó íóæíî íàéòè ïîçèöèþ.</param>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íóæíî íàéòè ïîçèöèþ.</param>
		/// <param name="depoName">Íàçâàíèå äåïîçèòàðèÿ, ãäå íàõîäèòñÿ ôèçè÷åñêè öåííàÿ áóìàãà.
		/// Ïî-óìîë÷àíèþ ïåðåäàåòñÿ ïóñòàÿ ñòðîêà, ÷òî îçíà÷àåò ñóììàðíóþ ïîçèöèþ ïî âñåì äåïîçèòàðèÿì.</param>
		/// <returns>Ïîçèöèÿ.</returns>
		Position GetPosition(Portfolio portfolio, Security security, string depoName = "");

		/// <summary>
		/// Ïîëó÷èòü îòôèëüòðîâàííûé ñòàêàí êîòèðîâîê.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íóæíî ïîëó÷èòü ñòàêàí.</param>
		/// <returns>Îòôèëüòðîâàííûé ñòàêàí êîòèðîâîê.</returns>
		MarketDepth GetFilteredMarketDepth(Security security);

		/// <summary>
		/// Çàðåãèñòðèðîâàòü çàÿâêó íà áèðæå.
		/// </summary>
		/// <param name="order">Çàÿâêà, ñîäåðæàùàÿ èíôîðìàöèþ äëÿ ðåãèñòðàöèè.</param>
		void RegisterOrder(Order order);

		/// <summary>
		/// Ïåðåðåãèñòðèðîâàòü çàÿâêó íà áèðæå.
		/// </summary>
		/// <param name="oldOrder">Çàÿâêà, êîòîðóþ íóæíî ñíÿòü.</param>
		/// <param name="newOrder">Íîâàÿ çàÿâêà, êîòîðóþ íóæíî çàðåãèñòðèðîâàòü.</param>
		void ReRegisterOrder(Order oldOrder, Order newOrder);

		/// <summary>
		/// Ïåðåðåãèñòðèðîâàòü çàÿâêó íà áèðæå.
		/// </summary>
		/// <param name="oldOrder">Çàÿâêà, êîòîðóþ íóæíî ñíÿòü è íà îñíîâå íåå çàðåãèñòðèðîâàòü íîâóþ.</param>
		/// <param name="price">Öåíà íîâîé çàÿâêè.</param>
		/// <param name="volume">Îáúåì íîâîé çàÿâêè.</param>
		/// <returns>Íîâàÿ çàÿâêà.</returns>
		Order ReRegisterOrder(Order oldOrder, decimal price, decimal volume);

		/// <summary>
		/// Îòìåíèòü çàÿâêó íà áèðæå.
		/// </summary>
		/// <param name="order">Çàÿâêà, êîòîðóþ íóæíî îòìåíèòü.</param>
		void CancelOrder(Order order);

		/// <summary>
		/// Îòìåíèòü ãðóïïó çàÿâîê íà áèðæå ïî ôèëüòðó.
		/// </summary>
		/// <param name="isStopOrder"><see langword="true"/>, åñëè íóæíî îòìåíèòü òîëüêî ñòîï-çàÿâêè, <see langword="false"/> - åñëè òîëüêî îáû÷íûé è <see langword="null"/> - åñëè îáà òèïà.</param>
		/// <param name="portfolio">Ïîðòôåëü. Åñëè çíà÷åíèå ðàâíî <see langword="null"/>, òî ïîðòôåëü íå ïîïàäàåò â ôèëüòð ñíÿòèÿ çàÿâîê.</param>
		/// <param name="direction">Íàïðàâëåíèå çàÿâêè. Åñëè çíà÷åíèå ðàâíî <see langword="null"/>, òî íàïðàâëåíèå íå ïîïàäàåò â ôèëüòð ñíÿòèÿ çàÿâîê.</param>
		/// <param name="board">Òîðãîâàÿ ïëîùàäêà. Åñëè çíà÷åíèå ðàâíî <see langword="null"/>, òî ïëîùàäêà íå ïîïàäàåò â ôèëüòð ñíÿòèÿ çàÿâîê.</param>
		/// <param name="security">Èíñòðóìåíò. Åñëè çíà÷åíèå ðàâíî <see langword="null"/>, òî èíñòðóìåíò íå ïîïàäàåò â ôèëüòð ñíÿòèÿ çàÿâîê.</param>
		void CancelOrders(bool? isStopOrder = null, Portfolio portfolio = null, Sides? direction = null, ExchangeBoard board = null, Security security = null);

		/// <summary>
		/// Ïîäïèñàòüñÿ íà ïîëó÷åíèå ðûíî÷íûõ äàííûõ ïî èíñòðóìåíòó.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü íîâóþ èíôîðìàöèþ.</param>
		/// <param name="type">Òèï ðûíî÷íûõ äàííûõ.</param>
		void SubscribeMarketData(Security security, MarketDataTypes type);

		/// <summary>
		/// Îòïèñàòüñÿ îò ïîëó÷åíèÿ ðûíî÷íûõ äàííûõ ïî èíñòðóìåíòó.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü íîâóþ èíôîðìàöèþ.</param>
		/// <param name="type">Òèï ðûíî÷íûõ äàííûõ.</param>
		void UnSubscribeMarketData(Security security, MarketDataTypes type);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü êîòèðîâêè (ñòàêàí) ïî èíñòðóìåíòó.
		/// Çíà÷åíèå êîòèðîâîê ìîæíî ïîëó÷èòü ÷åðåç ñîáûòèå <see cref="MarketDepthsChanged"/>.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü êîòèðîâêè.</param>
		void RegisterMarketDepth(Security security);

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå êîòèðîâîê ïî èíñòðóìåíòó.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî îñòàíîâèòü ïîëó÷åíèå êîòèðîâîê.</param>
		void UnRegisterMarketDepth(Security security);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü îòôèëüòðîâàííûå êîòèðîâêè (ñòàêàí) ïî èíñòðóìåíòó.
		/// Çíà÷åíèå êîòèðîâîê ìîæíî ïîëó÷èòü ÷åðåç ìåòîä <see cref="IConnector.GetFilteredMarketDepth"/>.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü êîòèðîâêè.</param>
		void RegisterFilteredMarketDepth(Security security);

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå îòôèëüòðîâàííûõ êîòèðîâîê ïî èíñòðóìåíòó.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî îñòàíîâèòü ïîëó÷åíèå êîòèðîâîê.</param>
		void UnRegisterFilteredMarketDepth(Security security);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü ñäåëêè (òèêîâûå äàííûå) ïî èíñòðóìåíòó. Íîâûå ñäåëêè áóäóò ïðèõîäèòü ÷åðåç
		/// ñîáûòèå <see cref="NewTrades"/>.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü ñäåëêè.</param>
		void RegisterTrades(Security security);

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå ñäåëîê (òèêîâûå äàííûå) ïî èíñòðóìåíòó.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî îñòàíîâèòü ïîëó÷åíèå ñäåëîê.</param>
		void UnRegisterTrades(Security security);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü íîâóþ èíôîðìàöèþ (íàïðèìåð, <see cref="Security.LastTrade"/> èëè <see cref="Security.BestBid"/>) ïî èíñòðóìåíòó.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü íîâóþ èíôîðìàöèþ.</param>
		void RegisterSecurity(Security security);

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå íîâîé èíôîðìàöèè.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî îñòàíîâèòü ïîëó÷åíèå íîâîé èíôîðìàöèè.</param>
		void UnRegisterSecurity(Security security);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü ëîã çàÿâîê äëÿ èíñòðóìåíòà.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü ëîã çàÿâîê.</param>
		void RegisterOrderLog(Security security);

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå ëîãà çàÿâîê äëÿ èíñòðóìåíòà.
		/// </summary>
		/// <param name="security">Èíñòðóìåíò, ïî êîòîðîìó íåîáõîäèìî îñòàíîâèòü ïîëó÷åíèå ëîãà çàÿâîê.</param>
		void UnRegisterOrderLog(Security security);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü íîâóþ èíôîðìàöèþ ïî ïîðòôåëþ.
		/// </summary>
		/// <param name="portfolio">Ïîðòôåëü, ïî êîòîðîìó íåîáõîäèìî íà÷àòü ïîëó÷àòü íîâóþ èíôîðìàöèþ.</param>
		void RegisterPortfolio(Portfolio portfolio);

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå íîâîé èíôîðìàöèè ïî ïîðòôåëþ.
		/// </summary>
		/// <param name="portfolio">Ïîðòôåëü, ïî êîòîðîìó íåîáõîäèìî îñòàíîâèòü ïîëó÷åíèå íîâîé èíôîðìàöèè.</param>
		void UnRegisterPortfolio(Portfolio portfolio);

		/// <summary>
		/// Íà÷àòü ïîëó÷àòü íîâîñòè.
		/// </summary>
		void RegisterNews();

		/// <summary>
		/// Îñòàíîâèòü ïîëó÷åíèå íîâîñòåé.
		/// </summary>
		void UnRegisterNews();

		/// <summary>
		/// Çàïðîñèòü òåêñò íîâîñòè <see cref="BusinessEntities.News.Story"/>. Ïîñëå ïîëó÷åíèÿ òåêñòà áóäåò âûçâàíî ñîáûòèå <see cref="NewsChanged"/>.
		/// </summary>
		/// <param name="news">Íîâîñòü.</param>
		void RequestNewsStory(News news);
	}
}