示例#1
0
        /// <summary>
        /// Метод подписывает пользователя на получение новых значений Level1.
        /// Могут использовать только пользователи с ролями: "Level1", "Level2" и "Admin".
        /// </summary>
        /// <param name="security"></param>
        public static FaultException SubscribeLevel1(Connector connector, Security security, List<string> roles)
        {
            string[] rolesPermission = { "Level1", "Level2", "Admin" };   //Доступно ролям.

            if (rolesPermission.Intersect(roles).Any())
            {
                if (security != null)
                {
                    var criteria = new StockSharp.BusinessEntities.Security
                    {
                        Code = security.Ticker,
                        Id = security.Code,
                        Board = StockSharp.BusinessEntities.ExchangeBoard.Nyse
                    };
                    //Регистрируем инструмент для получения Level1
                    connector.RegisterSecurity(criteria);
                    Console.WriteLine("Register SECURITY {0}, {1}", connector.ConnectionState, connector.Id);
                }
                else
                {
                    return new FaultException("Значение инструмента не может быть неопределенным.");
                }
            }
            else
            {
                return new FaultException("Level1 недоступен для этого аккаунта.");
            }

            return null;
        }
示例#2
0
        /// <summary>
        /// Метод отписывает пользователя от получения новых значений Level1.
        /// </summary>
        /// <param name="connector"></param>
        /// <param name="security"></param>
        /// <returns></returns>
        public static bool UnSubscribeLevel1(Connector connector, Security security)
        {
            if (security != null)
            {
                var criteria = new StockSharp.BusinessEntities.Security
                {
                    Code = security.Ticker,
                    Id = security.Code,
                    Board = StockSharp.BusinessEntities.ExchangeBoard.Nyse
                };

                //Отписываемся от получения новой информации по Level1
                connector.UnRegisterSecurity(criteria);
                return true;
            }

            return false;
        }
示例#3
0
        /// <summary>
        /// Метод подписывает пользователя на получения новых значений по стакану.
        /// </summary>
        /// <param name="connector"></param>
        /// <param name="security"></param>
        /// <param name="roles"></param>
        /// <returns></returns>
        public static FaultException SubscribeLevel2(Connector connector, Security security, List<string> roles)
        {
            string[] rolesPermission = { "Level2", "Admin" };   //Доступно ролям.
            if (rolesPermission.Intersect(roles).Any())
            {
                if (security != null)
                {
                    connector.SubscribeMarketData((StockSharp.BusinessEntities.Security)security, StockSharp.Messages.MarketDataTypes.MarketDepth);
                    Console.WriteLine("Level2 subscribed");
                }
                else
                {
                    return new FaultException("Значение инструмента не может быть неопределенным.");
                }
            }
            else
            {
                return new FaultException("Level2 недоступен для этого аккаунта.");
            }

            return null;
        }
示例#4
0
 /// <summary>
 /// Метод отписывает пользователя от получения новостей по указанному инструменту.
 /// </summary>
 /// <param name="connector"></param>
 /// <param name="security"></param>
 public static void UnSubscribeNews(Connector connector, Security security)
 {
     connector.UnSubscribeMarketData((StockSharp.BusinessEntities.Security)security, StockSharp.Messages.MarketDataTypes.News);
 }
示例#5
0
        /// <summary>
        /// Метод отписывает пользователя от получения новых значений по стакану.
        /// </summary>
        /// <param name="connector"></param>
        /// <param name="security"></param>
        /// <returns></returns>
        public static FaultException UnSubscribeLevel2(Connector connector, Security security)
        {
            if (security != null)
            {
                connector.UnSubscribeMarketData((StockSharp.BusinessEntities.Security)security, StockSharp.Messages.MarketDataTypes.MarketDepth);
            }
            else
            {
                return new FaultException("Значение инструмента не может быть неопределенным.");
            }

            return null;
        }
示例#6
0
 public void UnSubscribeMarketData(Security security, Entities.MarketDataTypes marketDataTypes)
 {
     switch(marketDataTypes)
     {
         case Entities.MarketDataTypes.Level1:
             UnSubscribeLevel1(_connector, security);    //Отписываемся от получения Level1 по указанному инструменту
             break;
         case Entities.MarketDataTypes.News:
             UnSubscribeNews(_connector, security);
             break;
         case Entities.MarketDataTypes.Level2:
             UnSubscribeLevel2(_connector, security);
             break;
     }
     _connector.UnSubscribeMarketData((StockSharp.BusinessEntities.Security)security, (StockSharp.Messages.MarketDataTypes)marketDataTypes);
 }
示例#7
0
        /// <summary>
        /// Метод подписывается на получение рыночной информации
        /// </summary>
        /// <param name="security"></param>
        /// <param name="marketDataTypes"></param>
        public void SubscribeMarketData(Security security, Entities.MarketDataTypes marketDataTypes)
        {
            if (security == null)
            {
                Callback.OnError(new FaultException("Значение инструмента не может быть неопределенным.")); //Если объект инструмента не создан
            }
            else {
                FaultException result = null;

                var criteria = _context.Securities.Where(s => s.Ticker == security.Ticker).FirstOrDefault();

                if (criteria != null)
                {
                    switch (marketDataTypes)
                    {
                        case Entities.MarketDataTypes.Level1:
                            result = SubscribeLevel1(_connector, criteria, _roles);     //Подписываемся на получение Level1.
                            if (result != null)
                                Callback.OnError(result);
                            break;
                        case Entities.MarketDataTypes.News:
                            SubscribeNews(_connector, criteria);                            //Подписываемся на новости.
                            break;
                        case Entities.MarketDataTypes.Level2:
                            result = SubscribeLevel2(_connector, criteria, _roles);             //Подписываемся на стакан.
                            if (result != null)
                                Callback.OnError(result);
                            break;
                        default:
                            break;
                    }
                }
                else
                {
                    Callback.OnError(new FaultException("Инструмент не найден."));  //Если объект инструмента создан, но такого инструмента нет в базе.
                }
            }    
        }
示例#8
0
        /// <summary>
        /// Метод возвращает исторические свечки с интервалом от секунды до месяца. Для ролей "Basic", "Level1" и "Level2"
        /// </summary>
        /// <param name="security">Инструмент</param>
        /// <param name="from">С какой даты и времени начинать закачку</param>
        /// <param name="to">До какой даты и времени закачивать</param>
        /// <param name="timeFrame">Таймфрем свечки</param>
        public void GetHistoricalCandles(Security security, DateTime from, DateTime to, TimeSpan timeFrame)
        {
            string[] roles = { "Basic", "Level1", "Level2", "Admin" };   //Доступно ролям

            if (roles.Intersect(_roles).Any())  //Доступно только ролям Basic и выше.
            {
                //var formatFrom = new DateTime(from.Year, from.Month, from.Day + 1, 9, 30, 00);
                //var formatTo = new DateTime(to.Year, to.Month, to.Day, 16, 00, 0) - timeFrame;

                ////var board = context.ExchangeBoards.FirstOrDefault(b => b.Id == security.ExchangeBoard.Id);
                var board = new StockSharp.BusinessEntities.ExchangeBoard();

                var criteria = new StockSharp.BusinessEntities.Security
                {
                    Code = security.Ticker,
                    Id = security.Code,
                    Board = board
                };

                var requestCandlies = new RequestCandles
                {
                    Security = criteria,
                    Type = typeof(TimeFrameCandle),
                    From = from,
                    To = to,
                    TimeFrame = timeFrame
                };

                _listener.requestCandlesQueue.Enqueue(requestCandlies);
            }
        }