/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }