Beispiel #1
0
        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}");
            }
        }
Beispiel #4
0
 public XCommasResponse <Deal> AddFundsToDeal(DealAddFundsParameters data) => this.AddFundsToDealAsync(data).Result;