public void Initialize(string username, string[] servers, ILoggerFactory loggerFactory = null, string authToken = null)
        {
            _loggerFactory      = loggerFactory ?? new DebugLoggerFactory();
            _log                = _loggerFactory.Create(typeof(ReactiveTrader));
            _connectionProvider = new ConnectionProvider(username, servers, _loggerFactory);

            var referenceDataServiceClient = new ReferenceDataServiceClient(_connectionProvider, _loggerFactory);
            var executionServiceClient     = new ExecutionServiceClient(_connectionProvider);
            var blotterServiceClient       = new BlotterServiceClient(_connectionProvider, _loggerFactory);
            var pricingServiceClient       = new PricingServiceClient(_connectionProvider, _loggerFactory);

            if (authToken != null)
            {
                var controlServiceClient = new ControlServiceClient(new AuthTokenProvider(authToken), _connectionProvider, _loggerFactory);
                _controlRepository = new ControlRepository(controlServiceClient);
            }

            PriceLatencyRecorder = new PriceLatencyRecorder();
            var concurrencyService = new ConcurrencyService();

            var tradeFactory              = new TradeFactory();
            var executionRepository       = new ExecutionRepository(executionServiceClient, tradeFactory, concurrencyService);
            var priceFactory              = new PriceFactory(executionRepository, PriceLatencyRecorder);
            var priceRepository           = new PriceRepository(pricingServiceClient, priceFactory, _loggerFactory);
            var currencyPairUpdateFactory = new CurrencyPairUpdateFactory(priceRepository);

            TradeRepository = new TradeRepository(blotterServiceClient, tradeFactory);
            ReferenceData   = new ReferenceDataRepository(referenceDataServiceClient, currencyPairUpdateFactory);
        }
Example #2
0
 public TradeJob(
     TradeRepository tradeRepository,
     IHubContext <btcusdtHub> hubcontext)
 {
     _tradeRepository = tradeRepository;
     _hubcontext      = hubcontext;
 }
Example #3
0
 public UnitOfWork(FxContext context)
 {
     _context = context;
     Price    = new PriceRepository(_context);
     Candle   = new CandleRepository(_context);
     Trade    = new TradeRepository(_context);
 }
        public WhenStockServiceIsRequested()
        {
            IStockRepository stockRepository = new StockRepository();
            ITradeRepository tradeRepository = new TradeRepository();

            _stockService = new StockService(stockRepository, tradeRepository);
        }
        public void Initialize(string username, string[] servers, ILoggerFactory loggerFactory = null, string authToken = null)
        {
            _loggerFactory = loggerFactory ?? new DebugLoggerFactory();
            _log           = _loggerFactory.Create(typeof(ReactiveTrader));
            var concurrencyService = new ConcurrencyService();

            _serviceClientContainer = new WampServiceClientContainer(servers[0], username, concurrencyService, _loggerFactory);

            // TODO: Make the Async Connection better
            _serviceClientContainer.ConnectAsync().Wait();

            var referenceDataServiceClient = new ReferenceDataServiceClient(_serviceClientContainer.Reference, _loggerFactory);
            var executionServiceClient     = new ExecutionServiceClient(_serviceClientContainer.Execution);
            var blotterServiceClient       = new BlotterServiceClient(_serviceClientContainer.Blotter, _loggerFactory);
            var pricingServiceClient       = new PricingServiceClient(_serviceClientContainer.Pricing, _loggerFactory);

            PricingServiceClient = pricingServiceClient;
            PriceLatencyRecorder = new PriceLatencyRecorder();

            var tradeFactory              = new TradeFactory();
            var executionRepository       = new ExecutionRepository(executionServiceClient, tradeFactory, concurrencyService);
            var priceFactory              = new PriceFactory(executionRepository, PriceLatencyRecorder);
            var priceRepository           = new PriceRepository(pricingServiceClient, priceFactory, _loggerFactory);
            var currencyPairUpdateFactory = new CurrencyPairUpdateFactory(priceRepository);

            TradeRepository = new TradeRepository(blotterServiceClient, tradeFactory);
            ReferenceData   = new ReferenceDataRepository(referenceDataServiceClient, currencyPairUpdateFactory);
        }
Example #6
0
        // GET: TradeApi
        public IHttpActionResult Index()
        {
            var repo   = new TradeRepository();
            var trades = repo.GetTrades();

            return(Ok(trades));
        }
Example #7
0
        public async Task LoadTradesTask()
        {
            var repo   = new TradeRepository();
            var result = await repo.LoadTrades("XBTUSD", new DateTime(2017, 11, 02, 11, 40, 00),
                                               new DateTime(2017, 11, 03, 11, 40, 00));

            Assert.That(result.Any(), Is.True);
        }
Example #8
0
 public TradeAccountInfo(APIKeyRepository keyRepo, TradeConfigRepository configRepository, TradeRepository tradeRepository)
 {
     this.keyRepo          = keyRepo;
     this.configRepository = configRepository;
     this.tradeRepository  = tradeRepository;
     logService            = new LogService();
     logService.CreateLogFile("TradeAccountInfo");
 }
Example #9
0
 public TradeJob(
     TradeRepository tradeRepository,
     IHubContext <btcusdtHub> hubcontext,
     PairsRepository pairsRepository)
 {
     _tradeRepository = tradeRepository;
     _hubcontext      = hubcontext;
     _pairsRepository = pairsRepository;
 }
Example #10
0
 public UnitOfWork(ArchimedesContext context)
 {
     _context   = context;
     Price      = new PriceRepository(_context);
     Candle     = new CandleRepository(_context);
     Trade      = new TradeRepository(_context);
     Market     = new MarketRepository(_context);
     PriceLevel = new PriceLevelRepository(_context);
     Strategy   = new StrategyRepository(_context);
 }
Example #11
0
 public StatsController(TransactionsRepository transactionsRepository, TransferRepository transferRepository,
                        OutcomeTransactionRepository outcomeRepository, TradeRepository tradeRepository, UsersInfoRepository usersInfoRepository, UserRepository userRepository)
 {
     _transactionsRepository = transactionsRepository;
     _transferRepository     = transferRepository;
     _outcomeRepository      = outcomeRepository;
     _tradeRepository        = tradeRepository;
     _usersInfoRepository    = usersInfoRepository;
     _userRepository         = userRepository;
 }
        public async Task TradeRepository_GetAsyncTest()
        {
            var optionsbuilder = new DbContextOptionsBuilder <ExchangeContext>();

            optionsbuilder.UseInMemoryDatabase(databaseName: "XOProjectDb");
            var _dbContext = new ExchangeContext(optionsbuilder.Options);
            ITradeRepository _tradeRepository = new TradeRepository(_dbContext);
            var result = await _tradeRepository.GetAllTradings(1);

            Assert.NotNull(result);
        }
        public IHttpActionResult Get()
        {
            var repo   = new TradeRepository();
            var trades = repo.GetTrades();

            if (trades == null)
            {
                return(NotFound());
            }
            return(Ok(trades));
        }
        public void TestMethodTrades()
        {
            //Arrange
            TradeRepository tradeRepo = new TradeRepository();

            //Act
            var trades     = tradeRepo.GetTrades();
            var tradeCount = trades.Count();

            //Assert
            Assert.AreEqual(tradeCount, 500);
        }
        public Trade Save(Trade trade)
        {
            TradeRepository repo = new TradeRepository();

            if (repo.Iduplicate(trade))
            {
                return(new Trade());
            }
            else
            {
                return(repo.Save(trade));
            }
        }
Example #16
0
        public TradeController()
        {
            var databaseUri = UriFactory.CreateDatabaseUri(_databaseId);

            _client = new DocumentClient(new Uri(_endpointUrl), _primaryKey);
            _client.CreateDatabaseIfNotExistsAsync(new Database()
            {
                Id = _databaseId
            });
            _client.CreateDocumentCollectionIfNotExistsAsync(databaseUri, new DocumentCollection {
                Id = _collectionId
            }).Wait();
            _repository = new TradeRepository(_client, _databaseId, _collectionId);
        }
Example #17
0
        public void GetTradesTest()
        {
            // Check to see if the trade count is correct.
            var tradeRepository = new TradeRepository();
            var trades          = tradeRepository.GetTrades();
            int tradeCount      = 0;

            foreach (var trade in trades)
            {
                tradeCount++;
            }

            Assert.AreEqual(MaxCount, tradeCount);
        }
 public TradeController(
     WalletsRepository walletsRepository,
     TradeRepository tradeRepository,
     BotsRepository botsRepository,
     CandleStickRepository candleStickRepository,
     PairsRepository pairsRepository,
     IHubContext <btcusdtHub> hubcontext)
 {
     _walletsRepository     = walletsRepository;
     _tradeRepository       = tradeRepository;
     _botsRepository        = botsRepository;
     _candleStickRepository = candleStickRepository;
     _pairsRepository       = pairsRepository;
     _hubcontext            = hubcontext;
 }
Example #19
0
        public void Dispose()
        {
            if (TradeRepository != null)
            {
                TradeRepository.Dispose();
                TradeRepository = null;
            }
            if (SettlementManager != null)
            {
                SettlementManager.Dispose();
                SettlementManager = null;
            }

            GC.Collect(0);
        }
Example #20
0
        public async Task GetTradebyID_Database_test(int id)
        {
            using var connection = Database_init();
            var options = new DbContextOptionsBuilder <mmpproject2Context>().UseSqlite(connection).Options;

            using var context = new mmpproject2Context(options);
            var repo = new TradeRepository(options);

            var trade = await repo.GetAsync(id);

            var tradeActual = context.Trades.Where(x => x.Id == id).Single();

            Assert.Equal(trade.Id, tradeActual.Id);
            Assert.Equal(trade.Price, tradeActual.Price);
            Assert.Equal(trade.Quantity, tradeActual.Quantity);
        }
Example #21
0
        private List <BuySellView> GetTrades(string simbol, double minPrice, double maxPrice)
        {
            var result          = new List <BuySellView>();
            var tradeRepository = new TradeRepository();
            var trades          = tradeRepository.Get(simbol, minPrice, maxPrice).ToList();
            var resGroup        = trades.GroupBy(x => new { x.Price, x.IsBuyer }).ToList();

            foreach (var item in resGroup)
            {
                result.Add(new BuySellView()
                {
                    Price = item.Key.Price,
                    IsBuy = item.Key.IsBuyer
                });
            }
            return(result);
        }
Example #22
0
        public async Task Get_Analysis_Valid_Maximum()
        {
            string symbol  = "REL";
            var    builder = new DbContextOptionsBuilder <ExchangeContext>();

            builder.UseInMemoryDatabase(databaseName: "TestTrade3");

            var context = new ExchangeContext(builder.Options);

            exchangeContextInit(context);

            var repo = new TradeRepository(context);

            var result = await repo.GetAnalysis(symbol) as List <TradeAnalysis>;;

            Assert.AreEqual(100, result[0].Maximum);
        }
Example #23
0
        public async Task Get_AllTrades_Valid_Count()
        {
            int portfolioID = 1;
            var builder     = new DbContextOptionsBuilder <ExchangeContext>();

            builder.UseInMemoryDatabase(databaseName: "TestTrade1");

            var context = new ExchangeContext(builder.Options);

            exchangeContextInit(context);

            var repo = new TradeRepository(context);

            var result = await repo.GetAllTradings(portfolioID) as List <Trade>;;
            var count  = result.Count;

            Assert.AreEqual(2, count);
        }
Example #24
0
        public async Task Get_Trades_By_Symbol_Valid_Count()
        {
            string symbol  = "REL";
            var    builder = new DbContextOptionsBuilder <ExchangeContext>();

            builder.UseInMemoryDatabase(databaseName: "TestTrade2");

            var context = new ExchangeContext(builder.Options);

            exchangeContextInit(context);

            var repo = new TradeRepository(context);

            var result = await repo.GetBySymbol(symbol) as List <Trade>;;
            var count  = result.Count;

            Assert.AreEqual(2, count);
        }
Example #25
0
        public async Task GetTrades_Database_testAsync()
        {
            using var connection = Database_init();
            var options = new DbContextOptionsBuilder <mmpproject2Context>().UseSqlite(connection).Options;

            using var context = new mmpproject2Context(options);
            var repo = new TradeRepository(options);

            var trades = await repo.GetAllAsync();

            var tradesActual = context.Trades.ToList();

            foreach (var trade in trades)
            {
                Assert.Contains(trade.Id, tradesActual.Select(x => x.Id));
                Assert.Contains(trade.Price, tradesActual.Select(x => x.Price));
                Assert.Contains(trade.Quantity, tradesActual.Select(x => x.Quantity));
            }
        }
Example #26
0
        private async Task <decimal> SetupTradeService(string pair, DateTime start, DateTime end)
        {
            var real   = new TradeRepository();
            var config = _container.Resolve <Config>();

            trades = (await real.LoadTrades(pair, start.AddHours(-config.Pairs[pair].LoadHours), end)).ToList();

            var repo = _container.Resolve <ITradeRepository>();

            repo.LoadTrades(Arg.Any <string>(), Arg.Any <DateTime>(), Arg.Any <DateTime>())
            .Returns(args =>
            {
                var startDate = Convert.ToDateTime((object)args[1]).AddHours(-config.Pairs[pair].LoadHours);
                var endDate   = Convert.ToDateTime((object)args[2]);
                return(trades.Where(x => x.DateTime > startDate && x.DateTime < endDate));
            });


            return(trades.Last().Price);
        }
        private async Task <List <TradeLine> > GetTrades(string simbol, double minPrice, double maxPrice)
        {
            var result = new List <TradeLine>();
            await Task.Run(() =>
            {
                var tradeRepository = new TradeRepository();
                var trades          = tradeRepository.Get(simbol, minPrice, maxPrice).ToList();
                var resGroup        = trades.GroupBy(x => new { x.Price, x.IsBuyer }).ToList();
                foreach (var item in resGroup)
                {
                    result.Add(new TradeLine()
                    {
                        Price   = item.Key.Price,
                        IsBuyer = item.Key.IsBuyer
                    });
                }
            });

            return(result);
        }
Example #28
0
        public void Query_ShouldReturnCorrectTradeCountTest()
        {
            // Arrange
            var builder = new DbContextOptionsBuilder <ExchangeContext>();

            builder.UseInMemoryDatabase(databaseName:
                                        "TestPortfolio7");

            var context = new ExchangeContext(builder.Options);

            InitDbContext(context);

            var repo = new TradeRepository(context);

            // Act
            var result = repo.Query();
            var count  = result.CountAsync();

            // Assert
            Assert.AreEqual(2, Convert.ToInt32(count.Result));
        }
        public void AddTrade_WithDetails_SuccessfullyAddsTradeToList()
        {
            // Arrange
            var dateTimeProvider = new Mock <IDateTimeProvider>();
            var localTimestamp   = new DateTime(2017, 2, 17, 22, 14, 44);

            dateTimeProvider.Setup(x => x.Now).Returns(localTimestamp);
            var tradeRepository = new TradeRepository(dateTimeProvider.Object);
            var teaStock        = new CommonStock {
                StockSymbol = "TEA"
            };

            // Act
            var trade = tradeRepository.AddTrade(teaStock, 100, TransactionType.Buy, 1.23M);

            // Assert
            Assert.AreEqual(1, tradeRepository.TradeCount);
            Assert.AreEqual(100, trade.Quantity);
            Assert.AreEqual(TransactionType.Buy, trade.TransactionType);
            Assert.AreEqual(1.23, trade.TradePrice);
            Assert.AreEqual(localTimestamp, trade.LocalTimestamp);
            Assert.AreEqual(teaStock, trade.Stock);
        }
        public void TradeAnalysis_Does_Not_Return_Null(string symbol)
        {
            //Arrange
            var options = new DbContextOptionsBuilder <ExchangeContext>()
                          .UseInMemoryDatabase(databaseName: "GetTradeAnalysis")
                          .Options;

            using (var context = new ExchangeContext(options))
            {
                context.Trades.Add(new Trade
                {
                    Symbol      = "REL",
                    Action      = "BUY",
                    Id          = 1,
                    NoOfShares  = 200,
                    PortfolioId = 3,
                    Price       = 343
                });
                context.Trades.Add(
                    new Trade
                {
                    Symbol      = "KEL",
                    Action      = "SELL",
                    Id          = 2,
                    NoOfShares  = 100,
                    PortfolioId = 2,
                    Price       = 232
                }
                    );
                context.SaveChanges();
                //Act
                ITradeRepository repo = new TradeRepository(context);
                var result            = repo.GetTradeAnalysis(symbol);
                //Assert
                Assert.NotNull(result);
            }
        }