Skip to content

Commit

Permalink
chore: parseOpenInterest(s), fetchOpenInterest, fetchOpenInterestHist…
Browse files Browse the repository at this point in the history
…ory - types
  • Loading branch information
samgermain committed May 10, 2024
1 parent 8813872 commit 3894d81
Show file tree
Hide file tree
Showing 12 changed files with 109 additions and 91 deletions.
2 changes: 1 addition & 1 deletion ts/src/base/Exchange.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5999,7 +5999,7 @@ export default class Exchange {
throw new NotSupported (this.id + ' parseOpenInterest () is not supported yet');
}

parseOpenInterests (response, market = undefined, since: Int = undefined, limit: Int = undefined): OpenInterest[] {
parseOpenInterests (response: any, market = undefined, since: Int = undefined, limit: Int = undefined): OpenInterest[] {
const interests = [];
for (let i = 0; i < response.length; i++) {
const entry = response[i];
Expand Down
6 changes: 3 additions & 3 deletions ts/src/binance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11717,7 +11717,7 @@ export default class binance extends Exchange {
};
}

async fetchOpenInterestHistory (symbol: string, timeframe = '5m', since: Int = undefined, limit: Int = undefined, params = {}) {
async fetchOpenInterestHistory (symbol: string, timeframe = '5m', since: Int = undefined, limit: Int = undefined, params = {}): Promise<OpenInterest[]> {
/**
* @method
* @name binance#fetchOpenInterestHistory
Expand Down Expand Up @@ -11789,7 +11789,7 @@ export default class binance extends Exchange {
return this.parseOpenInterests (response, market, since, limit);
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name binance#fetchOpenInterest
Expand Down Expand Up @@ -11862,7 +11862,7 @@ export default class binance extends Exchange {
return undefined;
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
const timestamp = this.safeInteger2 (interest, 'timestamp', 'time');
const id = this.safeString (interest, 'symbol');
const amount = this.safeNumber2 (interest, 'sumOpenInterest', 'openInterest');
Expand Down
6 changes: 3 additions & 3 deletions ts/src/bingx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { AuthenticationError, PermissionDenied, AccountSuspended, ExchangeError,
import { Precise } from './base/Precise.js';
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
import { DECIMAL_PLACES } from './base/functions/number.js';
import type { TransferEntry, Int, OrderSide, OHLCV, FundingRateHistory, Order, OrderType, OrderRequest, Str, Trade, Balances, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Dict, Leverage, MarginMode, Num, MarginModification, Currencies, TransferEntries, Liquidation } from './base/types.js';
import type { TransferEntry, Int, OrderSide, OHLCV, FundingRateHistory, Order, OrderType, OrderRequest, Str, Trade, Balances, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Dict, Leverage, MarginMode, Num, MarginModification, Currencies, TransferEntries, Liquidation, OpenInterest } from './base/types.js';

// ---------------------------------------------------------------------------

Expand Down Expand Up @@ -1341,7 +1341,7 @@ export default class bingx extends Exchange {
return this.filterBySymbolSinceLimit (sorted, market['symbol'], since, limit) as FundingRateHistory[];
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name bingx#fetchOpenInterest
Expand Down Expand Up @@ -1372,7 +1372,7 @@ export default class bingx extends Exchange {
return this.parseOpenInterest (data, market);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "openInterest": "3289641547.10",
Expand Down
140 changes: 79 additions & 61 deletions ts/src/bitfinex2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3236,7 +3236,7 @@ export default class bitfinex2 extends Exchange {
};
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name bitfinex2#fetchOpenInterest
Expand Down Expand Up @@ -3282,11 +3282,12 @@ export default class bitfinex2 extends Exchange {
// ]
// ]
//
const oi = this.safeList (response, 0);
return this.parseOpenInterest (oi, market);
const oi = this.safeList (response, 0, []);
const result = { 'result': oi };
return this.parseOpenInterest (result, market);
}

async fetchOpenInterestHistory (symbol: string, timeframe = '1m', since: Int = undefined, limit: Int = undefined, params = {}) {
async fetchOpenInterestHistory (symbol: string, timeframe = '1m', since: Int = undefined, limit: Int = undefined, params = {}): Promise<OpenInterest[]> {
/**
* @method
* @name bitfinex2#fetchOpenInterestHistory
Expand Down Expand Up @@ -3351,76 +3352,93 @@ export default class bitfinex2 extends Exchange {
return this.parseOpenInterests (response, market, since, limit);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterests (response: any, market = undefined, since: Int = undefined, limit: Int = undefined): OpenInterest[] {
const interests = [];
for (let i = 0; i < response.length; i++) {
const entry = { 'result': response[i] };
const interest = this.parseOpenInterest (entry, market);
interests.push (interest);
}
const sorted = this.sortBy (interests, 'timestamp');
const symbol = this.safeString (market, 'symbol');
return this.filterBySymbolSinceLimit (sorted, symbol, since, limit);
}

parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// fetchOpenInterest:
//
// [
// "tXRPF0:USTF0", // market id
// 1706256986000, // millisecond timestamp
// null,
// 0.512705, // derivative mid price
// 0.512395, // underlying spot mid price
// null,
// 37671483.04, // insurance fund balance
// null,
// 1706284800000, // timestamp of next funding
// 0.00002353, // accrued funding for next period
// 317, // next funding step
// null,
// 0, // current funding
// null,
// null,
// 0.5123016, // mark price
// null,
// null,
// 2233562.03115, // open interest in contracts
// null,
// null,
// null,
// 0.0005, // average spread without funding payment
// 0.0025 // funding payment cap
// ]
// {
// 'result': [
// "tXRPF0:USTF0", // market id
// 1706256986000, // millisecond timestamp
// null,
// 0.512705, // derivative mid price
// 0.512395, // underlying spot mid price
// null,
// 37671483.04, // insurance fund balance
// null,
// 1706284800000, // timestamp of next funding
// 0.00002353, // accrued funding for next period
// 317, // next funding step
// null,
// 0, // current funding
// null,
// null,
// 0.5123016, // mark price
// null,
// null,
// 2233562.03115, // open interest in contracts
// null,
// null,
// null,
// 0.0005, // average spread without funding payment
// 0.0025 // funding payment cap
// ]
// }
//
// fetchOpenInterestHistory:
//
// [
// 1706295191000, // timestamp
// null,
// 42152.425382, // derivative mid price
// 42133, // spot mid price
// null,
// 37671589.7853521, // insurance fund balance
// null,
// 1706313600000, // timestamp of next funding
// 0.00018734, // accrued funding for next period
// 3343, // next funding step
// null,
// 0.00007587, // current funding
// null,
// null,
// 42134.1, // mark price
// null,
// null,
// 5775.20348804, // open interest number of contracts
// null,
// null,
// null,
// 0.0005, // average spread without funding payment
// 0.0025 // funding payment cap
// ]
// {
// 'result': [
// 1706295191000, // timestamp
// null,
// 42152.425382, // derivative mid price
// 42133, // spot mid price
// null,
// 37671589.7853521, // insurance fund balance
// null,
// 1706313600000, // timestamp of next funding
// 0.00018734, // accrued funding for next period
// 3343, // next funding step
// null,
// 0.00007587, // current funding
// null,
// null,
// 42134.1, // mark price
// null,
// null,
// 5775.20348804, // open interest number of contracts
// null,
// null,
// null,
// 0.0005, // average spread without funding payment
// 0.0025 // funding payment cap
// ]
// }
//
const interestLength = interest.length;
const result = this.safeList (interest, 'result');
const interestLength = result.length;
const openInterestIndex = (interestLength === 23) ? 17 : 18;
const timestamp = this.safeInteger (interest, 1);
const marketId = this.safeString (interest, 0);
const timestamp = this.safeInteger (result, 1);
const marketId = this.safeString (result, 0);
return this.safeOpenInterest ({
'symbol': this.safeSymbol (marketId, market, undefined, 'swap'),
'openInterestAmount': this.safeNumber (interest, openInterestIndex),
'openInterestAmount': this.safeNumber (result, openInterestIndex),
'openInterestValue': undefined,
'timestamp': timestamp,
'datetime': this.iso8601 (timestamp),
'info': interest,
'info': result,
}, market);
}

Expand Down
6 changes: 3 additions & 3 deletions ts/src/bitget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { ExchangeError, ExchangeNotAvailable, NotSupported, OnMaintenance, Argum
import { Precise } from './base/Precise.js';
import { TICK_SIZE } from './base/functions/number.js';
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Liquidation, TransferEntry, Leverage, MarginMode, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion, CrossBorrowRate, IsolatedBorrowRate, Dict, TransferEntries } from './base/types.js';
import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Liquidation, TransferEntry, Leverage, MarginMode, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion, CrossBorrowRate, IsolatedBorrowRate, Dict, TransferEntries, OpenInterest } from './base/types.js';

// ---------------------------------------------------------------------------

Expand Down Expand Up @@ -7165,7 +7165,7 @@ export default class bitget extends Exchange {
return response;
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name bitget#fetchOpenInterest
Expand Down Expand Up @@ -7214,7 +7214,7 @@ export default class bitget extends Exchange {
return this.parseOpenInterest (data, market);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "openInterestList": [
Expand Down
6 changes: 3 additions & 3 deletions ts/src/bitmart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { AuthenticationError, ExchangeNotAvailable, OnMaintenance, AccountSuspen
import { Precise } from './base/Precise.js';
import { TICK_SIZE, TRUNCATE } from './base/functions/number.js';
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, Dict, TransferEntries, Liquidation } from './base/types.js';
import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, Dict, TransferEntries, Liquidation, OpenInterest } from './base/types.js';

// ---------------------------------------------------------------------------

Expand Down Expand Up @@ -4003,7 +4003,7 @@ export default class bitmart extends Exchange {
};
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name bitmart#fetchOpenInterest
Expand Down Expand Up @@ -4039,7 +4039,7 @@ export default class bitmart extends Exchange {
return this.parseOpenInterest (data, market);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "timestamp": 1694657502415,
Expand Down
4 changes: 2 additions & 2 deletions ts/src/bybit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6868,7 +6868,7 @@ export default class bybit extends Exchange {
return this.parseOpenInterests (data, market, since, limit);
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name bybit#fetchOpenInterest
Expand Down Expand Up @@ -6965,7 +6965,7 @@ export default class bybit extends Exchange {
return await this.fetchDerivativesOpenInterestHistory (symbol, timeframe, since, limit, params);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "openInterest": 64757.62400000,
Expand Down
6 changes: 3 additions & 3 deletions ts/src/delta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { ExchangeError, InsufficientFunds, BadRequest, BadSymbol, InvalidOrder,
import { TICK_SIZE } from './base/functions/number.js';
import { Precise } from './base/Precise.js';
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
import type { Balances, Currency, Greeks, Int, Market, MarketInterface, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Position, Leverage, MarginMode, Num, Option, MarginModification, Currencies, Dict } from './base/types.js';
import type { Balances, Currency, Greeks, Int, Market, MarketInterface, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Position, Leverage, MarginMode, Num, Option, MarginModification, Currencies, Dict, OpenInterest } from './base/types.js';

// ---------------------------------------------------------------------------

Expand Down Expand Up @@ -2709,7 +2709,7 @@ export default class delta extends Exchange {
};
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name delta#fetchOpenInterest
Expand Down Expand Up @@ -2784,7 +2784,7 @@ export default class delta extends Exchange {
return this.parseOpenInterest (result, market);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "close": 894.0,
Expand Down
4 changes: 2 additions & 2 deletions ts/src/gate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6149,7 +6149,7 @@ export default class gate extends Exchange {
return await this.modifyMarginHelper (symbol, amount, params);
}

async fetchOpenInterestHistory (symbol: string, timeframe = '5m', since: Int = undefined, limit: Int = undefined, params = {}) {
async fetchOpenInterestHistory (symbol: string, timeframe = '5m', since: Int = undefined, limit: Int = undefined, params = {}): Promise<OpenInterest[]> {
/**
* @method
* @name gate#fetchOpenInterest
Expand Down Expand Up @@ -6209,7 +6209,7 @@ export default class gate extends Exchange {
return this.parseOpenInterests (response, market, since, limit);
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "long_liq_size": "0",
Expand Down
6 changes: 3 additions & 3 deletions ts/src/hitbtc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TICK_SIZE } from './base/functions/number.js';
import { Precise } from './base/Precise.js';
import { BadSymbol, BadRequest, OnMaintenance, AccountSuspended, PermissionDenied, ExchangeError, RateLimitExceeded, ExchangeNotAvailable, OrderNotFound, InsufficientFunds, InvalidOrder, AuthenticationError, ArgumentsRequired, NotSupported } from './base/errors.js';
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLCV, Ticker, Order, OrderBook, Dict, Position, Str, Trade, Balances, Transaction, MarginMode, Tickers, Strings, Market, Currency, MarginModes, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Dictionary } from './base/types.js';
import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLCV, Ticker, Order, OrderBook, Dict, Position, Str, Trade, Balances, Transaction, MarginMode, Tickers, Strings, Market, Currency, MarginModes, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Dictionary, OpenInterest } from './base/types.js';

/**
* @class hitbtc
Expand Down Expand Up @@ -3084,7 +3084,7 @@ export default class hitbtc extends Exchange {
});
}

parseOpenInterest (interest, market: Market = undefined) {
parseOpenInterest (interest: Dict, market: Market = undefined): OpenInterest {
//
// {
// "contract_type": "perpetual",
Expand Down Expand Up @@ -3112,7 +3112,7 @@ export default class hitbtc extends Exchange {
}, market);
}

async fetchOpenInterest (symbol: string, params = {}) {
async fetchOpenInterest (symbol: string, params = {}): Promise<OpenInterest> {
/**
* @method
* @name hitbtc#fetchOpenInterest
Expand Down
Loading

0 comments on commit 3894d81

Please sign in to comment.