// работа с ордерами /// <summary> /// место работы потока на очередях исполнения заявок и их отмены /// </summary> private void ExecutorOrdersThreadArea() { while (true) { if (_lastStartServerTime.AddSeconds(30) > DateTime.Now) { Thread.Sleep(1000); continue; } try { Thread.Sleep(20); if (_ordersToExecute != null && _ordersToExecute.Count != 0) { Order order; if (_ordersToExecute.TryDequeue(out order)) { ServerRealization.SendOrder(order); } } else if (_ordersToCansel != null && _ordersToCansel.Count != 0) { Order order; if (_ordersToCansel.TryDequeue(out order)) { ServerRealization.CanselOrder(order); } } } catch (Exception error) { SendLogMessage(error.ToString(), LogMessageType.Error); } } }
/// <summary> /// начать выкачивать данный иснтрументн /// </summary> /// <param name="namePaper"> название инструмента</param> /// <param name="timeFrameBuilder">объект несущий в себе данные о ТаймФрейме нужном для серии</param> /// <returns>в случае успешного запуска возвращает CandleSeries, объект генерирующий свечи</returns> public CandleSeries StartThisSecurity(string namePaper, TimeFrameBuilder timeFrameBuilder) { try { lock (_lockerStarter) { if (namePaper == "") { return(null); } if (Portfolios == null || Securities == null) { return(null); } if (_lastStartServerTime != DateTime.MinValue && _lastStartServerTime.AddSeconds(15) > DateTime.Now) { return(null); } if (ServerStatus != ServerConnectStatus.Connect) { return(null); } if (_candleManager == null) { return(null); } Security security = null; for (int i = 0; _securities != null && i < _securities.Count; i++) { if (_securities[i].Name == namePaper) { security = _securities[i]; break; } } if (security == null) { return(null); } CandleSeries series = new CandleSeries(timeFrameBuilder, security, StartProgram.IsOsTrader); ServerRealization.Subscrible(security); Thread.Sleep(300); _candleManager.StartSeries(series); SendLogMessage(OsLocalization.Market.Message14 + series.Security.Name + OsLocalization.Market.Message15 + series.TimeFrame + OsLocalization.Market.Message16, LogMessageType.System); if (_tickStorage != null) { _tickStorage.SetSecurityToSave(security); } return(series); } } catch (Exception error) { SendLogMessage(error.ToString(), LogMessageType.Error); return(null); } }
private void PrimeThreadArea() { while (true) { Thread.Sleep(1000); try { if (ServerRealization == null) { continue; } if ((ServerRealization.ServerStatus != ServerConnectStatus.Connect) && _serverStatusNead == ServerConnectStatus.Connect && _lastStartServerTime.AddSeconds(60) < DateTime.Now) { SendLogMessage(OsLocalization.Market.Message8, LogMessageType.System); ServerRealization.Dispose(); _candleManager = null; ServerRealization.Connect(); _lastStartServerTime = DateTime.Now; continue; } if (ServerRealization.ServerStatus == ServerConnectStatus.Connect && _serverStatusNead == ServerConnectStatus.Disconnect) { SendLogMessage(OsLocalization.Market.Message9, LogMessageType.System); ServerRealization.Dispose(); _candleManager = null; continue; } if (ServerRealization.ServerStatus != ServerConnectStatus.Connect) { continue; } if (_candleManager == null) { SendLogMessage(OsLocalization.Market.Message10, LogMessageType.System); StartCandleManager(); continue; } if (_portfolios == null || _portfolios.Count == 0) { ServerRealization.GetPortfolios(); } if (_securities == null || Securities.Count == 0) { ServerRealization.GetSecurities(); } } catch (Exception error) { SendLogMessage(OsLocalization.Market.Message11, LogMessageType.Error); SendLogMessage(error.ToString(), LogMessageType.Error); ServerStatus = ServerConnectStatus.Disconnect; ServerRealization.Dispose(); _candleManager = null; Thread.Sleep(5000); // переподключаемся _threadPrime = new Thread(PrimeThreadArea); _threadPrime.CurrentCulture = new CultureInfo("ru-RU"); _threadPrime.IsBackground = true; _threadPrime.Start(); if (NeadToReconnectEvent != null) { NeadToReconnectEvent(); } return; } } }
private void PrimeThreadArea() { while (true) { Thread.Sleep(1000); try { if (ServerRealization == null) { continue; } if ((ServerRealization.ServerStatus != ServerConnectStatus.Connect) && _serverStatusNead == ServerConnectStatus.Connect && _lastStartServerTime.AddSeconds(60) < DateTime.Now) { SendLogMessage("Запущена процедура активации подключения", LogMessageType.System); ServerRealization.Dispose(); _candleManager = null; ServerRealization.Connect(); _lastStartServerTime = DateTime.Now; continue; } if (ServerRealization.ServerStatus == ServerConnectStatus.Connect && _serverStatusNead == ServerConnectStatus.Disconnect) { SendLogMessage("Запущена процедура отключения подключения", LogMessageType.System); ServerRealization.Dispose(); _candleManager = null; continue; } if (ServerRealization.ServerStatus != ServerConnectStatus.Connect) { continue; } if (_candleManager == null) { SendLogMessage("Создаём менеджер свечей", LogMessageType.System); StartCandleManager(); continue; } if (_portfolios == null || _portfolios.Count == 0) { ServerRealization.GetPortfolios(); } if (_securities == null || Securities.Count == 0) { ServerRealization.GetSecurities(); } } catch (Exception error) { SendLogMessage("КРИТИЧЕСКАЯ ОШИБКА. Реконнект", LogMessageType.Error); SendLogMessage(error.ToString(), LogMessageType.Error); ServerStatus = ServerConnectStatus.Disconnect; ServerRealization.Dispose(); _candleManager = null; Thread.Sleep(5000); // переподключаемся _threadPrime = new Thread(PrimeThreadArea); _threadPrime.CurrentCulture = new CultureInfo("ru-RU"); _threadPrime.IsBackground = true; _threadPrime.Start(); if (NeadToReconnectEvent != null) { NeadToReconnectEvent(); } return; } } }