Skip to content

Commit

Permalink
Added startTime/endTime parameters to PerpetualFuturesApi.ExchangeDat…
Browse files Browse the repository at this point in the history
…a.GetFundingRateHistoryAsync, updated shared implementation to support pagination
  • Loading branch information
JKorf committed Oct 8, 2024
1 parent 92a6f74 commit 405bba5
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,11 +172,15 @@ public async Task<WebCallResult<IEnumerable<GateIoPerpTicker>>> GetTickersAsync(
public async Task<WebCallResult<IEnumerable<GateIoPerpFundingRate>>> GetFundingRateHistoryAsync(
string settlementAsset,
string contract,
DateTime? startTime = null,
DateTime? endTime = null,
int? limit = null,
CancellationToken ct = default)
{
var parameters = new ParameterCollection();
parameters.Add("contract", contract);
parameters.AddOptionalSeconds("from", startTime);
parameters.AddOptionalSeconds("to", endTime);
parameters.AddOptional("limit", limit);
var request = _definitions.GetOrCreate(HttpMethod.Get, $"/api/v4/futures/{settlementAsset}/funding_rate", GateIoExchange.RateLimiter.Public, 1);
return await _baseClient.SendAsync<IEnumerable<GateIoPerpFundingRate>>(request, parameters, ct).ConfigureAwait(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,7 @@ async Task<ExchangeWebResult<SharedOpenInterest>> IOpenInterestRestClient.GetOpe
#endregion

#region Funding Rate client
GetFundingRateHistoryOptions IFundingRateRestClient.GetFundingRateHistoryOptions { get; } = new GetFundingRateHistoryOptions(SharedPaginationSupport.NotSupported, false)
GetFundingRateHistoryOptions IFundingRateRestClient.GetFundingRateHistoryOptions { get; } = new GetFundingRateHistoryOptions(SharedPaginationSupport.Descending, false)
{
RequiredExchangeParameters = new List<ParameterDescription>
{
Expand All @@ -902,17 +902,27 @@ async Task<ExchangeWebResult<IEnumerable<SharedFundingRate>>> IFundingRateRestCl
if (validationError != null)
return new ExchangeWebResult<IEnumerable<SharedFundingRate>>(Exchange, validationError);

DateTime? fromTime = null;
if (pageToken is DateTimeToken token)
fromTime = token.LastTime;

// Get data
var result = await ExchangeData.GetFundingRateHistoryAsync(
ExchangeParameters.GetValue<string>(request.ExchangeParameters, Exchange, "SettleAsset")!,
request.Symbol.GetSymbol(FormatSymbol),
limit: 1000,
startTime: request.StartTime,
endTime: fromTime ?? request.EndTime,
limit: request.Limit ?? 1000,
ct: ct).ConfigureAwait(false);
if (!result)
return result.AsExchangeResult<IEnumerable<SharedFundingRate>>(Exchange, null, default);

DateTimeToken? nextToken = null;
if (result.Data.Count() == (request.Limit ?? 1000))
nextToken = new DateTimeToken(result.Data.Min(x => x.Timestamp).AddSeconds(-1));

// Return
return result.AsExchangeResult<IEnumerable<SharedFundingRate>>(Exchange, request.Symbol.TradingMode,result.Data.Select(x => new SharedFundingRate(x.FundingRate, x.Timestamp)).ToArray());
return result.AsExchangeResult<IEnumerable<SharedFundingRate>>(Exchange, request.Symbol.TradingMode,result.Data.Select(x => new SharedFundingRate(x.FundingRate, x.Timestamp)).ToArray(), nextToken);
}
#endregion

Expand Down
16 changes: 14 additions & 2 deletions GateIo.Net/GateIo.Net.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -136,12 +136,16 @@ Task<WebCallResult<IEnumerable<GateIoPerpTicker>>> GetTickersAsync(
/// </summary>
/// <param name="settlementAsset">The settlement asset. btc, usdt or usd</param>
/// <param name="contract">Contract, for example `ETH_USDT`</param>
/// <param name="startTime">Filter by start time</param>
/// <param name="endTime">Filter by end time</param>
/// <param name="limit">Max number of results</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<WebCallResult<IEnumerable<GateIoPerpFundingRate>>> GetFundingRateHistoryAsync(
string settlementAsset,
string contract,
DateTime? startTime = null,
DateTime? endTime = null,
int? limit = null,
CancellationToken ct = default);

Expand Down

0 comments on commit 405bba5

Please sign in to comment.