Exemplo n.º 1
0
        public async Task <IDataResult <CancelOrderData> > CancelOrderByIdAsync(BinanceTrOptions options, long orderId, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "orderId", orderId.ToString() }
                };

                var result = await SendRequestAsync(HttpMethod.Post, "/open/v1/orders/cancel", options, parameters, ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <CancelOrderData>(data));
                }

                var model = JsonSerializer.Deserialize <CancelOrderModel>(result);
                return(new SuccessDataResult <CancelOrderData>(model.Data, model.Msg, model.Code));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <CancelOrderData>(ex.Message));
            }
        }
Exemplo n.º 2
0
        public async Task <IDataResult <List <OpenOrderList> > > GetAllOpenSellOrdersAsync(BinanceTrOptions options, string symbol, int limit = 500, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "symbol", symbol },
                    { "limit", limit.ToString() },
                    { "type", AllOrdersEnum.Open.GetDisplayName() },
                    { "side", OrderSideEnum.SELL.GetDisplayName() },
                };

                var result = await SendRequestAsync(HttpMethod.Get, "/open/v1/orders", options, parameters, ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <List <OpenOrderList> >(data));
                }

                var model = JsonSerializer.Deserialize <AllOrdersModel>(result);
                return(new SuccessDataResult <List <OpenOrderList> >(model.Data.List, model.Msg, model.Code));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <List <OpenOrderList> >(ex.Message));
            }
        }
Exemplo n.º 3
0
        public async Task <IDataResult <AssetInformationData> > GetAssetIformationAsync(BinanceTrOptions options, string assetName, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "asset", assetName }
                };

                var result = await SendRequestAsync(HttpMethod.Get, "/open/v1/account/spot/asset", options, parameters, ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <AssetInformationData>(data));
                }

                var model = JsonSerializer.Deserialize <AssetInformationModel>(result);
                return(new SuccessDataResult <AssetInformationData>(model.Data, model.Msg, model.Code));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <AssetInformationData>(ex.Message));
            }
        }
Exemplo n.º 4
0
        public async Task <IDataResult <PostOrderModelData> > PostStopLimitOrderAsync(BinanceTrOptions options, string symbol, OrderSideEnum side, decimal origQuoteQty, decimal limitPrice, decimal stopPrice, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "symbol", symbol },
                    { "side", side.GetDisplayName() },
                    { "type", OrderTypeEnum.STOP_LOSS_LIMIT.GetDisplayName() },
                    { "quantity", origQuoteQty.ToString(CultureInfo.InvariantCulture) },
                    { "stopPrice", stopPrice.ToString(CultureInfo.InvariantCulture) },
                    { "price", limitPrice.ToString(CultureInfo.InvariantCulture) },
                };

                var result = await SendRequestAsync(HttpMethod.Post, "/open/v1/orders", options, parameters, ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <PostOrderModelData>(data));
                }

                var model = JsonSerializer.Deserialize <PostOrderModel>(result);
                return(new SuccessDataResult <PostOrderModelData>(model.Data, model.Msg, model.Code));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <PostOrderModelData>(ex.Message));
            }
        }
Exemplo n.º 5
0
        public async Task <IDataResult <string> > GetKlinesAsync(string symbol, KLineIntervalEnum interval, DateTime?startTime = null, DateTime?endTime = null, int limit = 500, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "symbol", symbol },
                    { "limit", limit.ToString() },
                    { "interval", interval.GetDisplayName() },
                };

                if (startTime.HasValue && endTime.HasValue)
                {
                    parameters["startTime"] = BinanceTrHelper.GetTimestamp(startTime.Value).ToString();
                    parameters["endTime"]   = BinanceTrHelper.GetTimestamp(endTime.Value).ToString();
                }

                var result = await SendRequestWithoutAuth("/klines", parameters, ct : ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <string>(data));
                }

                return(new SuccessDataResult <string>(data));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <string>(ex.Message));
            }
        }
Exemplo n.º 6
0
        public async Task <IDataResult <List <AggregateTradesModel> > > GetAggregateTradesAsync(string symbol, DateTime?startTime = null, DateTime?endTime = null, int limit = 500, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "symbol", symbol },
                    { "limit", limit.ToString() }
                };

                if (startTime.HasValue && endTime.HasValue)
                {
                    parameters["startTime"] = BinanceTrHelper.GetTimestamp(startTime.Value).ToString();
                    parameters["endTime"]   = BinanceTrHelper.GetTimestamp(endTime.Value).ToString();
                }

                var result = await SendRequestWithoutAuth("/aggTrades", parameters, ct : ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <List <AggregateTradesModel> >(data));
                }

                var model = JsonSerializer.Deserialize <List <AggregateTradesModel> >(result);
                return(new SuccessDataResult <List <AggregateTradesModel> >(model));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <List <AggregateTradesModel> >(ex.Message));
            }
        }
Exemplo n.º 7
0
        public async Task <IDataResult <List <RecentTradesModel> > > GetRecentTradesAsync(string symbol, int limit = 500, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "symbol", symbol },
                    { "limit", limit.ToString() }
                };
                var result = await SendRequestWithoutAuth("/trades", parameters, ct : ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <List <RecentTradesModel> >(data));
                }

                var model = JsonSerializer.Deserialize <List <RecentTradesModel> >(result);
                return(new SuccessDataResult <List <RecentTradesModel> >(model));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <List <RecentTradesModel> >(ex.Message));
            }
        }
Exemplo n.º 8
0
        public async Task <IDataResult <OrderBookData> > GetOrderBookAsync(string symbol, int limit = 100, CancellationToken ct = default)
        {
            try
            {
                var parameters = new Dictionary <string, string>
                {
                    { "symbol", symbol },
                    { "limit", limit.ToString() }
                };
                var result = await SendRequestWithoutAuth("/open/v1/market/depth", parameters, true, ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <OrderBookData>(data));
                }

                var model = JsonSerializer.Deserialize <OrderBookModel>(result);
                return(new SuccessDataResult <OrderBookData>(model.Data, model.Msg, model.Code));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <OrderBookData>(ex.Message));
            }
        }
Exemplo n.º 9
0
        public async Task <IDataResult <List <AccountAsset> > > GetAccountInformationAsync(BinanceTrOptions options, CancellationToken ct = default)
        {
            try
            {
                var result = await SendRequestAsync(HttpMethod.Get, "/open/v1/account/spot", options, ct : ct).ConfigureAwait(false);

                var data = CheckResult(result);
                if (!BinanceTrHelper.IsJson(data))
                {
                    return(new ErrorDataResult <List <AccountAsset> >(data));
                }

                var model = JsonSerializer.Deserialize <AccountInformationModel>(result);
                return(new SuccessDataResult <List <AccountAsset> >(model.AccountData.AccountAssets, model.Msg, model.Code));
            }
            catch (Exception ex)
            {
                return(new ErrorDataResult <List <AccountAsset> >(ex.Message));
            }
        }