/// <summary> /// subscribe to receive candle /// подписаться на получение свечек /// </summary> private void Subscrable() { try { while (true) { Thread.Sleep(50); if (_neadToStopThread) { return; } if (ServerType == ServerType.None || string.IsNullOrWhiteSpace(NamePaper)) { continue; } List <IServer> servers = ServerMaster.GetServers(); if (servers == null) { if (ServerType != ServerType.None) { ServerMaster.SetNeedServer(ServerType); } continue; } try { if (ServerType == ServerType.Optimizer && this.ServerUid != 0) { for (int i = 0; i < servers.Count; i++) { if (servers[i].ServerType == ServerType.Optimizer && ((OptimizerServer)servers[i]).NumberServer == this.ServerUid) { _myServer = servers[i]; break; } } } else { _myServer = servers.Find(server => server.ServerType == ServerType); } } catch { // ignore continue; } if (_myServer == null) { if (ServerType != ServerType.None) { ServerMaster.SetNeedServer(ServerType); } continue; } else { SubscribleOnServer(_myServer); if (_myServer.ServerType == ServerType.Tester) { ((TesterServer)_myServer).TestingEndEvent -= ConnectorReal_TestingEndEvent; ((TesterServer)_myServer).TestingEndEvent += ConnectorReal_TestingEndEvent; } } Thread.Sleep(50); ServerConnectStatus stat = _myServer.ServerStatus; if (stat != ServerConnectStatus.Connect) { continue; } lock (_subscrableLocker) { if (_mySeries == null) { while (_mySeries == null) { if (_neadToStopThread) { return; } Thread.Sleep(100); _mySeries = _myServer.StartThisSecurity(_namePaper, TimeFrameBuilder); if (_mySeries == null && _myServer.ServerType == ServerType.Optimizer && ((OptimizerServer)_myServer).NumberServer != ServerUid) { for (int i = 0; i < servers.Count; i++) { if (servers[i].ServerType == ServerType.Optimizer && ((OptimizerServer)servers[i]).NumberServer == this.ServerUid) { UnSubscribleOnServer(_myServer); _myServer = servers[i]; SubscribleOnServer(_myServer); break; } } } } _mySeries.СandleUpdeteEvent += MySeries_СandleUpdeteEvent; _mySeries.СandleFinishedEvent += MySeries_СandleFinishedEvent; _subscrabler = null; } } _subscrabler = null; if (SecuritySubscribeEvent != null) { SecuritySubscribeEvent(Security); } return; } } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }
/// <summary> /// subscribe to receive candle /// подписаться на получение свечек /// </summary> private void Subscrable() { try { while (true) { Thread.Sleep(50); if (_neadToStopThread) { return; } if (ServerType == ServerType.None || string.IsNullOrWhiteSpace(NamePaper)) { continue; } List <IServer> servers = ServerMaster.GetServers(); if (servers == null) { if (ServerType != ServerType.None) { ServerMaster.SetNeedServer(ServerType); } continue; } try { _myServer = servers.Find(server => server.ServerType == ServerType); } catch { // ignore continue; } if (_myServer == null) { if (ServerType != ServerType.None) { ServerMaster.SetNeedServer(ServerType); } continue; } else { _myServer.NewBidAscIncomeEvent -= ConnectorBotNewBidAscIncomeEvent; _myServer.NewMyTradeEvent -= ConnectorBot_NewMyTradeEvent; _myServer.NewOrderIncomeEvent -= ConnectorBot_NewOrderIncomeEvent; _myServer.NewMarketDepthEvent -= ConnectorBot_NewMarketDepthEvent; _myServer.NewTradeEvent -= ConnectorBot_NewTradeEvent; _myServer.TimeServerChangeEvent -= myServer_TimeServerChangeEvent; _myServer.NeadToReconnectEvent -= _myServer_NeadToReconnectEvent; _myServer.NewBidAscIncomeEvent += ConnectorBotNewBidAscIncomeEvent; _myServer.NewMyTradeEvent += ConnectorBot_NewMyTradeEvent; _myServer.NewOrderIncomeEvent += ConnectorBot_NewOrderIncomeEvent; _myServer.NewMarketDepthEvent += ConnectorBot_NewMarketDepthEvent; _myServer.NewTradeEvent += ConnectorBot_NewTradeEvent; _myServer.TimeServerChangeEvent += myServer_TimeServerChangeEvent; _myServer.NeadToReconnectEvent += _myServer_NeadToReconnectEvent; if (_myServer.ServerType == ServerType.Tester) { ((TesterServer)_myServer).TestingEndEvent -= ConnectorReal_TestingEndEvent; ((TesterServer)_myServer).TestingEndEvent += ConnectorReal_TestingEndEvent; } } Thread.Sleep(50); ServerConnectStatus stat = _myServer.ServerStatus; if (stat != ServerConnectStatus.Connect) { continue; } lock (_subscrableLocker) { if (_mySeries == null) { while (_mySeries == null) { if (_neadToStopThread) { return; } Thread.Sleep(100); _mySeries = _myServer.StartThisSecurity(_namePaper, TimeFrameBuilder); } _mySeries.СandleUpdeteEvent += MySeries_СandleUpdeteEvent; _mySeries.СandleFinishedEvent += MySeries_СandleFinishedEvent; _subscrabler = null; } } _subscrabler = null; if (SecuritySubscribeEvent != null) { SecuritySubscribeEvent(Security); } return; } } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }