Esempio n. 1
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <CompleteOrders> FetchCompleteOrdersAsync(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

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

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    var _limits = limits <= 1 ? 1
                               : limits <= 1000 ? limits
                               : 1000;

                    _params.Add("product_id", _market.result.symbol);
                    _params.Add("limit", _limits);

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/executions", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <QCompleteOrders>(_json_value.Content);
                    {
                        var _orders = _json_data.result
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.fillType  = FillType.Fill;
                            _o.orderType = OrderType.Limit;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 2
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task<CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary<string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);
            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary<string, object>();
                {
                    _params.Add("currency", _market.result.symbol);
                    _params.Add("period", _timeframe);                  // period[String] Period. Default value: hour. Allowed values: hour, day

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/trades", _params);
#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject<CCompleteOrders>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _orders = _json_data.result
                                                .Where(t => t.timestamp >= since)
                                                .OrderByDescending(t => t.timestamp)
                                                .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.fillType = FillType.Fill;
                            _o.orderType = OrderType.Limit;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                    else
                    {
                        _json_result.SetFailure(_json_data.message);
                    }
                }

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

            return _result;
        }
Esempio n. 3
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency_pair", _market.result.symbol);
                    //_params.Add("time", "hour");              // default hour, The time period you want to query. If this parameter is specified as minute,
                    // it queries data within the last minute, hour means the last hour, day means the last 24 hours.

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/transactions", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <KCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.orderType = OrderType.Limit;
                            _o.fillType  = FillType.Fill;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 4
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange: contract_type(this_week, next_week, month, quarter)</param>
        /// <returns></returns>
        public override async ValueTask <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                okexapiClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = okexapiClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = okexapiClient.ExchangeInfo.GetTimestamp(timeframe);

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

                    okexapiClient.MergeParamsAndArgs(_params, args);
                }

                var _end_point = okexapiClient.CheckFuturesUrl(_market.result, "/trades.do", "/future_trades.do", _params);

                var _json_value = await okexapiClient.CallApiGet1Async(_end_point.endPoint, _end_point.args);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = okexapiClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = okexapiClient.DeserializeObject <List <OCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.orderType = OrderType.Limit;
                            _o.fillType  = FillType.Fill;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 5
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async($"/trade_history/{_market.result.symbol}/", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <CCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _t in _orders)
                        {
                            _t.orderType = OrderType.Limit;
                            _t.fillType  = FillType.Fill;

                            _t.amount = _t.quantity * _t.price;
                            _result.result.Add(_t);
                        }
                    }
                }

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

            return(_result);
        }
        public async Task FetchOrders()
        {
            try
            {
                OrderDetails.Clear();
                RequestedOrders.Clear();
                CancelOrders.Clear();
                CompleteOrders.Clear();
                ProductList.Clear();
                CustomerOrders orders = await this.orderDataService.GetOrderedItemsAsync();

                if (orders != null)
                {
                    foreach (var item in orders.Data.CustomerInvoiceData)
                    {
                        OrderDetails.Add(item);
                        if (!string.IsNullOrEmpty(item.OrderStatus))
                        {
                            if (item.OrderStatus.ToLower() == "inprogress")
                            {
                                RequestedOrders.Add(item);
                            }
                            else if (item.OrderStatus.ToLower() == "rejected")
                            {
                                CancelOrders.Add(item);
                            }
                            else if (item.OrderStatus.ToLower() == "delivered")
                            {
                                CompleteOrders.Add(item);
                            }
                        }
                    }

                    foreach (var item in orders.Data.InvocieLineItems)
                    {
                        ProductList.Add(item);
                    }
                }
            }
            catch (Exception e)
            {
                await App.Current.MainPage.DisplayAlert("msg", "Unable to load order list", "ok");
            }
            finally
            {
                IsBusy = false;
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </summary>
        /// <param name="symbol">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="limits">maximum number of items (optional): default 25</param>
        /// <returns></returns>
        public async ValueTask <CompleteOrders> GetCompleteOrders(string symbol, int limits = 25)
        {
            var _result = new CompleteOrders();

            var _params = new Dictionary <string, object>();
            {
                var _limits = limits <= 1 ? 1
                            : limits <= 500 ? limits
                            : 500;

                _params.Add("symbol", symbol);
                _params.Add("count", _limits);
                _params.Add("reverse", true);
            }

            var _response = await publicClient.CallApiGet2Async("/api/v1/trade", _params);

            if (_response != null)
            {
#if RAWJSON
                _result.rawJson = _response.Content;
#endif
                if (_response.IsSuccessful == true)
                {
                    var _orders = publicClient.DeserializeObject <List <BCompleteOrderItem> >(_response.Content);

                    foreach (var _o in _orders)
                    {
                        _o.orderType = OrderType.Limit;
                        _o.fillType  = FillType.Fill;

                        _o.amount = _o.quantity * _o.price;
                        _result.result.Add(_o);
                    }

                    _result.SetSuccess();
                }
                else
                {
                    var _message = publicClient.GetResponseMessage(_response);
                    _result.SetFailure(_message.message);
                }
            }

            return(_result);
        }
Esempio n. 8
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </summary>
        /// <param name="symbol">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="limits">maximum number of items (optional): default 25</param>
        /// <returns></returns>
        public async ValueTask <CompleteOrders> GetCompleteOrders(string symbol, int limits = 100)
        {
            var _result = new CompleteOrders();

            var _params = new Dictionary <string, object>();
            {
                _params.Add("instrument_name", symbol);
                _params.Add("count", limits);
                _params.Add("include_old", "true");
                _params.Add("sorting", "desc");
            }

            var _response = await publicClient.CallApiGet2Async("/api/v2/public/get_last_trades_by_instrument", _params);

            if (_response != null)
            {
#if RAWJSON
                _result.rawJson = _response.Content;
#endif
                if (_response.IsSuccessful == true)
                {
                    var _orders = publicClient.DeserializeObject <DRResults <DCompleteOrders> >(_response.Content);

                    foreach (var _o in _orders.result.trades)
                    {
                        _o.orderType = OrderType.Limit;
                        _o.fillType  = FillType.Fill;
                        _o.makerType = MakerType.Taker;

                        _o.amount = _o.quantity * _o.price;
                        _result.result.Add(_o);
                    }

                    _result.SetSuccess();
                }
                else
                {
                    var _message = publicClient.GetResponseMessage(_response);
                    _result.SetFailure(_message.message);
                }
            }

            return(_result);
        }
Esempio n. 9
0
    // Update is called once per frame
    void Update()
    {
        failed   = GameMaster.Instance.OrderManager.CountFailed;
        current  = GameMaster.Instance.OrderManager.CountOpen;
        complete = GameMaster.Instance.OrderManager.CountCompleted;

        customersat.SetText((GameMaster.Instance.Player.Business.CustomerTolerance_Total * 100).ToString("f0") + "%");
        markUp.SetText((GameMaster.Instance.Player.Business.MarkupPercentage_Total * 100).ToString() + "%");
        amount.SetText(" $" + GameMaster.Instance.DebtAmounts [GameMaster.Instance.WeekCurrent].ToString());

        date.SetText(GameMaster.Instance.DebtDates[GameMaster.Instance.WeekCurrent].ToShortDateString());

        company.SetText((GameMaster.Instance.Player.Business.Name).ToString());
        money.SetText("$ " + (GameMaster.Instance.Player.Business.Money).ToString());

        time.SetText(GameMaster.Instance.GameTimeString12());

        failedOrders.SetText(failed.ToString());
        CompleteOrders.SetText(complete.ToString());
        currentOrders.SetText(current.ToString());
    }
Esempio n. 10
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    if (since > 0)
                    {
                        _params.Add("startTime", since);
                        _params.Add("endTime", since + 3600 * 1000);        // More than 1 hours between startTime and endTime
                    }
                    if (limits > 0)
                    {
                        _params.Add("limit", limits);
                    }

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/aggTrades", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <BCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.fillType  = FillType.Fill;
                            _o.orderType = OrderType.Limit;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 11
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    var _limit = limits <= 1 ? 1
                               : limits <= 1000 ? limits
                               : 1000;

                    _params.Add("sort", "-1");          // if = -1 it sorts results returned with old < new
                    _params.Add("limit", _limit);
                    if (since > 0)
                    {
                        _params.Add("start", since);    // timestamp false [time]  Only show trades at or after this timestamp
                    }
                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _section = "hist"; // Section(string) REQUIRED Available values: "last", "hist"

                var _json_value = await publicClient.CallApiGet1Async($"/v2/trades/t{_market.result.symbol.ToUpper()}/{_section}", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <JArray> >(_json_value.Content);
                    {
                        var _orders = new List <BCompleteOrderItem>();

                        foreach (var _o in _json_data)
                        {
                            var _transactionId = _o[0].Value <string>();
                            var _timevalue     = _o[1].Value <long>();
                            var _quantity      = _o[2].Value <decimal>();
                            var _price         = _o[3].Value <decimal>();

                            var _sideValue = (_quantity < 0) ? "sell" : "buy";
                            if (_quantity < 0)
                            {
                                _quantity = -_quantity;
                            }

                            _orders.Add(new BCompleteOrderItem()
                            {
                                transactionId = _transactionId,
                                timestamp     = _timevalue,

                                fillType  = FillType.Fill,
                                sideType  = SideTypeConverter.FromString(_sideValue),
                                orderType = OrderType.Limit,

                                quantity = _quantity,
                                price    = _price,
                                amount   = _quantity * _price
                            });
                        }

                        _result.result.AddRange(
                            _orders
                            .Where(t => t.timestamp >= since)
                            .OrderByDescending(t => t.timestamp)
                            .Take(limits)
                            );
                    }
                }

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

            return(_result);
        }
Esempio n. 12
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <CompleteOrders> FetchCompleteOrdersAsync(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

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

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("command", "returnTradeHistory");
                    _params.Add("currencyPair", _market.result.symbol);

                    if (since > 0)
                    {
                        since /= 1000;

                        var _till_time = CUnixTime.Now;
                        var _from_time = _till_time - (30 * 24 * 60 * 60);
                        if (_from_time < since)
                        {
                            _from_time = since;
                        }

                        _params.Add("start", _from_time);
                        _params.Add("end", _till_time);
                    }

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <PCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.orderType = OrderType.Limit;
                            _o.fillType  = FillType.Fill;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 13
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("market", _market.result.symbol);
                    _params.Add("count", limits);

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _url = "";
                if (limits <= 80)
                {
                    _url = "/1/trade";
                }
                else
                {
                    _url = "/1/tradeHistory";
                }

                var _json_value = await publicClient.CallApiGet1Async($"{_url}/{_market.result.symbol}", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <GCompleteOrders>(_json_value.Content);
                    {
                        var _orders = _json_data.result
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.fillType = FillType.Fill;
                            //_o.orderType = OrderType.Limit;

                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 14
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    if (since > 0)
                    {
                        since /= 1000;

                        var _till_time = CUnixTime.Now;
                        var _from_time = _till_time - (7 * 24 * 60 * 60 - 60 * 10);
                        if (_from_time < since)
                        {
                            _from_time = since;
                        }

                        _params.Add("since", _from_time);       // Optional. Only return trades after this timestamp. See Data Types: Timestamps for more information. If not present, will show the most recent trades. For backwards compatibility, you may also use the alias 'since'.
                    }

                    _params.Add("limit_trades", limits);        // Optional. The maximum number of trades to return. The default is 50.

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async($"/v1/trades/{_market.result.symbol}", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <GCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.orderType = OrderType.Limit;
                            _o.fillType  = FillType.Fill;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 15
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limit">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limit = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    var _limit = limit <= 1 ? 1
                               : limit <= 100 ? limit
                               : 100;

                    //_params.Add("cont_no", 0);    // 체결 번호
                    _params.Add("count", _limit);

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async($"/transaction_history/{_market.result.symbol}", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <BCompleteOrders>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _orders = _json_data.result
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limit);

                        foreach (var _o in _orders)
                        {
                            _o.fillType  = FillType.Fill;
                            _o.orderType = OrderType.Limit;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                    else
                    {
                        var _message = publicClient.GetErrorMessage(_json_data.statusCode);
                        _json_result.SetFailure(
                            _message,
                            ErrorCode.ResponseDataError
                            );
                    }
                }

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

            return(_result);
        }
Esempio n. 16
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <CompleteOrders> FetchCompleteOrdersAsync(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

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

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

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

                    if (since > 0)
                    {
                        _params.Add("since", since * 1000000);
                    }

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/0/public/Trades", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <JObject>(_json_value.Content);
                    {
                        var _json_orders = JArray.FromObject((_json_data["result"] as JObject)[_market.result.symbol]);

                        var _orders = new List <KCompleteOrderItem>();
                        foreach (var _o in _json_orders)
                        {
                            var _sideValue  = _o[3].Value <string>();
                            var _orderValue = _o[4].Value <string>();
                            var _timeValue  = (long)(_o[2].Value <decimal>() * 1000m);
                            var _price      = _o[0].Value <decimal>();
                            var _quantity   = _o[1].Value <decimal>();

                            _orders.Add(new KCompleteOrderItem
                            {
                                transactionId = (_timeValue * 1000).ToString(),
                                timestamp     = _timeValue,

                                sideType  = SideTypeConverter.FromString(_sideValue),
                                orderType = OrderTypeConverter.FromString(_orderValue),

                                price    = _price,
                                quantity = _quantity,
                                amount   = _quantity * _price
                            });
                        }

                        _result.result.AddRange(
                            _orders
                            .Where(t => t.timestamp >= since)
                            .OrderByDescending(t => t.timestamp)
                            .Take(limits)
                            );
                    }
                }

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

            return(_result);
        }
Esempio n. 17
0
        /// <summary>
        /// Fetch array of recent trades data
        /// </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="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <CompleteOrders> FetchCompleteOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new CompleteOrders(base_name, quote_name);

            var _market = await this.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _timeframe = publicClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = publicClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    var _limit = limits <= 1 ? 1
                               : limits <= 500 ? limits
                               : 500;

                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("count", limits);
                    _params.Add("reverse", true);

                    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 publicClient.CallApiGet1Async("/api/v1/trade", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <List <BCompleteOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(t => t.timestamp >= since)
                                      .OrderByDescending(t => t.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.orderType = OrderType.Limit;
                            _o.fillType  = FillType.Fill;

                            _o.amount = _o.quantity * _o.price;
                            _result.result.Add(_o);
                        }
                    }
                }

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

            return(_result);
        }
Esempio n. 18
0
        public async Task FetchOrders()
        {
            if (CrossConnectivity.Current.IsConnected)
            {
                try
                {
                    OrderDetails.Clear();
                    RequestedOrders.Clear();
                    CancelOrders.Clear();
                    CompleteOrders.Clear();
                    ProductList.Clear();
                    CustomerOrders orders = await this.orderDataService.GetOrderedItemsAsync();

                    if (orders != null)
                    {
                        foreach (var item in orders.Data.CustomerInvoiceData)
                        {
                            OrderDetails.Add(item);
                            if (!string.IsNullOrEmpty(item.OrderStatus))
                            {
                                if (item.OrderStatus.ToLower().Replace(" ", "") == "ontheway" || item.OrderStatus.ToLower().Replace(" ", "") == "packed" ||
                                    item.OrderStatus.ToLower().Replace(" ", "") == "inprogress" || item.OrderStatus.ToLower().Replace(" ", "") == "accepted")
                                {
                                    RequestedOrders.Add(item);
                                }
                                else if (item.OrderStatus.ToLower() == "cancelled" || item.OrderStatus.ToLower() == "rejected")
                                {
                                    CancelOrders.Add(item);
                                }
                                else if (item.OrderStatus.ToLower() == "delivered")
                                {
                                    CompleteOrders.Add(item);
                                }
                            }
                        }

                        foreach (var item in orders.Data.InvocieLineItems)
                        {
                            ProductList.Add(item);
                        }
                    }
                }
                catch (Exception e)
                {
                    try
                    {
                        DependencyService.Get <IToastMessage>().LongTime("Unable to load order list");
                    }
                    catch { }
                }
                finally
                {
                    IsBusy = false;
                }
            }
            else
            {
                try
                {
                    DependencyService.Get <IToastMessage>().LongTime("Check your Internet Connection to reload the list");
                }
                catch { }
                IsBusy = false;
            }
        }