コード例 #1
0
        /// <summary>
        ///
        /// </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> CreateMarketOrder(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.LoadMarket(_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("currency", _market.result.baseId);
                    _params.Add("units", quantity);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async($"/trade/market_{_buy_sell}", _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 <BPlaceOrders>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _market_order = new BPlaceOrderItem
                        {
                            orderId     = _json_data.orderId,
                            sideType    = sideType,
                            orderType   = OrderType.Market,
                            orderStatus = OrderStatus.Open,
                            timestamp   = Convert.ToInt64(_json_data.orderId),

                            price    = price,
                            quantity = quantity,
                            amount   = quantity * price,
                            //fee = quantity * price * publicApi.ExchangeInfo.Fees.trading.maker,

                            filled = 0m,
                            cost   = 0m
                        };

                        foreach (var _trade in _json_data.data)
                        {
                            _market_order.filled += _trade.quantity;
                            _market_order.cost   += _trade.amount + _trade.fee;
                        }

                        _result.result = _market_order;
                    }
                    else
                    {
                        _json_result.SetResult(_json_data);
                    }
                }

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

            return(_result);
        }
コード例 #2
0
        /// <summary>
        /// bithumb 회원 판/구매 거래 취소
        /// </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> CancelOrder(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.LoadMarket(_result.marketId);

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

                var _buy_sell = sideType == SideType.Bid ? "bid" : "ask";

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency", _market.result.symbol);
                    _params.Add("order_id", order_id);
                    _params.Add("type", _buy_sell);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("/trade/cancel", _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 <BPlaceOrder>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _cancel_order = new BPlaceOrderItem
                        {
                            orderId = order_id,
                            symbol  = _market.result.symbol,

                            orderStatus = OrderStatus.Canceled,
                            sideType    = sideType,

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

                        _result.result = _cancel_order;
                    }
                    else
                    {
                        _json_result.SetResult(_json_data);
                    }
                }

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

            return(_result);
        }
コード例 #3
0
ファイル: tradeApi.cs プロジェクト: geraybos/ccxt.net
        /// <summary>
        ///
        /// </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">fiat rate 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 Task <MyOrder> CreateLimitOrder(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.LoadMarket(_result.marketId);

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

                var _buy_sell = sideType == SideType.Bid ? "bid" : "ask";

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("order_currency", _market.result.baseId);
                    _params.Add("payment_currency", _market.result.quoteId);
                    _params.Add("units", quantity);
                    _params.Add("price", price);
                    _params.Add("type", _buy_sell);

                    if (args != null)
                    {
                        foreach (var _a in args)
                        {
                            if (_params.ContainsKey(_a.Key) == true)
                            {
                                _params.Remove(_a.Key);
                            }

                            _params.Add(_a.Key, _a.Value);
                        }
                    }
                }

                var _json_value = await tradeClient.CallApiPost1Async("/trade/place", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <BPlaceOrders>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _limit_order = new BPlaceOrderItem
                        {
                            orderId     = _json_data.orderId,
                            sideType    = sideType,
                            orderType   = OrderType.Limit,
                            orderStatus = OrderStatus.Open,
                            timestamp   = Convert.ToInt64(_json_data.orderId),

                            price    = price,
                            quantity = quantity,
                            amount   = quantity * price,
                            //fee = quantity * price * publicApi.ExchangeInfo.Fees.trading.maker,

                            filled = 0m,
                            cost   = 0m
                        };

                        foreach (var _trade in _json_data.data)
                        {
                            _limit_order.filled += _trade.quantity;
                            _limit_order.cost   += _trade.amount + _trade.fee;
                        }

                        _result.result = _limit_order;
                    }
                    else
                    {
                        _json_result.SetResult(_json_data);
                    }
                }

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

            return(_result);
        }