public async Task <GrpcResponseWithData <GrpcList <AssetBalanceDto> > > GetBalancesAsync(SourceDto request)
        {
            var data = _externalBalanceCacheManager.GetBalances(request.Source);

            var result = data.Select(e => new AssetBalanceDto(e.Symbol, (double)e.Balance, (double)e.Free)).ToList();

            return(GrpcResponseWithData <GrpcList <AssetBalanceDto> > .Create(GrpcList <AssetBalanceDto> .Create(result)));
        }
        public async Task <GrpcResponseWithData <Dictionary <string, GrpcList <string> > > > GetSourcesAndSymbolsAsync()
        {
            var data = await _orderBookManager.GetSourcesAndSymbols();

            var result = data.ToDictionary(
                e => e.Key,
                e => GrpcList <string> .Create(e.Value)
                );

            return(GrpcResponseWithData <Dictionary <string, GrpcList <string> > > .Create(result));
        }
        public async Task <GrpcList <PortfolioTrade> > GetPositionTrades(GetPositionTradesRequest request)
        {
            await using var ctx = _contextFactory.Create();

            var entities = await ctx.PositionAssociations
                           .Include(e => e.Trade)
                           .Where(e => e.PositionId == request.PositionId)
                           .Select(e => e.Trade)
                           .ToListAsync();

            var data = entities.Select(e => e.AsPortfolioTrade()).ToList();

            return(GrpcList <PortfolioTrade> .Create(data));
        }
        public async Task <GrpcList <PortfolioTrade> > GetTrades(GetTradesRequest request)
        {
            await using var ctx = _contextFactory.Create();

            var entities = await ctx.PortfolioTrades
                           .Where(e => e.DateTime < request.LastSeenDateTime)
                           .OrderByDescending(e => e.DateTime)
                           .Take(request.Take ?? 30)
                           .ToListAsync();

            var data = entities.Select(e => e.AsPortfolioTrade()).ToList();

            return(GrpcList <PortfolioTrade> .Create(data));
        }
        public async Task <GrpcList <PositionPortfolio> > GetClosedPositions(GetClosedPositionsRequest request)
        {
            await using var ctx = _contextFactory.Create();



            var entities = await ctx.Positions
                           .Where(e => e.IsOpen == false && e.CloseTime < request.LastSeenDateTime)
                           .OrderByDescending(e => e.CloseTime)
                           .Take(request.Take ?? 30)
                           .ToListAsync();



            var data = entities.Select(e => e.AsPositionPortfolio()).ToList();

            return(GrpcList <PositionPortfolio> .Create(data));
        }
        public Task <GrpcResponseWithData <GrpcList <LpWallet> > > GetAllAsync()
        {
            var data = _manager.GetAll();

            return(GrpcResponseWithData <GrpcList <LpWallet> > .CreateTask(GrpcList <LpWallet> .Create(data)));
        }
        public Task <GrpcResponseWithData <GrpcList <WalletBalance> > > GetBalancesAsync(WalletNameRequest request)
        {
            var balances = _manager.GetBalances(request.WalletName);

            return(GrpcResponseWithData <GrpcList <WalletBalance> > .CreateTask(GrpcList <WalletBalance> .Create(balances)));
        }
        public async Task <GrpcList <PositionPortfolio> > GetPortfolioAsync()
        {
            var data = await _manager.GetPortfolioAsync();

            return(GrpcList <PositionPortfolio> .Create(data));
        }
        public Task <GrpcResponseWithData <GrpcList <LpOrder> > > GetLiquidityProviderLastOrdersAsync(GetLiquidityProviderLastOrderRequest request)
        {
            var data = _aggregateLiquidityProviderOrders.GetCurrentOrders(request.BrokerId, request.Symbol);

            return(GrpcResponseWithData <GrpcList <LpOrder> > .CreateTask(GrpcList <LpOrder> .Create(data)));
        }
        public Task <GrpcResponseWithData <GrpcList <string> > > GetSourcesAsync()
        {
            var data = _orderBookManager.GetSources();

            return(GrpcResponseWithData <GrpcList <string> > .CreateTask(GrpcList <string> .Create(data.Result)));
        }
        public async Task <GrpcResponseWithData <GrpcList <string> > > GetSourcesWithSymbolAsync(GetSourcesWithSymbolRequest request)
        {
            var data = await _orderBookManager.GetSourcesWithSymbol(request.Symbol);

            return(GrpcResponseWithData <GrpcList <string> > .Create(GrpcList <string> .Create(data)));
        }
예제 #12
0
 public Task <GrpcList <ExternalMarketSettings> > GetExternalMarketSettingsList()
 {
     return(Task.FromResult(GrpcList <ExternalMarketSettings> .Create(_accessor.GetExternalMarketSettingsList())));
 }
        public async Task <GrpcResponseWithData <GrpcList <ExchangeMarketInfo> > > GetInstrumentsAsync(SourceDto request)
        {
            var data = _externalBalanceCacheManager.GetMarketInfo(request.Source);

            return(GrpcResponseWithData <GrpcList <ExchangeMarketInfo> > .Create(GrpcList <ExchangeMarketInfo> .Create(data)));
        }
        public Task <GrpcResponseWithData <GrpcList <string> > > GetExternalMarketListAsync()
        {
            var data = _externalMarketManager.GetMarketNames();

            return(GrpcResponseWithData <GrpcList <string> > .CreateTask(GrpcList <string> .Create(data)));
        }
        public Task <GrpcList <LiquidityProviderInstrumentSettings> > GetLiquidityProviderInstrumentSettingsListAsync()
        {
            var data = _accessor.GetLiquidityProviderSettings();

            return(Task.FromResult(GrpcList <LiquidityProviderInstrumentSettings> .Create(data)));
        }