public async Task <CreateMarketOrderResponse> CreateAsync(string brokerId, MarketOrderCreateModel model)
        {
            var wallet = await _accountsClient.Wallet.GetAsync((long)model.WalletId, brokerId);

            if (wallet == null)
            {
                throw new ArgumentException($"Wallet '{model.WalletId}' does not exist.");
            }

            if (!wallet.IsEnabled)
            {
                throw new ArgumentException($"Wallet '{model.WalletId}' is disabled.");
            }

            var request = new MarketOrder
            {
                Id          = model.Id.HasValue ? model.Id.Value.ToString() : Guid.NewGuid().ToString(),
                BrokerId    = brokerId,
                AccountId   = model.AccountId,
                WalletId    = model.WalletId,
                AssetPairId = model.AssetPair,
                Volume      = model.Volume.ToString(CultureInfo.InvariantCulture),
                Timestamp   = Timestamp.FromDateTime(DateTime.UtcNow)
            };

            var fee = await GetFee(brokerId, model.AssetPair);

            request.Fees.Add(fee);

            var response = await _matchingEngineClient.Trading.CreateMarketOrderAsync(request);

            var result = new CreateMarketOrderResponse(response);

            return(result);
        }
Пример #2
0
        public async Task <IActionResult> CreateAsync([FromBody] MarketOrderCreateModel model)
        {
            var result = await _marketOrderOperations.CreateAsync(User.GetTenantId(), model);

            return(Ok(result));
        }