public async Task <IList <CurrencyPair> > GetActiveCurrencyPairs() { await _stockSocketConnector.ConnectAsync(); var tradingSettings = _configurationService.GetTradingSettings(); var allCurrencyPairs = await _stockSocketConnector.GetCurrencyPairs(); var tradingCurrencyPairs = allCurrencyPairs.Where(item => tradingSettings.QuoteCurrencies.Any(currencyId => String.Equals(item.BaseCurrencyId, currencyId, StringComparison.OrdinalIgnoreCase))); return(tradingCurrencyPairs.ToList()); }
public void StartTrading() { var cancelTokenSource = new CancellationTokenSource(); try { var tradingSettings = _configurationService.GetTradingSettings(); tradingSettings.Period = CandlePeriod.Minute5; tradingSettings.Moment = null; tradingSettings.BaseOrderSide = OrderSide.Buy; _configurationService.UpdateTradingSettings(tradingSettings); _stockSocketConnector.ConnectAsync().Wait(cancelTokenSource.Token); _stockSocketConnector.SubscribeErrors(exception => { OnException(new UnhandledExceptionEventArgs(exception, false)); cancelTokenSource.Cancel(); }); Task.WaitAll(StartTradingInner(cancelTokenSource.Token)); } catch (BusinessWarning e) { _loggingService.LogAction(new ErrorAction { ExceptionType = e.GetType().ToString(), Message = e.Message, Details = e.Details, StackTrace = e.StackTrace }); } catch (BusinessException e) { _loggingService.LogAction(new ErrorAction { ExceptionType = e.GetType().ToString(), Message = e.Message, Details = e.Details, StackTrace = e.StackTrace }); OnException(new UnhandledExceptionEventArgs(e, false)); } catch (ParseResponseException e) { _loggingService.LogAction(new ErrorAction { ExceptionType = e.GetType().ToString(), Message = e.Message, Details = e.SourceData, StackTrace = e.StackTrace }); OnException(new UnhandledExceptionEventArgs(e, false)); } catch (Exception e) { _loggingService.LogAction(new ErrorAction { ExceptionType = e.GetType().ToString(), Message = e.Message, StackTrace = e.StackTrace }); OnException(new UnhandledExceptionEventArgs(e, false)); } finally { cancelTokenSource.Cancel(); } }