Beispiel #1
0
        /// <summary>
        /// Get present open interest of a specific symbol.
        /// </summary>
        /// <param name="symbol">The symbol to get the data for</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>Open Interest info</returns>
        public async Task <WebCallResult <BinanceFuturesCoinOpenInterest> > GetOpenInterestAsync(string symbol, CancellationToken ct = default)
        {
            var parameters = new Dictionary <string, object>()
            {
                { "symbol", symbol }
            };

            return(await BaseClient.SendRequestInternal <BinanceFuturesCoinOpenInterest>(FuturesClient.GetUrl(openInterestEndpoint, Api, publicVersion), HttpMethod.Get, ct, parameters).ConfigureAwait(false));
        }
Beispiel #2
0
        /// <summary>
        /// Get data regarding the last 24 hours change
        /// </summary>
        /// <param name="symbol">The symbol to get the data for</param>
        /// <param name="pair">Filter by pair</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>Data over the last 24 hours</returns>
        public async Task <WebCallResult <IEnumerable <IBinance24HPrice> > > Get24HPricesAsync(string?symbol = null, string?pair = null, CancellationToken ct = default)
        {
            var parameters = new Dictionary <string, object>();

            parameters.AddOptionalParameter("symbol", symbol);
            parameters.AddOptionalParameter("pair", pair);

            var result = await BaseClient
                         .SendRequestInternal <IEnumerable <BinanceFuturesCoin24HPrice> >(FuturesClient.GetUrl(price24HEndpoint, Api, publicVersion),
                                                                                          HttpMethod.Get, ct, parameters).ConfigureAwait(false);

            return(new WebCallResult <IEnumerable <IBinance24HPrice> >(result.ResponseStatusCode, result.ResponseHeaders,
                                                                       result.Success ? result.Data : null, result.Error));
        }
Beispiel #3
0
        /// <summary>
        /// Get all Liquidation Orders
        /// </summary>
        /// <param name="symbol">The symbol to get the data for</param>
        /// <param name="pair">Filter by pair</param>
        /// <param name="startTime">Start time to get  liquidation orders history</param>
        /// <param name="endTime">End time to get liquidation orders history</param>
        /// <param name="limit">Max number of results. Default:100 Max:1000</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>The all liquidation orders</returns>
        public async Task <WebCallResult <IEnumerable <BinanceFuturesLiquidation> > > GetLiquidationOrdersAsync(string?symbol = null, string?pair = null, DateTime?startTime = null, DateTime?endTime = null, int?limit = null, CancellationToken ct = default)
        {
            limit?.ValidateIntBetween(nameof(limit), 0, 1000);
            var parameters = new Dictionary <string, object>();

            parameters.AddOptionalParameter("symbol", symbol);
            parameters.AddOptionalParameter("startTime", startTime != null ? BinanceClient.ToUnixTimestamp(startTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("endTime", endTime != null ? BinanceClient.ToUnixTimestamp(endTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));

            return(await BaseClient.SendRequestInternal <IEnumerable <BinanceFuturesLiquidation> >(FuturesClient.GetUrl(allForcedOrdersEndpoint, Api, publicVersion), HttpMethod.Get, ct, parameters).ConfigureAwait(false));
        }
Beispiel #4
0
        /// <summary>
        /// Get candlestick data for the provided pair
        /// </summary>
        /// <param name="pair">The symbol to get the data for</param>
        /// <param name="contractType">The contract type</param>
        /// <param name="interval">The candlestick timespan</param>
        /// <param name="startTime">Start time to get candlestick data</param>
        /// <param name="endTime">End time to get candlestick data</param>
        /// <param name="limit">Max number of results</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>The candlestick data for the provided symbol</returns>
        public async Task <WebCallResult <IEnumerable <IBinanceKline> > > GetContinuousContractKlinesAsync(string pair, ContractType contractType, KlineInterval interval, DateTime?startTime = null, DateTime?endTime = null, int?limit = null, CancellationToken ct = default)
        {
            limit?.ValidateIntBetween(nameof(limit), 1, 1000);
            var parameters = new Dictionary <string, object> {
                { "pair", pair },
                { "interval", JsonConvert.SerializeObject(interval, new KlineIntervalConverter(false)) },
                { "contractType", JsonConvert.SerializeObject(contractType, new ContractTypeConverter(false)) }
            };

            parameters.AddOptionalParameter("startTime", startTime != null ? BinanceClient.ToUnixTimestamp(startTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("endTime", endTime != null ? BinanceClient.ToUnixTimestamp(endTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));

            var result = await BaseClient.SendRequestInternal <IEnumerable <BinanceFuturesCoinKline> >(FuturesClient.GetUrl(continuousContractKlineEndpoint, Api, publicVersion), HttpMethod.Get, ct, parameters).ConfigureAwait(false);

            return(new WebCallResult <IEnumerable <IBinanceKline> >(result.ResponseStatusCode, result.ResponseHeaders,
                                                                    result.Data, result.Error));
        }
Beispiel #5
0
        /// <summary>
        /// Get candlestick data for the provided pair
        /// </summary>
        /// <param name="symbol">The symbol to get the data for</param>
        /// <param name="interval">The candlestick timespan</param>
        /// <param name="startTime">Start time to get candlestick data</param>
        /// <param name="endTime">End time to get candlestick data</param>
        /// <param name="limit">Max number of results</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>The candlestick data for the provided symbol</returns>
        public async Task <WebCallResult <IEnumerable <BinanceMarkIndexKline> > > GetMarkPriceKlinesAsync(string symbol, KlineInterval interval, DateTime?startTime = null, DateTime?endTime = null, int?limit = null, CancellationToken ct = default)
        {
            limit?.ValidateIntBetween(nameof(limit), 1, 1000);
            var parameters = new Dictionary <string, object> {
                { "symbol", symbol },
                { "interval", JsonConvert.SerializeObject(interval, new KlineIntervalConverter(false)) }
            };

            parameters.AddOptionalParameter("startTime", startTime != null ? BinanceClient.ToUnixTimestamp(startTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("endTime", endTime != null ? BinanceClient.ToUnixTimestamp(endTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));

            return(await BaseClient.SendRequestInternal <IEnumerable <BinanceMarkIndexKline> >(FuturesClient.GetUrl(markPriceKlineEndpoint, Api, publicVersion), HttpMethod.Get, ct, parameters).ConfigureAwait(false));
        }
Beispiel #6
0
        /// <summary>
        /// Get Mark Price and Funding Rate for the provided symbol
        /// </summary>
        /// <param name="symbol">The symbol to get the data for</param>
        /// <param name="pair">Filter by pair</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns></returns>
        public async Task <WebCallResult <IEnumerable <BinanceFuturesCoinMarkPrice> > > GetMarkPricesAsync(string?symbol = null, string?pair = null, CancellationToken ct = default)
        {
            var parameters = new Dictionary <string, object>();

            parameters.AddOptionalParameter("symbol", symbol);
            parameters.AddOptionalParameter("pair", pair);

            return(await BaseClient.SendRequestInternal <IEnumerable <BinanceFuturesCoinMarkPrice> >(FuturesClient.GetUrl(markPriceEndpoint, Api, publicVersion), HttpMethod.Get, ct, parameters).ConfigureAwait(false));
        }
Beispiel #7
0
        /// <summary>
        /// Gets the historical  trades for a symbol
        /// </summary>
        /// <param name="symbol">The symbol to get recent trades for</param>
        /// <param name="limit">Result limit</param>
        /// <param name="fromId">From which trade id on results should be retrieved</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>List of recent trades</returns>
        public override async Task <WebCallResult <IEnumerable <IBinanceRecentTrade> > > GetHistoricalSymbolTradesAsync(string symbol, int?limit = null, long?fromId = null,
                                                                                                                        CancellationToken ct     = default)
        {
            limit?.ValidateIntBetween(nameof(limit), 1, 1000);
            var parameters = new Dictionary <string, object> {
                { "symbol", symbol }
            };

            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));
            parameters.AddOptionalParameter("fromId", fromId?.ToString(CultureInfo.InvariantCulture));

            var result = await BaseClient.SendRequestInternal <IEnumerable <BinanceRecentTradeBase> >(FuturesClient.GetUrl(historicalTradesEndpoint, Api, publicVersion), HttpMethod.Get, ct, parameters).ConfigureAwait(false);

            return(new WebCallResult <IEnumerable <IBinanceRecentTrade> >(result.ResponseStatusCode, result.ResponseHeaders,
                                                                          result.Data, result.Error));
        }
        /// <summary>
        /// Gets basis
        /// </summary>
        /// <param name="pair">The pair to get the data for</param>
        /// <param name="contractType">The contract type</param>
        /// <param name="period">The period timespan</param>
        /// <param name="limit">Max number of results</param>
        /// <param name="startTime">Start time</param>
        /// <param name="endTime">End time</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>Basis</returns>
        public async Task <WebCallResult <IEnumerable <BinanceFuturesBasis> > > GetBasisAsync(string pair, ContractType contractType, PeriodInterval period, int?limit = null, DateTime?startTime = null, DateTime?endTime = null, CancellationToken ct = default)
        {
            limit?.ValidateIntBetween(nameof(limit), 1, 500);

            var parameters = new Dictionary <string, object> {
                { "pair", pair },
                { "period", JsonConvert.SerializeObject(period, new PeriodIntervalConverter(false)) },
                { "contractType", JsonConvert.SerializeObject(contractType, new ContractTypeConverter(false)) }
            };

            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));
            parameters.AddOptionalParameter("startTime", startTime != null ? BinanceClient.ToUnixTimestamp(startTime.Value).ToString(CultureInfo.InvariantCulture) : null);
            parameters.AddOptionalParameter("endTime", endTime != null ? BinanceClient.ToUnixTimestamp(endTime.Value).ToString(CultureInfo.InvariantCulture) : null);

            return(await BaseClient.SendRequestInternal <IEnumerable <BinanceFuturesBasis> >(FuturesClient.GetUrl(basisEndpoint, tradingDataApi), HttpMethod.Get, ct, parameters).ConfigureAwait(false));
        }
Beispiel #9
0
        /// <summary>.
        /// Gets account balances
        /// </summary>
        /// <param name="receiveWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>The account information</returns>
        public async Task <WebCallResult <IEnumerable <BinanceFuturesCoinAccountBalance> > > GetBalanceAsync(long?receiveWindow = null, CancellationToken ct = default)
        {
            var timestampResult = await BaseClient.CheckAutoTimestamp(ct).ConfigureAwait(false);

            if (!timestampResult)
            {
                return(new WebCallResult <IEnumerable <BinanceFuturesCoinAccountBalance> >(timestampResult.ResponseStatusCode, timestampResult.ResponseHeaders, null, timestampResult.Error));
            }

            var parameters = new Dictionary <string, object>
            {
                { "timestamp", BaseClient.GetTimestamp() }
            };

            parameters.AddOptionalParameter("recvWindow", receiveWindow?.ToString(CultureInfo.InvariantCulture) ?? BaseClient.DefaultReceiveWindow.TotalMilliseconds.ToString(CultureInfo.InvariantCulture));

            return(await BaseClient.SendRequestInternal <IEnumerable <BinanceFuturesCoinAccountBalance> >(FuturesClient.GetUrl(futuresAccountBalanceEndpoint, Api, Api == "dapi" ? "1" : "2"), HttpMethod.Get, ct, parameters, true).ConfigureAwait(false));
        }
        /// <summary>
        /// Gets all user trades for provided symbol
        /// </summary>
        /// <param name="symbol">Symbol to get trades for</param>
        /// <param name="limit">The max number of results</param>
        /// <param name="fromId">TradeId to fetch from. Default gets most recent trades</param>
        /// <param name="startTime">Orders newer than this date will be retrieved</param>
        /// <param name="endTime">Orders older than this date will be retrieved</param>
        /// <param name="receiveWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
        /// <param name="ct">Cancellation token</param>
        /// <returns>List of trades</returns>
        public async Task <WebCallResult <IEnumerable <BinanceFuturesUsdtTrade> > > GetUserTradesAsync(string symbol, DateTime?startTime = null, DateTime?endTime = null, int?limit = null, long?fromId = null, long?receiveWindow = null, CancellationToken ct = default)
        {
            limit?.ValidateIntBetween(nameof(limit), 1, 1000);

            var timestampResult = await BaseClient.CheckAutoTimestamp(ct).ConfigureAwait(false);

            if (!timestampResult)
            {
                return(new WebCallResult <IEnumerable <BinanceFuturesUsdtTrade> >(timestampResult.ResponseStatusCode, timestampResult.ResponseHeaders, null, timestampResult.Error));
            }

            var parameters = new Dictionary <string, object>
            {
                { "symbol", symbol },
                { "timestamp", BaseClient.GetTimestamp() }
            };

            parameters.AddOptionalParameter("limit", limit?.ToString(CultureInfo.InvariantCulture));
            parameters.AddOptionalParameter("fromId", fromId?.ToString(CultureInfo.InvariantCulture));
            parameters.AddOptionalParameter("startTime", startTime.HasValue ? JsonConvert.SerializeObject(startTime.Value, new TimestampConverter()) : null);
            parameters.AddOptionalParameter("endTime", endTime.HasValue ? JsonConvert.SerializeObject(endTime.Value, new TimestampConverter()) : null);
            parameters.AddOptionalParameter("recvWindow", receiveWindow?.ToString(CultureInfo.InvariantCulture) ?? BaseClient.DefaultReceiveWindow.TotalMilliseconds.ToString(CultureInfo.InvariantCulture));

            return(await BaseClient.SendRequestInternal <IEnumerable <BinanceFuturesUsdtTrade> >(FuturesClient.GetUrl(myFuturesTradesEndpoint, Api, SignedVersion), HttpMethod.Get, ct, parameters, true).ConfigureAwait(false));
        }