public async Task <XCommasResponse <Deal> > AddFundsToDealAsync(DealAddFundsParameters data) { var path = $"{BaseAddress}/ver1/deals/{data.DealId}/add_funds"; using (var request = XCommasRequest.Post(path).WithSerializedContent(data).Sign(this)) { return(await this.GetResponse <Deal>(request).ConfigureAwait(false)); } }
private async void btnAddFunds_Click(object sender, EventArgs e) { var ids = tableControl.SelectedIds; if (IsValid(ids)) { var dlg = new AddFundsDialog.AddFundsDialog(); var editData = new AddFundsDto(); dlg.EditDto = editData; var dr = dlg.ShowDialog(this); if (dr == DialogResult.OK) { Cursor.Current = Cursors.WaitCursor; Application.DoEvents(); var botMgr = new XCommasLayer(_keys, _logger); var accountTableDataDict = new Dictionary <int, List <AccountTableData> >(); foreach (var a in tableControl.SelectedItems.Select(x => new { x.AccountId, x.XCommasAccountId })) { if (!accountTableDataDict.ContainsKey(a.AccountId)) { accountTableDataDict.Add(a.AccountId, await botMgr.GetAccountTableData(a.AccountId, a.XCommasAccountId)); } } Cursor.Current = Cursors.Default; await ExecuteBulkOperation($"Are you sure to add funds to {tableControl.SelectedIds.Count} deals?", "Adding funds", async deal => { var accountTableData = accountTableDataDict[deal.AccountId]; var quoteCoin = deal.Pair.Split('_')[0]; var baseCoin = deal.Pair.Split('_')[1]; var quote = accountTableData.Single(x => x.CurrencyCode == quoteCoin); var baseC = accountTableData.Single(x => x.CurrencyCode == baseCoin); decimal qtyInBaseCoin = 0; decimal qtyInQuoteCurrency = 0; if (editData.QtyInBTC.HasValue) { var btc = editData.QtyInBTC.Value; qtyInBaseCoin = btc / baseC.CurrentPrice; qtyInQuoteCurrency = btc / quote.CurrentPrice; } if (editData.QtyInUSD.HasValue) { var usdt = editData.QtyInUSD.Value; qtyInBaseCoin = usdt / baseC.CurrentPriceUsd; qtyInQuoteCurrency = usdt / quote.CurrentPriceUsd; } DealAddFundsParameters updateData = new DealAddFundsParameters(); updateData.DealId = deal.Id; updateData.IsMarket = true; updateData.Quantity = qtyInBaseCoin; await botMgr.AddFundsAsync(updateData, baseCoin, qtyInQuoteCurrency, quoteCoin, deal.XCommasAccountId); }); } } }
public async Task AddFundsAsync(DealAddFundsParameters data, string baseCoin, decimal quoteQty, string quoteCoin, Guid xCommasAccount) { var res = await _3CommasClients[xCommasAccount].Item2.AddFundsToDealAsync(data); if (res.IsSuccess) { _logger.LogInformation($"Funds added to deal {data.DealId}: {data.Quantity.ToString("0.#####")} {baseCoin.ToUpper()} / {quoteQty.ToString("0.#####")} {quoteCoin.ToUpper()}"); } else { _logger.LogError($"Could not add funds to deal {data.DealId}. Reason: {res.Error}"); } }
public XCommasResponse <Deal> AddFundsToDeal(DealAddFundsParameters data) => this.AddFundsToDealAsync(data).Result;