示例#1
0
        /// <summary>
        /// Cancel open order
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="order_id">Order number registered for sale or purchase</param>
        /// <param name="quantity">amount of coin</param>
        /// <param name="price">price of coin</param>
        /// <param name="sideType">type of buy(bid) or sell(ask)</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrder> CancelOrderAsync(string base_name, string quote_name, string order_id, decimal quantity, decimal price, SideType sideType, Dictionary <string, object> args = null)
        {
            var _result = new MyOrder(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("txid", order_id);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async($"/0/private/CancelOrder", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <KResponse <KMyCancelOrder> >(_json_value.Content);
                    if (_json_data.result.count > 0)
                    {
                        var _order = new KMyPlaceOrderItem
                        {
                            orderId   = order_id,
                            symbol    = _market.result.symbol,
                            orderType = OrderType.Unknown,
                            sideType  = sideType,
                            timestamp = CUnixTime.NowMilli,
                            quantity  = quantity,
                            price     = price,
                            amount    = quantity * price,
                            count     = _json_data.result.count,
                            pending   = _json_data.result.pending
                        };

                        _result.result = _order;
                    }
                    else
                    {
                        _json_result.SetFailure();
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
示例#2
0
        /// <summary>
        /// create new market order
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="quantity">amount of coin</param>
        /// <param name="price">price of coin</param>
        /// <param name="sideType">type of buy(bid) or sell(ask)</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrder> CreateMarketOrderAsync(string base_name, string quote_name, decimal quantity, decimal price, SideType sideType, Dictionary <string, object> args = null)
        {
            var _result = new MyOrder(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _buy_sell = sideType == SideType.Bid ? "buy" : "sell";

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("pair", _market.result.symbol);
                    _params.Add("type", _buy_sell);
                    _params.Add("ordertype", "market");
                    //_params.Add("price", price);  // (optional.  dependent upon ordertype)
                    //_params.Add("price2", "?"); // secondary price (optional.  dependent upon ordertype)
                    _params.Add("volume", quantity); // order volume in lots

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async($"/0/private/AddOrder", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <KResponse <KMyPlaceOrder> >(_json_value.Content);
                    {
                        foreach (var _p in _json_data.result.transactionIds)
                        {
                            var _order = new KMyPlaceOrderItem
                            {
                                orderId = _p,
                                symbol  = _market.result.symbol,

                                timestamp = CUnixTime.NowMilli,
                                orderType = OrderType.Market,
                                sideType  = sideType,

                                quantity = quantity,
                                price    = price,
                                amount   = quantity * price
                            };

                            _result.result = _order;
                            break;
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }