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());
        }
Пример #2
0
        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();
            }
        }