Пример #1
0
        public SettingsViewModel Settings()
        {
            ICoreService coreService = Application.Resolve <ICoreService>();

            ITradingService tradingService = Application.Resolve <ITradingService>();
            IEnumerable <IConfigurableService> allConfigurableServices = Application.Resolve <IEnumerable <IConfigurableService> >();

            var model = new SettingsViewModel()
            {
                InstanceName       = coreService.Config.InstanceName,
                Version            = coreService.Version,
                ReadOnlyMode       = coreService.Config.ReadOnlyMode,
                BuyEnabled         = tradingService.Config.BuyEnabled,
                BuyDCAEnabled      = tradingService.Config.BuyDCAEnabled,
                SellEnabled        = tradingService.Config.SellEnabled,
                TradingSuspended   = tradingService.IsTradingSuspended,
                HealthCheckEnabled = coreService.Config.HealthCheckEnabled,
                Configs            = allConfigurableServices
                                     .Where(s => !s.GetType().Name.Contains(Constants.ServiceNames.BacktestingService))
                                     .OrderBy(s => s.ServiceName)
                                     .ToDictionary(s => s.ServiceName, s => Application.ConfigProvider.GetSectionJson(s.ServiceName))
            };

            return(model);
        }
Пример #2
0
        public SettingsViewModel Settings(SaveSettingsRequest model)
        {
            if (!Application.Resolve <ICoreService>().Config.ReadOnlyMode)
            {
                ICoreService    coreService    = Application.Resolve <ICoreService>();
                ITradingService tradingService = Application.Resolve <ITradingService>();

                coreService.Config.HealthCheckEnabled = model.HealthCheckEnabled;
                tradingService.Config.BuyEnabled      = model.BuyEnabled;
                tradingService.Config.BuyDCAEnabled   = model.BuyDCAEnabled;
                tradingService.Config.SellEnabled     = model.SellEnabled;

                if (model.TradingSuspended)
                {
                    tradingService.SuspendTrading();
                }
                else
                {
                    tradingService.ResumeTrading();
                }
                return(this.Settings());
            }
            else
            {
                return(this.Settings());
            }
        }
Пример #3
0
 public SignalsService(ILoggingService loggingService, IHealthCheckService healthCheckService, ITradingService tradingService, IRulesService rulesService)
 {
     this.loggingService     = loggingService;
     this.healthCheckService = healthCheckService;
     this.tradingService     = tradingService;
     this.rulesService       = rulesService;
 }
        public override void Save()
        {
            lock (this.SyncRoot)
            {
                try
                {
                    ITradingService tradingService  = Application.Resolve <ITradingService>();
                    string          accountFilePath = Path.Combine(Directory.GetCurrentDirectory(), tradingService.Config.AccountFilePath);

                    var data = new TradingAccountData
                    {
                        Balance      = balance,
                        TradingPairs = tradingPairs,
                    };

                    string accountJson = JsonConvert.SerializeObject(data, Formatting.Indented);
                    var    accountFile = new FileInfo(accountFilePath);
                    accountFile.Directory.Create();
                    File.WriteAllText(accountFile.FullName, accountJson);
                }
                catch (Exception ex)
                {
                    loggingService.Error("Unable to save account data", ex);
                }
            }
        }
Пример #5
0
        public IActionResult BuyDefault(BuyRequest buyRequest)
        {
            if (Application.Resolve <ICoreService>().Config.ReadOnlyMode)
            {
                return(new BadRequestResult());
            }

            if (!string.IsNullOrWhiteSpace(buyRequest.Pair))
            {
                ISignalsService signalsService = Application.Resolve <ISignalsService>();
                ITradingService tradingService = Application.Resolve <ITradingService>();

                tradingService.Buy(new BuyOptions(buyRequest.Pair)
                {
                    MaxCost        = tradingService.GetPairConfig(buyRequest.Pair).BuyMaxCost,
                    IgnoreExisting = true,
                    ManualOrder    = true,
                    Metadata       = new OrderMetadata
                    {
                        BoughtGlobalRating = signalsService.GetGlobalRating()
                    }
                });

                return(new OkResult());
            }
            else
            {
                return(new BadRequestResult());
            }
        }
Пример #6
0
        public ConfigController(FakeExchangeConnectorSettings fakeExchangeConnectorSettings,
                                ITradingService tradingService)
        {
            _fakeExchangeConnectorSettings = fakeExchangeConnectorSettings;

            _tradingService = tradingService;
        }
        private TradingAccountData LoadSavedData()
        {
            lock (this.SyncRoot)
            {
                try
                {
                    ITradingService tradingService  = Application.Resolve <ITradingService>();
                    string          accountFilePath = Path.Combine(Directory.GetCurrentDirectory(), tradingService.Config.AccountFilePath);

                    if (File.Exists(accountFilePath))
                    {
                        this.BackupAccountData(accountFilePath);
                        string accountJson = File.ReadAllText(accountFilePath);
                        return(JsonConvert.DeserializeObject <TradingAccountData>(accountJson));
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    loggingService.Error("Unable to load account data", ex);
                    return(null);
                }
            }
        }
 public BacktestingSaveSnapshotsTimedTask(ILoggingService loggingService, IHealthCheckService healthCheckService, ITradingService tradingService, ISignalsService signalsService, IBacktestingService backtestingService)
 {
     this.loggingService     = loggingService;
     this.healthCheckService = healthCheckService;
     this.tradingService     = tradingService;
     this.signalsService     = signalsService;
     this.backtestingService = backtestingService;
 }
Пример #9
0
 public TradingAccountBase(ILoggingService loggingService, INotificationService notificationService, IHealthCheckService healthCheckService, ISignalsService signalsService, ITradingService tradingService)
 {
     this.loggingService      = loggingService;
     this.notificationService = notificationService;
     this.healthCheckService  = healthCheckService;
     this.signalsService      = signalsService;
     this.tradingService      = tradingService;
 }
Пример #10
0
 public OrdersController(IExchangeCache exchangeCache,
                         ITradingService tradingService,
                         IQuoteService quoteService)
 {
     _exchangeCache  = exchangeCache;
     _tradingService = tradingService;
     _quoteService   = quoteService;
 }
Пример #11
0
 public HealthCheckTimedTask(ILoggingService loggingService, INotificationService notificationService, IHealthCheckService healthCheckService, ICoreService coreService, ITradingService tradingService)
 {
     this.loggingService      = loggingService;
     this.notificationService = notificationService;
     this.healthCheckService  = healthCheckService;
     this.coreService         = coreService;
     this.tradingService      = tradingService;
 }
 public SignalRulesTimedTask(ILoggingService loggingService, IHealthCheckService healthCheckService, ITradingService tradingService, IRulesService rulesService, ISignalsService signalsService)
 {
     this.loggingService     = loggingService;
     this.healthCheckService = healthCheckService;
     this.tradingService     = tradingService;
     this.rulesService       = rulesService;
     this.signalsService     = signalsService;
 }
Пример #13
0
 public TestController(UserManager <AppUser> userManager, DataContext dataContext, ITradingService tradingService,
                       IMapper mapper)
 {
     _userManager    = userManager;
     _dataContext    = dataContext;
     _tradingService = tradingService;
     _mapper         = mapper;
 }
Пример #14
0
 public Rule(
     ISymbolRepository symbolRepository,
     ITradingService executionService,
     IQueryService queryService)
 {
     _symbolRepository = symbolRepository;
     _executionService = executionService;
     _queryService     = queryService;
 }
 public BacktestingSignalsService(ILoggingService loggingService, IHealthCheckService healthCheckService, ITasksService tasksService, ITradingService tradingService, IRulesService rulesService, IBacktestingService backtestingService)
 {
     this.loggingService     = loggingService;
     this.healthCheckService = healthCheckService;
     this.tasksService       = tasksService;
     this.tradingService     = tradingService;
     this.rulesService       = rulesService;
     this.backtestingService = backtestingService;
 }
Пример #16
0
        public BacktestingLoadSnapshotsTimedTask(ILoggingService loggingService, IHealthCheckService healthCheckService, ITradingService tradingService, IBacktestingService backtestingService)
        {
            this.loggingService     = loggingService;
            this.healthCheckService = healthCheckService;
            this.tradingService     = tradingService;
            this.backtestingService = backtestingService;

            PopulateSnapshotPaths();
        }
Пример #17
0
        public MainMenuViewModel(ITradingService tradingService)
        {
            _tradingService = tradingService;

            Title = "Main menu";

            SelectOptionsCommand = new RelayCommand(SelectOptions);
            SelectMarketCommand  = new RelayCommand <string>(SelectMarket);
        }
Пример #18
0
        public OptionsSimulatorViewModel(ITradingService tradingService)
        {
            _tradingService = tradingService;

            Title = "Options simulation";

            GoBackCommand = new RelayCommand(GoBack);
            UpdateCommand = new RelayCommand(Update);
            ResetCommand  = new RelayCommand(Reset);
        }
Пример #19
0
 public TradingTimedTask(ILoggingService loggingService, INotificationService notificationService,
                         IHealthCheckService healthCheckService, ISignalsService signalsService, IOrderingService orderingService, ITradingService tradingService)
 {
     this.loggingService      = loggingService;
     this.notificationService = notificationService;
     this.healthCheckService  = healthCheckService;
     this.signalsService      = signalsService;
     this.orderingService     = orderingService;
     this.tradingService      = tradingService;
 }
Пример #20
0
        public MarketViewModel(MainViewModel mainViewModel, string epic)
        {
            _mainViewModel   = mainViewModel;
            _tradingService  = ServiceLocator.Current.GetInstance <ITradingService>();
            _settingsService = ServiceLocator.Current.GetInstance <ISettingsService>();

            _marketEpic = epic;

            KeyPressCommand = new RelayCommand <Key>(KeyPress);
        }
Пример #21
0
        public TradingViewCryptoSignalReceiver(string signalName, IConfigurationSection configuration,
                                               ILoggingService loggingService, IHealthCheckService healthCheckService, ISignalsService signalsService, ITradingService tradingService)
        {
            this.SignalName = signalName;
            this.Config     = configuration.Get <TradingViewCryptoSignalReceiverConfig>();

            this.loggingService     = loggingService;
            this.healthCheckService = healthCheckService;
            this.signalsService     = signalsService;
            this.tradingService     = tradingService;
        }
        public void Start()
        {
            loggingService.Info($"Start Backtesting service... (Replay: {this.Config.Replay})");

            signalsService = Application.Resolve <ISignalsService>();
            tradingService = Application.Resolve <ITradingService>();

            if (this.Config.Replay)
            {
                backtestingLoadSnapshotsTimedTask = tasksService.AddTask(
                    name: nameof(BacktestingLoadSnapshotsTimedTask),
                    task: new BacktestingLoadSnapshotsTimedTask(loggingService, healthCheckService, tradingService, this),
                    interval: this.Config.SnapshotsInterval / this.Config.ReplaySpeed * 1000,
                    startDelay: Constants.TaskDelays.HighDelay,
                    startTask: false,
                    runNow: false,
                    skipIteration: 0);
            }

            backtestingSaveSnapshotsTimedTask = tasksService.AddTask(
                name: nameof(BacktestingSaveSnapshotsTimedTask),
                task: new BacktestingSaveSnapshotsTimedTask(loggingService, healthCheckService, tradingService, signalsService, this),
                interval: this.Config.SnapshotsInterval * 1000,
                startDelay: Constants.TaskDelays.HighDelay,
                startTask: false,
                runNow: false,
                skipIteration: 0);

            if (this.Config.DeleteLogs)
            {
                loggingService.DeleteAllLogs();
            }

            string virtualAccountPath = Path.Combine(Directory.GetCurrentDirectory(), tradingService.Config.VirtualAccountFilePath);

            if (File.Exists(virtualAccountPath) && (this.Config.DeleteAccountData || !String.IsNullOrWhiteSpace(this.Config.CopyAccountDataPath)))
            {
                File.Delete(virtualAccountPath);
            }

            if (!String.IsNullOrWhiteSpace(this.Config.CopyAccountDataPath))
            {
                File.Copy(Path.Combine(Directory.GetCurrentDirectory(), this.Config.CopyAccountDataPath), virtualAccountPath, true);
            }

            if (this.Config.Replay)
            {
                Application.Speed = this.Config.ReplaySpeed;
            }

            Application.Resolve <ICoreService>().Started += this.OnCoreServiceStarted;

            loggingService.Info("Backtesting service started");
        }
Пример #23
0
        public MarketSelectorViewModel(ITradingService tradingService)
        {
            _tradingService = tradingService;

            BrowseNodeCommand = new RelayCommand <string>(BrowseNode);
            BrowseBackCommand = new RelayCommand(BrowseBack);
            CancelCommand     = new RelayCommand(Cancel);
            ValidateCommand   = new RelayCommand <BrowseMarketModel>(Validate);

            Title = "Select market";
        }
Пример #24
0
        public OptionsSelectorViewModel(ITradingService tradingService)
        {
            _tradingService = tradingService;

            Title = "Select options";

            BrowseNodeCommand   = new RelayCommand <string>(BrowseNode);
            BrowseBackCommand   = new RelayCommand(BrowseBack);
            AddMarketCommand    = new RelayCommand <BrowseMarketModel>(AddMarket);
            RemoveMarketCommand = new RelayCommand <BrowseMarketModel>(RemoveMarket);
            ValidateCommand     = new RelayCommand(Validate, CanValidate);
        }
        public TradingViewCryptoSignalPollingTimedTask(ILoggingService loggingService, IHealthCheckService healthCheckService,
                                                       ITradingService tradingService, TradingViewCryptoSignalReceiver signalReceiver)
        {
            this.loggingService     = loggingService;
            this.healthCheckService = healthCheckService;
            this.tradingService     = tradingService;
            this.signalReceiver     = signalReceiver;

            signalsSerializer = new JsonSerializer();
            signalsSerializer.Converters.Add(new TradingViewCryptoSignalConverter());
            httpClient = this.CreateHttpClient();
        }
Пример #26
0
        public DashboardViewModel(BaseMainViewModel mainViewModel, ITradingService tradingService)
        {
            _mainViewModel  = mainViewModel as MainViewModel;
            _tradingService = tradingService;

            Title = "Dashboard";

            OpenMarketCommand   = new RelayCommand(OpenMarket);
            OpenSettingsCommand = new RelayCommand(OpenSettings);

            OpenGraphCommand = new RelayCommand <PositionModel>(OpenGraph);
        }
Пример #27
0
 public IActionResult RefreshAccount()
 {
     if (!Application.Resolve <ICoreService>().Config.ReadOnlyMode)
     {
         ITradingService tradingService = Application.Resolve <ITradingService>();
         tradingService.Account.Refresh();
         return(new OkResult());
     }
     else
     {
         return(new BadRequestResult());
     }
 }
Пример #28
0
        public LoginViewModel(BaseMainViewModel mainViewModel, ITradingService tradingService, ISettingsService settingsService)
        {
            _mainViewModel   = mainViewModel;
            _tradingService  = tradingService;
            _settingsService = settingsService;

            Title = "Login";

            LoadSettings();

            LoginCommand   = new RelayCommand <string>(Login, p => !IsLogged || (!string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(p) && string.IsNullOrEmpty(ApiKey)));
            ConnectCommand = new RelayCommand(Connect, () => _tradingService.IsLogged && SelectedAccount != null);
        }
Пример #29
0
        public StatsViewModel Stats()
        {
            ICoreService    coreService    = Application.Resolve <ICoreService>();
            ITradingService tradingService = Application.Resolve <ITradingService>();

            decimal accountInitialBalance = tradingService.Config.VirtualTrading
                ? tradingService.Config.VirtualAccountInitialBalance
                : tradingService.Config.AccountInitialBalance;

            DateTimeOffset accountInitialBalanceDate = tradingService.Config.VirtualTrading
                ? DateTimeOffset.Now.AddDays(-30)
                : tradingService.Config.AccountInitialBalanceDate;

            var model = new StatsViewModel
            {
                InstanceName          = coreService.Config.InstanceName,
                Version               = coreService.Version,
                ReadOnlyMode          = coreService.Config.ReadOnlyMode,
                TimezoneOffset        = coreService.Config.TimezoneOffset,
                AccountInitialBalance = accountInitialBalance,
                AccountBalance        = tradingService.Account.GetTotalBalance(),
                Market   = tradingService.Config.Market,
                Balances = new Dictionary <DateTimeOffset, decimal>(),
                Trades   = GetTrades()
            };

            foreach (KeyValuePair <DateTimeOffset, List <TradeResult> > kvp in model.Trades.OrderBy(k => k.Key))
            {
                DateTimeOffset     date   = kvp.Key;
                List <TradeResult> trades = kvp.Value;

                model.Balances[date] = accountInitialBalance;

                if (date > accountInitialBalanceDate.Date)
                {
                    for (int d = 1; d < (int)(date - accountInitialBalanceDate.Date).TotalDays; d++)
                    {
                        DateTimeOffset prevDate = date.AddDays(-d);
                        if (model.Trades.ContainsKey(prevDate))
                        {
                            model.Balances[date] += model.Trades[prevDate].Where(t => !t.IsSwap).Sum(t => t.Profit);
                        }
                    }
                }
            }

            return(model);
        }
 public TradingInstrumentsController(
     IAssetsRepository assetsRepository,
     IAssetPairsRepository assetPairsRepository,
     ITradingConditionsRepository tradingConditionsRepository,
     ITradingInstrumentsRepository tradingInstrumentsRepository,
     ITradingService tradingService,
     IConvertService convertService,
     IEventSender eventSender,
     DefaultTradingInstrumentSettings defaultTradingInstrumentSettings)
 {
     _assetsRepository             = assetsRepository;
     _assetPairsRepository         = assetPairsRepository;
     _tradingConditionsRepository  = tradingConditionsRepository;
     _tradingInstrumentsRepository = tradingInstrumentsRepository;
     _tradingService = tradingService;
     _convertService = convertService;
     _eventSender    = eventSender;
     _defaultTradingInstrumentSettings = defaultTradingInstrumentSettings;
 }
Пример #31
0
 public StockAppHandler(IExecutionVenueService executionVenueService, ICreditCheckService creditCheckService, ITradingService tradingService)
 {
     this.executionVenueService = executionVenueService;
     this.creditCheckService = creditCheckService;
     this.tradingService = tradingService;
 }