From 4f7faf09e2e9f2991612355e5144753aa6de713a Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 14:26:20 +0100 Subject: [PATCH 01/32] [bitmex] Add rest requests --- xchange-bitmex/http-client.env.json | 8 ++++++++ .../src/test/resources/rest/general.http | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 xchange-bitmex/http-client.env.json create mode 100644 xchange-bitmex/src/test/resources/rest/general.http diff --git a/xchange-bitmex/http-client.env.json b/xchange-bitmex/http-client.env.json new file mode 100644 index 00000000000..937977ab354 --- /dev/null +++ b/xchange-bitmex/http-client.env.json @@ -0,0 +1,8 @@ +{ + "default": { + "api_v1": "https://www.bitmex.com/api/v1" + }, + "testnet": { + "api_v1": "https://testnet.bitmex.com/api/v1" + } +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/general.http b/xchange-bitmex/src/test/resources/rest/general.http new file mode 100644 index 00000000000..fc2aef78e70 --- /dev/null +++ b/xchange-bitmex/src/test/resources/rest/general.http @@ -0,0 +1,20 @@ +### Get instruments (spot) +GET {{api_v1}}/instrument?filter={"typ":"IFXXXP"} +Accept: application/json + + +### Get instruments +GET {{api_v1}}/instrument?symbol=XBTUSDT +Accept: application/json + + +### Get all active instruments and instruments that have expired in <24hrs +GET {{api_v1}}/instrument/active?symbol=XBtUSDT +Accept: application/json + + +### Get quotes +GET {{api_v1}}/quote?symbol=USDT +Accept: application/json + + From c53b960a662cee8622ffc3c402423382bc0a97d6 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 14:32:54 +0100 Subject: [PATCH 02/32] [bitmex] Code cleanup --- xchange-bitmex/pom.xml | 7 ++- xchange-bitmex/src/main/resources/bitmex.json | 52 ++----------------- 2 files changed, 6 insertions(+), 53 deletions(-) diff --git a/xchange-bitmex/pom.xml b/xchange-bitmex/pom.xml index 565c2d30504..e6c28d40ca4 100755 --- a/xchange-bitmex/pom.xml +++ b/xchange-bitmex/pom.xml @@ -21,15 +21,14 @@ http://knowm.org/open-source/xchange/ - - com.google.guava - guava + org.junit.jupiter + junit-jupiter-engine + test - org.knowm.xchange xchange-core diff --git a/xchange-bitmex/src/main/resources/bitmex.json b/xchange-bitmex/src/main/resources/bitmex.json index a24b3091d44..c912ebb1a72 100755 --- a/xchange-bitmex/src/main/resources/bitmex.json +++ b/xchange-bitmex/src/main/resources/bitmex.json @@ -1,52 +1,6 @@ { - "currency_pairs": { - "XBT/USD": { - "price_scale": 1, - "min_amount": 1 - }, - "ETH/USD": { - "price_scale": 2, - "min_amount": 1 - } - }, - "currencies": { - "XBT": { - "scale": "", - "withdrawal_fee": 0 - }, - "XRP": { - "scale": "", - "withdrawal_fee": "" - }, - "BCH": { - "scale": "", - "withdrawal_fee": "" - }, - "ADA": { - "scale": "", - "withdrawal_fee": "" - }, - "EOS": { - "scale": "", - "withdrawal_fee": "" - }, - "TRX": { - "scale": "", - "withdrawal_fee": "" - }, - "ETH": { - "scale": "", - "withdrawal_fee": "" - }, - "LTC": { - "scale": "", - "withdrawal_fee": "" - }, - "USD": { - "scale": "", - "withdrawal_fee": "" - } -}, + "currency_pairs" : {}, + "currencies" : {}, "public_rate_limits": [ { "calls": 150, @@ -61,5 +15,5 @@ "time_unit": "seconds" } ], - "share_rate_limits": true + "share_rate_limits" : true } From 7e39a3a36db9927d35803909b55e3371546f0897 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 14:35:37 +0100 Subject: [PATCH 03/32] [bitmex] Implement getting of single ticker --- .../knowm/xchange/bitmex/BitmexAdapters.java | 48 +- .../converter/StringToCurrencyConverter.java | 13 + .../bitmex/dto/account/BitmexTicker.java | 756 +----------------- .../service/BitmexMarketDataService.java | 29 +- .../bitmex/BitmexIntegrationTestParent.java | 25 + .../dto/marketdata/BitmexTickersJSONTest.java | 3 +- .../BitmexMarketDataServiceIntegration.java | 25 + 7 files changed, 130 insertions(+), 769 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexIntegrationTestParent.java create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index b91fb30d71a..8a43213ad8b 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.apache.commons.lang3.ObjectUtils; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransaction; import org.knowm.xchange.bitmex.dto.marketdata.BitmexDepth; @@ -38,6 +39,7 @@ import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.UserTrade; import org.knowm.xchange.exceptions.ExchangeException; +import org.knowm.xchange.instrument.Instrument; public class BitmexAdapters { @@ -127,19 +129,30 @@ public static LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { BitmexAdapters.adaptOrderStatus(rawOrder.getOrderStatus())); } - public static Ticker adaptTicker(BitmexTicker bitmexTicker, CurrencyPair currencyPair) { - - Ticker.Builder builder = new Ticker.Builder(); - builder.open(bitmexTicker.getPrevClosePrice()); - builder.ask(bitmexTicker.getAskPrice()); - builder.bid(bitmexTicker.getBidPrice()); - builder.last(bitmexTicker.getLastPrice()); - builder.high(bitmexTicker.getHighPrice()); - builder.low(bitmexTicker.getLowPrice()); - builder.vwap(new BigDecimal(bitmexTicker.getVwap().longValue())); - builder.volume(bitmexTicker.getVolume24h()); - builder.currencyPair(currencyPair); - return builder.build(); + public static Ticker toTicker(BitmexTicker bitmexTicker) { + if (bitmexTicker == null) { + return null; + } + + BigDecimal percentageChange = + bitmexTicker.getLastChangePcnt() != null + ? bitmexTicker.getLastChangePcnt().scaleByPowerOfTen(2) + : null; + + return new Ticker.Builder() + .instrument(bitmexTicker.getInstrument()) + .open(bitmexTicker.getOpenValue()) + .last(bitmexTicker.getLastPrice()) + .bid(bitmexTicker.getBidPrice()) + .ask(bitmexTicker.getAskPrice()) + .high(bitmexTicker.getHighPrice()) + .low(bitmexTicker.getLowPrice()) + .vwap(bitmexTicker.getVwap()) + .volume(bitmexTicker.getAssetVolume24h()) + .quoteVolume(bitmexTicker.getQuoteVolume24h()) + .timestamp(bitmexTicker.getTimestamp()) + .percentageChange(percentageChange) + .build(); } public static Trade adaptTrade(BitmexPublicTrade bitmexPublicTrade, CurrencyPair currencyPair) { @@ -307,10 +320,11 @@ public static Currency adaptCurrency(String currencyCode) { return Currency.getInstance(currencyCode); } - public static String adaptCurrencyPairToSymbol(CurrencyPair currencyPair) { - return currencyPair == null - ? null - : currencyPair.base.getCurrencyCode() + currencyPair.counter.getCurrencyCode(); + public static String adaptCurrencyPairToSymbol(Instrument instrument) { + if (instrument == null || ObjectUtils.anyNull(instrument.getBase(), instrument.getCounter())) { + return null; + } + return adaptCurrency(instrument.getBase()) + adaptCurrency(instrument.getCounter()); } public static CurrencyPair adaptSymbolToCurrencyPair(String bitmexSymbol) { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java new file mode 100644 index 00000000000..507710d0ae1 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java @@ -0,0 +1,13 @@ +package org.knowm.xchange.bitmex.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.currency.Currency; + +/** Converts string value {@code Currency} */ +public class StringToCurrencyConverter extends StdConverter { + + @Override + public Currency convert(String value) { + return Currency.getInstance(value); + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java index b19c11bdc08..a57dbb8aae1 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java @@ -1,114 +1,22 @@ package org.knowm.xchange.bitmex.dto.account; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "symbol", - "rootSymbol", - "state", - "typ", - "listing", - "front", - "expiry", - "settle", - "relistInterval", - "inverseLeg", - "sellLeg", - "buyLeg", - "positionCurrency", - "underlying", - "quoteCurrency", - "underlyingSymbol", - "reference", - "referenceSymbol", - "calcInterval", - "publishInterval", - "publishTime", - "maxOrderQty", - "maxPrice", - "lotSize", - "tickSize", - "multiplier", - "settlCurrency", - "underlyingToPositionMultiplier", - "underlyingToSettleMultiplier", - "quoteToSettleMultiplier", - "isQuanto", - "isInverse", - "initMargin", - "maintMargin", - "riskLimit", - "riskStep", - "limit", - "capped", - "taxed", - "deleverage", - "makerFee", - "takerFee", - "settlementFee", - "insuranceFee", - "fundingBaseSymbol", - "fundingQuoteSymbol", - "fundingPremiumSymbol", - "fundingTimestamp", - "fundingInterval", - "fundingRate", - "indicativeFundingRate", - "rebalanceTimestamp", - "rebalanceInterval", - "openingTimestamp", - "closingTimestamp", - "sessionInterval", - "prevClosePrice", - "limitDownPrice", - "limitUpPrice", - "bankruptLimitDownPrice", - "bankruptLimitUpPrice", - "prevTotalVolume", - "totalVolume", - "volume", - "volume24h", - "prevTotalTurnover", - "totalTurnover", - "turnover", - "turnover24h", - "prevPrice24h", - "vwap", - "highPrice", - "lowPrice", - "lastPrice", - "lastPriceProtected", - "lastTickDirection", - "lastChangePcnt", - "bidPrice", - "midPrice", - "askPrice", - "impactBidPrice", - "impactMidPrice", - "impactAskPrice", - "hasLiquidity", - "openInterest", - "openValue", - "fairMethod", - "fairBasisRate", - "fairBasis", - "fairPrice", - "markMethod", - "markPrice", - "indicativeTaxRate", - "indicativeSettlePrice", - "settledPrice", - "timestamp" -}) +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.bitmex.config.converter.StringToCurrencyConverter; +import org.knowm.xchange.currency.Currency; +import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.instrument.Instrument; + + +@Data +@Builder +@Jacksonized public class BitmexTicker { @JsonProperty("symbol") @@ -151,10 +59,12 @@ public class BitmexTicker { private String positionCurrency; @JsonProperty("underlying") - private String underlying; + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency underlying; @JsonProperty("quoteCurrency") - private String quoteCurrency; + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency quoteCurrency; @JsonProperty("underlyingSymbol") private String underlyingSymbol; @@ -318,11 +228,17 @@ public class BitmexTicker { @JsonProperty("turnover24h") private BigInteger turnover24h; + @JsonProperty("homeNotional24h") + private BigDecimal assetVolume24h; + + @JsonProperty("foreignNotional24h") + private BigDecimal quoteVolume24h; + @JsonProperty("prevPrice24h") private BigInteger prevPrice24h; @JsonProperty("vwap") - private BigInteger vwap; + private BigDecimal vwap; @JsonProperty("highPrice") private BigDecimal highPrice; @@ -399,629 +315,9 @@ public class BitmexTicker { @JsonProperty("timestamp") private Date timestamp; - @JsonIgnore private Map additionalProperties = new HashMap<>(); - - public String getSymbol() { - return symbol; - } - - public String getRootSymbol() { - return rootSymbol; - } - - public String getState() { - return state; - } - - public String getTyp() { - return typ; - } - - public Date getListing() { - return listing; - } - - public Date getFront() { - return front; - } - - public Date getExpiry() { - return expiry; - } - - public Date getSettle() { - return settle; - } - - public String getRelistInterval() { - return relistInterval; - } - - public String getInverseLeg() { - return inverseLeg; - } - - public String getSellLeg() { - return sellLeg; - } - - public String getBuyLeg() { - return buyLeg; - } - - public String getPositionCurrency() { - return positionCurrency; - } - - public String getUnderlying() { - return underlying; - } - - public String getQuoteCurrency() { - return quoteCurrency; - } - - public String getUnderlyingSymbol() { - return underlyingSymbol; - } - - public String getReference() { - return reference; - } - - public String getReferenceSymbol() { - return referenceSymbol; - } - - public String getCalcInterval() { - return calcInterval; - } - - public String getPublishInterval() { - return publishInterval; - } - - public String getPublishTime() { - return publishTime; - } - - public BigDecimal getMaxOrderQty() { - return maxOrderQty; - } - - public BigDecimal getMaxPrice() { - return maxPrice; - } - - public BigDecimal getLotSize() { - return lotSize; - } - - public BigDecimal getTickSize() { - return tickSize; - } - - public BigDecimal getMultiplier() { - return multiplier; - } - - public String getSettlCurrency() { - return settlCurrency; - } - - public BigDecimal getUnderlyingToPositionMultiplier() { - return underlyingToPositionMultiplier; - } - - public BigDecimal getUnderlyingToSettleMultiplier() { - return underlyingToSettleMultiplier; - } - - public BigDecimal getQuoteToSettleMultiplier() { - return quoteToSettleMultiplier; - } - - public Boolean getQuanto() { - return isQuanto; - } - - public Boolean getInverse() { - return isInverse; - } - - public BigDecimal getInitMargin() { - return initMargin; - } - - public BigDecimal getMaintMargin() { - return maintMargin; - } - - public BigInteger getRiskLimit() { - return riskLimit; - } - - public BigInteger getRiskStep() { - return riskStep; - } - - public BigDecimal getLimit() { - return limit; - } - - public Boolean getCapped() { - return capped; - } - - public Boolean getTaxed() { - return taxed; - } - - public Boolean getDeleverage() { - return deleverage; - } - - public BigDecimal getMakerFee() { - return makerFee; - } - - public BigDecimal getTakerFee() { - return takerFee; - } - - public BigDecimal getSettlementFee() { - return settlementFee; - } - - public BigDecimal getInsuranceFee() { - return insuranceFee; - } - - public String getFundingBaseSymbol() { - return fundingBaseSymbol; - } - - public String getFundingQuoteSymbol() { - return fundingQuoteSymbol; - } - - public String getFundingPremiumSymbol() { - return fundingPremiumSymbol; - } - - public Date getFundingTimestamp() { - return fundingTimestamp; - } + public Instrument getInstrument() { + return new CurrencyPair(underlying, quoteCurrency); - public Date getFundingInterval() { - return fundingInterval; } - public BigDecimal getFundingRate() { - return fundingRate; - } - - public BigDecimal getIndicativeFundingRate() { - return indicativeFundingRate; - } - - public String getRebalanceTimestamp() { - return rebalanceTimestamp; - } - - public String getRebalanceInterval() { - return rebalanceInterval; - } - - public Date getOpeningTimestamp() { - return openingTimestamp; - } - - public Date getClosingTimestamp() { - return closingTimestamp; - } - - public Date getSessionInterval() { - return sessionInterval; - } - - public BigDecimal getPrevClosePrice() { - return prevClosePrice; - } - - public BigDecimal getLimitDownPrice() { - return limitDownPrice; - } - - public BigDecimal getLimitUpPrice() { - return limitUpPrice; - } - - public BigDecimal getBankruptLimitDownPrice() { - return bankruptLimitDownPrice; - } - - public BigDecimal getBankruptLimitUpPrice() { - return bankruptLimitUpPrice; - } - - public BigDecimal getPrevTotalVolume() { - return prevTotalVolume; - } - - public BigDecimal getTotalVolume() { - return totalVolume; - } - - public BigDecimal getVolume() { - return volume; - } - - public BigDecimal getVolume24h() { - return volume24h; - } - - public BigInteger getPrevTotalTurnover() { - return prevTotalTurnover; - } - - public BigInteger getTotalTurnover() { - return totalTurnover; - } - - public BigInteger getTurnover() { - return turnover; - } - - public BigInteger getTurnover24h() { - return turnover24h; - } - - public BigInteger getPrevPrice24h() { - return prevPrice24h; - } - - public BigInteger getVwap() { - return vwap; - } - - public BigDecimal getHighPrice() { - return highPrice; - } - - public BigDecimal getLowPrice() { - return lowPrice; - } - - public BigDecimal getLastPrice() { - return lastPrice; - } - - public BigDecimal getLastPriceProtected() { - return lastPriceProtected; - } - - public String getLastTickDirection() { - return lastTickDirection; - } - - public BigDecimal getLastChangePcnt() { - return lastChangePcnt; - } - - public BigDecimal getBidPrice() { - return bidPrice; - } - - public BigDecimal getMidPrice() { - return midPrice; - } - - public BigDecimal getAskPrice() { - return askPrice; - } - - public BigDecimal getImpactBidPrice() { - return impactBidPrice; - } - - public BigDecimal getImpactMidPrice() { - return impactMidPrice; - } - - public BigDecimal getImpactAskPrice() { - return impactAskPrice; - } - - public Boolean getHasLiquidity() { - return hasLiquidity; - } - - public BigDecimal getOpenInterest() { - return openInterest; - } - - public BigDecimal getOpenValue() { - return openValue; - } - - public String getFairMethod() { - return fairMethod; - } - - public BigDecimal getFairBasisRate() { - return fairBasisRate; - } - - public BigDecimal getFairBasis() { - return fairBasis; - } - - public BigDecimal getFairPrice() { - return fairPrice; - } - - public String getMarkMethod() { - return markMethod; - } - - public BigDecimal getMarkPrice() { - return markPrice; - } - - public BigDecimal getIndicativeTaxRate() { - return indicativeTaxRate; - } - - public BigDecimal getIndicativeSettlePrice() { - return indicativeSettlePrice; - } - - public BigDecimal getSettledPrice() { - return settledPrice; - } - - public Date getTimestamp() { - return timestamp; - } - - public Map getAdditionalProperties() { - return additionalProperties; - } - - @Override - public String toString() { - return "BitmexTicker{" - + "symbol='" - + symbol - + '\'' - + ", rootSymbol='" - + rootSymbol - + '\'' - + ", state='" - + state - + '\'' - + ", typ='" - + typ - + '\'' - + ", listing='" - + listing - + '\'' - + ", front='" - + front - + '\'' - + ", expiry='" - + expiry - + '\'' - + ", settle='" - + settle - + '\'' - + ", relistInterval='" - + relistInterval - + '\'' - + ", inverseLeg='" - + inverseLeg - + '\'' - + ", sellLeg='" - + sellLeg - + '\'' - + ", buyLeg='" - + buyLeg - + '\'' - + ", positionCurrency='" - + positionCurrency - + '\'' - + ", underlying='" - + underlying - + '\'' - + ", quoteCurrency='" - + quoteCurrency - + '\'' - + ", underlyingSymbol='" - + underlyingSymbol - + '\'' - + ", reference='" - + reference - + '\'' - + ", referenceSymbol='" - + referenceSymbol - + '\'' - + ", calcInterval='" - + calcInterval - + '\'' - + ", publishInterval='" - + publishInterval - + '\'' - + ", publishTime='" - + publishTime - + '\'' - + ", maxOrderQty=" - + maxOrderQty - + ", maxPrice=" - + maxPrice - + ", lotSize=" - + lotSize - + ", tickSize=" - + tickSize - + ", multiplier=" - + multiplier - + ", settlCurrency='" - + settlCurrency - + '\'' - + ", underlyingToPositionMultiplier=" - + underlyingToPositionMultiplier - + ", underlyingToSettleMultiplier=" - + underlyingToSettleMultiplier - + ", quoteToSettleMultiplier=" - + quoteToSettleMultiplier - + ", isQuanto=" - + isQuanto - + ", isInverse=" - + isInverse - + ", initMargin=" - + initMargin - + ", maintMargin=" - + maintMargin - + ", riskLimit=" - + riskLimit - + ", riskStep=" - + riskStep - + ", limit=" - + limit - + ", capped=" - + capped - + ", taxed=" - + taxed - + ", deleverage=" - + deleverage - + ", makerFee=" - + makerFee - + ", takerFee=" - + takerFee - + ", settlementFee=" - + settlementFee - + ", insuranceFee=" - + insuranceFee - + ", fundingBaseSymbol='" - + fundingBaseSymbol - + '\'' - + ", fundingQuoteSymbol='" - + fundingQuoteSymbol - + '\'' - + ", fundingPremiumSymbol='" - + fundingPremiumSymbol - + '\'' - + ", fundingTimestamp='" - + fundingTimestamp - + '\'' - + ", fundingInterval='" - + fundingInterval - + '\'' - + ", fundingRate=" - + fundingRate - + ", indicativeFundingRate=" - + indicativeFundingRate - + ", rebalanceTimestamp='" - + rebalanceTimestamp - + '\'' - + ", rebalanceInterval='" - + rebalanceInterval - + '\'' - + ", openingTimestamp='" - + openingTimestamp - + '\'' - + ", closingTimestamp='" - + closingTimestamp - + '\'' - + ", sessionInterval='" - + sessionInterval - + '\'' - + ", prevClosePrice=" - + prevClosePrice - + ", limitDownPrice=" - + limitDownPrice - + ", limitUpPrice=" - + limitUpPrice - + ", bankruptLimitDownPrice=" - + bankruptLimitDownPrice - + ", bankruptLimitUpPrice=" - + bankruptLimitUpPrice - + ", prevTotalVolume=" - + prevTotalVolume - + ", totalVolume=" - + totalVolume - + ", volume=" - + volume - + ", volume24h=" - + volume24h - + ", prevTotalTurnover=" - + prevTotalTurnover - + ", totalTurnover=" - + totalTurnover - + ", turnover=" - + turnover - + ", turnover24h=" - + turnover24h - + ", prevPrice24h=" - + prevPrice24h - + ", vwap=" - + vwap - + ", highPrice=" - + highPrice - + ", lowPrice=" - + lowPrice - + ", lastPrice=" - + lastPrice - + ", lastPriceProtected=" - + lastPriceProtected - + ", lastTickDirection='" - + lastTickDirection - + '\'' - + ", lastChangePcnt=" - + lastChangePcnt - + ", bidPrice=" - + bidPrice - + ", midPrice=" - + midPrice - + ", askPrice=" - + askPrice - + ", impactBidPrice=" - + impactBidPrice - + ", impactMidPrice=" - + impactMidPrice - + ", impactAskPrice=" - + impactAskPrice - + ", hasLiquidity=" - + hasLiquidity - + ", openInterest=" - + openInterest - + ", openValue=" - + openValue - + ", fairMethod='" - + fairMethod - + '\'' - + ", fairBasisRate=" - + fairBasisRate - + ", fairBasis=" - + fairBasis - + ", fairPrice=" - + fairPrice - + ", markMethod='" - + markMethod - + '\'' - + ", markPrice=" - + markPrice - + ", indicativeTaxRate=" - + indicativeTaxRate - + ", indicativeSettlePrice=" - + indicativeSettlePrice - + ", settledPrice=" - + settledPrice - + ", timestamp='" - + timestamp - + '\'' - + ", additionalProperties=" - + additionalProperties - + '}'; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java index 0f316c13ca0..75c88254d35 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java @@ -1,7 +1,6 @@ package org.knowm.xchange.bitmex.service; import java.io.IOException; -import java.math.BigDecimal; import java.util.List; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; @@ -12,6 +11,7 @@ import org.knowm.xchange.dto.marketdata.Ticker; import org.knowm.xchange.dto.marketdata.Trades; import org.knowm.xchange.exceptions.ExchangeException; +import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.marketdata.MarketDataService; /** @@ -35,32 +35,19 @@ public BitmexMarketDataService(BitmexExchange exchange) { } @Override - public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOException { - - String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(currencyPair); + public Ticker getTicker(Instrument instrument, Object... args) throws IOException { + String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(instrument); List bitmexTickers = getTicker(bitmexSymbol); if (bitmexTickers.isEmpty()) { return null; } + return BitmexAdapters.toTicker(bitmexTickers.get(0)); + } - BitmexTicker bitmexTicker = bitmexTickers.get(0); - Ticker ticker = - new Ticker.Builder() - .currencyPair(currencyPair) - .open(bitmexTicker.getOpenValue()) - .last(bitmexTicker.getLastPrice()) - .bid(bitmexTicker.getBidPrice()) - .ask(bitmexTicker.getAskPrice()) - .high(bitmexTicker.getHighPrice()) - .low(bitmexTicker.getLowPrice()) - .vwap(new BigDecimal(bitmexTicker.getVwap())) - .volume(bitmexTicker.getVolume24h()) - .quoteVolume(null) - .timestamp(bitmexTicker.getTimestamp()) - .build(); - - return ticker; + @Override + public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOException { + return getTicker((Instrument) currencyPair, args); } @Override diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexIntegrationTestParent.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexIntegrationTestParent.java new file mode 100644 index 00000000000..98baf162ce3 --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexIntegrationTestParent.java @@ -0,0 +1,25 @@ +package org.knowm.xchange.bitmex; + +import static org.assertj.core.api.Assumptions.assumeThat; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.knowm.xchange.ExchangeFactory; +import org.knowm.xchange.dto.meta.ExchangeHealth; + +public class BitmexIntegrationTestParent { + + protected static BitmexExchange exchange; + + @BeforeAll + static void init() { + exchange = ExchangeFactory.INSTANCE.createExchange(BitmexExchange.class); + } + + @BeforeEach + void exchange_online() { + // skip if offline + assumeThat(exchange.getMarketDataService().getExchangeHealth()) + .isEqualTo(ExchangeHealth.ONLINE); + } +} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java index f2a37d512dc..9c9dc1b67f1 100755 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java @@ -7,6 +7,7 @@ import java.io.InputStream; import org.junit.Test; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; +import org.knowm.xchange.currency.Currency; /** Test BitstampTicker JSON parsing */ public class BitmexTickersJSONTest { @@ -27,7 +28,7 @@ public void testUnmarshal() throws IOException { assertThat(bitmexTickers[0].getSymbol()).isEqualTo("XBTZ14"); assertThat(bitmexTickers[0].getReferenceSymbol()).isEqualTo(".XBT2H"); assertThat(bitmexTickers[0].getRootSymbol()).isEqualTo("XBT"); - assertThat(bitmexTickers[0].getUnderlying()).isEqualTo("XBT"); + assertThat(bitmexTickers[0].getUnderlying()).isEqualTo(Currency.XBT); assertThat(bitmexTickers[0].getUnderlyingSymbol()).isEqualTo("XBT="); } } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java new file mode 100644 index 00000000000..dbe3e09603b --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java @@ -0,0 +1,25 @@ +package org.knowm.xchange.bitmex.service; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import org.junit.jupiter.api.Test; +import org.knowm.xchange.bitmex.BitmexIntegrationTestParent; +import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.dto.marketdata.Ticker; + +class BitmexMarketDataServiceIntegration extends BitmexIntegrationTestParent { + + @Test + void valid_single_ticker() throws IOException { + Ticker ticker = exchange.getMarketDataService().getTicker(CurrencyPair.BTC_USDT); + + assertThat(ticker.getInstrument()).isEqualTo(CurrencyPair.BTC_USDT); + assertThat(ticker).hasNoNullFieldsOrPropertiesExcept("bidSize", "askSize"); + + if (ticker.getBid().signum() > 0 && ticker.getAsk().signum() > 0) { + assertThat(ticker.getBid()).isLessThan(ticker.getAsk()); + } + } + +} \ No newline at end of file From 15ee0d38ff977b61779c4164f0467330de08da19 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 14:47:02 +0100 Subject: [PATCH 04/32] [bitmex] Update orderbook implementation --- .../org/knowm/xchange/bitmex/BitmexAdapters.java | 14 +++++++------- .../bitmex/service/BitmexMarketDataService.java | 9 +++++++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 8a43213ad8b..bfbeaf0373d 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -45,12 +45,12 @@ public class BitmexAdapters { private static final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); - public static OrderBook adaptOrderBook(BitmexDepth bitmexDepth, CurrencyPair currencyPair) { + public static OrderBook toOrderBook(BitmexDepth bitmexDepth, Instrument instrument) { OrdersContainer asksOrdersContainer = - adaptOrders(bitmexDepth.getAsks(), currencyPair, OrderType.ASK, true); + adaptOrders(bitmexDepth.getAsks(), instrument, OrderType.ASK, true); OrdersContainer bidsOrdersContainer = - adaptOrders(bitmexDepth.getBids(), currencyPair, OrderType.BID, false); + adaptOrders(bitmexDepth.getBids(), instrument, OrderType.BID, false); return new OrderBook( new Date(Math.max(asksOrdersContainer.getTimestamp(), bidsOrdersContainer.getTimestamp())), @@ -75,7 +75,7 @@ public static BitmexDepth adaptDepth(BitmexPublicOrderList orders) { public static OrdersContainer adaptOrders( List orders, - CurrencyPair currencyPair, + Instrument instrument, OrderType orderType, boolean reverse) { @@ -85,7 +85,7 @@ public static OrdersContainer adaptOrders( int i = reverse ? orders.size() - 1 : 0; for (BitmexPublicOrder order : orders) { - limitOrders[i] = adaptOrder(order, orderType, currencyPair); + limitOrders[i] = adaptOrder(order, orderType, instrument); i += (reverse ? -1 : 1); } return new OrdersContainer(maxTimestamp, Arrays.asList(limitOrders)); @@ -104,11 +104,11 @@ public static Trades adaptTrades(List trades, CurrencyPair cu } public static LimitOrder adaptOrder( - BitmexPublicOrder order, OrderType orderType, CurrencyPair currencyPair) { + BitmexPublicOrder order, OrderType orderType, Instrument instrument) { BigDecimal volume = order.getVolume(); - return new LimitOrder(orderType, volume, currencyPair, "", null, order.getPrice()); + return new LimitOrder(orderType, volume, instrument, "", null, order.getPrice()); } public static LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java index 75c88254d35..fcadcae2511 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java @@ -50,10 +50,15 @@ public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOExce return getTicker((Instrument) currencyPair, args); } + @Override + public OrderBook getOrderBook(Instrument instrument, Object... args) throws IOException { + String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(instrument); + return BitmexAdapters.toOrderBook(getBitmexDepth(bitmexSymbol), instrument); + } + @Override public OrderBook getOrderBook(CurrencyPair currencyPair, Object... args) throws IOException { - String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(currencyPair); - return BitmexAdapters.adaptOrderBook(getBitmexDepth(bitmexSymbol), currencyPair); + return getOrderBook((Instrument) currencyPair, args); } @Override From 5b3b3134b43bb5a51f88ca0a7849039b3c4413c9 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 15:22:37 +0100 Subject: [PATCH 05/32] [bitmex] Code cleanup --- .../knowm/xchange/bitmex/BitmexAdapters.java | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index bfbeaf0373d..3883a52d8bc 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import lombok.experimental.UtilityClass; import org.apache.commons.lang3.ObjectUtils; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransaction; @@ -41,11 +42,12 @@ import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; +@UtilityClass public class BitmexAdapters { - private static final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); + private final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); - public static OrderBook toOrderBook(BitmexDepth bitmexDepth, Instrument instrument) { + public OrderBook toOrderBook(BitmexDepth bitmexDepth, Instrument instrument) { OrdersContainer asksOrdersContainer = adaptOrders(bitmexDepth.getAsks(), instrument, OrderType.ASK, true); @@ -58,7 +60,7 @@ public static OrderBook toOrderBook(BitmexDepth bitmexDepth, Instrument instrume bidsOrdersContainer.getLimitOrders()); } - public static BitmexDepth adaptDepth(BitmexPublicOrderList orders) { + public BitmexDepth adaptDepth(BitmexPublicOrderList orders) { BitmexDepth bitmexDepth = new BitmexDepth(new ArrayList<>(), new ArrayList<>()); @@ -73,7 +75,7 @@ public static BitmexDepth adaptDepth(BitmexPublicOrderList orders) { return bitmexDepth; } - public static OrdersContainer adaptOrders( + public OrdersContainer adaptOrders( List orders, Instrument instrument, OrderType orderType, @@ -91,7 +93,7 @@ public static OrdersContainer adaptOrders( return new OrdersContainer(maxTimestamp, Arrays.asList(limitOrders)); } - public static Trades adaptTrades(List trades, CurrencyPair currencyPair) { + public Trades adaptTrades(List trades, CurrencyPair currencyPair) { List tradeList = new ArrayList<>(trades.size()); for (int i = 0; i < trades.size(); i++) { @@ -103,7 +105,7 @@ public static Trades adaptTrades(List trades, CurrencyPair cu return new Trades(tradeList, lastTid, TradeSortType.SortByTimestamp); } - public static LimitOrder adaptOrder( + public LimitOrder adaptOrder( BitmexPublicOrder order, OrderType orderType, Instrument instrument) { BigDecimal volume = order.getVolume(); @@ -111,7 +113,7 @@ public static LimitOrder adaptOrder( return new LimitOrder(orderType, volume, instrument, "", null, order.getPrice()); } - public static LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { + public LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { OrderType type = rawOrder.getSide() == BitmexSide.BUY ? OrderType.BID : OrderType.ASK; CurrencyPair pair = adaptSymbolToCurrencyPair(rawOrder.getSymbol()); @@ -129,7 +131,7 @@ public static LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { BitmexAdapters.adaptOrderStatus(rawOrder.getOrderStatus())); } - public static Ticker toTicker(BitmexTicker bitmexTicker) { + public Ticker toTicker(BitmexTicker bitmexTicker) { if (bitmexTicker == null) { return null; } @@ -155,7 +157,7 @@ public static Ticker toTicker(BitmexTicker bitmexTicker) { .build(); } - public static Trade adaptTrade(BitmexPublicTrade bitmexPublicTrade, CurrencyPair currencyPair) { + public Trade adaptTrade(BitmexPublicTrade bitmexPublicTrade, CurrencyPair currencyPair) { OrderType type = adaptOrderType(bitmexPublicTrade.getSide()); BigDecimal originalAmount = bitmexPublicTrade.getSize(); @@ -173,7 +175,7 @@ public static Trade adaptTrade(BitmexPublicTrade bitmexPublicTrade, CurrencyPair .build(); } - public static Wallet adaptWallet(Map bitmexWallet) { + public Wallet adaptWallet(Map bitmexWallet) { List balances = new ArrayList<>(bitmexWallet.size()); for (Entry balancePair : bitmexWallet.entrySet()) { @@ -184,7 +186,7 @@ public static Wallet adaptWallet(Map bitmexWallet) { return Wallet.Builder.from(balances).build(); } - public static OpenOrders adaptOpenOrders(Map bitmexOrders) { + public OpenOrders adaptOpenOrders(Map bitmexOrders) { List limitOrders = new ArrayList<>(); for (Entry bitmexOrderEntry : bitmexOrders.entrySet()) { @@ -202,7 +204,7 @@ public static OpenOrders adaptOpenOrders(Map bitmexOrders) return new OpenOrders(limitOrders); } - public static LimitOrder adaptLimitOrder(BitmexOrder bitmexOrder, String id) { + public LimitOrder adaptLimitOrder(BitmexOrder bitmexOrder, String id) { BitmexOrderDescription orderDescription = bitmexOrder.getOrderDescription(); OrderType type = adaptOrderType(orderDescription.getType()); @@ -233,19 +235,19 @@ public static LimitOrder adaptLimitOrder(BitmexOrder bitmexOrder, String id) { status); } - public static OrderType adaptOrderType(BitmexSide bitmexType) { + public OrderType adaptOrderType(BitmexSide bitmexType) { return bitmexType == null ? null : bitmexType.equals(BitmexSide.BUY) ? OrderType.BID : OrderType.ASK; } - public static String adaptOrderId(BitmexOrderResponse orderResponse) { + public String adaptOrderId(BitmexOrderResponse orderResponse) { List orderIds = orderResponse.getTransactionIds(); return (orderIds == null || orderIds.isEmpty()) ? "" : orderIds.get(0); } - private static InstrumentMetaData adaptPair( + private InstrumentMetaData adaptPair( BitmexTicker ticker, InstrumentMetaData originalMeta) { if (originalMeta != null) { @@ -264,7 +266,7 @@ private static InstrumentMetaData adaptPair( } } - public static OrderStatus adaptOrderStatus(BitmexOrderStatus status) { + public OrderStatus adaptOrderStatus(BitmexOrderStatus status) { switch (status) { case PENDING: @@ -284,7 +286,7 @@ public static OrderStatus adaptOrderStatus(BitmexOrderStatus status) { } } - public static OrderStatus adaptOrderStatus(BitmexPrivateOrder.OrderStatus status) { + public OrderStatus adaptOrderStatus(BitmexPrivateOrder.OrderStatus status) { switch (status) { case New: return OrderStatus.NEW; @@ -301,7 +303,7 @@ public static OrderStatus adaptOrderStatus(BitmexPrivateOrder.OrderStatus status } } - public static String adaptCurrency(Currency currency) { + public String adaptCurrency(Currency currency) { // bitmex seems to use a lowercase 't' in XBT // can test this here - https://testnet.bitmex.com/api/explorer/#!/User/User_getDepositAddress // uppercase 'T' will return 'Unknown currency code' @@ -312,7 +314,7 @@ public static String adaptCurrency(Currency currency) { return currency.getCurrencyCode(); } - public static Currency adaptCurrency(String currencyCode) { + public Currency adaptCurrency(String currencyCode) { if (currencyCode.equalsIgnoreCase("XBt")) { return Currency.BTC; } @@ -320,14 +322,14 @@ public static Currency adaptCurrency(String currencyCode) { return Currency.getInstance(currencyCode); } - public static String adaptCurrencyPairToSymbol(Instrument instrument) { + public String adaptCurrencyPairToSymbol(Instrument instrument) { if (instrument == null || ObjectUtils.anyNull(instrument.getBase(), instrument.getCounter())) { return null; } return adaptCurrency(instrument.getBase()) + adaptCurrency(instrument.getCounter()); } - public static CurrencyPair adaptSymbolToCurrencyPair(String bitmexSymbol) { + public CurrencyPair adaptSymbolToCurrencyPair(String bitmexSymbol) { // Assuming that base symbol has 3 characters String baseSymbol = bitmexSymbol.substring(0, 3); @@ -336,7 +338,7 @@ public static CurrencyPair adaptSymbolToCurrencyPair(String bitmexSymbol) { return new CurrencyPair(baseSymbol, counterSymbol); } - public static class OrdersContainer { + public class OrdersContainer { private final long timestamp; private final List limitOrders; @@ -362,7 +364,7 @@ public List getLimitOrders() { } } - public static UserTrade adoptUserTrade(BitmexPrivateExecution exec) { + public UserTrade adoptUserTrade(BitmexPrivateExecution exec) { CurrencyPair pair = BitmexAdapters.adaptSymbolToCurrencyPair(exec.symbol); // the "lastQty" parameter is in the USD currency for ???/USD pairs OrderType orderType = convertType(exec.side); @@ -382,7 +384,7 @@ public static UserTrade adoptUserTrade(BitmexPrivateExecution exec) { .build(); } - private static OrderType convertType(String side) { + private OrderType convertType(String side) { switch (side) { case "Buy": return OrderType.BID; @@ -393,7 +395,7 @@ private static OrderType convertType(String side) { } } - public static FundingRecord adaptFundingRecord(BitmexWalletTransaction walletTransaction) { + public FundingRecord adaptFundingRecord(BitmexWalletTransaction walletTransaction) { return new FundingRecord( walletTransaction.getAddress(), walletTransaction.getTransactTime(), @@ -408,7 +410,7 @@ public static FundingRecord adaptFundingRecord(BitmexWalletTransaction walletTra walletTransaction.getText()); } - private static FundingRecord.Type adaptFundingRecordtype( + private FundingRecord.Type adaptFundingRecordtype( final BitmexWalletTransaction walletTransaction) { String type = walletTransaction.getTransactType(); @@ -429,7 +431,7 @@ private static FundingRecord.Type adaptFundingRecordtype( throw new ExchangeException("Unknown FundingRecord.Type"); } - private static FundingRecord.Status adaptFundingRecordStatus(final String transactStatus) { + private FundingRecord.Status adaptFundingRecordStatus(final String transactStatus) { return FundingRecord.Status.resolveStatus(transactStatus); } } From 7489d4e91b22b78b82c2f88be8b047b7a93973a3 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 19:55:28 +0100 Subject: [PATCH 06/32] [bitmex] Add getting of assets, optimize getting of metadata --- xchange-bitmex/pom.xml | 5 + .../java/org/knowm/xchange/bitmex/Bitmex.java | 6 + .../knowm/xchange/bitmex/BitmexAdapters.java | 93 +++++++- .../knowm/xchange/bitmex/BitmexExchange.java | 121 +++-------- .../BitmexJacksonObjectMapperFactory.java | 21 ++ .../converter/StringToCurrencyConverter.java | 3 +- .../bitmex/dto/account/BitmexTicker.java | 77 +++++-- .../bitmex/dto/marketdata/BitmexAsset.java | 164 +++++++++++---- .../bitmex/service/BitmexAccountService.java | 3 +- .../service/BitmexAccountServiceRaw.java | 4 +- .../bitmex/service/BitmexBaseService.java | 6 + .../service/BitmexMarketDataServiceRaw.java | 15 ++ .../dto/marketdata/BitmexTickersJSONTest.java | 34 --- .../knowm/xchange/bitmex/example-tickers.json | 198 ------------------ .../src/test/resources/rest/general.http | 5 + 15 files changed, 367 insertions(+), 388 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java delete mode 100755 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java delete mode 100644 xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/example-tickers.json diff --git a/xchange-bitmex/pom.xml b/xchange-bitmex/pom.xml index e6c28d40ca4..870952eb958 100755 --- a/xchange-bitmex/pom.xml +++ b/xchange-bitmex/pom.xml @@ -23,6 +23,11 @@ + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + org.junit.jupiter junit-jupiter-engine diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java index ee3809ab44b..602bbaa958c 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java @@ -9,6 +9,7 @@ import java.util.Date; import javax.annotation.Nullable; import org.knowm.xchange.bitmex.dto.account.BitmexTickerList; +import org.knowm.xchange.bitmex.dto.marketdata.BitmexAsset; import org.knowm.xchange.bitmex.dto.marketdata.BitmexFundingList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexKlineList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrderList; @@ -77,4 +78,9 @@ BitmexFundingList getFundingHistory( @Nullable @QueryParam("startTime") Date startTime, @Nullable @QueryParam("endTime") Date endTime) throws IOException, BitmexException; + + @GET + @Path("wallet/assets") + HttpResponseAwareList getAssets() + throws IOException, BitmexException; } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 3883a52d8bc..b9ce89b512b 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -2,12 +2,15 @@ import java.math.BigDecimal; import java.math.MathContext; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import lombok.experimental.UtilityClass; import org.apache.commons.lang3.ObjectUtils; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; @@ -25,6 +28,7 @@ import org.knowm.xchange.bitmex.dto.trade.BitmexSide; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.derivative.FuturesContract; import org.knowm.xchange.dto.Order.OrderStatus; import org.knowm.xchange.dto.Order.OrderType; import org.knowm.xchange.dto.account.Balance; @@ -152,7 +156,7 @@ public Ticker toTicker(BitmexTicker bitmexTicker) { .vwap(bitmexTicker.getVwap()) .volume(bitmexTicker.getAssetVolume24h()) .quoteVolume(bitmexTicker.getQuoteVolume24h()) - .timestamp(bitmexTicker.getTimestamp()) + .timestamp(Date.from(bitmexTicker.getTimestamp().toInstant())) .percentageChange(percentageChange) .build(); } @@ -303,7 +307,7 @@ public OrderStatus adaptOrderStatus(BitmexPrivateOrder.OrderStatus status) { } } - public String adaptCurrency(Currency currency) { + public String toString(Currency currency) { // bitmex seems to use a lowercase 't' in XBT // can test this here - https://testnet.bitmex.com/api/explorer/#!/User/User_getDepositAddress // uppercase 'T' will return 'Unknown currency code' @@ -314,7 +318,7 @@ public String adaptCurrency(Currency currency) { return currency.getCurrencyCode(); } - public Currency adaptCurrency(String currencyCode) { + public Currency toCurrency(String currencyCode) { if (currencyCode.equalsIgnoreCase("XBt")) { return Currency.BTC; } @@ -326,7 +330,7 @@ public String adaptCurrencyPairToSymbol(Instrument instrument) { if (instrument == null || ObjectUtils.anyNull(instrument.getBase(), instrument.getCounter())) { return null; } - return adaptCurrency(instrument.getBase()) + adaptCurrency(instrument.getCounter()); + return toString(instrument.getBase()) + toString(instrument.getCounter()); } public CurrencyPair adaptSymbolToCurrencyPair(String bitmexSymbol) { @@ -399,7 +403,7 @@ public FundingRecord adaptFundingRecord(BitmexWalletTransaction walletTransactio return new FundingRecord( walletTransaction.getAddress(), walletTransaction.getTransactTime(), - adaptCurrency(walletTransaction.getCurrency()), + toCurrency(walletTransaction.getCurrency()), walletTransaction.getAmount().abs(), walletTransaction.getTransactID(), walletTransaction.getTx(), @@ -434,4 +438,83 @@ private FundingRecord.Type adaptFundingRecordtype( private FundingRecord.Status adaptFundingRecordStatus(final String transactStatus) { return FundingRecord.Status.resolveStatus(transactStatus); } + + public Instrument toInstrument(BitmexTicker bitmexTicker) { + if (bitmexTicker == null) { + return null; + } + + CurrencyPair currencyPair = new CurrencyPair(bitmexTicker.getUnderlying(), bitmexTicker.getQuoteCurrency()); + switch (bitmexTicker.getSymbolType()) { + case SPOT: + return currencyPair; + case FUTURES: + return new FuturesContract(currencyPair, bitmexTicker.getExpirationInfo().getFuturesCode()); + case PERPETUALS: + return new FuturesContract(currencyPair, "PERP"); + case UNKNOWN: + default: + return null; + } + } + + public InstrumentMetaData toInstrumentMetaData(BitmexTicker bitmexTicker) { + BigDecimal assetMultiplier = bitmexTicker.getUnderlyingToPositionMultiplier(); + + BigDecimal minAssetAmount = null; + if (bitmexTicker.getLotSize() != null && assetMultiplier != null && assetMultiplier.signum() != 0) { + minAssetAmount = bitmexTicker.getLotSize().divide(assetMultiplier, MathContext.DECIMAL32); + } + + BigDecimal maxAssetAmount = null; + if (bitmexTicker.getMaxOrderQty() != null && assetMultiplier != null && assetMultiplier.signum() != 0) { + maxAssetAmount = bitmexTicker.getMaxOrderQty().divide(assetMultiplier, MathContext.DECIMAL32); + } + + return new InstrumentMetaData.Builder() + .tradingFee(bitmexTicker.getTakerFee()) + .minimumAmount(minAssetAmount) + .maximumAmount(maxAssetAmount) + .priceScale(Optional.ofNullable(bitmexTicker.getTickSize()).map(BigDecimal::scale).orElse(null)) + .volumeScale(Optional.ofNullable(minAssetAmount).map(BigDecimal::scale).orElse(null)) + .priceStepSize(bitmexTicker.getTickSize()) + .marketOrderEnabled(true) + .build(); + } + + public String toFuturesCode(ZonedDateTime zonedDateTime) { + if (zonedDateTime == null) { + return null; + } + // get short year + String futuresCode = DateTimeFormatter.ofPattern("yy").format(zonedDateTime); + switch (zonedDateTime.getMonth()) { + case JANUARY: + return "F" + futuresCode; + case FEBRUARY: + return "G" + futuresCode; + case MARCH: + return "H" + futuresCode; + case APRIL: + return "J" + futuresCode; + case MAY: + return "K" + futuresCode; + case JUNE: + return "M" + futuresCode; + case JULY: + return "N" + futuresCode; + case AUGUST: + return "Q" + futuresCode; + case SEPTEMBER: + return "U" + futuresCode; + case OCTOBER: + return "V" + futuresCode; + case NOVEMBER: + return "X" + futuresCode; + case DECEMBER: + return "Z" + futuresCode; + default: + return null; + } + } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java index 38314490ad4..b758e5a06bb 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java @@ -1,19 +1,16 @@ package org.knowm.xchange.bitmex; -import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; -import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import org.knowm.xchange.BaseExchange; import org.knowm.xchange.Exchange; import org.knowm.xchange.ExchangeSpecification; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; +import org.knowm.xchange.bitmex.dto.account.BitmexTicker.SymbolType; import org.knowm.xchange.bitmex.dto.account.BitmexTickerList; +import org.knowm.xchange.bitmex.dto.marketdata.BitmexAsset; import org.knowm.xchange.bitmex.service.BitmexAccountService; import org.knowm.xchange.bitmex.service.BitmexMarketDataService; import org.knowm.xchange.bitmex.service.BitmexMarketDataServiceRaw; @@ -21,13 +18,14 @@ import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.meta.CurrencyMetaData; +import org.knowm.xchange.dto.meta.ExchangeMetaData; import org.knowm.xchange.dto.meta.InstrumentMetaData; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.utils.nonce.CurrentTimeIncrementalNonceFactory; import si.mazi.rescu.SynchronizedValueFactory; -public class BitmexExchange extends BaseExchange implements Exchange { +public class BitmexExchange extends BaseExchange { protected RateLimitUpdateListener rateLimitUpdateListener; @@ -76,15 +74,12 @@ protected void initServices() { @Override public ExchangeSpecification getDefaultExchangeSpecification() { - - ExchangeSpecification exchangeSpecification = new ExchangeSpecification(this.getClass()); - exchangeSpecification.setSslUri("https://www.bitmex.com"); - exchangeSpecification.setHost("bitmex.com"); - exchangeSpecification.setPort(80); - exchangeSpecification.setExchangeName("Bitmex"); - exchangeSpecification.setExchangeDescription("Bitmex is a bitcoin exchange"); - exchangeSpecification.setExchangeSpecificParametersItem(Exchange.USE_SANDBOX, false); - return exchangeSpecification; + ExchangeSpecification specification = new ExchangeSpecification(getClass()); + specification.setSslUri("https://www.bitmex.com"); + specification.setHost("bitmex.com"); + specification.setExchangeName("Bitmex"); + specification.setExchangeSpecificParametersItem(USE_SANDBOX, false); + return specification; } @Override @@ -93,8 +88,26 @@ public SynchronizedValueFactory getNonceFactory() { } @Override - public void remoteInit() throws IOException { - updateExchangeMetaData(); + public void remoteInit() { + BitmexMarketDataService bitmexMarketDataService = (BitmexMarketDataService) getMarketDataService(); + List tickers = bitmexMarketDataService.getActiveTickers(); + + Map instruments = tickers.stream() + .filter(bitmexTicker -> bitmexTicker.getSymbolType() != SymbolType.UNKNOWN) + .collect(Collectors.toMap( + BitmexAdapters::toInstrument, + BitmexAdapters::toInstrumentMetaData + )); + + Map currencyMetadata = bitmexMarketDataService.getAssets().stream() + .collect(Collectors.toMap( + BitmexAsset::getAsset, + bitmexAsset -> { + return new CurrencyMetaData(bitmexAsset.getScale(), null); + } + )); + + exchangeMetaData = new ExchangeMetaData(instruments, currencyMetadata, exchangeMetaData.getPublicRateLimits(), exchangeMetaData.getPrivateRateLimits(), exchangeMetaData.isShareRateLimits()); } public RateLimitUpdateListener getRateLimitUpdateListener() { @@ -105,78 +118,6 @@ public void setRateLimitUpdateListener(RateLimitUpdateListener rateLimitUpdateLi this.rateLimitUpdateListener = rateLimitUpdateListener; } - public void updateExchangeMetaData() { - - List tickers = - ((BitmexMarketDataServiceRaw) marketDataService).getActiveTickers(); - List activeCurrencyPairs = new ArrayList<>(); - Set activeCurrencies = new HashSet<>(); - - tickers.forEach( - ticker -> collectCurrenciesAndPairs(ticker, activeCurrencyPairs, activeCurrencies)); - - Map pairsMap = exchangeMetaData.getInstruments(); - Map currenciesMap = exchangeMetaData.getCurrencies(); - - // Remove pairs that are no-longer in use - pairsMap.keySet().retainAll(activeCurrencyPairs); - - // Remove currencies that are no-longer in use - currenciesMap.keySet().retainAll(activeCurrencies); - - // Add missing pairs and currencies - activeCurrencyPairs.forEach( - cp -> { - if (!pairsMap.containsKey(cp)) { - pairsMap.put( - cp, - new InstrumentMetaData.Builder() - .minimumAmount(BigDecimal.ONE) - .priceScale(getPriceScale(tickers, cp)) - .build()); - } - if (!currenciesMap.containsKey(cp.base)) { - currenciesMap.put(cp.base, null); - } - if (!currenciesMap.containsKey(cp.counter)) { - currenciesMap.put(cp.counter, null); - } - }); - } - - private void collectCurrenciesAndPairs( - BitmexTicker ticker, List activeCurrencyPairs, Set activeCurrencies) { - - String bitmexSymbol = ticker.getSymbol(); - String baseSymbol = - ("XBK".equals(ticker.getRootSymbol()) || "XBJ".equals(ticker.getRootSymbol())) - ? "XBT" - : ticker.getRootSymbol(); - String counterSymbol; - - if (bitmexSymbol.contains(baseSymbol)) { - counterSymbol = bitmexSymbol.substring(baseSymbol.length()); - } else { - logger.warn("Not clear how to create currency pair for symbol: {}", bitmexSymbol); - return; - } - - activeCurrencyPairs.add(new CurrencyPair(baseSymbol, counterSymbol)); - activeCurrencies.add(new Currency(baseSymbol)); - activeCurrencies.add(new Currency(counterSymbol)); - } - - private Integer getPriceScale(List tickers, CurrencyPair cp) { - - return tickers.stream() - .filter(ticker -> ticker.getSymbol().equals(BitmexAdapters.adaptCurrencyPairToSymbol(cp))) - .findFirst() - .map(BitmexTicker::getLastPrice) - .filter(Objects::nonNull) - .map(BigDecimal::scale) - .orElse(null); - } - public CurrencyPair determineActiveContract( String baseSymbol, String counterSymbol, BitmexPrompt contractTimeframe) { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java new file mode 100644 index 00000000000..2b9ffd48e99 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java @@ -0,0 +1,21 @@ +package org.knowm.xchange.bitmex.config; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import si.mazi.rescu.serialization.jackson.DefaultJacksonObjectMapperFactory; + +public class BitmexJacksonObjectMapperFactory extends DefaultJacksonObjectMapperFactory { + + @Override + public void configureObjectMapper(ObjectMapper objectMapper) { + super.configureObjectMapper(objectMapper); + + // enable default values for some enums + objectMapper.enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE); + + // enable jsr310 types + objectMapper.registerModule(new JavaTimeModule()); + + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java index 507710d0ae1..72f2bc2d85d 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java @@ -1,6 +1,7 @@ package org.knowm.xchange.bitmex.config.converter; import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.currency.Currency; /** Converts string value {@code Currency} */ @@ -8,6 +9,6 @@ public class StringToCurrencyConverter extends StdConverter { @Override public Currency convert(String value) { - return Currency.getInstance(value); + return BitmexAdapters.toCurrency(value); } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java index a57dbb8aae1..d7082fa530c 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java @@ -1,13 +1,16 @@ package org.knowm.xchange.bitmex.dto.account; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.Date; +import java.time.ZonedDateTime; import lombok.Builder; import lombok.Data; import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.config.converter.StringToCurrencyConverter; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; @@ -26,22 +29,22 @@ public class BitmexTicker { private String rootSymbol; @JsonProperty("state") - private String state; + private State state; @JsonProperty("typ") - private String typ; + private SymbolType symbolType; @JsonProperty("listing") - private Date listing; + private ZonedDateTime listing; @JsonProperty("front") - private Date front; + private ZonedDateTime front; @JsonProperty("expiry") - private Date expiry; + private ExpirationInfo expirationInfo; @JsonProperty("settle") - private Date settle; + private ZonedDateTime settle; @JsonProperty("relistInterval") private String relistInterval; @@ -163,10 +166,10 @@ public class BitmexTicker { private String fundingPremiumSymbol; @JsonProperty("fundingTimestamp") - private Date fundingTimestamp; + private ZonedDateTime fundingTimestamp; @JsonProperty("fundingInterval") - private Date fundingInterval; + private ZonedDateTime fundingInterval; @JsonProperty("fundingRate") private BigDecimal fundingRate; @@ -181,13 +184,13 @@ public class BitmexTicker { private String rebalanceInterval; @JsonProperty("openingTimestamp") - private Date openingTimestamp; + private ZonedDateTime openingTimestamp; @JsonProperty("closingTimestamp") - private Date closingTimestamp; + private ZonedDateTime closingTimestamp; @JsonProperty("sessionInterval") - private Date sessionInterval; + private ZonedDateTime sessionInterval; @JsonProperty("prevClosePrice") private BigDecimal prevClosePrice; @@ -313,11 +316,59 @@ public class BitmexTicker { private BigDecimal settledPrice; @JsonProperty("timestamp") - private Date timestamp; + private ZonedDateTime timestamp; public Instrument getInstrument() { return new CurrencyPair(underlying, quoteCurrency); } + public static enum SymbolType { + @JsonProperty("FFCCSX") + FUTURES, + + @JsonProperty("FFWCSX") + PERPETUALS, + + @JsonProperty("IFXXXP") + SPOT, + + @JsonEnumDefaultValue + UNKNOWN, + + } + + public static enum State { + @JsonProperty("Open") + OPEN, + + @JsonProperty("Closed") + CLOSED, + + @JsonProperty("Unlisted") + UNLISTED, + + @JsonProperty("Expired") + EXPIRED, + + @JsonProperty("Cleared") + CLEARED, + + } + + @Data + public static class ExpirationInfo { + + private ZonedDateTime expirationDate; + + private String futuresCode; + + @JsonCreator + public ExpirationInfo(ZonedDateTime expiry) { + expirationDate = expiry; + futuresCode = BitmexAdapters.toFuturesCode(expiry); + } + + } + } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java index 5dfb59ac3c2..46f4a122cbd 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java @@ -1,65 +1,143 @@ package org.knowm.xchange.bitmex.dto.marketdata; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import java.math.BigDecimal; +import java.util.List; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.bitmex.config.converter.StringToCurrencyConverter; +import org.knowm.xchange.currency.Currency; +@Data +@Builder +@Jacksonized public class BitmexAsset { - private final String altName; - private final String assetClass; - private final int scale; - private final int displayScale; + @JsonProperty("asset") + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency asset; + + @JsonProperty("name") + private String name; + + @JsonProperty("scale") + private Integer scale; + + @JsonProperty("enabled") + private Boolean enabled; + + @JsonProperty("isMarginCurrency") + private Boolean marginCurrency; + + @JsonProperty("minDepositAmount") + private BigDecimal minDepositAmount; + + @JsonProperty("minWithdrawalAmount") + private BigDecimal minWithdrawalAmount; + + @JsonProperty("maxWithdrawalAmount") + private BigDecimal maxWithdrawalAmount; + + @JsonProperty("memoRequired") + private Boolean memoRequired; + + @JsonProperty("networks") + List networks; + /** - * Constructor - * - * @param altName - * @param assetClass - * @param scale - * @param displayScale + * @return Scaled value */ - public BitmexAsset( - @JsonProperty("altname") String altName, - @JsonProperty("aclass") String assetClass, - @JsonProperty("decimals") int scale, - @JsonProperty("display_decimals") int displayScale) { - - this.altName = altName; - this.assetClass = assetClass; - this.scale = scale; - this.displayScale = displayScale; + public BigDecimal getMinDepositAmount() { + if (minDepositAmount == null || scale == null || scale <= 0) { + return null; + } + return minDepositAmount.scaleByPowerOfTen(-scale); } - public String getAltName() { - return altName; + /** + * @return Scaled value + */ + public BigDecimal getMinWithdrawalAmount() { + if (minWithdrawalAmount == null || scale == null || scale <= 0) { + return null; + } + return minWithdrawalAmount.scaleByPowerOfTen(-scale); } - public String getAssetClass() { - - return assetClass; + /** + * @return Scaled value + */ + public BigDecimal getMaxWithdrawalAmount() { + if (maxWithdrawalAmount == null || scale == null || scale <= 0) { + return null; + } + return maxWithdrawalAmount.scaleByPowerOfTen(-scale); } - public int getScale() { - return scale; - } - public int getDisplayScale() { + @Data + @Builder + @Jacksonized + public static class Network { - return displayScale; - } + @JsonIgnore + Integer assetScale; + + @JsonProperty("asset") + private String id; + + @JsonProperty("tokenAddress") + private String tokenAddress; + + @JsonProperty("depositEnabled") + private Boolean depositEnabled; + + @JsonProperty("withdrawalEnabled") + private Boolean withdrawalEnabled; + + @JsonProperty("withdrawalFee") + private BigDecimal withdrawalFee; + + @JsonProperty("minFee") + private BigDecimal minFee; + + @JsonProperty("maxFee") + private BigDecimal maxFee; + + /** + * @return Scaled value + */ + public BigDecimal getWithdrawalFee() { + if (withdrawalFee == null || assetScale == null || assetScale <= 0) { + return null; + } + return withdrawalFee.scaleByPowerOfTen(-assetScale); + } + + /** + * @return Scaled value + */ + public BigDecimal getMinFee() { + if (minFee == null || assetScale == null || assetScale <= 0) { + return null; + } + return minFee.scaleByPowerOfTen(-assetScale); + } - @Override - public String toString() { - - return "KrakenAssetInfo [altName=" - + altName - + ", assetClass=" - + assetClass - + ", scale=" - + scale - + ", displayScale=" - + displayScale - + "]"; + /** + * @return Scaled value + */ + public BigDecimal getMaxFee() { + if (maxFee == null || assetScale == null || assetScale <= 0) { + return null; + } + return maxFee.scaleByPowerOfTen(-assetScale); + } } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java index 2d245ada2e3..a0c48ffa1d6 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java @@ -1,6 +1,5 @@ package org.knowm.xchange.bitmex.service; -import static org.knowm.xchange.bitmex.BitmexAdapters.adaptCurrency; import java.io.IOException; import java.math.BigDecimal; @@ -71,7 +70,7 @@ public String withdrawFunds(Currency currency, BigDecimal amount, String address @Override public String requestDepositAddress(Currency currency, String... args) throws IOException { - String currencyCode = adaptCurrency(currency); + String currencyCode = BitmexAdapters.toString(currency); return requestDepositAddress(currencyCode); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java index 89484f8adda..9653b53aabe 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java @@ -1,10 +1,10 @@ package org.knowm.xchange.bitmex.service; -import static org.knowm.xchange.bitmex.BitmexAdapters.adaptCurrency; import java.io.IOException; import java.math.BigDecimal; import java.util.List; +import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.account.BitmexAccount; import org.knowm.xchange.bitmex.dto.account.BitmexMarginAccount; @@ -57,7 +57,7 @@ public List getBitmexWalletHistory( apiKey, exchange.getNonceFactory(), signatureCreator, - adaptCurrency(ccy), + BitmexAdapters.toString(ccy), count, start)); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java index 4e757c6d9a6..4388bcce4e3 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java @@ -7,6 +7,7 @@ import org.knowm.xchange.bitmex.BitmexException; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.RateLimitUpdateListener; +import org.knowm.xchange.bitmex.config.BitmexJacksonObjectMapperFactory; import org.knowm.xchange.client.ExchangeRestProxyBuilder; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.exceptions.FundsExceededException; @@ -37,6 +38,11 @@ public BitmexBaseService(BitmexExchange exchange) { bitmex = ExchangeRestProxyBuilder.forInterface( BitmexAuthenticated.class, exchange.getExchangeSpecification()) + .clientConfigCustomizer( + clientConfig -> + clientConfig.setJacksonObjectMapperFactory( + new BitmexJacksonObjectMapperFactory())) + .build(); signatureCreator = BitmexDigest.createInstance(exchange.getExchangeSpecification().getSecretKey()); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java index 457e6ccf3e1..82b117f280d 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java @@ -9,8 +9,10 @@ import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.BitmexPrompt; +import org.knowm.xchange.bitmex.HttpResponseAwareList; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; import org.knowm.xchange.bitmex.dto.account.BitmexTickerList; +import org.knowm.xchange.bitmex.dto.marketdata.BitmexAsset; import org.knowm.xchange.bitmex.dto.marketdata.BitmexDepth; import org.knowm.xchange.bitmex.dto.marketdata.BitmexFundingList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexKline; @@ -116,4 +118,17 @@ public BitmexFundingList getFundingHistory( bitmex.getFundingHistory( symbol, filter, columns, count, start, reverse, startTime, endTime)); } + + public List getAssets() throws ExchangeException { + return updateRateLimit(() -> { + HttpResponseAwareList assets = bitmex.getAssets(); + // set scale information for each network + assets.forEach(asset -> { + asset.getNetworks().forEach(network -> network.setAssetScale(asset.getScale())); + }); + return assets; + }); + } + + } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java deleted file mode 100755 index 9c9dc1b67f1..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexTickersJSONTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.knowm.xchange.bitmex.dto.marketdata; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.io.InputStream; -import org.junit.Test; -import org.knowm.xchange.bitmex.dto.account.BitmexTicker; -import org.knowm.xchange.currency.Currency; - -/** Test BitstampTicker JSON parsing */ -public class BitmexTickersJSONTest { - - @Test - public void testUnmarshal() throws IOException { - - // Read in the JSON from the example resources - InputStream is = - BitmexTickersJSONTest.class.getResourceAsStream( - "/org/knowm/xchange/bitmex/example-tickers.json"); - - ObjectMapper mapper = new ObjectMapper(); - BitmexTicker[] bitmexTickers = mapper.readValue(is, BitmexTicker[].class); - - // Verify that the example data was unmarshalled correctly - assertThat(bitmexTickers.length).isEqualTo(2); - assertThat(bitmexTickers[0].getSymbol()).isEqualTo("XBTZ14"); - assertThat(bitmexTickers[0].getReferenceSymbol()).isEqualTo(".XBT2H"); - assertThat(bitmexTickers[0].getRootSymbol()).isEqualTo("XBT"); - assertThat(bitmexTickers[0].getUnderlying()).isEqualTo(Currency.XBT); - assertThat(bitmexTickers[0].getUnderlyingSymbol()).isEqualTo("XBT="); - } -} diff --git a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/example-tickers.json b/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/example-tickers.json deleted file mode 100644 index 49316e83f2a..00000000000 --- a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/example-tickers.json +++ /dev/null @@ -1,198 +0,0 @@ -[ - { - "symbol": "XBTZ14", - "rootSymbol": "XBT", - "state": "Settled", - "typ": "FXXXS", - "listing": "2014-11-21T20:00:00.000Z", - "front": "2014-11-28T12:00:00.000Z", - "expiry": "2014-12-26T12:00:00.000Z", - "settle": "2014-12-26T12:00:00.000Z", - "relistInterval": null, - "inverseLeg": "", - "sellLeg": "", - "buyLeg": "", - "positionCurrency": "", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".XBT2H", - "calcInterval": null, - "publishInterval": null, - "publishTime": null, - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": null, - "underlyingToSettleMultiplier": 100000000, - "quoteToSettleMultiplier": null, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.3, - "maintMargin": 0.2, - "riskLimit": 25000000000, - "riskStep": 5000000000, - "limit": 0.2, - "capped": false, - "taxed": false, - "deleverage": false, - "makerFee": 0.00005, - "takerFee": 0.00005, - "settlementFee": 0.00005, - "insuranceFee": 0.00015, - "fundingBaseSymbol": "", - "fundingQuoteSymbol": "", - "fundingPremiumSymbol": "", - "fundingTimestamp": null, - "fundingInterval": null, - "fundingRate": null, - "indicativeFundingRate": null, - "rebalanceTimestamp": null, - "rebalanceInterval": null, - "openingTimestamp": "2014-12-26T12:00:00.000Z", - "closingTimestamp": "2014-12-26T12:00:00.000Z", - "sessionInterval": "2000-01-01T08:00:00.000Z", - "prevClosePrice": 319, - "limitDownPrice": 255.2, - "limitUpPrice": 382.8, - "bankruptLimitDownPrice": null, - "bankruptLimitUpPrice": null, - "prevTotalVolume": 323564, - "totalVolume": 348271, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "prevPrice24h": 323.33, - "vwap": null, - "highPrice": null, - "lowPrice": null, - "lastPrice": 323.33, - "lastPriceProtected": 323.33, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0, - "bidPrice": null, - "midPrice": null, - "askPrice": null, - "impactBidPrice": null, - "impactMidPrice": null, - "impactAskPrice": null, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "", - "fairBasisRate": null, - "fairBasis": 0, - "fairPrice": 323.33, - "markMethod": "LastPrice", - "markPrice": 323.33, - "indicativeTaxRate": null, - "indicativeSettlePrice": 323.33, - "settledPrice": 323.33, - "timestamp": "2014-11-21T21:00:02.409Z" - }, - { - "symbol": "XBTF15", - "rootSymbol": "XBT", - "state": "Settled", - "typ": "FXXXS", - "listing": "2014-11-21T20:00:00.000Z", - "front": "2014-12-26T12:00:00.000Z", - "expiry": "2015-01-30T12:00:00.000Z", - "settle": "2015-01-30T12:00:00.000Z", - "relistInterval": null, - "inverseLeg": "", - "sellLeg": "", - "buyLeg": "", - "positionCurrency": "", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".XBT2H", - "calcInterval": null, - "publishInterval": null, - "publishTime": null, - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": null, - "underlyingToSettleMultiplier": 100000000, - "quoteToSettleMultiplier": null, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.3, - "maintMargin": 0.2, - "riskLimit": 25000000000, - "riskStep": 5000000000, - "limit": 0.2, - "capped": false, - "taxed": false, - "deleverage": false, - "makerFee": 0.00005, - "takerFee": 0.00005, - "settlementFee": 0.00005, - "insuranceFee": 0.00015, - "fundingBaseSymbol": "", - "fundingQuoteSymbol": "", - "fundingPremiumSymbol": "", - "fundingTimestamp": null, - "fundingInterval": null, - "fundingRate": null, - "indicativeFundingRate": null, - "rebalanceTimestamp": null, - "rebalanceInterval": null, - "openingTimestamp": "2015-01-30T12:00:00.000Z", - "closingTimestamp": "2015-01-30T12:00:00.000Z", - "sessionInterval": "2000-01-01T08:00:00.000Z", - "prevClosePrice": 234.67, - "limitDownPrice": 187.74, - "limitUpPrice": 281.6, - "bankruptLimitDownPrice": null, - "bankruptLimitUpPrice": null, - "prevTotalVolume": 750687, - "totalVolume": 809457, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 134448491820, - "totalTurnover": 148135184990, - "turnover": 13686693170, - "turnover24h": 0, - "prevPrice24h": 232.43, - "vwap": null, - "highPrice": null, - "lowPrice": null, - "lastPrice": 232.43, - "lastPriceProtected": 232.43, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0, - "bidPrice": null, - "midPrice": null, - "askPrice": null, - "impactBidPrice": null, - "impactMidPrice": null, - "impactAskPrice": null, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "", - "fairBasisRate": null, - "fairBasis": 0, - "fairPrice": 232.43, - "markMethod": "LastPrice", - "markPrice": 232.43, - "indicativeTaxRate": null, - "indicativeSettlePrice": 232.43, - "settledPrice": 232.43, - "timestamp": "2014-11-21T21:00:02.409Z" - } -] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/general.http b/xchange-bitmex/src/test/resources/rest/general.http index fc2aef78e70..55a8f50210d 100644 --- a/xchange-bitmex/src/test/resources/rest/general.http +++ b/xchange-bitmex/src/test/resources/rest/general.http @@ -18,3 +18,8 @@ GET {{api_v1}}/quote?symbol=USDT Accept: application/json +### Get Assets Config +GET {{api_v1}}/wallet/assets +Accept: application/json + + From 3d5cd35fb2d01b68feac3a7223e931b3b281c790 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 19:56:27 +0100 Subject: [PATCH 07/32] [bitmex] Add getting of currencies --- .../bitmex/service/BitmexMarketDataService.java | 11 +++++++++++ .../service/BitmexMarketDataServiceIntegration.java | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java index fcadcae2511..139f7f93bbe 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java @@ -2,10 +2,13 @@ import java.io.IOException; import java.util.List; +import java.util.stream.Collectors; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; +import org.knowm.xchange.bitmex.dto.marketdata.BitmexAsset; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicTrade; +import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; import org.knowm.xchange.dto.marketdata.Ticker; @@ -88,4 +91,12 @@ public Trades getTrades(CurrencyPair currencyPair, Object... args) throws IOExce List trades = getBitmexTrades(bitmexSymbol, limit, start); return BitmexAdapters.adaptTrades(trades, currencyPair); } + + public List getCurrencies() { + return getAssets().stream() + .filter(BitmexAsset::getEnabled) + .map(BitmexAsset::getAsset) + .collect(Collectors.toList()); + } + } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java index dbe3e09603b..1b92d0861a9 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java @@ -3,8 +3,10 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; +import java.util.List; import org.junit.jupiter.api.Test; import org.knowm.xchange.bitmex.BitmexIntegrationTestParent; +import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.Ticker; @@ -22,4 +24,14 @@ void valid_single_ticker() throws IOException { } } + @Test + void valid_currencies() { + List currencies = + ((BitmexMarketDataService) exchange.getMarketDataService()).getCurrencies(); + + assertThat(currencies).isNotEmpty(); + assertThat(currencies.stream().distinct().count()).isEqualTo(currencies.size()); + } + + } \ No newline at end of file From c50b0e624550c438628ebb2e7e54e671139adf78 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 19:58:48 +0100 Subject: [PATCH 08/32] [bitmex] Code cleanup --- .../BitmexOrderBookFetchIntegration.java | 42 ------------- .../BitmexTickerFetchIntegration.java | 61 ------------------- .../BitmexTradesFetchIntegration.java | 41 ------------- 3 files changed, 144 deletions(-) delete mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexOrderBookFetchIntegration.java delete mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTickerFetchIntegration.java delete mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTradesFetchIntegration.java diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexOrderBookFetchIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexOrderBookFetchIntegration.java deleted file mode 100644 index 53a380c681e..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexOrderBookFetchIntegration.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.knowm.xchange.bitmex.service.marketdata; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.io.IOException; -import java.math.BigDecimal; -import org.junit.Before; -import org.junit.Test; -import org.knowm.xchange.ExchangeFactory; -import org.knowm.xchange.bitmex.BitmexExchange; -import org.knowm.xchange.bitmex.BitmexPrompt; -import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.service.marketdata.MarketDataService; - -public class BitmexOrderBookFetchIntegration { - - public static MarketDataService marketDataService; - public static BitmexExchange bitmexExchange; - - @Before - public void setUp() { - bitmexExchange = (BitmexExchange) ExchangeFactory.INSTANCE.createExchange(BitmexExchange.class); - marketDataService = bitmexExchange.getMarketDataService(); - } - - @Test - public void getOrderBookTest() throws IOException { - CurrencyPair pair = bitmexExchange.determineActiveContract("ETH", "USD", BitmexPrompt.MONTHLY); - OrderBook orderBook = marketDataService.getOrderBook(pair); - - assertThat(orderBook).isNotNull(); - assertThat(orderBook.getAsks()).isNotEmpty(); - assertThat(orderBook.getBids()).isNotEmpty(); - - assertThat(orderBook.getAsks().get(0).getLimitPrice()).isGreaterThan(BigDecimal.ZERO); - assertThat(orderBook.getAsks().get(0).getCurrencyPair()).isEqualTo(pair); - - assertThat(orderBook.getBids().get(0).getLimitPrice()).isGreaterThan(BigDecimal.ZERO); - assertThat(orderBook.getAsks().get(0).getCurrencyPair()).isEqualTo(pair); - } -} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTickerFetchIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTickerFetchIntegration.java deleted file mode 100644 index b89a2ca3e72..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTickerFetchIntegration.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.knowm.xchange.bitmex.service.marketdata; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.io.IOException; -import java.math.BigDecimal; -import org.junit.Before; -import org.junit.Test; -import org.knowm.xchange.ExchangeFactory; -import org.knowm.xchange.bitmex.BitmexExchange; -import org.knowm.xchange.bitmex.BitmexPrompt; -import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.service.marketdata.MarketDataService; - -public class BitmexTickerFetchIntegration { - - public static MarketDataService marketDataService; - public static BitmexExchange bitmexExchange; - - @Before - public void setUp() { - bitmexExchange = (BitmexExchange) ExchangeFactory.INSTANCE.createExchange(BitmexExchange.class); - marketDataService = bitmexExchange.getMarketDataService(); - } - - @Test(expected = ExchangeException.class) - public void contractNotExistsTest() { - bitmexExchange.determineActiveContract("USD", "USD", BitmexPrompt.PERPETUAL); - } - - @Test - public void determineActiveContractTest() { - CurrencyPair perpetualXBT = - bitmexExchange.determineActiveContract("BTC", "USD", BitmexPrompt.PERPETUAL); - CurrencyPair perpetualETH = - bitmexExchange.determineActiveContract("ETH", "BTC", BitmexPrompt.PERPETUAL); - - assertThat(new CurrencyPair("XBT", "USD")).isEqualTo(perpetualXBT); - assertThat(new CurrencyPair("ETH", "USD")).isEqualTo(perpetualETH); - } - - @Test - public void fetchTickerTest() throws IOException { - CurrencyPair activeContract = - bitmexExchange.determineActiveContract("BTC", "USD", BitmexPrompt.PERPETUAL); - - Ticker ticker = marketDataService.getTicker(activeContract); - assertThat(ticker).isNotNull(); - assertThat(ticker.getCurrencyPair()).isEqualTo(activeContract); - assertThat(ticker.getOpen()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getLast()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getBid()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getAsk()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getHigh()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getLow()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getVwap()).isGreaterThan(BigDecimal.ZERO); - assertThat(ticker.getVolume()).isGreaterThan(BigDecimal.ZERO); - } -} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTradesFetchIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTradesFetchIntegration.java deleted file mode 100644 index 5ebb104076a..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/marketdata/BitmexTradesFetchIntegration.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.knowm.xchange.bitmex.service.marketdata; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.io.IOException; -import java.math.BigDecimal; -import org.junit.Before; -import org.junit.Test; -import org.knowm.xchange.ExchangeFactory; -import org.knowm.xchange.bitmex.BitmexExchange; -import org.knowm.xchange.bitmex.BitmexPrompt; -import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.dto.marketdata.Trades; -import org.knowm.xchange.service.marketdata.MarketDataService; - -public class BitmexTradesFetchIntegration { - - private static MarketDataService marketDataService; - private static BitmexExchange bitmexExchange; - - @Before - public void setUp() { - bitmexExchange = (BitmexExchange) ExchangeFactory.INSTANCE.createExchange(BitmexExchange.class); - marketDataService = bitmexExchange.getMarketDataService(); - } - - @Test - public void getTradesTest() throws IOException { - CurrencyPair pair = bitmexExchange.determineActiveContract("BTC", "USD", BitmexPrompt.MONTHLY); - Trades trades = marketDataService.getTrades(pair, 500, 0L); - - assertThat(trades).isNotNull(); - assertThat(trades.getTrades()).isNotEmpty(); - assertThat(trades.getTrades().get(0).getCurrencyPair()).isEqualTo(pair); - assertThat(trades.getTrades().get(0).getType()).isNotNull(); - assertThat(trades.getTrades().get(0).getOriginalAmount()).isGreaterThan(BigDecimal.ZERO); - assertThat(trades.getTrades().get(0).getPrice()).isGreaterThan(BigDecimal.ZERO); - assertThat(trades.getTrades().get(0).getTimestamp()).isNotNull(); - assertThat(trades.getTrades().get(0).getId()).isNotNull(); - } -} From 7425edb79534cd1b97bc0a571588a158679bc61c Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 20:10:04 +0100 Subject: [PATCH 09/32] [bitmex] Implement getting of all spot tickers --- .../bitmex/service/BitmexMarketDataService.java | 12 ++++++++++++ .../BitmexMarketDataServiceIntegration.java | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java index 139f7f93bbe..00120544be7 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java @@ -6,6 +6,8 @@ import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; +import org.knowm.xchange.bitmex.dto.account.BitmexTicker.State; +import org.knowm.xchange.bitmex.dto.account.BitmexTicker.SymbolType; import org.knowm.xchange.bitmex.dto.marketdata.BitmexAsset; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicTrade; import org.knowm.xchange.currency.Currency; @@ -16,6 +18,7 @@ import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.marketdata.MarketDataService; +import org.knowm.xchange.service.marketdata.params.Params; /** * Implementation of the market data service for Bitmex @@ -37,6 +40,15 @@ public BitmexMarketDataService(BitmexExchange exchange) { super(exchange); } + @Override + public List getTickers(Params params) { + return getActiveTickers().stream() + .filter(bitmexTicker -> bitmexTicker.getSymbolType() == SymbolType.SPOT) + .filter(bitmexTicker -> bitmexTicker.getState() == State.OPEN) + .map(BitmexAdapters::toTicker) + .collect(Collectors.toList()); + } + @Override public Ticker getTicker(Instrument instrument, Object... args) throws IOException { String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(instrument); diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java index 1b92d0861a9..fe24d34a1ee 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java @@ -33,5 +33,21 @@ void valid_currencies() { assertThat(currencies.stream().distinct().count()).isEqualTo(currencies.size()); } + @Test + void valid_tickers() throws IOException { + List tickers = exchange.getMarketDataService().getTickers(null); + assertThat(tickers).isNotEmpty(); + + assertThat(tickers) + .allSatisfy( + ticker -> { + assertThat(ticker.getInstrument()).isNotNull(); + assertThat(ticker.getLast()).isNotNull(); + + if (ticker.getBid().signum() > 0 && ticker.getAsk().signum() > 0) { + assertThat(ticker.getBid()).isLessThan(ticker.getAsk()); + } + }); + } } \ No newline at end of file From aa2c6dabc7ea794d50259ec626220f5cdcae28dc Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 20:25:18 +0100 Subject: [PATCH 10/32] [bitmex] Implement getting of all instruments --- .../bitmex/service/BitmexMarketDataService.java | 8 ++++++++ .../service/BitmexMarketDataServiceIntegration.java | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java index 00120544be7..b39365888a3 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java @@ -111,4 +111,12 @@ public List getCurrencies() { .collect(Collectors.toList()); } + public List getInstruments() { + return getActiveTickers().stream() + .filter(bitmexTicker -> bitmexTicker.getSymbolType() != SymbolType.UNKNOWN) + .map(BitmexAdapters::toInstrument) + .collect(Collectors.toList()); + } + + } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java index fe24d34a1ee..2890232faa1 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java @@ -9,6 +9,7 @@ import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.Ticker; +import org.knowm.xchange.instrument.Instrument; class BitmexMarketDataServiceIntegration extends BitmexIntegrationTestParent { @@ -33,6 +34,15 @@ void valid_currencies() { assertThat(currencies.stream().distinct().count()).isEqualTo(currencies.size()); } + @Test + void valid_instruments() { + List instruments = + ((BitmexMarketDataService) exchange.getMarketDataService()).getInstruments(); + + assertThat(instruments).isNotEmpty(); + assertThat(instruments.stream().distinct().count()).isEqualTo(instruments.size()); + } + @Test void valid_tickers() throws IOException { List tickers = exchange.getMarketDataService().getTickers(null); From 7abc44b74142f8201d52e205fc4e65f70ab1777d Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 8 Dec 2024 23:36:48 +0100 Subject: [PATCH 11/32] [bitmex] Implement getting of orderbook --- .../java/org/knowm/xchange/bitmex/Bitmex.java | 2 +- .../knowm/xchange/bitmex/BitmexAdapters.java | 174 +++++++----------- .../knowm/xchange/bitmex/BitmexExchange.java | 11 +- .../StringToInstrumentConverter.java | 14 ++ .../converter/StringToOrderTypeConverter.java | 21 +++ .../dto/marketdata/BitmexPublicOrder.java | 82 +++------ .../xchange/bitmex/dto/trade/BitmexSide.java | 67 +------ .../bitmex/dto/trade/PlaceOrderCommand.java | 2 +- .../service/BitmexMarketDataService.java | 11 +- .../service/BitmexMarketDataServiceRaw.java | 11 +- .../bitmex/service/BitmexTradeService.java | 16 +- .../bitmex/service/BitmexTradeServiceRaw.java | 2 +- .../BitmexMarketDataServiceIntegration.java | 37 ++++ .../src/test/resources/rest/general.http | 4 + 14 files changed, 208 insertions(+), 246 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToInstrumentConverter.java create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToOrderTypeConverter.java diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java index 602bbaa958c..781e6aa2b72 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/Bitmex.java @@ -42,7 +42,7 @@ BitmexKlineList getBucketedTrades( @GET @Path("orderBook/L2") BitmexPublicOrderList getDepth( - @QueryParam("symbol") String currencyPair, @QueryParam("depth") Double depth) + @QueryParam("symbol") String currencyPair, @QueryParam("depth") Integer depth) throws IOException, BitmexException; @GET diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index b9ce89b512b..6a3c6fec8ed 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -3,22 +3,22 @@ import java.math.BigDecimal; import java.math.MathContext; import java.time.ZonedDateTime; +import java.time.chrono.ChronoZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; +import java.util.stream.Collectors; import lombok.experimental.UtilityClass; -import org.apache.commons.lang3.ObjectUtils; +import lombok.extern.slf4j.Slf4j; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransaction; -import org.knowm.xchange.bitmex.dto.marketdata.BitmexDepth; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrder; -import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrderList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicTrade; import org.knowm.xchange.bitmex.dto.trade.BitmexOrder; import org.knowm.xchange.bitmex.dto.trade.BitmexOrderDescription; @@ -29,6 +29,7 @@ import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.derivative.FuturesContract; +import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.Order.OrderStatus; import org.knowm.xchange.dto.Order.OrderType; import org.knowm.xchange.dto.account.Balance; @@ -46,55 +47,25 @@ import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; +@Slf4j @UtilityClass public class BitmexAdapters { + private final Map SYMBOL_TO_INSTRUMENT = new HashMap<>(); + private final Map INSTRUMENT_TO_SYMBOL = new HashMap<>(); private final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); - public OrderBook toOrderBook(BitmexDepth bitmexDepth, Instrument instrument) { - - OrdersContainer asksOrdersContainer = - adaptOrders(bitmexDepth.getAsks(), instrument, OrderType.ASK, true); - OrdersContainer bidsOrdersContainer = - adaptOrders(bitmexDepth.getBids(), instrument, OrderType.BID, false); - - return new OrderBook( - new Date(Math.max(asksOrdersContainer.getTimestamp(), bidsOrdersContainer.getTimestamp())), - asksOrdersContainer.getLimitOrders(), - bidsOrdersContainer.getLimitOrders()); + public void putSymbolMapping(String symbol, Instrument instrument) { + SYMBOL_TO_INSTRUMENT.put(symbol, instrument); + INSTRUMENT_TO_SYMBOL.put(instrument, symbol); } - public BitmexDepth adaptDepth(BitmexPublicOrderList orders) { - - BitmexDepth bitmexDepth = new BitmexDepth(new ArrayList<>(), new ArrayList<>()); + public OrderBook toOrderBook(List bitmexPublicOrders) { + Map> orders = bitmexPublicOrders.stream() + .map(BitmexAdapters::toLimitOrder) + .collect(Collectors.groupingBy(Order::getType)); - for (BitmexPublicOrder bitmexOrder : orders) { - if (bitmexOrder.getSide().equals(BitmexSide.BUY)) { - bitmexDepth.getBids().add(bitmexOrder); - } else if (bitmexOrder.getSide().equals(BitmexSide.SELL)) { - bitmexDepth.getAsks().add(bitmexOrder); - } - } - - return bitmexDepth; - } - - public OrdersContainer adaptOrders( - List orders, - Instrument instrument, - OrderType orderType, - boolean reverse) { - - // bitmex does not provide timestamps on order book - long maxTimestamp = System.currentTimeMillis(); - LimitOrder[] limitOrders = new LimitOrder[orders.size()]; - - int i = reverse ? orders.size() - 1 : 0; - for (BitmexPublicOrder order : orders) { - limitOrders[i] = adaptOrder(order, orderType, instrument); - i += (reverse ? -1 : 1); - } - return new OrdersContainer(maxTimestamp, Arrays.asList(limitOrders)); + return new OrderBook(null, orders.get(OrderType.ASK), orders.get(OrderType.BID)); } public Trades adaptTrades(List trades, CurrencyPair currencyPair) { @@ -109,23 +80,20 @@ public Trades adaptTrades(List trades, CurrencyPair currencyP return new Trades(tradeList, lastTid, TradeSortType.SortByTimestamp); } - public LimitOrder adaptOrder( - BitmexPublicOrder order, OrderType orderType, Instrument instrument) { - - BigDecimal volume = order.getVolume(); - - return new LimitOrder(orderType, volume, instrument, "", null, order.getPrice()); + public LimitOrder toLimitOrder(BitmexPublicOrder order) { + return new LimitOrder(order.getOrderType(), order.getSize(), order.getInstrument(), + order.getId(), toDate(order.getUpdatedAt()), order.getPrice()); } public LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { OrderType type = rawOrder.getSide() == BitmexSide.BUY ? OrderType.BID : OrderType.ASK; - CurrencyPair pair = adaptSymbolToCurrencyPair(rawOrder.getSymbol()); + Instrument instrument = toInstrument(rawOrder.getSymbol()); return new LimitOrder( type, rawOrder.getVolume(), - pair, + instrument, rawOrder.getId(), rawOrder.getTimestamp(), rawOrder.getPrice(), @@ -156,7 +124,7 @@ public Ticker toTicker(BitmexTicker bitmexTicker) { .vwap(bitmexTicker.getVwap()) .volume(bitmexTicker.getAssetVolume24h()) .quoteVolume(bitmexTicker.getQuoteVolume24h()) - .timestamp(Date.from(bitmexTicker.getTimestamp().toInstant())) + .timestamp(toDate(bitmexTicker.getTimestamp())) .percentageChange(percentageChange) .build(); } @@ -215,7 +183,7 @@ public LimitOrder adaptLimitOrder(BitmexOrder bitmexOrder, String id) { BigDecimal originalAmount = bitmexOrder.getVolume(); BigDecimal filledAmount = bitmexOrder.getVolumeExecuted(); - CurrencyPair pair = BitmexAdapters.adaptSymbolToCurrencyPair(orderDescription.getAssetPair()); + Instrument instrument = toInstrument(orderDescription.getAssetPair()); Date timestamp = new Date((long) (bitmexOrder.getOpenTimestamp() * 1000L)); OrderStatus status = adaptOrderStatus(bitmexOrder.getStatus()); @@ -229,7 +197,7 @@ public LimitOrder adaptLimitOrder(BitmexOrder bitmexOrder, String id) { return new LimitOrder( type, originalAmount, - pair, + instrument, id, timestamp, orderDescription.getPrice(), @@ -251,25 +219,6 @@ public String adaptOrderId(BitmexOrderResponse orderResponse) { return (orderIds == null || orderIds.isEmpty()) ? "" : orderIds.get(0); } - private InstrumentMetaData adaptPair( - BitmexTicker ticker, InstrumentMetaData originalMeta) { - - if (originalMeta != null) { - return new InstrumentMetaData.Builder() - .tradingFee(ticker.getTakerFee()) - .minimumAmount(originalMeta.getMinimumAmount()) - .maximumAmount(originalMeta.getMaximumAmount()) - .priceScale(Math.max(0, ticker.getTickSize().stripTrailingZeros().scale())) - .feeTiers(originalMeta.getFeeTiers()) - .build(); - } else { - return new InstrumentMetaData.Builder() - .tradingFee(ticker.getTakerFee()) - .priceScale(Math.max(0, ticker.getTickSize().stripTrailingZeros().scale())) - .build(); - } - } - public OrderStatus adaptOrderStatus(BitmexOrderStatus status) { switch (status) { @@ -326,50 +275,45 @@ public Currency toCurrency(String currencyCode) { return Currency.getInstance(currencyCode); } - public String adaptCurrencyPairToSymbol(Instrument instrument) { - if (instrument == null || ObjectUtils.anyNull(instrument.getBase(), instrument.getCounter())) { + public String toString(Instrument instrument) { + if (instrument == null) { return null; } - return toString(instrument.getBase()) + toString(instrument.getCounter()); - } - - public CurrencyPair adaptSymbolToCurrencyPair(String bitmexSymbol) { - - // Assuming that base symbol has 3 characters - String baseSymbol = bitmexSymbol.substring(0, 3); - String counterSymbol = bitmexSymbol.substring(3); + String result = INSTRUMENT_TO_SYMBOL.get(instrument); + + // try to guess if no mapping found + if (result == null) { + log.warn("No symbol mapping found {}. Will guess...", instrument); + if (instrument instanceof CurrencyPair) { + result = String.format("%s_%s", instrument.getBase(), instrument.getCounter()); + log.warn("Guessed {}", result); + } + } - return new CurrencyPair(baseSymbol, counterSymbol); + return result; } - public class OrdersContainer { - - private final long timestamp; - private final List limitOrders; - - /** - * Constructor - * - * @param timestamp - * @param limitOrders - */ - public OrdersContainer(long timestamp, List limitOrders) { - - this.timestamp = timestamp; - this.limitOrders = limitOrders; + public Instrument toInstrument(String bitmexSymbol) { + if (bitmexSymbol == null) { + return null; } - - public long getTimestamp() { - return timestamp; + Instrument result = SYMBOL_TO_INSTRUMENT.get(bitmexSymbol); + + // try to guess if no mapping found + if (result == null) { + log.warn("No symbol mapping found {}. Will guess...", bitmexSymbol); + if (bitmexSymbol.contains("_")) { + String[] parsed = bitmexSymbol.split("_"); + result = new CurrencyPair(parsed[0], parsed[1]); + log.warn("Guessed {}", result); + } } - public List getLimitOrders() { - return limitOrders; - } + return result; } public UserTrade adoptUserTrade(BitmexPrivateExecution exec) { - CurrencyPair pair = BitmexAdapters.adaptSymbolToCurrencyPair(exec.symbol); + Instrument instrument = toInstrument(exec.symbol); // the "lastQty" parameter is in the USD currency for ???/USD pairs OrderType orderType = convertType(exec.side); return orderType == null @@ -377,7 +321,7 @@ public UserTrade adoptUserTrade(BitmexPrivateExecution exec) { : UserTrade.builder() .id(exec.execID) .orderId(exec.orderID) - .currencyPair(pair) + .instrument(instrument) .originalAmount(exec.lastQty) .price(exec.lastPx) .feeAmount(exec.execComm.divide(SATOSHIS_BY_BTC, MathContext.DECIMAL32)) @@ -517,4 +461,16 @@ public String toFuturesCode(ZonedDateTime zonedDateTime) { return null; } } + + public BitmexSide toBitmexSide(OrderType type) { + return type == OrderType.ASK ? BitmexSide.SELL : BitmexSide.BUY; + } + + public Date toDate (ZonedDateTime zonedDateTime) { + return Optional.ofNullable(zonedDateTime) + .map(ChronoZonedDateTime::toInstant) + .map(Date::from) + .orElse(null); + } + } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java index b758e5a06bb..e212c168a3c 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java @@ -92,13 +92,20 @@ public void remoteInit() { BitmexMarketDataService bitmexMarketDataService = (BitmexMarketDataService) getMarketDataService(); List tickers = bitmexMarketDataService.getActiveTickers(); - Map instruments = tickers.stream() + // fill symbol mappings + tickers.forEach(bitmexTicker -> { + BitmexAdapters.putSymbolMapping(bitmexTicker.getSymbol(), BitmexAdapters.toInstrument(bitmexTicker)); + }); + + // fill instruments metadata + Map instrumentsMetadata = tickers.stream() .filter(bitmexTicker -> bitmexTicker.getSymbolType() != SymbolType.UNKNOWN) .collect(Collectors.toMap( BitmexAdapters::toInstrument, BitmexAdapters::toInstrumentMetaData )); + // fill currencies metadata Map currencyMetadata = bitmexMarketDataService.getAssets().stream() .collect(Collectors.toMap( BitmexAsset::getAsset, @@ -107,7 +114,7 @@ public void remoteInit() { } )); - exchangeMetaData = new ExchangeMetaData(instruments, currencyMetadata, exchangeMetaData.getPublicRateLimits(), exchangeMetaData.getPrivateRateLimits(), exchangeMetaData.isShareRateLimits()); + exchangeMetaData = new ExchangeMetaData(instrumentsMetadata, currencyMetadata, exchangeMetaData.getPublicRateLimits(), exchangeMetaData.getPrivateRateLimits(), exchangeMetaData.isShareRateLimits()); } public RateLimitUpdateListener getRateLimitUpdateListener() { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToInstrumentConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToInstrumentConverter.java new file mode 100644 index 00000000000..6b472fa5952 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToInstrumentConverter.java @@ -0,0 +1,14 @@ +package org.knowm.xchange.bitmex.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.instrument.Instrument; + +/** Converts string to {@code Instrument} */ +public class StringToInstrumentConverter extends StdConverter { + + @Override + public Instrument convert(String value) { + return BitmexAdapters.toInstrument(value); + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToOrderTypeConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToOrderTypeConverter.java new file mode 100644 index 00000000000..0c0d6196af4 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToOrderTypeConverter.java @@ -0,0 +1,21 @@ +package org.knowm.xchange.bitmex.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import java.util.Locale; +import org.knowm.xchange.dto.Order.OrderType; + +/** Converts string to {@code OrderType} */ +public class StringToOrderTypeConverter extends StdConverter { + + @Override + public OrderType convert(String value) { + switch (value.toUpperCase(Locale.ROOT)) { + case "BUY": + return OrderType.BID; + case "SELL": + return OrderType.ASK; + default: + throw new IllegalArgumentException("Can't map " + value); + } + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPublicOrder.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPublicOrder.java index 9498d2fca46..9817352557b 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPublicOrder.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPublicOrder.java @@ -1,67 +1,43 @@ package org.knowm.xchange.bitmex.dto.marketdata; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; -import org.knowm.xchange.bitmex.dto.trade.BitmexSide; - +import java.time.ZonedDateTime; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.bitmex.config.converter.StringToInstrumentConverter; +import org.knowm.xchange.bitmex.config.converter.StringToOrderTypeConverter; +import org.knowm.xchange.dto.Order.OrderType; +import org.knowm.xchange.instrument.Instrument; + +@Data +@Builder +@Jacksonized public class BitmexPublicOrder { - private final BigDecimal price; - private final BigDecimal size; - private final String symbol; - private final BigDecimal id; - private final BitmexSide side; - - public BitmexPublicOrder( - @JsonProperty("price") BigDecimal price, - @JsonProperty("id") BigDecimal id, - @JsonProperty("size") BigDecimal size, - @JsonProperty("side") BitmexSide side, - @JsonProperty("symbol") String symbol) { - - this.symbol = symbol; - this.id = id; - this.side = side; - this.size = size; - this.price = price; - } - - public BigDecimal getPrice() { - - return price; - } - - public BigDecimal getVolume() { - - return size; - } - - public BitmexSide getSide() { + @JsonProperty("symbol") + @JsonDeserialize(converter = StringToInstrumentConverter.class) + private Instrument instrument; - return side; - } + @JsonProperty("id") + private String id; - public BigDecimal getId() { + @JsonProperty("side") + @JsonDeserialize(converter = StringToOrderTypeConverter.class) + private OrderType orderType; - return id; - } + @JsonProperty("size") + private BigDecimal size; - public String getSymbol() { + @JsonProperty("price") + private BigDecimal price; - return symbol; - } + @JsonProperty("transactTime") + private ZonedDateTime createdAt; - @Override - public String toString() { + @JsonProperty("timestamp") + private ZonedDateTime updatedAt; - return "BitmexOrder [price=" - + price - + ", volume=" - + size - + ", symbol=" - + symbol - + ", side=" - + side - + "]"; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexSide.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexSide.java index a80479265fe..774af5993eb 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexSide.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexSide.java @@ -1,67 +1,16 @@ package org.knowm.xchange.bitmex.dto.trade; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import org.knowm.xchange.bitmex.dto.trade.BitmexSide.BitmexTypeDeserializer; -import org.knowm.xchange.dto.Order.OrderType; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; +import lombok.Getter; -@JsonDeserialize(using = BitmexTypeDeserializer.class) +@Getter +@AllArgsConstructor public enum BitmexSide { BUY("Buy"), - SELL("Sell"); - - private final String capitalized; - private static final Map fromString = new HashMap<>(); - - static { - for (BitmexSide type : values()) fromString.put(type.toString(), type); - - fromString.put("buy", BUY); - fromString.put("sell", SELL); - } - - BitmexSide(String capitalized) { - this.capitalized = capitalized; - } - - public static BitmexSide fromString(String typeString) { - - return fromString.get(typeString.toLowerCase()); - } - public static BitmexSide fromOrderType(OrderType type) { - - return type == OrderType.ASK ? BitmexSide.SELL : BitmexSide.BUY; - } - - public String getCapitalized() { - return capitalized; - } - - @Override - public String toString() { - - return super.toString().toLowerCase(); - } - - static class BitmexTypeDeserializer extends JsonDeserializer { - - @Override - public BitmexSide deserialize(JsonParser jsonParser, DeserializationContext ctxt) - throws IOException, JsonProcessingException { + SELL("Sell"); - ObjectCodec oc = jsonParser.getCodec(); - JsonNode node = oc.readTree(jsonParser); - String typeString = node.textValue(); - return fromString(typeString); - } - } + @JsonValue + private final String value; } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java index 4897e4e0c17..4c74143eae5 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java @@ -73,7 +73,7 @@ public class PlaceOrderCommand { /** See {@link Bitmex#placeOrder}. */ public PlaceOrderCommand(final BitmexPlaceOrderParameters parameters) { this.symbol = parameters.getSymbol(); - this.side = parameters.getSide() != null ? parameters.getSide().getCapitalized() : null; + this.side = parameters.getSide() != null ? parameters.getSide().getValue() : null; this.orderQuantity = parameters.getOrderQuantity(); this.simpleOrderQuantity = parameters.getSimpleOrderQuantity(); this.displayQuantity = parameters.getDisplayQuantity(); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java index b39365888a3..211d16220ec 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataService.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.util.List; import java.util.stream.Collectors; +import org.apache.commons.lang3.ArrayUtils; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; @@ -51,7 +52,7 @@ public List getTickers(Params params) { @Override public Ticker getTicker(Instrument instrument, Object... args) throws IOException { - String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(instrument); + String bitmexSymbol = BitmexAdapters.toString(instrument); List bitmexTickers = getTicker(bitmexSymbol); if (bitmexTickers.isEmpty()) { @@ -67,8 +68,10 @@ public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOExce @Override public OrderBook getOrderBook(Instrument instrument, Object... args) throws IOException { - String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(instrument); - return BitmexAdapters.toOrderBook(getBitmexDepth(bitmexSymbol), instrument); + Integer depth = (Integer) ArrayUtils.get(args, 0); + String bitmexSymbol = BitmexAdapters.toString(instrument); + + return BitmexAdapters.toOrderBook(getBitmexDepth(bitmexSymbol, depth)); } @Override @@ -99,7 +102,7 @@ public Trades getTrades(CurrencyPair currencyPair, Object... args) throws IOExce } } - String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(currencyPair); + String bitmexSymbol = BitmexAdapters.toString(currencyPair); List trades = getBitmexTrades(bitmexSymbol, limit, start); return BitmexAdapters.adaptTrades(trades, currencyPair); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java index 82b117f280d..43eb4ef898b 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceRaw.java @@ -13,10 +13,9 @@ import org.knowm.xchange.bitmex.dto.account.BitmexTicker; import org.knowm.xchange.bitmex.dto.account.BitmexTickerList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexAsset; -import org.knowm.xchange.bitmex.dto.marketdata.BitmexDepth; import org.knowm.xchange.bitmex.dto.marketdata.BitmexFundingList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexKline; -import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrderList; +import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrder; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicTrade; import org.knowm.xchange.bitmex.dto.marketdata.results.BitmexSymbolsAndPromptsResult; import org.knowm.xchange.currency.CurrencyPair; @@ -42,10 +41,8 @@ public BitmexMarketDataServiceRaw(BitmexExchange exchange) { super(exchange); } - public BitmexDepth getBitmexDepth(String bitmexSymbol) throws ExchangeException { - - BitmexPublicOrderList result = updateRateLimit(() -> bitmex.getDepth(bitmexSymbol, 1000d)); - return BitmexAdapters.adaptDepth(result); + public List getBitmexDepth(String bitmexSymbol, Integer depth) { + return updateRateLimit(() -> bitmex.getDepth(bitmexSymbol, depth)); } public List getBitmexTrades(String bitmexSymbol, Integer limit, Long start) @@ -98,7 +95,7 @@ public List getBucketedTrades( String binSize, Boolean partial, CurrencyPair pair, long count, Boolean reverse) throws ExchangeException { - String bitmexSymbol = BitmexAdapters.adaptCurrencyPairToSymbol(pair); + String bitmexSymbol = BitmexAdapters.toString(pair); return updateRateLimit( () -> bitmex.getBucketedTrades(binSize, partial, bitmexSymbol, count, reverse)); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index 89c390e271b..2bb71a932cd 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -1,7 +1,5 @@ package org.knowm.xchange.bitmex.service; -import static org.knowm.xchange.bitmex.dto.trade.BitmexSide.fromOrderType; - import java.io.IOException; import java.util.Collection; import java.util.Date; @@ -75,11 +73,11 @@ public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeExceptio @Override public String placeMarketOrder(MarketOrder marketOrder) throws ExchangeException { - String symbol = BitmexAdapters.adaptCurrencyPairToSymbol(marketOrder.getCurrencyPair()); + String symbol = BitmexAdapters.toString(marketOrder.getCurrencyPair()); return placeOrder( new BitmexPlaceOrderParameters.Builder(symbol) - .setSide(fromOrderType(marketOrder.getType())) + .setSide(BitmexAdapters.toBitmexSide(marketOrder.getType())) .setOrderQuantity(marketOrder.getOriginalAmount()) .build()) .getId(); @@ -87,13 +85,13 @@ public String placeMarketOrder(MarketOrder marketOrder) throws ExchangeException @Override public String placeLimitOrder(LimitOrder limitOrder) throws ExchangeException { - String symbol = BitmexAdapters.adaptCurrencyPairToSymbol(limitOrder.getCurrencyPair()); + String symbol = BitmexAdapters.toString(limitOrder.getCurrencyPair()); Builder b = new BitmexPlaceOrderParameters.Builder(symbol) .setOrderQuantity(limitOrder.getOriginalAmount()) .setPrice(limitOrder.getLimitPrice()) - .setSide(fromOrderType(limitOrder.getType())) + .setSide(BitmexAdapters.toBitmexSide(limitOrder.getType())) .setClOrdId(limitOrder.getId()); if (limitOrder.hasFlag(BitmexOrderFlags.POST)) { b.addExecutionInstruction(BitmexExecutionInstruction.PARTICIPATE_DO_NOT_INITIATE); @@ -103,11 +101,11 @@ public String placeLimitOrder(LimitOrder limitOrder) throws ExchangeException { @Override public String placeStopOrder(StopOrder stopOrder) throws ExchangeException { - String symbol = BitmexAdapters.adaptCurrencyPairToSymbol(stopOrder.getCurrencyPair()); + String symbol = BitmexAdapters.toString(stopOrder.getCurrencyPair()); return placeOrder( new BitmexPlaceOrderParameters.Builder(symbol) - .setSide(fromOrderType(stopOrder.getType())) + .setSide(BitmexAdapters.toBitmexSide(stopOrder.getType())) .setOrderQuantity(stopOrder.getOriginalAmount()) .setStopPrice(stopOrder.getStopPrice()) .setClOrdId(stopOrder.getId()) @@ -174,7 +172,7 @@ public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException String symbol = null; if (params instanceof TradeHistoryParamCurrencyPair) { symbol = - BitmexAdapters.adaptCurrencyPairToSymbol( + BitmexAdapters.toString( ((TradeHistoryParamCurrencyPair) params).getCurrencyPair()); } Long start = null; diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java index 577e91a69d5..ce090e83995 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java @@ -113,7 +113,7 @@ public BitmexPrivateOrder placeOrder(@Nonnull final BitmexPlaceOrderParameters p exchange.getNonceFactory(), signatureCreator, parameters.getSymbol(), - parameters.getSide() != null ? parameters.getSide().getCapitalized() : null, + parameters.getSide() != null ? parameters.getSide().getValue() : null, parameters.getOrderQuantity(), parameters.getSimpleOrderQuantity(), parameters.getDisplayQuantity(), diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java index 2890232faa1..570ba277c90 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexMarketDataServiceIntegration.java @@ -8,6 +8,8 @@ import org.knowm.xchange.bitmex.BitmexIntegrationTestParent; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.dto.Order.OrderType; +import org.knowm.xchange.dto.marketdata.OrderBook; import org.knowm.xchange.dto.marketdata.Ticker; import org.knowm.xchange.instrument.Instrument; @@ -60,4 +62,39 @@ void valid_tickers() throws IOException { }); } + @Test + void valid_orderbook() throws IOException { + OrderBook orderBook = exchange.getMarketDataService().getOrderBook(CurrencyPair.BTC_USDT); + + assertThat(orderBook.getBids()).isNotEmpty(); + assertThat(orderBook.getAsks()).isNotEmpty(); + + assertThat(orderBook.getAsks().get(0).getLimitPrice()) + .isGreaterThan(orderBook.getBids().get(0).getLimitPrice()); + + assertThat(orderBook.getBids()) + .allSatisfy( + limitOrder -> { + assertThat(limitOrder.getInstrument()).isEqualTo(CurrencyPair.BTC_USDT); + assertThat(limitOrder.getType()).isEqualTo(OrderType.BID); + }); + + assertThat(orderBook.getAsks()) + .allSatisfy( + limitOrder -> { + assertThat(limitOrder.getInstrument()).isEqualTo(CurrencyPair.BTC_USDT); + assertThat(limitOrder.getType()).isEqualTo(OrderType.ASK); + }); + } + + + @Test + void valid_orderbook_depth() throws IOException { + OrderBook orderBook = exchange.getMarketDataService().getOrderBook(CurrencyPair.BTC_USDT, 2); + + assertThat(orderBook.getBids()).hasSize(2); + assertThat(orderBook.getAsks()).hasSize(2); + } + + } \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/general.http b/xchange-bitmex/src/test/resources/rest/general.http index 55a8f50210d..146450f86e3 100644 --- a/xchange-bitmex/src/test/resources/rest/general.http +++ b/xchange-bitmex/src/test/resources/rest/general.http @@ -23,3 +23,7 @@ GET {{api_v1}}/wallet/assets Accept: application/json +### Get current orderbook in vertical format +GET {{api_v1}}/orderBook/L2?symbol=XBT_USDT&depth=25 +Accept: application/json + From 10c0f2953b04abdd06f6f6029bbe90957c8591af Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Mon, 9 Dec 2024 13:05:09 +0100 Subject: [PATCH 12/32] [bitmex] Implement getting of spot account balance --- .../example.integration-test.env.properties | 2 + xchange-bitmex/lombok.config | 2 + xchange-bitmex/pom.xml | 23 + .../knowm/xchange/bitmex/BitmexAdapters.java | 94 + .../xchange/bitmex/BitmexAuthenticated.java | 6 +- .../knowm/xchange/bitmex/BitmexExchange.java | 11 +- .../converter/StringToCurrencyConverter.java | 2 +- .../bitmex/dto/account/BitmexWallet.java | 306 +- .../bitmex/dto/marketdata/BitmexAsset.java | 3 + .../bitmex/service/BitmexAccountService.java | 28 +- .../service/BitmexAccountServiceRaw.java | 8 +- .../bitmex/BitmexExchangeWiremock.java | 52 + .../dto/account/BitmexWalletJSONTest.java | 33 - .../BitmexAccountServiceIntegration.java | 40 + .../service/BitmexAccountServiceTest.java | 36 + .../__files/api_v1_instrument_active.json | 14183 ++++++++++++++++ .../resources/__files/api_v1_user_wallet.json | 54 + .../__files/api_v1_wallet_assets.json | 126 + .../mappings/api_v1_instrument_active.json | 15 + .../mappings/api_v1_user_wallet.json | 15 + .../mappings/api_v1_wallet_assets.json | 15 + .../bitmex/dto/account/example-wallet.json | 29 - .../bitmex/dto/account/BitmexAccountDemo.java | 2 - 23 files changed, 14726 insertions(+), 359 deletions(-) create mode 100644 xchange-bitmex/example.integration-test.env.properties create mode 100644 xchange-bitmex/lombok.config create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java delete mode 100755 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletJSONTest.java create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceIntegration.java create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_user_wallet.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_instrument_active.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_user_wallet.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_wallet_assets.json delete mode 100644 xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet.json diff --git a/xchange-bitmex/example.integration-test.env.properties b/xchange-bitmex/example.integration-test.env.properties new file mode 100644 index 00000000000..d8421d99d6c --- /dev/null +++ b/xchange-bitmex/example.integration-test.env.properties @@ -0,0 +1,2 @@ +apiKey=change_me +secretKey=change_me diff --git a/xchange-bitmex/lombok.config b/xchange-bitmex/lombok.config new file mode 100644 index 00000000000..22b090cc4b6 --- /dev/null +++ b/xchange-bitmex/lombok.config @@ -0,0 +1,2 @@ +lombok.equalsAndHashCode.callSuper = call +lombok.tostring.callsuper = call \ No newline at end of file diff --git a/xchange-bitmex/pom.xml b/xchange-bitmex/pom.xml index 870952eb958..fa6bb4a6d9a 100755 --- a/xchange-bitmex/pom.xml +++ b/xchange-bitmex/pom.xml @@ -40,5 +40,28 @@ ${project.version} + + org.wiremock + wiremock + test + + + + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + integration-test.env.properties + + + + + + + diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 6a3c6fec8ed..643a8d5a482 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -7,15 +7,19 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; +import java.util.EnumSet; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; import java.util.stream.Collectors; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; +import org.knowm.xchange.bitmex.dto.account.BitmexWallet; import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransaction; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrder; @@ -53,6 +57,12 @@ public class BitmexAdapters { private final Map SYMBOL_TO_INSTRUMENT = new HashMap<>(); private final Map INSTRUMENT_TO_SYMBOL = new HashMap<>(); + + private final Map CURRENCY_TO_BITMEX_CODE = new HashMap<>(); + private final Map BITMEX_CODE_TO_CURRENCY = new HashMap<>(); + + private Map CURRENCY_TO_SCALE = new HashMap<>(); + private final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); public void putSymbolMapping(String symbol, Instrument instrument) { @@ -60,6 +70,59 @@ public void putSymbolMapping(String symbol, Instrument instrument) { INSTRUMENT_TO_SYMBOL.put(instrument, symbol); } + public void putCurrencyCodeMapping(String bitmexCode, Currency currency) { + BITMEX_CODE_TO_CURRENCY.put(bitmexCode, currency); + CURRENCY_TO_BITMEX_CODE.put(currency, bitmexCode); + } + + public void putCurrencyScale(Currency currency, Integer scale) { + CURRENCY_TO_SCALE.put(currency, scale); + } + + public Integer getCurrencyScale(Currency currency) { + return CURRENCY_TO_SCALE.get(currency); + } + + public String toBitmexCode(Currency currency) { + if (currency == null) { + return null; + } + String result = CURRENCY_TO_BITMEX_CODE.get(currency); + + // try to guess if no mapping found + if (result == null) { + log.warn("No currency mapping found {}. Will guess...", currency); + String currencyCode = currency.getCurrencyCode(); + result = + StringUtils.substring(currencyCode, 0, -1).toUpperCase(Locale.ROOT) + + StringUtils.substring(currencyCode, -1).toLowerCase(Locale.ROOT); + log.warn("Guessed {}", result); + } + + return result; + } + + /** + * Converts bitmex currency code to {@code Currency}. E.g. USDt -> USDT, Gwei -> ETH + * @param bitmexCode + * @return + */ + public Currency bitmexCodeToCurrency(String bitmexCode) { + if (bitmexCode == null) { + return null; + } + Currency result = BITMEX_CODE_TO_CURRENCY.get(bitmexCode); + + // try to guess if no mapping found + if (result == null) { + log.warn("No currency mapping found {}. Will guess...", bitmexCode); + result = Currency.getInstance(bitmexCode); + log.warn("Guessed {}", result); + } + + return result; + } + public OrderBook toOrderBook(List bitmexPublicOrders) { Map> orders = bitmexPublicOrders.stream() .map(BitmexAdapters::toLimitOrder) @@ -473,4 +536,35 @@ public Date toDate (ZonedDateTime zonedDateTime) { .orElse(null); } + public BigDecimal scaleAmount(BigDecimal amount, Currency currency) { + Integer scale = getCurrencyScale(currency); + if (scale == null || scale == 0) { + log.warn("Scale for {} not found. Returning as is", currency); + return amount; + } + return amount.scaleByPowerOfTen(-scale); + } + + public Wallet toWallet(List bitmexWallets) { + List balances = + bitmexWallets.stream().map(BitmexAdapters::toBalance).collect(Collectors.toList()); + + + return Wallet.Builder + .from(balances) + .id("spot") + .features(EnumSet.of(Wallet.WalletFeature.TRADING)) + .build(); + } + + public Balance toBalance(BitmexWallet bitmexWallet) { + return new Balance.Builder() + .currency(bitmexWallet.getCurrency()) + .available(bitmexWallet.getAmount()) + .timestamp(toDate(bitmexWallet.getTimestamp())) + .build(); + } + + + } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java index 8bd797c8b37..d156d2051c8 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java @@ -378,11 +378,11 @@ BitmexAccount getAccount( @GET @Path("user/wallet") - BitmexWallet getWallet( + HttpResponseAwareList getWallet( @HeaderParam("api-key") String apiKey, @HeaderParam("api-expires") SynchronizedValueFactory nonce, - @HeaderParam("api-signature") ParamsDigest paramsDigest /*, - @Nullable @QueryParam("currency") String currency*/) + @HeaderParam("api-signature") ParamsDigest paramsDigest, + @QueryParam("currency") String currency) throws IOException, BitmexException; /** Get a history of all of your wallet transactions (deposits, withdrawals, PNL) */ diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java index e212c168a3c..9857ded53d8 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexExchange.java @@ -105,8 +105,17 @@ public void remoteInit() { BitmexAdapters::toInstrumentMetaData )); + List assets = bitmexMarketDataService.getAssets(); + + // fill bitmex currency code mappings + // fill scale for currencies + assets.forEach(asset -> { + BitmexAdapters.putCurrencyCodeMapping(asset.getBitmexCurrencyCode(), asset.getAsset()); + BitmexAdapters.putCurrencyScale(asset.getAsset(), asset.getScale()); + }); + // fill currencies metadata - Map currencyMetadata = bitmexMarketDataService.getAssets().stream() + Map currencyMetadata = assets.stream() .collect(Collectors.toMap( BitmexAsset::getAsset, bitmexAsset -> { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java index 72f2bc2d85d..f8dbb9dcaab 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/StringToCurrencyConverter.java @@ -4,7 +4,7 @@ import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.currency.Currency; -/** Converts string value {@code Currency} */ +/** Converts string value to {@code Currency} */ public class StringToCurrencyConverter extends StdConverter { @Override diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java index be9fe215bdf..a4227344117 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java @@ -1,286 +1,64 @@ package org.knowm.xchange.bitmex.dto.account; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.time.ZonedDateTime; +import lombok.Value; import org.knowm.xchange.bitmex.AbstractHttpResponseAware; +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.currency.Currency; -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "account", - "currency", - "prevDeposited", - "prevWithdrawn", - "prevTransferIn", - "prevTransferOut", - "prevAmount", - "prevTimestamp", - "deltaDeposited", - "deltaWithdrawn", - "deltaTransferIn", - "deltaTransferOut", - "deltaAmount", - "deposited", - "withdrawn", - "transferIn", - "transferOut", - "amount", - "pendingCredit", - "pendingDebit", - "confirmedDebit", - "timestamp", - "addr", - "script", - "withdrawalLock" -}) -public final class BitmexWallet extends AbstractHttpResponseAware { +@Value +public class BitmexWallet extends AbstractHttpResponseAware { - @JsonProperty("account") - private Integer account; + Integer account; - @JsonProperty("currency") - private String currency; + Currency currency; - @JsonProperty("prevDeposited") - private BigDecimal prevDeposited; + BigDecimal deposited; - @JsonProperty("prevWithdrawn") - private BigDecimal prevWithdrawn; + BigDecimal withdrawn; - @JsonProperty("prevTransferIn") - private BigDecimal prevTransferIn; + BigDecimal transferIn; - @JsonProperty("prevTransferOut") - private BigDecimal prevTransferOut; + BigDecimal transferOut; - @JsonProperty("prevAmount") - private BigDecimal prevAmount; + BigDecimal amount; - @JsonProperty("prevTimestamp") - private String prevTimestamp; + BigDecimal pendingCredit; - @JsonProperty("deltaDeposited") - private BigDecimal deltaDeposited; + BigDecimal pendingDebit; - @JsonProperty("deltaWithdrawn") - private BigDecimal deltaWithdrawn; + BigDecimal confirmedDebit; - @JsonProperty("deltaTransferIn") - private BigDecimal deltaTransferIn; + ZonedDateTime timestamp; - @JsonProperty("deltaTransferOut") - private BigDecimal deltaTransferOut; + @JsonCreator + public BitmexWallet(@JsonProperty("account") Integer account, + @JsonProperty("currency") String currencyCode, + @JsonProperty("deposited") BigDecimal deposited, + @JsonProperty("withdrawn") BigDecimal withdrawn, + @JsonProperty("transferIn") BigDecimal transferIn, + @JsonProperty("transferOut") BigDecimal transferOut, + @JsonProperty("amount") BigDecimal amount, + @JsonProperty("pendingCredit") BigDecimal pendingCredit, + @JsonProperty("pendingDebit") BigDecimal pendingDebit, + @JsonProperty("confirmedDebit") BigDecimal confirmedDebit, + @JsonProperty("timestamp") ZonedDateTime timestamp) { - @JsonProperty("deltaAmount") - private BigDecimal deltaAmount; + this.account = account; + this.currency = BitmexAdapters.bitmexCodeToCurrency(currencyCode); + this.timestamp = timestamp; - @JsonProperty("deposited") - private BigDecimal deposited; - - @JsonProperty("withdrawn") - private BigDecimal withdrawn; - - @JsonProperty("transferIn") - private BigDecimal transferIn; - - @JsonProperty("transferOut") - private BigDecimal transferOut; - - @JsonProperty("amount") - private BigDecimal amount; - - @JsonProperty("pendingCredit") - private BigDecimal pendingCredit; - - @JsonProperty("pendingDebit") - private BigDecimal pendingDebit; - - @JsonProperty("confirmedDebit") - private BigDecimal confirmedDebit; - - @JsonProperty("timestamp") - private String timestamp; - - @JsonProperty("addr") - private String addr; - - @JsonProperty("script") - private String script; - - @JsonProperty("withdrawalLock") - private List withdrawalLock = null; - - @JsonIgnore private Map additionalProperties = new HashMap<>(); - - public Integer getAccount() { - return account; - } - - public String getCurrency() { - return currency; - } - - public BigDecimal getPrevDeposited() { - return prevDeposited; - } - - public BigDecimal getPrevWithdrawn() { - return prevWithdrawn; - } - - public BigDecimal getPrevTransferIn() { - return prevTransferIn; - } - - public BigDecimal getPrevTransferOut() { - return prevTransferOut; - } - - public BigDecimal getPrevAmount() { - return prevAmount; - } - - public String getPrevTimestamp() { - return prevTimestamp; - } - - public BigDecimal getDeltaDeposited() { - return deltaDeposited; - } - - public BigDecimal getDeltaWithdrawn() { - return deltaWithdrawn; - } - - public BigDecimal getDeltaTransferIn() { - return deltaTransferIn; - } - - public BigDecimal getDeltaTransferOut() { - return deltaTransferOut; - } - - public BigDecimal getDeltaAmount() { - return deltaAmount; - } - - public BigDecimal getDeposited() { - return deposited; - } - - public BigDecimal getWithdrawn() { - return withdrawn; - } - - public BigDecimal getTransferIn() { - return transferIn; - } - - public BigDecimal getTransferOut() { - return transferOut; - } - - public BigDecimal getAmount() { - return amount; - } - - public BigDecimal getPendingCredit() { - return pendingCredit; - } - - public BigDecimal getPendingDebit() { - return pendingDebit; - } - - public BigDecimal getConfirmedDebit() { - return confirmedDebit; - } - - public String getTimestamp() { - return timestamp; - } - - public String getAddr() { - return addr; - } - - public String getScript() { - return script; - } - - public List getWithdrawalLock() { - return withdrawalLock; - } - - public Map getAdditionalProperties() { - return additionalProperties; - } - - @Override - public String toString() { - return "BitmexWallet{" - + "account=" - + account - + ", currency='" - + currency - + '\'' - + ", prevDeposited=" - + prevDeposited - + ", prevWithdrawn=" - + prevWithdrawn - + ", prevTransferIn=" - + prevTransferIn - + ", prevTransferOut=" - + prevTransferOut - + ", prevAmount=" - + prevAmount - + ", prevTimestamp='" - + prevTimestamp - + '\'' - + ", deltaDeposited=" - + deltaDeposited - + ", deltaWithdrawn=" - + deltaWithdrawn - + ", deltaTransferIn=" - + deltaTransferIn - + ", deltaTransferOut=" - + deltaTransferOut - + ", deltaAmount=" - + deltaAmount - + ", deposited=" - + deposited - + ", withdrawn=" - + withdrawn - + ", transferIn=" - + transferIn - + ", transferOut=" - + transferOut - + ", amount=" - + amount - + ", pendingCredit=" - + pendingCredit - + ", pendingDebit=" - + pendingDebit - + ", confirmedDebit=" - + confirmedDebit - + ", timestamp='" - + timestamp - + '\'' - + ", addr='" - + addr - + '\'' - + ", script='" - + script - + '\'' - + ", withdrawalLock=" - + withdrawalLock - + ", additionalProperties=" - + additionalProperties - + '}'; + // scale values + this.deposited = BitmexAdapters.scaleAmount(deposited, currency); + this.withdrawn = BitmexAdapters.scaleAmount(withdrawn, currency); + this.transferIn = BitmexAdapters.scaleAmount(transferIn, currency); + this.transferOut = BitmexAdapters.scaleAmount(transferOut, currency); + this.amount = BitmexAdapters.scaleAmount(amount, currency); + this.pendingCredit = BitmexAdapters.scaleAmount(pendingCredit, currency); + this.pendingDebit = BitmexAdapters.scaleAmount(pendingDebit, currency); + this.confirmedDebit = BitmexAdapters.scaleAmount(confirmedDebit, currency); } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java index 46f4a122cbd..541e07128c2 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexAsset.java @@ -20,6 +20,9 @@ public class BitmexAsset { @JsonDeserialize(converter = StringToCurrencyConverter.class) private Currency asset; + @JsonProperty("currency") + private String bitmexCurrencyCode; + @JsonProperty("name") private String name; diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java index a0c48ffa1d6..080e307d21b 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java @@ -3,17 +3,13 @@ import java.io.IOException; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.EnumSet; import java.util.List; import java.util.stream.Collectors; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; -import org.knowm.xchange.bitmex.dto.account.BitmexAccount; -import org.knowm.xchange.bitmex.dto.account.BitmexMarginAccount; +import org.knowm.xchange.bitmex.dto.account.BitmexWallet; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.account.AccountInfo; -import org.knowm.xchange.dto.account.Balance; import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.dto.account.Wallet; import org.knowm.xchange.exceptions.ExchangeException; @@ -41,25 +37,9 @@ public TradeHistoryParams createFundingHistoryParams() { @Override public AccountInfo getAccountInfo() throws IOException { - - BitmexAccount account = super.getBitmexAccountInfo(); - BitmexMarginAccount bitmexMarginAccount = getBitmexMarginAccountStatus(); - BigDecimal amount = bitmexMarginAccount.getAmount().divide(BigDecimal.valueOf(100_000_000L)); - BigDecimal available = - bitmexMarginAccount.getAvailableMargin().divide(BigDecimal.valueOf(100_000_000L)); - - List balances = new ArrayList<>(); - balances.add(new Balance(Currency.BTC, amount, available)); - - Wallet wallet = - Wallet.Builder.from(balances) - .id("margin") - .features(EnumSet.of(Wallet.WalletFeature.MARGIN_TRADING, Wallet.WalletFeature.FUNDING)) - .maxLeverage(BigDecimal.valueOf(100)) - .currentLeverage(bitmexMarginAccount.getMarginLeverage()) - .build(); - - return new AccountInfo(account.getUsername(), wallet); + List bitmexWallet = getBitmexWallet(null); + Wallet wallet = BitmexAdapters.toWallet(bitmexWallet); + return new AccountInfo(wallet); } @Override diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java index 9653b53aabe..ca67cee30ac 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.util.List; +import java.util.Optional; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.account.BitmexAccount; @@ -33,14 +34,17 @@ public BitmexAccount getBitmexAccountInfo() throws ExchangeException { () -> bitmex.getAccount(apiKey, exchange.getNonceFactory(), signatureCreator)); } - public BitmexWallet getBitmexWallet(Currency... ccy) throws ExchangeException { + public List getBitmexWallet(Currency currency) throws ExchangeException { + String currencyParam = Optional.ofNullable(currency) + .map(BitmexAdapters::toBitmexCode) + .orElse("all"); return updateRateLimit( () -> bitmex.getWallet( apiKey, exchange.getNonceFactory(), - signatureCreator /*, ccy.length>0?ccy[0].getCurrencyCode():null*/)); + signatureCreator, currencyParam)); } public List getBitmexWalletHistory(Currency ccy) diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java new file mode 100644 index 00000000000..c929f91209d --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java @@ -0,0 +1,52 @@ +package org.knowm.xchange.bitmex; + +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.recording.RecordSpecBuilder; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.knowm.xchange.ExchangeFactory; +import org.knowm.xchange.ExchangeSpecification; + +/** Sets up the wiremock for exchange */ +public abstract class BitmexExchangeWiremock { + + protected static BitmexExchange exchange; + +// private static final boolean IS_RECORDING = true; + private static final boolean IS_RECORDING = false; + + private static WireMockServer wireMockServer; + + @BeforeAll + public static void initExchange() { + wireMockServer = new WireMockServer(options().dynamicPort()); + wireMockServer.start(); + + ExchangeSpecification exSpec = new ExchangeSpecification(BitmexExchange.class); + exSpec.setSslUri("http://localhost:" + wireMockServer.port()); + exSpec.setApiKey("abc"); + exSpec.setSecretKey("bcd"); + + if (IS_RECORDING) { + // use default url and record the requests + wireMockServer.startRecording( + new RecordSpecBuilder() + .forTarget("https://www.bitmex.com") + .matchRequestBodyWithEqualToJson() + .extractTextBodiesOver(1L) + .chooseBodyMatchTypeAutomatically()); + } + + exchange = (BitmexExchange) ExchangeFactory.INSTANCE.createExchange(exSpec); + } + + @AfterAll + public static void stop() { + if (IS_RECORDING) { + wireMockServer.stopRecording(); + } + wireMockServer.stop(); + } +} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletJSONTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletJSONTest.java deleted file mode 100755 index f11d98adf75..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletJSONTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.knowm.xchange.bitmex.dto.account; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import org.junit.Test; - -/** Test BitstampTicker JSON parsing */ -public class BitmexWalletJSONTest { - - @Test - public void testUnmarshal() throws IOException { - - // Read in the JSON from the example resources - InputStream is = - BitmexWalletJSONTest.class.getResourceAsStream( - "/org/knowm/xchange/bitmex/dto/account/example-wallet.json"); - - ObjectMapper mapper = new ObjectMapper(); - BitmexWallet bitmexWallet = mapper.readValue(is, BitmexWallet.class); - - // Verify that the example data was unmarshalled correctly - assertThat(bitmexWallet.getAccount()).isEqualTo(0); - assertThat(bitmexWallet.getAddr()).isEqualTo("string"); - assertThat(bitmexWallet.getCurrency()).isEqualTo("string"); - assertThat(bitmexWallet.getAmount()).isEqualTo(BigDecimal.ZERO); - assertThat(bitmexWallet.getDeltaAmount()).isEqualTo(BigDecimal.ZERO); - assertThat(bitmexWallet.getPrevAmount()).isEqualTo(BigDecimal.ZERO); - } -} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceIntegration.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceIntegration.java new file mode 100644 index 00000000000..d0d67507cb4 --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceIntegration.java @@ -0,0 +1,40 @@ +package org.knowm.xchange.bitmex.service; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assumptions.assumeThat; + +import java.io.IOException; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.knowm.xchange.ExchangeFactory; +import org.knowm.xchange.ExchangeSpecification; +import org.knowm.xchange.bitmex.BitmexExchange; +import org.knowm.xchange.dto.account.AccountInfo; +import org.knowm.xchange.dto.account.Wallet.WalletFeature; + +class BitmexAccountServiceIntegration { + + static BitmexExchange exchange; + + @BeforeAll + public static void credentialsPresent() { + // skip if there are no credentials + String apiKey = System.getProperty("apiKey"); + String secretKey = System.getProperty("secretKey"); + assumeThat(apiKey).isNotEmpty(); + assumeThat(secretKey).isNotEmpty(); + + ExchangeSpecification exSpec = new ExchangeSpecification(BitmexExchange.class); + exSpec.setApiKey(apiKey); + exSpec.setSecretKey(secretKey); + exchange = (BitmexExchange) ExchangeFactory.INSTANCE.createExchange(exSpec); + } + + @Test + void valid_balances() throws IOException { + AccountInfo accountInfo = exchange.getAccountService().getAccountInfo(); + assertThat(accountInfo.getWallet(WalletFeature.TRADING).getBalances()).isNotEmpty(); + } + + +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java new file mode 100644 index 00000000000..a9cdf6c9b89 --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java @@ -0,0 +1,36 @@ +package org.knowm.xchange.bitmex.service; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.math.BigDecimal; +import org.junit.jupiter.api.Test; +import org.knowm.xchange.bitmex.BitmexExchangeWiremock; +import org.knowm.xchange.currency.Currency; +import org.knowm.xchange.dto.account.AccountInfo; +import org.knowm.xchange.dto.account.Balance; +import org.knowm.xchange.dto.account.Wallet.WalletFeature; +import org.knowm.xchange.service.account.AccountService; + +class BitmexAccountServiceTest extends BitmexExchangeWiremock { + + AccountService accountService = exchange.getAccountService(); + + @Test + void getAccountInfo() throws IOException { + + AccountInfo accountInfo = accountService.getAccountInfo(); + + assertThat(accountInfo.getWallet(WalletFeature.TRADING).balances()).hasSize(4); + + Balance usdtBalance = accountInfo.getWallet().getBalance(Currency.USDT); + assertThat(usdtBalance.getTotal()).isEqualTo(new BigDecimal("40.116243")); + assertThat(usdtBalance.getAvailable()).isEqualTo(new BigDecimal("40.116243")); + + Balance ethBalance = accountInfo.getWallet().getBalance(Currency.ETH); + assertThat(ethBalance.getTotal()).isEqualTo(new BigDecimal("0.001000000")); + assertThat(ethBalance.getAvailable()).isEqualTo(new BigDecimal("0.001000000")); + } + + +} diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json b/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json new file mode 100644 index 00000000000..f55eba3ac4c --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json @@ -0,0 +1,14183 @@ +[ + { + "symbol": "SOLUSD", + "rootSymbol": "SOL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-10-20T04:00:00.000Z", + "front": "2021-10-20T04:00:00.000Z", + "underlying": "SOL", + "quoteCurrency": "USD", + "underlyingSymbol": "SOL=", + "reference": "BMEX", + "referenceSymbol": ".BSOL", + "maxOrderQty": 1000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SOLBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".SOLUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000784, + "indicativeFundingRate": 0.000803, + "prevClosePrice": 236.11, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 8076205568, + "totalVolume": 8076207788, + "volume": 2220, + "volume24h": 269714, + "prevTotalTurnover": 30209311675002, + "totalTurnover": 30209362036153, + "turnover": 50361151, + "turnover24h": 6291965082, + "homeNotional24h": 26848.946461559557, + "foreignNotional24h": 6263894.675183851, + "prevPrice24h": 235.32, + "vwap": 233.29, + "highPrice": 238.15, + "lowPrice": 225.09, + "lastPrice": 226.59, + "lastPriceProtected": 226.55, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0371, + "bidPrice": 226.27, + "midPrice": 226.32, + "askPrice": 226.37, + "impactBidPrice": 226.16, + "impactMidPrice": 226.305, + "impactAskPrice": 226.45, + "hasLiquidity": true, + "openInterest": 837251, + "openValue": 18936943118, + "fairMethod": "FundingRate", + "fairBasisRate": 0.85848, + "fairBasis": 0.02, + "fairPrice": 226.18, + "markMethod": "FairPrice", + "markPrice": 226.18, + "indicativeSettlePrice": 226.16, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DOGEUSD", + "rootSymbol": "DOGE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-09-29T04:00:00.000Z", + "front": "2021-09-29T04:00:00.000Z", + "underlying": "DOGE", + "quoteCurrency": "USD", + "underlyingSymbol": "DOGE=", + "reference": "BMEX", + "referenceSymbol": ".BDOGE", + "maxOrderQty": 5000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.00001, + "multiplier": 100000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DOGEBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".DOGEUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000892, + "indicativeFundingRate": 0.000626, + "prevClosePrice": 0.45991, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1336370794, + "totalVolume": 1336371121, + "volume": 327, + "volume24h": 173720, + "prevTotalTurnover": 15070300532382, + "totalTurnover": 15070314733914, + "turnover": 14201532, + "turnover24h": 7837524106, + "homeNotional24h": 17272202.70430428, + "foreignNotional24h": 7793333.634734154, + "prevPrice24h": 0.45583, + "vwap": 0.45117, + "highPrice": 0.46921, + "lowPrice": 0.4285, + "lastPrice": 0.43381, + "lastPriceProtected": 0.43381, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0476, + "bidPrice": 0.43293, + "midPrice": 0.43309, + "askPrice": 0.43325, + "impactBidPrice": 0.43273, + "impactMidPrice": 0.43305, + "impactAskPrice": 0.43337, + "hasLiquidity": true, + "openInterest": 197673, + "openValue": 8561612976, + "fairMethod": "FundingRate", + "fairBasisRate": 0.97674, + "fairBasis": 0.00004, + "fairPrice": 0.43312, + "markMethod": "FairPrice", + "markPrice": 0.43312, + "indicativeSettlePrice": 0.43308, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DOGEUSDT", + "rootSymbol": "DOGE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "DOGE", + "underlying": "DOGE", + "quoteCurrency": "USDT", + "underlyingSymbol": "DOGET=", + "reference": "BMEX", + "referenceSymbol": ".BDOGET", + "maxOrderQty": 10000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DOGEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".DOGEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000194, + "indicativeFundingRate": 0.000244, + "prevClosePrice": 0.459568, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1920022438000, + "totalVolume": 1920027129000, + "volume": 4691000, + "volume24h": 1383034000, + "prevTotalTurnover": 2369694848430100, + "totalTurnover": 2369715275768100, + "turnover": 20427338000, + "turnover24h": 6287224085800, + "homeNotional24h": 13830340, + "foreignNotional24h": 6287224.0858, + "prevPrice24h": 0.45572, + "vwap": 0.4545966, + "highPrice": 0.46866, + "lowPrice": 0.42933000000000004, + "lastPrice": 0.43368, + "lastPriceProtected": 0.43368, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0484, + "bidPrice": 0.43359, + "midPrice": 0.433945, + "askPrice": 0.4343, + "impactBidPrice": 0.4334496, + "impactMidPrice": 0.433905, + "impactAskPrice": 0.4343626, + "hasLiquidity": true, + "openInterest": 540290000, + "openValue": 2340233717600, + "fairMethod": "FundingRate", + "fairBasisRate": 0.21243, + "fairBasis": 0.000009, + "fairPrice": 0.433144, + "markMethod": "FairPrice", + "markPrice": 0.433144, + "indicativeSettlePrice": 0.433135, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XRPUSDT", + "rootSymbol": "XRP", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "XRP", + "underlying": "XRP", + "quoteCurrency": "USDT", + "underlyingSymbol": "XRPT=", + "reference": "BMEX", + "referenceSymbol": ".BXRPT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XRPBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".XRPUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000114, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 2.53913, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 211798855000, + "totalVolume": 211805493000, + "volume": 6638000, + "volume24h": 1069298000, + "prevTotalTurnover": 1514119050778000, + "totalTurnover": 1514278179638000, + "turnover": 159128860000, + "turnover24h": 26908683851000, + "homeNotional24h": 10692980, + "foreignNotional24h": 26908683.851000004, + "prevPrice24h": 2.5166, + "vwap": 2.5164814, + "highPrice": 2.6537, + "lowPrice": 2.3569, + "lastPrice": 2.382, + "lastPriceProtected": 2.382, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0535, + "bidPrice": 2.3784, + "midPrice": 2.3794, + "askPrice": 2.3804, + "impactBidPrice": 2.378014, + "impactMidPrice": 2.38, + "impactAskPrice": 2.3820602, + "hasLiquidity": true, + "openInterest": 101220000, + "openValue": 2406535866000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.12483000000000001, + "fairBasis": 0.00003, + "fairPrice": 2.37753, + "markMethod": "FairPrice", + "markPrice": 2.37753, + "indicativeSettlePrice": 2.3775, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XRPUSD", + "rootSymbol": "XRP", + "state": "Open", + "typ": "FFWCSX", + "listing": "2020-02-04T12:00:00.000Z", + "front": "2020-02-04T12:00:00.000Z", + "underlying": "XRP", + "quoteCurrency": "USD", + "underlyingSymbol": "XRP=", + "reference": "BMEX", + "referenceSymbol": ".BXRP", + "maxOrderQty": 100000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 20000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XRPBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".XRPUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001135, + "indicativeFundingRate": 0.000979, + "prevClosePrice": 2.54035, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 22251296213, + "totalVolume": 22251296561, + "volume": 348, + "volume24h": 464683, + "prevTotalTurnover": 165395684464250, + "totalTurnover": 165395701125804, + "turnover": 16661554, + "turnover24h": 23290121682, + "homeNotional24h": 9255301.465772843, + "foreignNotional24h": 23196951.904276293, + "prevPrice24h": 2.5118, + "vwap": 2.50605, + "highPrice": 2.6505, + "lowPrice": 2.3545, + "lastPrice": 2.3831, + "lastPriceProtected": 2.3831, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0512, + "bidPrice": 2.3768, + "midPrice": 2.3785, + "askPrice": 2.3802, + "impactBidPrice": 2.3755, + "impactMidPrice": 2.3781, + "impactAskPrice": 2.38075, + "hasLiquidity": true, + "openInterest": 520314, + "openValue": 24763304202, + "fairMethod": "FundingRate", + "fairBasisRate": 1.2428249999999998, + "fairBasis": 0.0003, + "fairPrice": 2.37965, + "markMethod": "FairPrice", + "markPrice": 2.37965, + "indicativeSettlePrice": 2.37935, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00005, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "CATIUSDT", + "rootSymbol": "CATI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-23T04:00:00.000Z", + "front": "2024-09-23T04:00:00.000Z", + "positionCurrency": "CATI", + "underlying": "CATI", + "quoteCurrency": "USDT", + "underlyingSymbol": "CATIT=", + "reference": "BMEX", + "referenceSymbol": ".BCATIT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".CATIBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".CATIUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.587, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 143200, + "totalVolume": 143200, + "volume": 0, + "volume24h": 10, + "prevTotalTurnover": 79834201000, + "totalTurnover": 79834201000, + "turnover": 0, + "turnover24h": 5831000, + "homeNotional24h": 10, + "foreignNotional24h": 5.831, + "prevPrice24h": 0.6034, + "vwap": 0.5831, + "highPrice": 0.5831, + "lowPrice": 0.5831, + "lastPrice": 0.5831, + "lastPriceProtected": 0.5831, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0336, + "bidPrice": 0.5524, + "midPrice": 0.55375, + "askPrice": 0.5551, + "hasLiquidity": false, + "openInterest": 720, + "openValue": 397872000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.5526, + "markMethod": "FairPrice", + "markPrice": 0.5526, + "indicativeSettlePrice": 0.5526, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BCHUSD", + "rootSymbol": "BCH", + "state": "Open", + "typ": "FFWCSX", + "listing": "2020-06-16T04:00:00.000Z", + "front": "2020-06-16T04:00:00.000Z", + "underlying": "BCH", + "quoteCurrency": "USD", + "underlyingSymbol": "BCH=", + "reference": "BMEX", + "referenceSymbol": ".BBCH", + "maxOrderQty": 100000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.05, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BCHBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".BCHUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001175, + "indicativeFundingRate": 0.000717, + "prevClosePrice": 615.37, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1456592103, + "totalVolume": 1456592137, + "volume": 34, + "volume24h": 27079, + "prevTotalTurnover": 46443204141740, + "totalTurnover": 46443206181635, + "turnover": 2039895, + "turnover24h": 1650192915, + "homeNotional24h": 2690.55133910687, + "foreignNotional24h": 1639749.4502894913, + "prevPrice24h": 615.75, + "vwap": 609.41, + "highPrice": 625, + "lowPrice": 593.55, + "lastPrice": 598.95, + "lastPriceProtected": 598.95, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0273, + "bidPrice": 597.3, + "midPrice": 597.875, + "askPrice": 598.45, + "impactBidPrice": 597.18, + "impactMidPrice": 597.9, + "impactAskPrice": 598.65, + "hasLiquidity": true, + "openInterest": 70870, + "openValue": 4238876440, + "fairMethod": "FundingRate", + "fairBasisRate": 1.2866250000000001, + "fairBasis": 0.07, + "fairPrice": 598.12, + "markMethod": "FairPrice", + "markPrice": 598.12, + "indicativeSettlePrice": 598.05, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "HMSTRUSDT", + "rootSymbol": "HMSTR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-27T04:00:00.000Z", + "front": "2024-09-27T04:00:00.000Z", + "positionCurrency": "HMSTR", + "underlying": "HMSTR", + "quoteCurrency": "USDT", + "underlyingSymbol": "HMSTRT=", + "reference": "BMEX", + "referenceSymbol": ".BHMSTRT", + "maxOrderQty": 1000000000, + "maxPrice": 100, + "lotSize": 10, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".HMSTRBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".HMSTRUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.004338, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 18368750, + "totalVolume": 18368750, + "volume": 0, + "volume24h": 40, + "prevTotalTurnover": 72552381340, + "totalTurnover": 72552381340, + "turnover": 0, + "turnover24h": 177240, + "homeNotional24h": 40, + "foreignNotional24h": 0.17724, + "prevPrice24h": 0.004226, + "vwap": 0.004431, + "highPrice": 0.004431, + "lowPrice": 0.004431, + "lastPrice": 0.004431, + "lastPriceProtected": 0.004431, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.0485, + "bidPrice": 0.004074, + "midPrice": 0.0040875, + "askPrice": 0.004101, + "hasLiquidity": false, + "openInterest": 10, + "openValue": 40870, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.004087, + "markMethod": "FairPrice", + "markPrice": 0.004087, + "indicativeSettlePrice": 0.004087, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XUSDT", + "rootSymbol": "X", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-25T04:00:00.000Z", + "front": "2024-10-25T04:00:00.000Z", + "positionCurrency": "X", + "underlying": "X", + "quoteCurrency": "USDT", + "underlyingSymbol": "XT=", + "reference": "BMEX", + "referenceSymbol": ".BXT", + "maxOrderQty": 1000000000, + "maxPrice": 0.1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".XUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.00026187, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 699149000, + "totalVolume": 699149000, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 38367822560, + "totalTurnover": 38367822560, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 0.00020596, + "lastPrice": 0.00020596, + "lastPriceProtected": 0.00020596, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.0299, + "bidPrice": 0.00027007, + "midPrice": 0.000270435, + "askPrice": 0.0002708, + "hasLiquidity": false, + "openInterest": 2982000, + "openValue": 806839740, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.00027057, + "markMethod": "FairPrice", + "markPrice": 0.00027057, + "indicativeSettlePrice": 0.00027057, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SOLUSDT", + "rootSymbol": "SOL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "SOL", + "underlying": "SOL", + "quoteCurrency": "USDT", + "underlyingSymbol": "SOLT=", + "reference": "BMEX", + "referenceSymbol": ".BSOLT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SOLBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SOLUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000116, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 235.988, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 961521383000, + "totalVolume": 961522118000, + "volume": 735000, + "volume24h": 112067000, + "prevTotalTurnover": 4347382049844000, + "totalTurnover": 4347398758292000, + "turnover": 16708448000, + "turnover24h": 2604417538000, + "homeNotional24h": 11206.7, + "foreignNotional24h": 2604417.5380000006, + "prevPrice24h": 235.14, + "vwap": 232.39826, + "highPrice": 237.95, + "lowPrice": 225.72, + "lastPrice": 226.51, + "lastPriceProtected": 226.51, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0367, + "bidPrice": 226.39, + "midPrice": 226.465, + "askPrice": 226.54, + "impactBidPrice": 226.25835, + "impactMidPrice": 226.43, + "impactAskPrice": 226.60994, + "hasLiquidity": true, + "openInterest": 95345000, + "openValue": 2156761107000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.12702, + "fairBasis": 0.003, + "fairPrice": 226.206, + "markMethod": "FairPrice", + "markPrice": 226.206, + "indicativeSettlePrice": 226.203, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "APUUSDT", + "rootSymbol": "APU", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-11-15T04:00:00.000Z", + "front": "2024-11-15T04:00:00.000Z", + "positionCurrency": "APU", + "underlying": "APU", + "quoteCurrency": "USDT", + "underlyingSymbol": "APUT=", + "reference": "BMEX", + "referenceSymbol": ".BAPUT", + "maxOrderQty": 1000000000, + "maxPrice": 0.1, + "lotSize": 1000, + "tickSize": 0.0000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".APUBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".APUUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.0009579, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 20777000, + "totalVolume": 20777000, + "volume": 0, + "volume24h": 413000, + "prevTotalTurnover": 18093939200, + "totalTurnover": 18093939200, + "turnover": 0, + "turnover24h": 389346600, + "homeNotional24h": 413000, + "foreignNotional24h": 389.34659999999997, + "prevPrice24h": 0.0009028, + "vwap": 0.000942729, + "highPrice": 0.0010284, + "lowPrice": 0.0009052, + "lastPrice": 0.0009098, + "lastPriceProtected": 0.0009098, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.0078, + "bidPrice": 0.000842, + "midPrice": 0.00087715, + "askPrice": 0.0009123, + "impactBidPrice": 0.000011785, + "impactMidPrice": 0.00330815, + "impactAskPrice": 0.006604572, + "hasLiquidity": false, + "openInterest": 3463000, + "openValue": 3033241700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.0008759, + "markMethod": "FairPrice", + "markPrice": 0.0008759, + "indicativeSettlePrice": 0.0008759, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SWELLUSDT", + "rootSymbol": "SWELL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-11-15T04:00:00.000Z", + "front": "2024-11-15T04:00:00.000Z", + "positionCurrency": "SWELL", + "underlying": "SWELL", + "quoteCurrency": "USDT", + "underlyingSymbol": "SWELLT=", + "reference": "BMEX", + "referenceSymbol": ".BSWELLT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 100, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SWELLBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SWELLUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.0471, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 399000, + "totalVolume": 399000, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 15197423000, + "totalTurnover": 15197423000, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 0.04445, + "lastPrice": 0.04445, + "lastPriceProtected": 0.04445, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1417, + "bidPrice": 0.04317, + "midPrice": 0.04335, + "askPrice": 0.04353, + "impactBidPrice": 0.00536865, + "impactMidPrice": 0.11233, + "impactAskPrice": 0.21929596, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.04328, + "markMethod": "FairPrice", + "markPrice": 0.04328, + "indicativeSettlePrice": 0.04328, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "PNUTUSDT", + "rootSymbol": "PNUT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-11-11T12:00:00.000Z", + "front": "2024-11-11T12:00:00.000Z", + "positionCurrency": "PNUT", + "underlying": "PNUT", + "quoteCurrency": "USDT", + "underlyingSymbol": "PNUTT=", + "reference": "BMEX", + "referenceSymbol": ".BPNUTT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".PNUTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".PNUTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.44879, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 327990, + "totalVolume": 328110, + "volume": 120, + "volume24h": 5290, + "prevTotalTurnover": 536764205800, + "totalTurnover": 536917978600, + "turnover": 153772800, + "turnover24h": 7097568100, + "homeNotional24h": 5290, + "foreignNotional24h": 7097.5680999999995, + "prevPrice24h": 1.4425, + "vwap": 1.3416953, + "highPrice": 1.46673, + "lowPrice": 1.26011, + "lastPrice": 1.28144, + "lastPriceProtected": 1.28144, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1117, + "bidPrice": 1.2787, + "midPrice": 1.280745, + "askPrice": 1.28279, + "impactBidPrice": 0.0191461, + "impactMidPrice": 3.179365, + "impactAskPrice": 6.3395872, + "hasLiquidity": false, + "openInterest": 5340, + "openValue": 6817417800, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00001, + "fairPrice": 1.27667, + "markMethod": "FairPrice", + "markPrice": 1.27667, + "indicativeSettlePrice": 1.27666, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "1000000MOGUSDT", + "rootSymbol": "MOG", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-12-05T04:00:00.000Z", + "front": "2024-12-05T04:00:00.000Z", + "positionCurrency": "1000000MOG", + "underlying": "1000000MOG", + "quoteCurrency": "USDT", + "underlyingSymbol": "1000000MOGT=", + "reference": "BMEX", + "referenceSymbol": ".B1000000MOGT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".1000000MOGBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".1000000MOGUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 3.6871, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2433, + "totalVolume": 2433, + "volume": 0, + "volume24h": 26, + "prevTotalTurnover": 8168645200, + "totalTurnover": 8168645200, + "turnover": 0, + "turnover24h": 100000900, + "homeNotional24h": 26, + "foreignNotional24h": 100.0009, + "prevPrice24h": 3.7588, + "vwap": 3.846189, + "highPrice": 3.8474, + "lowPrice": 3.8439, + "lastPrice": 3.8474, + "lastPriceProtected": 3.8474, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0291, + "bidPrice": 3.6485, + "midPrice": 3.6632, + "askPrice": 3.6779, + "hasLiquidity": false, + "openInterest": 28, + "openValue": 102538800, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 3.6621, + "markMethod": "FairPrice", + "markPrice": 3.6621, + "indicativeSettlePrice": 3.6621, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BRETTUSDT", + "rootSymbol": "BRETT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-12-05T04:00:00.000Z", + "front": "2024-12-05T04:00:00.000Z", + "positionCurrency": "BRETT", + "underlying": "BRETT", + "quoteCurrency": "USDT", + "underlyingSymbol": "BRETTT=", + "reference": "BMEX", + "referenceSymbol": ".BBRETTT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BRETTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BRETTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.20801, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2930, + "totalVolume": 2930, + "volume": 0, + "volume24h": 470, + "prevTotalTurnover": 614356300, + "totalTurnover": 614356300, + "turnover": 0, + "turnover24h": 98192900, + "homeNotional24h": 470, + "foreignNotional24h": 98.1929, + "prevPrice24h": 0.20883, + "vwap": 0.2089211, + "highPrice": 0.20905, + "lowPrice": 0.20884, + "lastPrice": 0.20905, + "lastPriceProtected": 0.20905, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0403, + "bidPrice": 0.19578, + "midPrice": 0.201575, + "askPrice": 0.20737, + "hasLiquidity": false, + "openInterest": 2760, + "openValue": 539359200, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.19542, + "markMethod": "FairPrice", + "markPrice": 0.19542, + "indicativeSettlePrice": 0.19542, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BCHUSDT", + "rootSymbol": "BCH", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "BCH", + "underlying": "BCH", + "quoteCurrency": "USDT", + "underlyingSymbol": "BCHT=", + "reference": "BMEX", + "referenceSymbol": ".BBCHT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.05, + "multiplier": 10, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BCHBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BCHUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 615.024, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 182744950000, + "totalVolume": 182745101000, + "volume": 151000, + "volume24h": 116624000, + "prevTotalTurnover": 483189136315000, + "totalTurnover": 483190045763000, + "turnover": 909448000, + "turnover24h": 710144664000, + "homeNotional24h": 1166.2400000000002, + "foreignNotional24h": 710144.664, + "prevPrice24h": 614.9, + "vwap": 608.9182, + "highPrice": 625.45, + "lowPrice": 593.8, + "lastPrice": 599.05, + "lastPriceProtected": 599.05, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0258, + "bidPrice": 597.85, + "midPrice": 598.525, + "askPrice": 599.2, + "impactBidPrice": 597.4012, + "impactMidPrice": 598.3, + "impactAskPrice": 599.2138, + "hasLiquidity": true, + "openInterest": 80900000, + "openValue": 483867754000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.006, + "fairPrice": 598.106, + "markMethod": "FairPrice", + "markPrice": 598.106, + "indicativeSettlePrice": 598.1, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "PUFFERUSDT", + "rootSymbol": "PUFFER", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-15T12:00:00.000Z", + "front": "2024-10-15T12:00:00.000Z", + "positionCurrency": "PUFFER", + "underlying": "PUFFER", + "quoteCurrency": "USDT", + "underlyingSymbol": "PUFFERT=", + "reference": "BMEX", + "referenceSymbol": ".BPUFFERT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".PUFFERBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".PUFFERUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.84313, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 154980, + "totalVolume": 154980, + "volume": 0, + "volume24h": 2560, + "prevTotalTurnover": 78736309000, + "totalTurnover": 78736309000, + "turnover": 0, + "turnover24h": 2039203000, + "homeNotional24h": 2560, + "foreignNotional24h": 2039.203, + "prevPrice24h": 0.8644, + "vwap": 0.7965637, + "highPrice": 0.8174, + "lowPrice": 0.7618, + "lastPrice": 0.7636, + "lastPriceProtected": 0.7636, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.1166, + "bidPrice": 0.756, + "midPrice": 0.7783, + "askPrice": 0.8006, + "impactBidPrice": 0.010351, + "impactMidPrice": 2.2206, + "impactAskPrice": 4.4309371, + "hasLiquidity": false, + "openInterest": 3690, + "openValue": 2785802400, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00001, + "fairPrice": 0.75496, + "markMethod": "FairPrice", + "markPrice": 0.75496, + "indicativeSettlePrice": 0.75495, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MOODENGUSDT", + "rootSymbol": "MOODENG", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-04T04:00:00.000Z", + "front": "2024-10-04T04:00:00.000Z", + "positionCurrency": "MOODENG", + "underlying": "MOODENG", + "quoteCurrency": "USDT", + "underlyingSymbol": "MOODENGT=", + "reference": "BMEX", + "referenceSymbol": ".BMOODENGT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MOODENGBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MOODENGUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.49074, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1738570, + "totalVolume": 1738570, + "volume": 0, + "volume24h": 520, + "prevTotalTurnover": 437264254900, + "totalTurnover": 437264254900, + "turnover": 0, + "turnover24h": 236495900, + "homeNotional24h": 520, + "foreignNotional24h": 236.4959, + "prevPrice24h": 0.50636, + "vwap": 0.4547999, + "highPrice": 0.47641, + "lowPrice": 0.4329, + "lastPrice": 0.4329, + "lastPriceProtected": 0.4329, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1451, + "bidPrice": 0.43473, + "midPrice": 0.435465, + "askPrice": 0.4362, + "impactBidPrice": 0.0041274, + "impactMidPrice": 1.85457, + "impactAskPrice": 3.7050212, + "hasLiquidity": false, + "openInterest": 1550, + "openValue": 672731000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.43402, + "markMethod": "FairPrice", + "markPrice": 0.43402, + "indicativeSettlePrice": 0.43402, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BNBUSD", + "rootSymbol": "BNB", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-09-29T04:00:00.000Z", + "front": "2021-09-29T04:00:00.000Z", + "underlying": "BNB", + "quoteCurrency": "USD", + "underlyingSymbol": "BNB=", + "reference": "BMEX", + "referenceSymbol": ".BBNB", + "maxOrderQty": 1000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BNBBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".BNBUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00033, + "indicativeFundingRate": 0.000651, + "prevClosePrice": 738.63, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 184477014, + "totalVolume": 184477026, + "volume": 12, + "volume24h": 10829, + "prevTotalTurnover": 5950708330347, + "totalTurnover": 5950709193919, + "turnover": 863572, + "turnover24h": 790780625, + "homeNotional24h": 1077.7757775065706, + "foreignNotional24h": 787094.4012842386, + "prevPrice24h": 736.4, + "vwap": 730.25, + "highPrice": 744.72, + "lowPrice": 708.76, + "lastPrice": 719.26, + "lastPriceProtected": 719.26, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.022, + "bidPrice": 718.83, + "midPrice": 719.02, + "askPrice": 719.21, + "impactBidPrice": 718.57, + "impactMidPrice": 719.06, + "impactAskPrice": 719.55, + "hasLiquidity": true, + "openInterest": 76412, + "openValue": 5487298544, + "fairMethod": "FundingRate", + "fairBasisRate": 0.36135, + "fairBasis": 0.02, + "fairPrice": 718.12, + "markMethod": "FairPrice", + "markPrice": 718.12, + "indicativeSettlePrice": 718.1, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "EIGENUSDT", + "rootSymbol": "EIGEN", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-02T12:00:00.000Z", + "front": "2024-10-02T12:00:00.000Z", + "positionCurrency": "EIGEN", + "underlying": "EIGEN", + "quoteCurrency": "USDT", + "underlyingSymbol": "EIGENT=", + "reference": "BMEX", + "referenceSymbol": ".BEIGENT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".EIGENBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".EIGENUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 4.5895, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 20874, + "totalVolume": 20874, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 68747083500, + "totalTurnover": 68747083500, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 4.51, + "vwap": 4.51, + "highPrice": 4.51, + "lowPrice": 4.51, + "lastPrice": 4.51, + "lastPriceProtected": 4.51, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0633, + "bidPrice": 4.5828, + "midPrice": 4.63105, + "askPrice": 4.6793, + "hasLiquidity": false, + "openInterest": 845, + "openValue": 3867311500, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 4.5767, + "markMethod": "FairPrice", + "markPrice": 4.5767, + "indicativeSettlePrice": 4.5767, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BNBUSDT", + "rootSymbol": "BNB", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-12-15T04:00:00.000Z", + "front": "2021-12-15T04:00:00.000Z", + "positionCurrency": "BNB", + "underlying": "BNB", + "quoteCurrency": "USDT", + "underlyingSymbol": "BNBT=", + "reference": "BMEX", + "referenceSymbol": ".BBNBT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BNBBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BNBUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 738.249, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 3111538700, + "totalVolume": 3111538700, + "volume": 0, + "volume24h": 2870600, + "prevTotalTurnover": 108800684646700, + "totalTurnover": 108800684646700, + "turnover": 0, + "turnover24h": 207370029300, + "homeNotional24h": 287.06, + "foreignNotional24h": 207370.0293, + "prevPrice24h": 736.48, + "vwap": 722.3927, + "highPrice": 738.8, + "lowPrice": 709.96, + "lastPrice": 709.96, + "lastPriceProtected": 709.96, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0414, + "bidPrice": 717.86, + "midPrice": 718.93, + "askPrice": 720, + "impactBidPrice": 717.8526, + "impactMidPrice": 718.925, + "impactAskPrice": 720, + "hasLiquidity": true, + "openInterest": 3958100, + "openValue": 284283407920, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.007, + "fairPrice": 718.232, + "markMethod": "FairPrice", + "markPrice": 718.232, + "indicativeSettlePrice": 718.225, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SUNDOGUSDT", + "rootSymbol": "SUNDOG", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-08-23T04:00:00.000Z", + "front": "2024-08-23T04:00:00.000Z", + "positionCurrency": "SUNDOG", + "underlying": "SUNDOG", + "quoteCurrency": "USDT", + "underlyingSymbol": "SUNDOGT=", + "reference": "BMEX", + "referenceSymbol": ".BSUNDOGT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SUNDOGBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SUNDOGUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.18795, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 531830, + "totalVolume": 531830, + "volume": 0, + "volume24h": 50, + "prevTotalTurnover": 110244394100, + "totalTurnover": 110244394100, + "turnover": 0, + "turnover24h": 9231500, + "homeNotional24h": 50, + "foreignNotional24h": 9.2315, + "prevPrice24h": 0.19676, + "vwap": 0.18463, + "highPrice": 0.18463, + "lowPrice": 0.18463, + "lastPrice": 0.18463, + "lastPriceProtected": 0.18463, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0616, + "bidPrice": 0.17097, + "midPrice": 0.18057, + "askPrice": 0.19017, + "hasLiquidity": false, + "openInterest": 14190, + "openValue": 2399812800, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.16912, + "markMethod": "FairPrice", + "markPrice": 0.16912, + "indicativeSettlePrice": 0.16912, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SCRUSDT", + "rootSymbol": "SCR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-22T12:00:00.000Z", + "front": "2024-10-22T12:00:00.000Z", + "positionCurrency": "SCR", + "underlying": "SCR", + "quoteCurrency": "USDT", + "underlyingSymbol": "SCRT=", + "reference": "BMEX", + "referenceSymbol": ".BSCRT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SCRBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SCRUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.01882, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 17984, + "totalVolume": 17984, + "volume": 0, + "volume24h": 127, + "prevTotalTurnover": 15815565700, + "totalTurnover": 15815565700, + "turnover": 0, + "turnover24h": 131779600, + "homeNotional24h": 127, + "foreignNotional24h": 131.7796, + "prevPrice24h": 1.0314, + "vwap": 1.037635, + "highPrice": 1.0401, + "lowPrice": 1.037, + "lastPrice": 1.0401, + "lastPriceProtected": 1.0401, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.0084, + "bidPrice": 0.9492, + "midPrice": 0.95115, + "askPrice": 0.9531, + "hasLiquidity": false, + "openInterest": 254, + "openValue": 240825020, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00001, + "fairPrice": 0.94813, + "markMethod": "FairPrice", + "markPrice": 0.94813, + "indicativeSettlePrice": 0.94812, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "LINKUSD", + "rootSymbol": "LINK", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-10-20T04:00:00.000Z", + "front": "2021-10-20T04:00:00.000Z", + "underlying": "LINK", + "quoteCurrency": "USD", + "underlyingSymbol": "LINK=", + "reference": "BMEX", + "referenceSymbol": ".BLINK", + "maxOrderQty": 1000000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LINKBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".LINKUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000869, + "indicativeFundingRate": 0.000953, + "prevClosePrice": 26.613, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 702587919, + "totalVolume": 702588678, + "volume": 759, + "volume24h": 132863, + "prevTotalTurnover": 7127562257211, + "totalTurnover": 7127581194496, + "turnover": 18937285, + "turnover24h": 3497102855, + "homeNotional24h": 132269.34298550707, + "foreignNotional24h": 3481663.575309046, + "prevPrice24h": 25.952, + "vwap": 26.322, + "highPrice": 27.429, + "lowPrice": 24.875, + "lastPrice": 24.85, + "lastPriceProtected": 24.85, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0425, + "bidPrice": 24.818, + "midPrice": 24.8465, + "askPrice": 24.875, + "impactBidPrice": 24.802, + "impactMidPrice": 24.8395, + "impactAskPrice": 24.877, + "hasLiquidity": true, + "openInterest": 282807, + "openValue": 7015593249, + "fairMethod": "FundingRate", + "fairBasisRate": 0.9515549999999999, + "fairBasis": 0.002, + "fairPrice": 24.807, + "markMethod": "FairPrice", + "markPrice": 24.807, + "indicativeSettlePrice": 24.805, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "LINKUSDT", + "rootSymbol": "LINK", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-10-03T04:00:00.000Z", + "front": "2023-10-03T04:00:00.000Z", + "positionCurrency": "LINK", + "underlying": "LINK", + "quoteCurrency": "USDT", + "underlyingSymbol": "LINKT=", + "reference": "BMEX", + "referenceSymbol": ".BLINKT", + "maxOrderQty": 1000000000, + "maxPrice": 100000, + "lotSize": 1000, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LINKBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".LINKUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00056, + "indicativeFundingRate": 0.00048, + "prevClosePrice": 26.5989, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 9278628000, + "totalVolume": 9278992000, + "volume": 364000, + "volume24h": 70439000, + "prevTotalTurnover": 142875556256800, + "totalTurnover": 142884651439800, + "turnover": 9095183000, + "turnover24h": 1849865400000, + "homeNotional24h": 70439, + "foreignNotional24h": 1849865.4, + "prevPrice24h": 25.873, + "vwap": 26.26195, + "highPrice": 27.416, + "lowPrice": 24.887, + "lastPrice": 24.894, + "lastPriceProtected": 24.894, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0378, + "bidPrice": 24.79, + "midPrice": 24.8245, + "askPrice": 24.859, + "impactBidPrice": 24.78128, + "impactMidPrice": 24.8215, + "impactAskPrice": 24.861885, + "hasLiquidity": true, + "openInterest": 19499000, + "openValue": 483783839300, + "fairMethod": "FundingRate", + "fairBasisRate": 0.6132, + "fairBasis": 0.0014, + "fairPrice": 24.8107, + "markMethod": "FairPrice", + "markPrice": 24.8107, + "indicativeSettlePrice": 24.8093, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ACTUSDT", + "rootSymbol": "ACT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-11-11T12:00:00.000Z", + "front": "2024-11-11T12:00:00.000Z", + "positionCurrency": "ACT", + "underlying": "ACT", + "quoteCurrency": "USDT", + "underlyingSymbol": "ACTT=", + "reference": "BMEX", + "referenceSymbol": ".BACTT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ACTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ACTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.60983, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 414180, + "totalVolume": 414180, + "volume": 0, + "volume24h": 2510, + "prevTotalTurnover": 278663508400, + "totalTurnover": 278663508400, + "turnover": 0, + "turnover24h": 1385674500, + "homeNotional24h": 2510, + "foreignNotional24h": 1385.6744999999999, + "prevPrice24h": 0.63981, + "vwap": 0.5520616, + "highPrice": 0.565, + "lowPrice": 0.53247, + "lastPrice": 0.53416, + "lastPriceProtected": 0.53416, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.1651, + "bidPrice": 0.53552, + "midPrice": 0.54382, + "askPrice": 0.55212, + "impactBidPrice": 0.0504735, + "impactMidPrice": 1.07507, + "impactAskPrice": 2.0996749, + "hasLiquidity": false, + "openInterest": 2190, + "openValue": 1171934700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00001, + "fairPrice": 0.53513, + "markMethod": "FairPrice", + "markPrice": 0.53513, + "indicativeSettlePrice": 0.53512, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "FLOKIUSDT", + "rootSymbol": "FLOKI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-16T12:00:00.000Z", + "front": "2024-09-16T12:00:00.000Z", + "positionCurrency": "FLOKI", + "underlying": "FLOKI", + "quoteCurrency": "USDT", + "underlyingSymbol": "FLOKIT=", + "reference": "BMEX", + "referenceSymbol": ".BFLOKIT", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 10000, + "tickSize": 0.00000001, + "multiplier": 100000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".FLOKIBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".FLOKIUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.00025539, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 31995060000, + "totalVolume": 32004620000, + "volume": 9560000, + "volume24h": 829180000, + "prevTotalTurnover": 591876117280, + "totalTurnover": 592122426800, + "turnover": 246309520, + "turnover24h": 21692142430, + "homeNotional24h": 82918000, + "foreignNotional24h": 21692.14243, + "prevPrice24h": 0.0002532, + "vwap": 0.00026161, + "highPrice": 0.00027464, + "lowPrice": 0.00025173, + "lastPrice": 0.00025685, + "lastPriceProtected": 0.00025685, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0144, + "bidPrice": 0.00025502, + "midPrice": 0.000255965, + "askPrice": 0.00025691, + "impactBidPrice": 0.000011023, + "impactMidPrice": 0.00014955, + "impactAskPrice": 0.000288085, + "hasLiquidity": false, + "openInterest": 260040000, + "openValue": 6623998920, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.00025473, + "markMethod": "FairPrice", + "markPrice": 0.00025473, + "indicativeSettlePrice": 0.00025473, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "CATUSDT", + "rootSymbol": "CAT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-16T12:00:00.000Z", + "front": "2024-09-16T12:00:00.000Z", + "positionCurrency": "CAT", + "underlying": "CAT", + "quoteCurrency": "USDT", + "underlyingSymbol": "CATT=", + "reference": "BMEX", + "referenceSymbol": ".BCATT", + "maxOrderQty": 1000000000, + "maxPrice": 0.1, + "lotSize": 10000, + "tickSize": 0.000000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".CATBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".CATUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.000054252, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2626810000, + "totalVolume": 2626810000, + "volume": 0, + "volume24h": 3700000, + "prevTotalTurnover": 85988188750, + "totalTurnover": 85988188750, + "turnover": 0, + "turnover24h": 197105160, + "homeNotional24h": 3700000, + "foreignNotional24h": 197.10516, + "prevPrice24h": 0.000050114, + "vwap": 0.0000532717, + "highPrice": 0.000056137, + "lowPrice": 0.00005098, + "lastPrice": 0.00005098, + "lastPriceProtected": 0.00005098, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0173, + "bidPrice": 0.000049446, + "midPrice": 0.000049605, + "askPrice": 0.000049764, + "impactBidPrice": 0.0000461035, + "impactMidPrice": 0.0000493655, + "impactAskPrice": 0.000052628, + "hasLiquidity": false, + "openInterest": 71430000, + "openValue": 3538499340, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.000000001, + "fairPrice": 0.000049538, + "markMethod": "FairPrice", + "markPrice": 0.000049538, + "indicativeSettlePrice": 0.000049537, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "GRASSUSDT", + "rootSymbol": "GRASS", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-29T04:00:00.000Z", + "front": "2024-10-29T04:00:00.000Z", + "positionCurrency": "GRASS", + "underlying": "GRASS", + "quoteCurrency": "USDT", + "underlyingSymbol": "GRASST=", + "reference": "BMEX", + "referenceSymbol": ".BGRASST", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".GRASSBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".GRASSUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 2.9823, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 190968, + "totalVolume": 190968, + "volume": 0, + "volume24h": 111, + "prevTotalTurnover": 477434690100, + "totalTurnover": 477434690100, + "turnover": 0, + "turnover24h": 312526100, + "homeNotional24h": 111, + "foreignNotional24h": 312.5261, + "prevPrice24h": 2.9268, + "vwap": 2.815551, + "highPrice": 2.8236, + "lowPrice": 2.7111, + "lastPrice": 2.7111, + "lastPriceProtected": 2.7111, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0737, + "bidPrice": 2.7051, + "midPrice": 2.71385, + "askPrice": 2.7226, + "impactBidPrice": 0.173042, + "impactMidPrice": 5.2754, + "impactAskPrice": 10.377778, + "hasLiquidity": false, + "openInterest": 138, + "openValue": 374518200, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 2.7139, + "markMethod": "FairPrice", + "markPrice": 2.7139, + "indicativeSettlePrice": 2.7139, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DOGSUSDT", + "rootSymbol": "DOGS", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-08-27T04:00:00.000Z", + "front": "2024-08-27T04:00:00.000Z", + "positionCurrency": "DOGS", + "underlying": "DOGS", + "quoteCurrency": "USDT", + "underlyingSymbol": "DOGST=", + "reference": "BMEX", + "referenceSymbol": ".BDOGST", + "maxOrderQty": 1000000000, + "maxPrice": 10, + "lotSize": 1000, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DOGSBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".DOGSUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.00085, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 258181000, + "totalVolume": 258181000, + "volume": 0, + "volume24h": 2943000, + "prevTotalTurnover": 214748544000, + "totalTurnover": 214748544000, + "turnover": 0, + "turnover24h": 2509051000, + "homeNotional24h": 2943000, + "foreignNotional24h": 2509.0509999999995, + "prevPrice24h": 0.000896, + "vwap": 0.00085255, + "highPrice": 0.000868, + "lowPrice": 0.00083, + "lastPrice": 0.000833, + "lastPriceProtected": 0.000833, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0703, + "bidPrice": 0.000853, + "midPrice": 0.0008555, + "askPrice": 0.000858, + "hasLiquidity": false, + "openInterest": 4511000, + "openValue": 3856905000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.000855, + "markMethod": "FairPrice", + "markPrice": 0.000855, + "indicativeSettlePrice": 0.000855, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "GOATUSDT", + "rootSymbol": "GOAT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-18T12:00:00.000Z", + "front": "2024-10-18T12:00:00.000Z", + "positionCurrency": "GOAT", + "underlying": "GOAT", + "quoteCurrency": "USDT", + "underlyingSymbol": "GOATT=", + "reference": "BMEX", + "referenceSymbol": ".BGOATT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".GOATBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".GOATUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.75219, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1680240, + "totalVolume": 1680240, + "volume": 0, + "volume24h": 8120, + "prevTotalTurnover": 1292332474600, + "totalTurnover": 1292332474600, + "turnover": 0, + "turnover24h": 5880414600, + "homeNotional24h": 8120, + "foreignNotional24h": 5880.4146, + "prevPrice24h": 0.73687, + "vwap": 0.7241891, + "highPrice": 0.7575, + "lowPrice": 0.6851, + "lastPrice": 0.6851, + "lastPriceProtected": 0.6851, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0703, + "bidPrice": 0.67782, + "midPrice": 0.68732, + "askPrice": 0.69682, + "impactBidPrice": 0.0673805, + "impactMidPrice": 1.11052, + "impactAskPrice": 2.1536632, + "hasLiquidity": false, + "openInterest": 17520, + "openValue": 11892576000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00001, + "fairPrice": 0.6788, + "markMethod": "FairPrice", + "markPrice": 0.6788, + "indicativeSettlePrice": 0.67879, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "CHILLGUYUSDT", + "rootSymbol": "CHILLGUY", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-11-22T04:00:00.000Z", + "front": "2024-11-22T04:00:00.000Z", + "positionCurrency": "CHILLGUY", + "underlying": "CHILLGUY", + "quoteCurrency": "USDT", + "underlyingSymbol": "CHILLGUYT=", + "reference": "BMEX", + "referenceSymbol": ".BCHILLGUYT", + "maxOrderQty": 1000000000, + "maxPrice": 100, + "lotSize": 10, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".CHILLGUYBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".CHILLGUYUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.000439, + "prevClosePrice": 0.44261, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 297070, + "totalVolume": 297070, + "volume": 0, + "volume24h": 640, + "prevTotalTurnover": 132495131280, + "totalTurnover": 132495131280, + "turnover": 0, + "turnover24h": 261514300, + "homeNotional24h": 640, + "foreignNotional24h": 261.5143, + "prevPrice24h": 0.475202, + "vwap": 0.4086162, + "highPrice": 0.442, + "lowPrice": 0.389829, + "lastPrice": 0.389829, + "lastPriceProtected": 0.389829, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0787, + "bidPrice": 0.388839, + "midPrice": 0.4049925, + "askPrice": 0.421146, + "impactBidPrice": 0.0418492, + "impactMidPrice": 0.3486415, + "impactAskPrice": 0.6554343, + "hasLiquidity": false, + "openInterest": 29310, + "openValue": 11431310340, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.000004, + "fairPrice": 0.390014, + "markMethod": "FairPrice", + "markPrice": 0.390014, + "indicativeSettlePrice": 0.39001, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MAJORUSDT", + "rootSymbol": "MAJOR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-11-29T04:00:00.000Z", + "front": "2024-11-29T04:00:00.000Z", + "positionCurrency": "MAJOR", + "underlying": "MAJOR", + "quoteCurrency": "USDT", + "underlyingSymbol": "MAJORT=", + "reference": "BMEX", + "referenceSymbol": ".BMAJORT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MAJORBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MAJORUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.1366, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 8743, + "totalVolume": 8743, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 10123796900, + "totalTurnover": 10123796900, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 1.0863, + "lastPrice": 1.0863, + "lastPriceProtected": 1.0863, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0101, + "bidPrice": 1.0985, + "midPrice": 1.1248, + "askPrice": 1.1511, + "impactBidPrice": 0.943469, + "impactMidPrice": 1.1422, + "impactAskPrice": 1.340993, + "hasLiquidity": false, + "openInterest": 1822, + "openValue": 1997458600, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 1.0963, + "markMethod": "FairPrice", + "markPrice": 1.0963, + "indicativeSettlePrice": 1.0963, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DBRUSDT", + "rootSymbol": "DBR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-10-17T12:00:00.000Z", + "front": "2024-10-17T12:00:00.000Z", + "positionCurrency": "DBR", + "underlying": "DBR", + "quoteCurrency": "USDT", + "underlyingSymbol": "DBRT=", + "reference": "BMEX", + "referenceSymbol": ".BDBRT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 100, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DBRBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".DBRUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.02895, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 273700, + "totalVolume": 273700, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 6804893000, + "totalTurnover": 6804893000, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 0.02886, + "lastPrice": 0.02886, + "lastPriceProtected": 0.02886, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0781, + "bidPrice": 0.02809, + "midPrice": 0.028125, + "askPrice": 0.02816, + "impactBidPrice": 0.0075622, + "impactMidPrice": 0.075785, + "impactAskPrice": 0.14401681, + "hasLiquidity": false, + "openInterest": 9700, + "openValue": 272279000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.02807, + "markMethod": "FairPrice", + "markPrice": 0.02807, + "indicativeSettlePrice": 0.02807, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DOTUSDT", + "rootSymbol": "DOT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-01-12T04:00:00.000Z", + "front": "2022-01-12T04:00:00.000Z", + "positionCurrency": "DOT", + "underlying": "DOT", + "quoteCurrency": "USDT", + "underlyingSymbol": "DOTT=", + "reference": "BMEX", + "referenceSymbol": ".BDOTT", + "maxOrderQty": 1000000000, + "maxPrice": 100000, + "lotSize": 1000, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DOTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".DOTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 10.4569, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 11229485000, + "totalVolume": 11229577000, + "volume": 92000, + "volume24h": 35535000, + "prevTotalTurnover": 96651110363000, + "totalTurnover": 96651998071000, + "turnover": 887708000, + "turnover24h": 357112361000, + "homeNotional24h": 35535, + "foreignNotional24h": 357112.36100000003, + "prevPrice24h": 10.286, + "vwap": 10.049596, + "highPrice": 10.552, + "lowPrice": 9.478, + "lastPrice": 9.649, + "lastPriceProtected": 9.649, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0619, + "bidPrice": 9.559, + "midPrice": 9.574, + "askPrice": 9.589, + "impactBidPrice": 9.554993, + "impactMidPrice": 9.574, + "impactAskPrice": 9.593326, + "hasLiquidity": true, + "openInterest": 52559000, + "openValue": 502353666100, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.0001, + "fairPrice": 9.5579, + "markMethod": "FairPrice", + "markPrice": 9.5579, + "indicativeSettlePrice": 9.5578, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "APEUSDT", + "rootSymbol": "APE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-03-22T04:00:00.000Z", + "front": "2022-03-22T04:00:00.000Z", + "positionCurrency": "APE", + "underlying": "APE", + "quoteCurrency": "USDT", + "underlyingSymbol": "APET=", + "reference": "BMEX", + "referenceSymbol": ".BAPET", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".APEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".APEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.8389, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 109087617000, + "totalVolume": 109087617000, + "volume": 0, + "volume24h": 71011000, + "prevTotalTurnover": 358703540914000, + "totalTurnover": 358703540914000, + "turnover": 0, + "turnover24h": 124246775100, + "homeNotional24h": 71011, + "foreignNotional24h": 124246.77510000001, + "prevPrice24h": 1.837, + "vwap": 1.749684, + "highPrice": 1.8728, + "lowPrice": 1.6739, + "lastPrice": 1.686, + "lastPriceProtected": 1.686, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0685, + "bidPrice": 1.6698, + "midPrice": 1.67465, + "askPrice": 1.6795, + "impactBidPrice": 1.669629, + "impactMidPrice": 1.67455, + "impactAskPrice": 1.6795, + "hasLiquidity": true, + "openInterest": 93985000, + "openValue": 157030138000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 1.6708, + "markMethod": "FairPrice", + "markPrice": 1.6708, + "indicativeSettlePrice": 1.6708, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SHIBUSDT", + "rootSymbol": "SHIB", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-08-30T04:00:00.000Z", + "front": "2023-08-30T04:00:00.000Z", + "positionCurrency": "SHIB", + "underlying": "SHIB", + "quoteCurrency": "USDT", + "underlyingSymbol": "SHIBT=", + "reference": "BMEX", + "referenceSymbol": ".BSHIBT", + "maxOrderQty": 100000000000, + "maxPrice": 0.1, + "lotSize": 10000, + "tickSize": 0.000000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SHIBBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SHIBUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000932, + "indicativeFundingRate": 0.000542, + "prevClosePrice": 0.000032133, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 723120530000, + "totalVolume": 723129110000, + "volume": 8580000, + "volume24h": 4652270000, + "prevTotalTurnover": 15439201961230, + "totalTurnover": 15439459652950, + "turnover": 257691720, + "turnover24h": 145486253380, + "homeNotional24h": 4652270000, + "foreignNotional24h": 145486.25338000004, + "prevPrice24h": 0.000031643, + "vwap": 0.0000312722, + "highPrice": 0.000032484, + "lowPrice": 0.000029525, + "lastPrice": 0.00002997, + "lastPriceProtected": 0.00002997, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0519, + "bidPrice": 0.000029929, + "midPrice": 0.0000299615, + "askPrice": 0.000029994, + "impactBidPrice": 0.0000290549, + "impactMidPrice": 0.0000299365, + "impactAskPrice": 0.0000308189, + "hasLiquidity": false, + "openInterest": 26702270000, + "openValue": 801014695460, + "fairMethod": "FundingRate", + "fairBasisRate": 1.02054, + "fairBasis": 0.000000003, + "fairPrice": 0.000029998, + "markMethod": "FairPrice", + "markPrice": 0.000029998, + "indicativeSettlePrice": 0.000029995, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SUIUSD", + "rootSymbol": "SUI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-05-03T12:00:00.000Z", + "front": "2023-05-03T12:00:00.000Z", + "underlying": "SUI", + "quoteCurrency": "USD", + "underlyingSymbol": "SUI=", + "reference": "BMEX", + "referenceSymbol": ".BSUI", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SUIBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".SUIUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000995, + "indicativeFundingRate": 0.001178, + "prevClosePrice": 4.205, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2089956222, + "totalVolume": 2089961960, + "volume": 5738, + "volume24h": 1041328, + "prevTotalTurnover": 1995498341770, + "totalTurnover": 1995521121276, + "turnover": 22779506, + "turnover24h": 4314849463, + "homeNotional24h": 1034969.5738355647, + "foreignNotional24h": 4288792.957279538, + "prevPrice24h": 4.179, + "vwap": 4.144, + "highPrice": 4.275, + "lowPrice": 3.958, + "lastPrice": 3.958, + "lastPriceProtected": 3.958, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0529, + "bidPrice": 3.954, + "midPrice": 3.956, + "askPrice": 3.958, + "impactBidPrice": 3.954, + "impactMidPrice": 3.958, + "impactAskPrice": 3.962, + "hasLiquidity": true, + "openInterest": 1114007, + "openValue": 4404783678, + "fairMethod": "FundingRate", + "fairBasisRate": 1.089525, + "fairBasis": 0, + "fairPrice": 3.954, + "markMethod": "FairPrice", + "markPrice": 3.954, + "indicativeSettlePrice": 3.954, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "NEARUSDT", + "rootSymbol": "NEAR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-07T04:00:00.000Z", + "front": "2023-11-07T04:00:00.000Z", + "positionCurrency": "NEAR", + "underlying": "NEAR", + "quoteCurrency": "USDT", + "underlyingSymbol": "NEART=", + "reference": "BMEX", + "referenceSymbol": ".BNEART", + "maxOrderQty": 1000000000, + "maxPrice": 100000, + "lotSize": 1000, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".NEARBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".NEARUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 7.604, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 4262666000, + "totalVolume": 4262801000, + "volume": 135000, + "volume24h": 20545000, + "prevTotalTurnover": 22300188819000, + "totalTurnover": 22301164379000, + "turnover": 975560000, + "turnover24h": 153065099000, + "homeNotional24h": 20545, + "foreignNotional24h": 153065.09900000002, + "prevPrice24h": 7.506, + "vwap": 7.450237, + "highPrice": 7.873, + "lowPrice": 7.131, + "lastPrice": 7.193, + "lastPriceProtected": 7.193, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0417, + "bidPrice": 7.176, + "midPrice": 7.1945, + "askPrice": 7.213, + "impactBidPrice": 0.068627, + "impactMidPrice": 3.7205, + "impactAskPrice": 7.373342, + "hasLiquidity": false, + "openInterest": 58013000, + "openValue": 415663145000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 7.165, + "markMethod": "FairPrice", + "markPrice": 7.165, + "indicativeSettlePrice": 7.165, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "POLUSDT", + "rootSymbol": "POL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-05T04:00:00.000Z", + "front": "2024-09-05T04:00:00.000Z", + "positionCurrency": "POL", + "underlying": "POL", + "quoteCurrency": "USDT", + "underlyingSymbol": "POLT=", + "reference": "BMEX", + "referenceSymbol": ".BPOLT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".POLBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".POLUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001019, + "indicativeFundingRate": 0.001207, + "prevClosePrice": 0.6936, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 619390000, + "totalVolume": 619400000, + "volume": 10000, + "volume24h": 8039000, + "prevTotalTurnover": 3077467068000, + "totalTurnover": 3077531198000, + "turnover": 64130000, + "turnover24h": 54975467000, + "homeNotional24h": 80390, + "foreignNotional24h": 54975.467000000026, + "prevPrice24h": 0.6907, + "vwap": 0.6838596, + "highPrice": 0.7044, + "lowPrice": 0.6352, + "lastPrice": 0.638, + "lastPriceProtected": 0.638, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0763, + "bidPrice": 0.6366, + "midPrice": 0.63705, + "askPrice": 0.6375, + "impactBidPrice": 0.595102, + "impactMidPrice": 0.7325, + "impactAskPrice": 0.8699345, + "hasLiquidity": false, + "openInterest": 23480000, + "openValue": 149731960000, + "fairMethod": "FundingRate", + "fairBasisRate": 1.115805, + "fairBasis": 0.0001, + "fairPrice": 0.6377, + "markMethod": "FairPrice", + "markPrice": 0.6377, + "indicativeSettlePrice": 0.6376, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "TRXUSDT", + "rootSymbol": "TRX", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-07T04:00:00.000Z", + "front": "2023-11-07T04:00:00.000Z", + "positionCurrency": "TRX", + "underlying": "TRX", + "quoteCurrency": "USDT", + "underlyingSymbol": "TRXT=", + "reference": "BMEX", + "referenceSymbol": ".BTRXT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 100000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".TRXBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".TRXUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.313513, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 184460000, + "totalVolume": 184460000, + "volume": 0, + "volume24h": 1788000, + "prevTotalTurnover": 2715447723000, + "totalTurnover": 2715447723000, + "turnover": 0, + "turnover24h": 56047779000, + "homeNotional24h": 178800, + "foreignNotional24h": 56047.778999999995, + "prevPrice24h": 0.30953, + "vwap": 0.31346633, + "highPrice": 0.32172, + "lowPrice": 0.29219, + "lastPrice": 0.2992, + "lastPriceProtected": 0.2992, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0334, + "bidPrice": 0.29794, + "midPrice": 0.298345, + "askPrice": 0.29875, + "impactBidPrice": 0.27978185, + "impactMidPrice": 0.299355, + "impactAskPrice": 0.31893666, + "hasLiquidity": false, + "openInterest": 3844000, + "openValue": 114462019200, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.000003, + "fairPrice": 0.297768, + "markMethod": "FairPrice", + "markPrice": 0.297768, + "indicativeSettlePrice": 0.297765, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SUIUSDT", + "rootSymbol": "SUI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-05-03T12:00:00.000Z", + "front": "2023-05-03T12:00:00.000Z", + "positionCurrency": "SUI", + "underlying": "SUI", + "quoteCurrency": "USDT", + "underlyingSymbol": "SUIT=", + "reference": "BMEX", + "referenceSymbol": ".BSUIT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 100, + "tickSize": 0.0001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SUIBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SUIUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 4.2032, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 176676003300, + "totalVolume": 176680909800, + "volume": 4906500, + "volume24h": 363987800, + "prevTotalTurnover": 228227839652700, + "totalTurnover": 228247292913890, + "turnover": 19453261190, + "turnover24h": 1506584501860, + "homeNotional24h": 363987.79999999993, + "foreignNotional24h": 1506584.5018599993, + "prevPrice24h": 4.1692, + "vwap": 4.13912, + "highPrice": 4.2741, + "lowPrice": 3.9569, + "lastPrice": 3.9596, + "lastPriceProtected": 3.9596, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0503, + "bidPrice": 3.9577, + "midPrice": 3.9604, + "askPrice": 3.9631, + "impactBidPrice": 3.95478, + "impactMidPrice": 3.95995, + "impactAskPrice": 3.96519, + "hasLiquidity": true, + "openInterest": 136484100, + "openValue": 539685428220, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 3.9542, + "markMethod": "FairPrice", + "markPrice": 3.9542, + "indicativeSettlePrice": 3.9542, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SHIBUSD", + "rootSymbol": "SHIB", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-08-30T04:00:00.000Z", + "front": "2023-08-30T04:00:00.000Z", + "underlying": "SHIB", + "quoteCurrency": "USD", + "underlyingSymbol": "SHIB=", + "reference": "BMEX", + "referenceSymbol": ".BSHIB", + "maxOrderQty": 50000000, + "maxPrice": 0.1, + "lotSize": 1, + "tickSize": 0.000000001, + "multiplier": 1000000000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SHIBBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".SHIBUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001235, + "indicativeFundingRate": 0.001337, + "prevClosePrice": 0.00003215, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1988229, + "totalVolume": 1988229, + "volume": 0, + "volume24h": 3238, + "prevTotalTurnover": 35879776068, + "totalTurnover": 35879776068, + "turnover": 0, + "turnover24h": 99916949, + "homeNotional24h": 3212799285.485344, + "foreignNotional24h": 99153.69996399146, + "prevPrice24h": 0.000031461, + "vwap": 0.000030858, + "highPrice": 0.000032571, + "lowPrice": 0.000029746, + "lastPrice": 0.00003016, + "lastPriceProtected": 0.00003016, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0414, + "bidPrice": 0.000030014, + "midPrice": 0.000030152, + "askPrice": 0.00003029, + "impactBidPrice": 0.000029384, + "impactMidPrice": 0.000029899, + "impactAskPrice": 0.000030414, + "hasLiquidity": false, + "openInterest": 25867, + "openValue": 775854798, + "fairMethod": "FundingRate", + "fairBasisRate": 1.352325, + "fairBasis": 0.000000004, + "fairPrice": 0.000029994, + "markMethod": "FairPrice", + "markPrice": 0.000029994, + "indicativeSettlePrice": 0.00002999, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "TIAUSDT", + "rootSymbol": "TIA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-01T04:00:00.000Z", + "front": "2023-11-01T04:00:00.000Z", + "positionCurrency": "TIA", + "underlying": "TIA", + "quoteCurrency": "USDT", + "underlyingSymbol": "TIAT=", + "reference": "BMEX", + "referenceSymbol": ".BTIAT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".TIABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".TIAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000924, + "indicativeFundingRate": 0.000479, + "prevClosePrice": 8.2976, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1674016, + "totalVolume": 1674016, + "volume": 0, + "volume24h": 2937, + "prevTotalTurnover": 11967013795600, + "totalTurnover": 11967013795600, + "turnover": 0, + "turnover24h": 22996775500, + "homeNotional24h": 2937, + "foreignNotional24h": 22996.775500000003, + "prevPrice24h": 8.2855, + "vwap": 7.830023, + "highPrice": 8.4118, + "lowPrice": 7.5107, + "lastPrice": 7.7877, + "lastPriceProtected": 7.7877, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0601, + "bidPrice": 7.6989, + "midPrice": 7.70605, + "askPrice": 7.7132, + "impactBidPrice": 6.758808, + "impactMidPrice": 7.69315, + "impactAskPrice": 8.627536, + "hasLiquidity": false, + "openInterest": 16055, + "openValue": 123795288500, + "fairMethod": "FundingRate", + "fairBasisRate": 1.0117800000000001, + "fairBasis": 0.0007, + "fairPrice": 7.7107, + "markMethod": "FairPrice", + "markPrice": 7.7107, + "indicativeSettlePrice": 7.71, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "EOSUSD", + "rootSymbol": "EOS", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-10-20T04:00:00.000Z", + "front": "2021-10-20T04:00:00.000Z", + "underlying": "EOS", + "quoteCurrency": "USD", + "underlyingSymbol": "EOS=", + "reference": "BMEX", + "referenceSymbol": ".BEOS", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".EOSBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".EOSUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000646, + "indicativeFundingRate": 0.000973, + "prevClosePrice": 1.3153, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 40717685, + "totalVolume": 40717685, + "volume": 0, + "volume24h": 27502, + "prevTotalTurnover": 612091438293, + "totalTurnover": 612091438293, + "turnover": 0, + "turnover24h": 335713645, + "homeNotional24h": 272500.1822004705, + "foreignNotional24h": 332643.2408540754, + "prevPrice24h": 1.2897, + "vwap": 1.2208, + "highPrice": 1.3229, + "lowPrice": 1.1876, + "lastPrice": 1.1876, + "lastPriceProtected": 1.1876, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.09, + "bidPrice": 1.1974, + "midPrice": 1.2017, + "askPrice": 1.206, + "impactBidPrice": 1.191, + "impactMidPrice": 1.2005, + "impactAskPrice": 1.21, + "hasLiquidity": false, + "openInterest": 58213, + "openValue": 699778473, + "fairMethod": "FundingRate", + "fairBasisRate": 0.7073699999999999, + "fairBasis": 0.0001, + "fairPrice": 1.2021, + "markMethod": "FairPrice", + "markPrice": 1.2021, + "indicativeSettlePrice": 1.202, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ADAUSD", + "rootSymbol": "ADA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-09-29T04:00:00.000Z", + "front": "2021-09-29T04:00:00.000Z", + "underlying": "ADA", + "quoteCurrency": "USD", + "underlyingSymbol": "ADA=", + "reference": "BMEX", + "referenceSymbol": ".BADA", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ADABON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".ADAUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000971, + "indicativeFundingRate": 0.000946, + "prevClosePrice": 1.2078, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2201371962, + "totalVolume": 2201372867, + "volume": 905, + "volume24h": 478422, + "prevTotalTurnover": 11027274417039, + "totalTurnover": 11027284608190, + "turnover": 10191151, + "turnover24h": 5565302456, + "homeNotional24h": 4760024.484522109, + "foreignNotional24h": 5537884.720979494, + "prevPrice24h": 1.21, + "vwap": 1.1633, + "highPrice": 1.221, + "lowPrice": 1.1077, + "lastPrice": 1.1206, + "lastPriceProtected": 1.1206, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0739, + "bidPrice": 1.1187, + "midPrice": 1.1195, + "askPrice": 1.1203, + "impactBidPrice": 1.1184, + "impactMidPrice": 1.11955, + "impactAskPrice": 1.1207, + "hasLiquidity": true, + "openInterest": 510936, + "openValue": 5721972264, + "fairMethod": "FundingRate", + "fairBasisRate": 1.063245, + "fairBasis": 0.0001, + "fairPrice": 1.1199, + "markMethod": "FairPrice", + "markPrice": 1.1199, + "indicativeSettlePrice": 1.1198, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ARBUSD", + "rootSymbol": "ARB", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-03-23T17:00:00.000Z", + "front": "2023-03-23T17:00:00.000Z", + "underlying": "ARB", + "quoteCurrency": "USD", + "underlyingSymbol": "ARB=", + "reference": "BMEX", + "referenceSymbol": ".BARB", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ARBBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".ARBUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000633, + "indicativeFundingRate": 0.000567, + "prevClosePrice": 1.153, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 181968998, + "totalVolume": 181969942, + "volume": 944, + "volume24h": 336516, + "prevTotalTurnover": 210798852682, + "totalTurnover": 210799864892, + "turnover": 1012210, + "turnover24h": 373612122, + "homeNotional24h": 334484.76560712274, + "foreignNotional24h": 371420.3780335065, + "prevPrice24h": 1.148, + "vwap": 1.111, + "highPrice": 1.167, + "lowPrice": 1.054, + "lastPrice": 1.07, + "lastPriceProtected": 1.07, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0679, + "bidPrice": 1.069, + "midPrice": 1.07, + "askPrice": 1.071, + "impactBidPrice": 1.068, + "impactMidPrice": 1.0705, + "impactAskPrice": 1.073, + "hasLiquidity": true, + "openInterest": 1209098, + "openValue": 1292525762, + "fairMethod": "FundingRate", + "fairBasisRate": 0.693135, + "fairBasis": 0, + "fairPrice": 1.069, + "markMethod": "FairPrice", + "markPrice": 1.069, + "indicativeSettlePrice": 1.069, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "NEARUSD", + "rootSymbol": "NEAR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-05-05T04:00:00.000Z", + "front": "2022-05-05T04:00:00.000Z", + "underlying": "NEAR", + "quoteCurrency": "USD", + "underlyingSymbol": "NEAR=", + "reference": "BMEX", + "referenceSymbol": ".BNEAR", + "maxOrderQty": 500000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".NEARBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".NEARUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.000223, + "prevClosePrice": 7.608, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 23765085, + "totalVolume": 23765166, + "volume": 81, + "volume24h": 9733, + "prevTotalTurnover": 899012228760, + "totalTurnover": 899018082120, + "turnover": 5853360, + "turnover24h": 726250310, + "homeNotional24h": 96746.18719406956, + "foreignNotional24h": 721993.6093116297, + "prevPrice24h": 7.563, + "vwap": 7.4618, + "highPrice": 7.867, + "lowPrice": 7.128, + "lastPrice": 7.2, + "lastPriceProtected": 7.2, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.048, + "bidPrice": 7.178, + "midPrice": 7.183, + "askPrice": 7.188, + "impactBidPrice": 7.173, + "impactMidPrice": 7.1825, + "impactAskPrice": 7.1922, + "hasLiquidity": true, + "openInterest": 27639, + "openValue": 1980057960, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 7.164, + "markMethod": "FairPrice", + "markPrice": 7.164, + "indicativeSettlePrice": 7.164, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DOTUSD", + "rootSymbol": "DOT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-09-29T04:00:00.000Z", + "front": "2021-09-29T04:00:00.000Z", + "underlying": "DOT", + "quoteCurrency": "USD", + "underlyingSymbol": "DOT=", + "reference": "BMEX", + "referenceSymbol": ".BDOT", + "maxOrderQty": 1000000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DOTBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".DOTUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000924, + "indicativeFundingRate": 0.000506, + "prevClosePrice": 10.462, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 545208113, + "totalVolume": 545209169, + "volume": 1056, + "volume24h": 217555, + "prevTotalTurnover": 4155664324371, + "totalTurnover": 4155674477243, + "turnover": 10152872, + "turnover24h": 2214968357, + "homeNotional24h": 216480.93547870664, + "foreignNotional24h": 2204376.2352793477, + "prevPrice24h": 10.428, + "vwap": 10.182, + "highPrice": 10.571, + "lowPrice": 9.434, + "lastPrice": 9.577, + "lastPriceProtected": 9.577, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0816, + "bidPrice": 9.57, + "midPrice": 9.5715, + "askPrice": 9.573, + "impactBidPrice": 9.563, + "impactMidPrice": 9.5715, + "impactAskPrice": 9.58, + "hasLiquidity": true, + "openInterest": 274623, + "openValue": 2624572011, + "fairMethod": "FundingRate", + "fairBasisRate": 1.0117800000000001, + "fairBasis": 0.001, + "fairPrice": 9.557, + "markMethod": "FairPrice", + "markPrice": 9.557, + "indicativeSettlePrice": 9.556, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ARBUSDT", + "rootSymbol": "ARB", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-03-23T17:00:00.000Z", + "front": "2023-03-23T17:00:00.000Z", + "positionCurrency": "ARB", + "underlying": "ARB", + "quoteCurrency": "USDT", + "underlyingSymbol": "ARBT=", + "reference": "BMEX", + "referenceSymbol": ".BARBT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 100, + "tickSize": 0.0001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ARBBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ARBUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000339, + "indicativeFundingRate": 0.000373, + "prevClosePrice": 1.15244, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 31722170900, + "totalVolume": 31722470900, + "volume": 300000, + "volume24h": 218997700, + "prevTotalTurnover": 39121775458720, + "totalTurnover": 39122100358720, + "turnover": 324900000, + "turnover24h": 243698878120, + "homeNotional24h": 218997.7, + "foreignNotional24h": 243698.87812, + "prevPrice24h": 1.1469, + "vwap": 1.1128, + "highPrice": 1.1652, + "lowPrice": 1.0579, + "lastPrice": 1.0828, + "lastPriceProtected": 1.0828, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0601, + "bidPrice": 1.0695, + "midPrice": 1.0707, + "askPrice": 1.0719, + "impactBidPrice": 1.06861, + "impactMidPrice": 1.0706, + "impactAskPrice": 1.07263, + "hasLiquidity": true, + "openInterest": 62946800, + "openValue": 67329156216, + "fairMethod": "FundingRate", + "fairBasisRate": 0.371205, + "fairBasis": 0.00004, + "fairPrice": 1.06962, + "markMethod": "FairPrice", + "markPrice": 1.06962, + "indicativeSettlePrice": 1.06958, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ADAUSDT", + "rootSymbol": "ADA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-12-15T04:00:00.000Z", + "front": "2021-12-15T04:00:00.000Z", + "positionCurrency": "ADA", + "underlying": "ADA", + "quoteCurrency": "USDT", + "underlyingSymbol": "ADAT=", + "reference": "BMEX", + "referenceSymbol": ".BADAT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.03, + "maintMargin": 0.015, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ADABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ADAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.20714, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 43254683000, + "totalVolume": 43254883000, + "volume": 200000, + "volume24h": 34761000, + "prevTotalTurnover": 230822801634000, + "totalTurnover": 230825050995000, + "turnover": 2249361000, + "turnover24h": 402154324000, + "homeNotional24h": 347610, + "foreignNotional24h": 402154.324, + "prevPrice24h": 1.2122, + "vwap": 1.1569125, + "highPrice": 1.2206, + "lowPrice": 1.1106, + "lastPrice": 1.1215, + "lastPriceProtected": 1.1215, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0748, + "bidPrice": 1.1215, + "midPrice": 1.12225, + "askPrice": 1.123, + "impactBidPrice": 1.1201375, + "impactMidPrice": 1.1216, + "impactAskPrice": 1.1230796, + "hasLiquidity": true, + "openInterest": 55031000, + "openValue": 616330690700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00001, + "fairPrice": 1.11997, + "markMethod": "FairPrice", + "markPrice": 1.11997, + "indicativeSettlePrice": 1.11996, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "100BONKUSDT", + "rootSymbol": "BONK", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-21T04:00:00.000Z", + "front": "2023-11-21T04:00:00.000Z", + "positionCurrency": "100BONK", + "underlying": "100BONK", + "quoteCurrency": "USDT", + "underlyingSymbol": "100BONKT=", + "reference": "BMEX", + "referenceSymbol": ".B100BONKT", + "maxOrderQty": 1000000000, + "maxPrice": 10, + "lotSize": 1000, + "tickSize": 0.0000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".100BONKBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".100BONKUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.0045726, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1059433000, + "totalVolume": 1059433000, + "volume": 0, + "volume24h": 1087000, + "prevTotalTurnover": 2527625831800, + "totalTurnover": 2527625831800, + "turnover": 0, + "turnover24h": 4883178800, + "homeNotional24h": 1087000, + "foreignNotional24h": 4883.1788, + "prevPrice24h": 0.0045632, + "vwap": 0.004492346, + "highPrice": 0.0045602, + "lowPrice": 0.0042964, + "lastPrice": 0.0042964, + "lastPriceProtected": 0.0042964, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0585, + "bidPrice": 0.0042978, + "midPrice": 0.00431875, + "askPrice": 0.0043397, + "impactBidPrice": 0.000030112, + "impactMidPrice": 0.0072858, + "impactAskPrice": 0.014541507, + "hasLiquidity": false, + "openInterest": 8841000, + "openValue": 38090564400, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.0043084, + "markMethod": "FairPrice", + "markPrice": 0.0043084, + "indicativeSettlePrice": 0.0043084, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "WUSDT", + "rootSymbol": "W", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-03T13:00:00.000Z", + "front": "2024-04-03T13:00:00.000Z", + "positionCurrency": "W", + "underlying": "W", + "quoteCurrency": "USDT", + "underlyingSymbol": "WT=", + "reference": "BMEX", + "referenceSymbol": ".BWT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".WBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".WUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.3815, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1233566, + "totalVolume": 1233566, + "volume": 0, + "volume24h": 264, + "prevTotalTurnover": 533614095300, + "totalTurnover": 533614095300, + "turnover": 0, + "turnover24h": 94967400, + "homeNotional24h": 264, + "foreignNotional24h": 94.9674, + "prevPrice24h": 0.3932, + "vwap": 0.359726, + "highPrice": 0.364, + "lowPrice": 0.3492, + "lastPrice": 0.3492, + "lastPriceProtected": 0.3492, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1119, + "bidPrice": 0.3533, + "midPrice": 0.35645, + "askPrice": 0.3596, + "hasLiquidity": false, + "openInterest": 24841, + "openValue": 8766388900, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.3529, + "markMethod": "FairPrice", + "markPrice": 0.3529, + "indicativeSettlePrice": 0.3529, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "NOTUSDT", + "rootSymbol": "NOT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-05-17T04:00:00.000Z", + "front": "2024-05-17T04:00:00.000Z", + "positionCurrency": "NOT", + "underlying": "NOT", + "quoteCurrency": "USDT", + "underlyingSymbol": "NOTT=", + "reference": "BMEX", + "referenceSymbol": ".BNOTT", + "maxOrderQty": 1000000000, + "maxPrice": 10, + "lotSize": 1000, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".NOTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".NOTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.00975, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 147619000, + "totalVolume": 147619000, + "volume": 0, + "volume24h": 1030000, + "prevTotalTurnover": 1705310202000, + "totalTurnover": 1705310202000, + "turnover": 0, + "turnover24h": 10129592000, + "homeNotional24h": 1030000, + "foreignNotional24h": 10129.592, + "prevPrice24h": 0.009759, + "vwap": 0.009834556, + "highPrice": 0.009959, + "lowPrice": 0.009316, + "lastPrice": 0.009316, + "lastPriceProtected": 0.009316, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.074, + "bidPrice": 0.009214, + "midPrice": 0.0092435, + "askPrice": 0.009273, + "hasLiquidity": false, + "openInterest": 172000, + "openValue": 1587560000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.00923, + "markMethod": "FairPrice", + "markPrice": 0.00923, + "indicativeSettlePrice": 0.00923, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ONDOUSDT", + "rootSymbol": "ONDO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-19T04:00:00.000Z", + "front": "2024-01-19T04:00:00.000Z", + "positionCurrency": "ONDO", + "underlying": "ONDO", + "quoteCurrency": "USDT", + "underlyingSymbol": "ONDOT=", + "reference": "BMEX", + "referenceSymbol": ".BONDOT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ONDOBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ONDOUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.69572, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 3680300, + "totalVolume": 3680300, + "volume": 0, + "volume24h": 290, + "prevTotalTurnover": 2000528789100, + "totalTurnover": 2000528789100, + "turnover": 0, + "turnover24h": 459985700, + "homeNotional24h": 290, + "foreignNotional24h": 459.9857, + "prevPrice24h": 1.6228, + "vwap": 1.5861576, + "highPrice": 1.62, + "lowPrice": 1.51907, + "lastPrice": 1.51907, + "lastPriceProtected": 1.51907, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0639, + "bidPrice": 1.44671, + "midPrice": 1.50166, + "askPrice": 1.55661, + "hasLiquidity": false, + "openInterest": 14930, + "openValue": 23238097100, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00002, + "fairPrice": 1.55647, + "markMethod": "FairPrice", + "markPrice": 1.55647, + "indicativeSettlePrice": 1.55645, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XAIUSDT", + "rootSymbol": "XAI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-09T12:00:00.000Z", + "front": "2024-01-09T12:00:00.000Z", + "positionCurrency": "XAI", + "underlying": "XAI", + "quoteCurrency": "USDT", + "underlyingSymbol": "XAIT=", + "reference": "BMEX", + "referenceSymbol": ".BXAIT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XAIBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".XAIUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.3974, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1806970, + "totalVolume": 1806970, + "volume": 0, + "volume24h": 6910, + "prevTotalTurnover": 1241915767000, + "totalTurnover": 1241915767000, + "turnover": 0, + "turnover24h": 2633966000, + "homeNotional24h": 6910, + "foreignNotional24h": 2633.966, + "prevPrice24h": 0.417, + "vwap": 0.3811818, + "highPrice": 0.4011, + "lowPrice": 0.3685, + "lastPrice": 0.3734, + "lastPriceProtected": 0.3734, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.1046, + "bidPrice": 0.371, + "midPrice": 0.37145, + "askPrice": 0.3719, + "hasLiquidity": false, + "openInterest": 9400, + "openValue": 3480820000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.3703, + "markMethod": "FairPrice", + "markPrice": 0.3703, + "indicativeSettlePrice": 0.3703, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BLASTUSDT", + "rootSymbol": "BLAST", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-06-27T04:00:00.000Z", + "front": "2024-06-27T04:00:00.000Z", + "positionCurrency": "BLAST", + "underlying": "BLAST", + "quoteCurrency": "USDT", + "underlyingSymbol": "BLASTT=", + "reference": "BMEX", + "referenceSymbol": ".BBLASTT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 100, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BLASTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BLASTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.013609, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2141800, + "totalVolume": 2141800, + "volume": 0, + "volume24h": 1100, + "prevTotalTurnover": 40065316300, + "totalTurnover": 40065316300, + "turnover": 0, + "turnover24h": 13640300, + "homeNotional24h": 1100, + "foreignNotional24h": 13.6403, + "prevPrice24h": 0.0139, + "vwap": 0.01240028, + "highPrice": 0.012521, + "lowPrice": 0.012295, + "lastPrice": 0.012295, + "lastPriceProtected": 0.012295, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1155, + "bidPrice": 0.012325, + "midPrice": 0.0123625, + "askPrice": 0.0124, + "impactBidPrice": 0.01161948, + "impactMidPrice": 0.01244, + "impactAskPrice": 0.01326113, + "hasLiquidity": false, + "openInterest": 196200, + "openValue": 2429348400, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.012382, + "markMethod": "FairPrice", + "markPrice": 0.012382, + "indicativeSettlePrice": 0.012382, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "PEPEUSD", + "rootSymbol": "PEPE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-05-03T04:00:00.000Z", + "front": "2023-05-03T04:00:00.000Z", + "underlying": "PEPE", + "quoteCurrency": "USD", + "underlyingSymbol": "PEPE=", + "reference": "BMEX", + "referenceSymbol": ".BPEPE", + "maxOrderQty": 500000, + "maxPrice": 0.1, + "lotSize": 1, + "tickSize": 0.000000001, + "multiplier": 1000000000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".PEPEBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".PEPEUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000528, + "indicativeFundingRate": 0.000369, + "prevClosePrice": 0.000025195, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 581541828, + "totalVolume": 581541876, + "volume": 48, + "volume24h": 115213, + "prevTotalTurnover": 1181416120431, + "totalTurnover": 1181417334601, + "turnover": 1214170, + "turnover24h": 3040715905, + "homeNotional24h": 114805970065.66728, + "foreignNotional24h": 3030071.099034252, + "prevPrice24h": 0.000024985, + "vwap": 0.000026393, + "highPrice": 0.000027521, + "lowPrice": 0.000024656, + "lastPrice": 0.000025097, + "lastPriceProtected": 0.000025097, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0045, + "bidPrice": 0.00002507, + "midPrice": 0.0000250995, + "askPrice": 0.000025129, + "impactBidPrice": 0.000025065, + "impactMidPrice": 0.0000250985, + "impactAskPrice": 0.000025132, + "hasLiquidity": true, + "openInterest": 192131, + "openValue": 4808462537, + "fairMethod": "FundingRate", + "fairBasisRate": 0.57816, + "fairBasis": 0.000000001, + "fairPrice": 0.000025027, + "markMethod": "FairPrice", + "markPrice": 0.000025027, + "indicativeSettlePrice": 0.000025026, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MEMEUSDT", + "rootSymbol": "MEME", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-03T12:00:00.000Z", + "front": "2023-11-03T12:00:00.000Z", + "positionCurrency": "MEME", + "underlying": "MEME", + "quoteCurrency": "USDT", + "underlyingSymbol": "MEMET=", + "reference": "BMEX", + "referenceSymbol": ".BMEMET", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 100, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MEMEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MEMEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.01763, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 89090100, + "totalVolume": 89090100, + "volume": 0, + "volume24h": 407200, + "prevTotalTurnover": 2261391283000, + "totalTurnover": 2261391283000, + "turnover": 0, + "turnover24h": 7041600000, + "homeNotional24h": 407200, + "foreignNotional24h": 7041.600000000001, + "prevPrice24h": 0.0175, + "vwap": 0.01729274, + "highPrice": 0.01843, + "lowPrice": 0.01663, + "lastPrice": 0.01663, + "lastPriceProtected": 0.01663, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0822, + "bidPrice": 0.01671, + "midPrice": 0.016785, + "askPrice": 0.01686, + "hasLiquidity": false, + "openInterest": 1782500, + "openValue": 29732100000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.01668, + "markMethod": "FairPrice", + "markPrice": 0.01668, + "indicativeSettlePrice": 0.01668, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XRDUSDT", + "rootSymbol": "XRD", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-22T12:00:00.000Z", + "front": "2024-01-22T12:00:00.000Z", + "positionCurrency": "XRD", + "underlying": "XRD", + "quoteCurrency": "USDT", + "underlyingSymbol": "XRDT=", + "reference": "BMEX", + "referenceSymbol": ".BXRDT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 100, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XRDBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".XRDUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": -0.000041, + "prevClosePrice": 0.03675, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 57941200, + "totalVolume": 57941200, + "volume": 0, + "volume24h": 500, + "prevTotalTurnover": 1998736196000, + "totalTurnover": 1998736196000, + "turnover": 0, + "turnover24h": 16225000, + "homeNotional24h": 500, + "foreignNotional24h": 16.225, + "prevPrice24h": 0.03742, + "vwap": 0.03245, + "highPrice": 0.03449, + "lowPrice": 0.02939, + "lastPrice": 0.02939, + "lastPriceProtected": 0.03449, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.2146, + "bidPrice": 0.02722, + "midPrice": 0.028745, + "askPrice": 0.03027, + "impactBidPrice": 0.01811146, + "impactMidPrice": 0.027525, + "impactAskPrice": 0.03694507, + "hasLiquidity": false, + "openInterest": 966500, + "openValue": 35779830000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.03702, + "markMethod": "FairPrice", + "markPrice": 0.03702, + "indicativeSettlePrice": 0.03702, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "WOOUSDT", + "rootSymbol": "WOO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-12-14T04:00:00.000Z", + "front": "2023-12-14T04:00:00.000Z", + "positionCurrency": "WOO", + "underlying": "WOO", + "quoteCurrency": "USDT", + "underlyingSymbol": "WOOT=", + "reference": "BMEX", + "referenceSymbol": ".BWOOT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".WOOBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".WOOUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.3375, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 3898860, + "totalVolume": 3898860, + "volume": 0, + "volume24h": 2680, + "prevTotalTurnover": 1359792628000, + "totalTurnover": 1359792628000, + "turnover": 0, + "turnover24h": 849944000, + "homeNotional24h": 2680, + "foreignNotional24h": 849.944, + "prevPrice24h": 0.3359, + "vwap": 0.3171434, + "highPrice": 0.3408, + "lowPrice": 0.3147, + "lastPrice": 0.3147, + "lastPriceProtected": 0.3147, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0631, + "bidPrice": 0.3164, + "midPrice": 0.3169, + "askPrice": 0.3174, + "hasLiquidity": false, + "openInterest": 10520, + "openValue": 3323268000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.3159, + "markMethod": "FairPrice", + "markPrice": 0.3159, + "indicativeSettlePrice": 0.3159, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MEWUSDT", + "rootSymbol": "MEW", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-04T04:00:00.000Z", + "front": "2024-04-04T04:00:00.000Z", + "positionCurrency": "MEW", + "underlying": "MEW", + "quoteCurrency": "USDT", + "underlyingSymbol": "MEWT=", + "reference": "BMEX", + "referenceSymbol": ".BMEWT", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MEWBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MEWUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.009817, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 61346000, + "totalVolume": 61346000, + "volume": 0, + "volume24h": 2000, + "prevTotalTurnover": 404552569000, + "totalTurnover": 404552569000, + "turnover": 0, + "turnover24h": 18637000, + "homeNotional24h": 2000, + "foreignNotional24h": 18.637, + "prevPrice24h": 0.009915, + "vwap": 0.0093185, + "highPrice": 0.009354, + "lowPrice": 0.009283, + "lastPrice": 0.009283, + "lastPriceProtected": 0.009283, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0637, + "bidPrice": 0.009099, + "midPrice": 0.0091065, + "askPrice": 0.009114, + "hasLiquidity": false, + "openInterest": 230000, + "openValue": 2089090000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.009083, + "markMethod": "FairPrice", + "markPrice": 0.009083, + "indicativeSettlePrice": 0.009083, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ZROUSDT", + "rootSymbol": "ZRO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-06-21T04:00:00.000Z", + "front": "2024-06-21T04:00:00.000Z", + "positionCurrency": "ZRO", + "underlying": "ZRO", + "quoteCurrency": "USDT", + "underlyingSymbol": "ZROT=", + "reference": "BMEX", + "referenceSymbol": ".BZROT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ZROBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ZROUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 6.5574, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 97473, + "totalVolume": 97473, + "volume": 0, + "volume24h": 64, + "prevTotalTurnover": 394220688500, + "totalTurnover": 394220688500, + "turnover": 0, + "turnover24h": 407683800, + "homeNotional24h": 64, + "foreignNotional24h": 407.6838, + "prevPrice24h": 6.6386, + "vwap": 6.37006, + "highPrice": 6.5816, + "lowPrice": 6.0926, + "lastPrice": 6.1264, + "lastPriceProtected": 6.1264, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0772, + "bidPrice": 6.2161, + "midPrice": 6.25655, + "askPrice": 6.297, + "impactBidPrice": 0.279292, + "impactMidPrice": 11.4093, + "impactAskPrice": 22.539346, + "hasLiquidity": false, + "openInterest": 1674, + "openValue": 10390852800, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.0001, + "fairPrice": 6.2072, + "markMethod": "FairPrice", + "markPrice": 6.2072, + "indicativeSettlePrice": 6.2071, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "JUPUSDT", + "rootSymbol": "JUP", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-02-01T04:00:00.000Z", + "front": "2024-02-01T04:00:00.000Z", + "positionCurrency": "JUP", + "underlying": "JUP", + "quoteCurrency": "USDT", + "underlyingSymbol": "JUPT=", + "reference": "BMEX", + "referenceSymbol": ".BJUPT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".JUPBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".JUPUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00112, + "indicativeFundingRate": 0.000793, + "prevClosePrice": 1.3244, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2248040, + "totalVolume": 2248040, + "volume": 0, + "volume24h": 8300, + "prevTotalTurnover": 1954924224000, + "totalTurnover": 1954924224000, + "turnover": 0, + "turnover24h": 10806103000, + "homeNotional24h": 8300, + "foreignNotional24h": 10806.103000000001, + "prevPrice24h": 1.3169, + "vwap": 1.3019402, + "highPrice": 1.3384, + "lowPrice": 1.2165, + "lastPrice": 1.2288, + "lastPriceProtected": 1.2288, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0669, + "bidPrice": 1.2193, + "midPrice": 1.22175, + "askPrice": 1.2242, + "impactBidPrice": 1.2127582, + "impactMidPrice": 1.22245, + "impactAskPrice": 1.2321684, + "hasLiquidity": true, + "openInterest": 52270, + "openValue": 63832124000, + "fairMethod": "FundingRate", + "fairBasisRate": 1.2264, + "fairBasis": 0.0001, + "fairPrice": 1.2212, + "markMethod": "FairPrice", + "markPrice": 1.2212, + "indicativeSettlePrice": 1.2211, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "AEVOUSDT", + "rootSymbol": "AEVO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-03-13T12:00:00.000Z", + "front": "2024-03-13T12:00:00.000Z", + "positionCurrency": "AEVO", + "underlying": "AEVO", + "quoteCurrency": "USDT", + "underlyingSymbol": "AEVOT=", + "reference": "BMEX", + "referenceSymbol": ".BAEVOT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".AEVOBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".AEVOUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.5962, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 829560, + "totalVolume": 829560, + "volume": 0, + "volume24h": 12739, + "prevTotalTurnover": 653412967400, + "totalTurnover": 653412967400, + "turnover": 0, + "turnover24h": 7240079400, + "homeNotional24h": 12739, + "foreignNotional24h": 7240.079399999999, + "prevPrice24h": 0.6336, + "vwap": 0.568341, + "highPrice": 0.6008, + "lowPrice": 0.5519, + "lastPrice": 0.5654, + "lastPriceProtected": 0.5654, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.1076, + "bidPrice": 0.5592, + "midPrice": 0.56545, + "askPrice": 0.5717, + "hasLiquidity": false, + "openInterest": 28836, + "openValue": 16047234000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.5565, + "markMethod": "FairPrice", + "markPrice": 0.5565, + "indicativeSettlePrice": 0.5565, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "PYTHUSDT", + "rootSymbol": "PYTH", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-20T14:15:00.000Z", + "front": "2023-11-20T14:15:00.000Z", + "positionCurrency": "PYTH", + "underlying": "PYTH", + "quoteCurrency": "USDT", + "underlyingSymbol": "PYTHT=", + "reference": "BMEX", + "referenceSymbol": ".BPYTHT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".PYTHBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".PYTHUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.5094, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 7749140, + "totalVolume": 7749240, + "volume": 100, + "volume24h": 5940, + "prevTotalTurnover": 3489370408000, + "totalTurnover": 3489417938000, + "turnover": 47530000, + "turnover24h": 2848925000, + "homeNotional24h": 5940, + "foreignNotional24h": 2848.9249999999997, + "prevPrice24h": 0.5364, + "vwap": 0.4796171, + "highPrice": 0.5001, + "lowPrice": 0.4649, + "lastPrice": 0.4753, + "lastPriceProtected": 0.4753, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.1139, + "bidPrice": 0.4704, + "midPrice": 0.47055, + "askPrice": 0.4707, + "impactBidPrice": 0.4678032, + "impactMidPrice": 0.46975, + "impactAskPrice": 0.4717418, + "hasLiquidity": true, + "openInterest": 54640, + "openValue": 25662222400, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.46966, + "markMethod": "FairPrice", + "markPrice": 0.46966, + "indicativeSettlePrice": 0.46966, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ENAUSDT", + "rootSymbol": "ENA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-02T12:00:00.000Z", + "front": "2024-04-02T12:00:00.000Z", + "positionCurrency": "ENA", + "underlying": "ENA", + "quoteCurrency": "USDT", + "underlyingSymbol": "ENAT=", + "reference": "BMEX", + "referenceSymbol": ".BENAT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ENABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ENAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": -0.000825, + "indicativeFundingRate": -0.000325, + "prevClosePrice": 1.0084, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 15913430, + "totalVolume": 15913430, + "volume": 0, + "volume24h": 3200, + "prevTotalTurnover": 7108399624000, + "totalTurnover": 7108399624000, + "turnover": 0, + "turnover24h": 3255079000, + "homeNotional24h": 3200, + "foreignNotional24h": 3255.0789999999993, + "prevPrice24h": 0.9955, + "vwap": 1.0172122, + "highPrice": 1.0337, + "lowPrice": 0.9567, + "lastPrice": 0.9704, + "lastPriceProtected": 0.9704, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0252, + "bidPrice": 0.9607, + "midPrice": 0.96495, + "askPrice": 0.9692, + "impactBidPrice": 0.0253042, + "impactMidPrice": 0.49835, + "impactAskPrice": 0.9714, + "hasLiquidity": false, + "openInterest": 140400, + "openValue": 134713800000, + "fairMethod": "FundingRate", + "fairBasisRate": -0.903375, + "fairBasis": -0.0001, + "fairPrice": 0.9595, + "markMethod": "FairPrice", + "markPrice": 0.9595, + "indicativeSettlePrice": 0.9596, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BOMEUSDT", + "rootSymbol": "BOME", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-03-18T04:00:00.000Z", + "front": "2024-03-18T04:00:00.000Z", + "positionCurrency": "BOME", + "underlying": "BOME", + "quoteCurrency": "USDT", + "underlyingSymbol": "BOMET=", + "reference": "BMEX", + "referenceSymbol": ".BBOMET", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BOMEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BOMEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.010383, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 45016210, + "totalVolume": 45016210, + "volume": 0, + "volume24h": 19440, + "prevTotalTurnover": 441995269180, + "totalTurnover": 441995269180, + "turnover": 0, + "turnover24h": 202728880, + "homeNotional24h": 19440, + "foreignNotional24h": 202.72888, + "prevPrice24h": 0.01065, + "vwap": 0.0104285, + "highPrice": 0.010864, + "lowPrice": 0.01001, + "lastPrice": 0.01001, + "lastPriceProtected": 0.01001, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0982, + "bidPrice": 0.009681, + "midPrice": 0.0099615, + "askPrice": 0.010242, + "hasLiquidity": false, + "openInterest": 392150, + "openValue": 3791306200, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.009668, + "markMethod": "FairPrice", + "markPrice": 0.009668, + "indicativeSettlePrice": 0.009668, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "STRKUSDT", + "rootSymbol": "STRK", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-02-21T04:00:00.000Z", + "front": "2024-02-21T04:00:00.000Z", + "positionCurrency": "STRK", + "underlying": "STRK", + "quoteCurrency": "USDT", + "underlyingSymbol": "STRKT=", + "reference": "BMEX", + "referenceSymbol": ".BSTRKT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".STRKBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".STRKUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.7568, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 461409, + "totalVolume": 461409, + "volume": 0, + "volume24h": 98, + "prevTotalTurnover": 422356909300, + "totalTurnover": 422356909300, + "turnover": 0, + "turnover24h": 71608000, + "homeNotional24h": 98, + "foreignNotional24h": 71.60799999999999, + "prevPrice24h": 0.7557, + "vwap": 0.730694, + "highPrice": 0.7421, + "lowPrice": 0.7052, + "lastPrice": 0.7052, + "lastPriceProtected": 0.7052, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0668, + "bidPrice": 0.7033, + "midPrice": 0.7092, + "askPrice": 0.7151, + "impactBidPrice": 0.019949, + "impactMidPrice": 1.24305, + "impactAskPrice": 2.466177, + "hasLiquidity": false, + "openInterest": 7571, + "openValue": 5311813600, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.7016, + "markMethod": "FairPrice", + "markPrice": 0.7016, + "indicativeSettlePrice": 0.7016, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "PIXELUSDT", + "rootSymbol": "PIXEL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-02-19T12:00:00.000Z", + "front": "2024-02-19T12:00:00.000Z", + "positionCurrency": "PIXEL", + "underlying": "PIXEL", + "quoteCurrency": "USDT", + "underlyingSymbol": "PIXELT=", + "reference": "BMEX", + "referenceSymbol": ".BPIXELT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".PIXELBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".PIXELUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.2784, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2450220, + "totalVolume": 2450220, + "volume": 0, + "volume24h": 16040, + "prevTotalTurnover": 867710327000, + "totalTurnover": 867710327000, + "turnover": 0, + "turnover24h": 4310531000, + "homeNotional24h": 16040, + "foreignNotional24h": 4310.531, + "prevPrice24h": 0.2808, + "vwap": 0.2687364, + "highPrice": 0.2813, + "lowPrice": 0.2557, + "lastPrice": 0.2566, + "lastPriceProtected": 0.2566, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0862, + "bidPrice": 0.2582, + "midPrice": 0.2586, + "askPrice": 0.259, + "hasLiquidity": false, + "openInterest": 13990, + "openValue": 3616415000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.2585, + "markMethod": "FairPrice", + "markPrice": 0.2585, + "indicativeSettlePrice": 0.2585, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BANANAUSDT", + "rootSymbol": "BANANA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-08-16T04:00:00.000Z", + "front": "2024-08-16T04:00:00.000Z", + "positionCurrency": "BANANA", + "underlying": "BANANA", + "quoteCurrency": "USDT", + "underlyingSymbol": "BANANAT=", + "reference": "BMEX", + "referenceSymbol": ".BBANANAT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BANANABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BANANAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 58.65, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 21130000, + "totalVolume": 21130000, + "volume": 0, + "volume24h": 346000, + "prevTotalTurnover": 119288550000, + "totalTurnover": 119288550000, + "turnover": 0, + "turnover24h": 1956861000, + "homeNotional24h": 34.599999999999994, + "foreignNotional24h": 1956.8609999999999, + "prevPrice24h": 58.26, + "vwap": 56.55668, + "highPrice": 57, + "lowPrice": 55.95, + "lastPrice": 56.11, + "lastPriceProtected": 56.11, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0369, + "bidPrice": 56.01, + "midPrice": 57.76, + "askPrice": 59.51, + "hasLiquidity": false, + "openInterest": 145000, + "openValue": 810993700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.0006, + "fairPrice": 55.9306, + "markMethod": "FairPrice", + "markPrice": 55.9306, + "indicativeSettlePrice": 55.93, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SAGAUSDT", + "rootSymbol": "SAGA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-10T12:00:00.000Z", + "front": "2024-04-10T12:00:00.000Z", + "positionCurrency": "SAGA", + "underlying": "SAGA", + "quoteCurrency": "USDT", + "underlyingSymbol": "SAGAT=", + "reference": "BMEX", + "referenceSymbol": ".BSAGAT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SAGABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SAGAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 2.6921, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 147831, + "totalVolume": 147831, + "volume": 0, + "volume24h": 100, + "prevTotalTurnover": 352809547800, + "totalTurnover": 352809547800, + "turnover": 0, + "turnover24h": 261462600, + "homeNotional24h": 100, + "foreignNotional24h": 261.4626, + "prevPrice24h": 2.695, + "vwap": 2.614627, + "highPrice": 2.8221, + "lowPrice": 2.5412, + "lastPrice": 2.5412, + "lastPriceProtected": 2.5412, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1269, + "bidPrice": 2.4701, + "midPrice": 2.4929, + "askPrice": 2.5157, + "hasLiquidity": false, + "openInterest": 2108, + "openValue": 5201700800, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 2.4676, + "markMethod": "FairPrice", + "markPrice": 2.4676, + "indicativeSettlePrice": 2.4676, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DYMUSDT", + "rootSymbol": "DYM", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-02-07T04:00:00.000Z", + "front": "2024-02-07T04:00:00.000Z", + "positionCurrency": "DYM", + "underlying": "DYM", + "quoteCurrency": "USDT", + "underlyingSymbol": "DYMT=", + "reference": "BMEX", + "referenceSymbol": ".BDYMT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DYMBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".DYMUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.002006, + "indicativeFundingRate": 0.001524, + "prevClosePrice": 2.5393, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 394978, + "totalVolume": 394978, + "volume": 0, + "volume24h": 768, + "prevTotalTurnover": 1305159556600, + "totalTurnover": 1305159556600, + "turnover": 0, + "turnover24h": 1880080100, + "homeNotional24h": 768, + "foreignNotional24h": 1880.0800999999997, + "prevPrice24h": 2.5354, + "vwap": 2.448022, + "highPrice": 2.4906, + "lowPrice": 2.3534, + "lastPrice": 2.3543, + "lastPriceProtected": 2.3543, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0714, + "bidPrice": 2.3458, + "midPrice": 2.34995, + "askPrice": 2.3541, + "impactBidPrice": 0.09512, + "impactMidPrice": 5.58555, + "impactAskPrice": 11.076034, + "hasLiquidity": false, + "openInterest": 5369, + "openValue": 12614465500, + "fairMethod": "FundingRate", + "fairBasisRate": 2.19657, + "fairBasis": 0.0005, + "fairPrice": 2.3495, + "markMethod": "FairPrice", + "markPrice": 2.3495, + "indicativeSettlePrice": 2.349, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "IOUSDT", + "rootSymbol": "IO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-06-12T04:00:00.000Z", + "front": "2024-06-12T04:00:00.000Z", + "positionCurrency": "IO", + "underlying": "IO", + "quoteCurrency": "USDT", + "underlyingSymbol": "IOT=", + "reference": "BMEX", + "referenceSymbol": ".BIOT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".IOBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".IOUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 3.5583, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 103228, + "totalVolume": 103228, + "volume": 0, + "volume24h": 191, + "prevTotalTurnover": 214025945400, + "totalTurnover": 214025945400, + "turnover": 0, + "turnover24h": 636036700, + "homeNotional24h": 191, + "foreignNotional24h": 636.0367, + "prevPrice24h": 3.7237, + "vwap": 3.330036, + "highPrice": 3.4481, + "lowPrice": 3.2717, + "lastPrice": 3.2781, + "lastPriceProtected": 3.2781, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1197, + "bidPrice": 3.2945, + "midPrice": 3.2978, + "askPrice": 3.3011, + "hasLiquidity": false, + "openInterest": 547, + "openValue": 1799411200, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 3.2896, + "markMethod": "FairPrice", + "markPrice": 3.2896, + "indicativeSettlePrice": 3.2896, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MYROUSDT", + "rootSymbol": "MYRO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-23T04:00:00.000Z", + "front": "2024-01-23T04:00:00.000Z", + "positionCurrency": "MYRO", + "underlying": "MYRO", + "quoteCurrency": "USDT", + "underlyingSymbol": "MYROT=", + "reference": "BMEX", + "referenceSymbol": ".BMYROT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MYROBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MYROUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.13294, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 5859870, + "totalVolume": 5859870, + "volume": 0, + "volume24h": 160, + "prevTotalTurnover": 843256713600, + "totalTurnover": 843256713600, + "turnover": 0, + "turnover24h": 20453600, + "homeNotional24h": 160, + "foreignNotional24h": 20.453599999999998, + "prevPrice24h": 0.13838, + "vwap": 0.127835, + "highPrice": 0.12871, + "lowPrice": 0.12693, + "lastPrice": 0.12699, + "lastPriceProtected": 0.12699, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0907, + "bidPrice": 0.11958, + "midPrice": 0.1199, + "askPrice": 0.12022, + "hasLiquidity": false, + "openInterest": 36380, + "openValue": 4345591000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.11945, + "markMethod": "FairPrice", + "markPrice": 0.11945, + "indicativeSettlePrice": 0.11945, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "WLDUSDT", + "rootSymbol": "WLD", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-02-22T04:00:00.000Z", + "front": "2024-02-22T04:00:00.000Z", + "positionCurrency": "WLD", + "underlying": "WLD", + "quoteCurrency": "USDT", + "underlyingSymbol": "WLDT=", + "reference": "BMEX", + "referenceSymbol": ".BWLDT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".WLDBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".WLDUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000704, + "indicativeFundingRate": 0.000444, + "prevClosePrice": 3.71, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1649456, + "totalVolume": 1650406, + "volume": 950, + "volume24h": 21527, + "prevTotalTurnover": 5033974425000, + "totalTurnover": 5037267713000, + "turnover": 3293288000, + "turnover24h": 77873904000, + "homeNotional24h": 21527, + "foreignNotional24h": 77873.904, + "prevPrice24h": 3.679, + "vwap": 3.6175, + "highPrice": 3.722, + "lowPrice": 3.382, + "lastPrice": 3.419, + "lastPriceProtected": 3.419, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0707, + "bidPrice": 3.423, + "midPrice": 3.428, + "askPrice": 3.433, + "impactBidPrice": 0.27999, + "impactMidPrice": 1.8825, + "impactAskPrice": 3.485459, + "hasLiquidity": false, + "openInterest": 20009, + "openValue": 68530825000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.77088, + "fairBasis": 0, + "fairPrice": 3.425, + "markMethod": "FairPrice", + "markPrice": 3.425, + "indicativeSettlePrice": 3.425, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ZKUSDT", + "rootSymbol": "ZK", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-06-17T12:00:00.000Z", + "front": "2024-06-17T12:00:00.000Z", + "positionCurrency": "ZK", + "underlying": "ZK", + "quoteCurrency": "USDT", + "underlyingSymbol": "ZKT=", + "reference": "BMEX", + "referenceSymbol": ".BZKT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ZKBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ZKUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.2494, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1794530, + "totalVolume": 1794630, + "volume": 100, + "volume24h": 17510, + "prevTotalTurnover": 271911761000, + "totalTurnover": 271934961000, + "turnover": 23200000, + "turnover24h": 4214002000, + "homeNotional24h": 17510, + "foreignNotional24h": 4214.002, + "prevPrice24h": 0.2484, + "vwap": 0.2406627, + "highPrice": 0.2535, + "lowPrice": 0.225, + "lastPrice": 0.232, + "lastPriceProtected": 0.232, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.066, + "bidPrice": 0.2292, + "midPrice": 0.22965, + "askPrice": 0.2301, + "impactBidPrice": 0.227927, + "impactMidPrice": 0.22955, + "impactAskPrice": 0.2312167, + "hasLiquidity": true, + "openInterest": 41180, + "openValue": 9459046000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.2297, + "markMethod": "FairPrice", + "markPrice": 0.2297, + "indicativeSettlePrice": 0.2297, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "WIFUSDT", + "rootSymbol": "WIF", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-17T04:00:00.000Z", + "front": "2024-01-17T04:00:00.000Z", + "positionCurrency": "WIF", + "underlying": "WIF", + "quoteCurrency": "USDT", + "underlyingSymbol": "WIFT=", + "reference": "BMEX", + "referenceSymbol": ".BWIFT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".WIFBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".WIFUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 3.7509, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 4118238, + "totalVolume": 4118238, + "volume": 0, + "volume24h": 4506, + "prevTotalTurnover": 8031684503900, + "totalTurnover": 8031684503900, + "turnover": 0, + "turnover24h": 16209208900, + "homeNotional24h": 4506, + "foreignNotional24h": 16209.2089, + "prevPrice24h": 3.7225, + "vwap": 3.597251, + "highPrice": 3.7539, + "lowPrice": 3.4132, + "lastPrice": 3.4169, + "lastPriceProtected": 3.4169, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0769, + "bidPrice": 3.3773, + "midPrice": 3.38325, + "askPrice": 3.3892, + "impactBidPrice": 3.323418, + "impactMidPrice": 4.7949, + "impactAskPrice": 6.266474, + "hasLiquidity": false, + "openInterest": 12027, + "openValue": 40678922100, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 3.3823, + "markMethod": "FairPrice", + "markPrice": 3.3823, + "indicativeSettlePrice": 3.3823, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MEMEMEXTUSDT", + "rootSymbol": "BASKET", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-07-04T04:00:00.000Z", + "front": "2024-07-04T04:00:00.000Z", + "positionCurrency": "MEMEMEXT", + "underlying": "MEMEMEXT", + "quoteCurrency": "USDT", + "underlyingSymbol": "MEMEMEXT=", + "reference": "BMEX", + "referenceSymbol": ".BMEMEMEXT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MEMEMEXTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MEMEMEXTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 250.06019, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 20336000, + "totalVolume": 20336000, + "volume": 0, + "volume24h": 122000, + "prevTotalTurnover": 260519411000, + "totalTurnover": 260519411000, + "turnover": 0, + "turnover24h": 3079301000, + "homeNotional24h": 12.2, + "foreignNotional24h": 3079.3010000000004, + "prevPrice24h": 252.55, + "vwap": 252.40173, + "highPrice": 254.84, + "lowPrice": 250.64, + "lastPrice": 254.2, + "lastPriceProtected": 254.2, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0065, + "bidPrice": 237.69, + "midPrice": 243.595, + "askPrice": 249.5, + "impactBidPrice": 232.07062, + "impactMidPrice": 254.13, + "impactAskPrice": 276.19365, + "hasLiquidity": false, + "openInterest": 749000, + "openValue": 17785906047, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.00242, + "fairPrice": 237.46203, + "markMethod": "FairPrice", + "markPrice": 237.46203, + "indicativeSettlePrice": 237.45961, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XAUTUSD", + "rootSymbol": "XAUT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-18T04:00:00.000Z", + "front": "2024-04-18T04:00:00.000Z", + "underlying": "XAUT", + "quoteCurrency": "USD", + "underlyingSymbol": "XAUT=", + "reference": "BMEX", + "referenceSymbol": ".BXAUT", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.1, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 2500000000, + "riskStep": 2500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XAUTBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".XAUTUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 2634.4, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1123, + "totalVolume": 1123, + "volume": 0, + "volume24h": 2, + "prevTotalTurnover": 269149580, + "totalTurnover": 269149580, + "turnover": 0, + "turnover24h": 531050, + "homeNotional24h": 0.19841972859015697, + "foreignNotional24h": 526.8536890715611, + "prevPrice24h": 2655, + "vwap": 2655.25, + "highPrice": 2655.5, + "lowPrice": 2655, + "lastPrice": 2655.5, + "lastPriceProtected": 2655.5, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.0002, + "bidPrice": 2661.9, + "midPrice": 2830.9, + "askPrice": 2999.9, + "impactBidPrice": 1888.1, + "impactMidPrice": 3066.25, + "impactAskPrice": 4244.44, + "hasLiquidity": false, + "openInterest": 12, + "openValue": 3192240, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 2660.2, + "markMethod": "FairPrice", + "markPrice": 2660.2, + "indicativeSettlePrice": 2660.2, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.1, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "INJUSDT", + "rootSymbol": "INJ", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-01T04:00:00.000Z", + "front": "2023-11-01T04:00:00.000Z", + "positionCurrency": "INJ", + "underlying": "INJ", + "quoteCurrency": "USDT", + "underlyingSymbol": "INJT=", + "reference": "BMEX", + "referenceSymbol": ".BINJT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".INJBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".INJUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 32.7434, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 176432, + "totalVolume": 176432, + "volume": 0, + "volume24h": 83, + "prevTotalTurnover": 4713745638500, + "totalTurnover": 4713745638500, + "turnover": 0, + "turnover24h": 2677257500, + "homeNotional24h": 83, + "foreignNotional24h": 2677.2574999999997, + "prevPrice24h": 33.1724, + "vwap": 32.256115, + "highPrice": 33.3438, + "lowPrice": 31.1845, + "lastPrice": 31.1845, + "lastPriceProtected": 31.1845, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0599, + "bidPrice": 30.5779, + "midPrice": 30.6176, + "askPrice": 30.6573, + "impactBidPrice": 29.141663, + "impactMidPrice": 36.46905, + "impactAskPrice": 43.796444, + "hasLiquidity": false, + "openInterest": 575, + "openValue": 17569240000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.0003, + "fairPrice": 30.5552, + "markMethod": "FairPrice", + "markPrice": 30.5552, + "indicativeSettlePrice": 30.5549, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "TNSRUSDT", + "rootSymbol": "TNSR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-10T12:00:00.000Z", + "front": "2024-04-10T12:00:00.000Z", + "positionCurrency": "TNSR", + "underlying": "TNSR", + "quoteCurrency": "USDT", + "underlyingSymbol": "TNSRT=", + "reference": "BMEX", + "referenceSymbol": ".BTNSRT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".TNSRBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".TNSRUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.7927, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1451838, + "totalVolume": 1451838, + "volume": 0, + "volume24h": 263, + "prevTotalTurnover": 895646817700, + "totalTurnover": 895646817700, + "turnover": 0, + "turnover24h": 194210000, + "homeNotional24h": 263, + "foreignNotional24h": 194.20999999999998, + "prevPrice24h": 0.8261, + "vwap": 0.738442, + "highPrice": 0.765, + "lowPrice": 0.7259, + "lastPrice": 0.7259, + "lastPriceProtected": 0.7259, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1213, + "bidPrice": 0.7317, + "midPrice": 0.7321, + "askPrice": 0.7325, + "impactBidPrice": 0.708402, + "impactMidPrice": 0.73595, + "impactAskPrice": 0.763585, + "hasLiquidity": false, + "openInterest": 5210, + "openValue": 3811115000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.7315, + "markMethod": "FairPrice", + "markPrice": 0.7315, + "indicativeSettlePrice": 0.7315, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "PEPEUSDT", + "rootSymbol": "PEPE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-05-03T04:00:00.000Z", + "front": "2023-05-03T04:00:00.000Z", + "positionCurrency": "PEPE", + "underlying": "PEPE", + "quoteCurrency": "USDT", + "underlyingSymbol": "PEPET=", + "reference": "BMEX", + "referenceSymbol": ".BPEPET", + "maxOrderQty": 100000000000, + "maxPrice": 0.1, + "lotSize": 10000, + "tickSize": 0.000000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.04, + "maintMargin": 0.02, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".PEPEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".PEPEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.000025182, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 106791955050000, + "totalVolume": 106792125990000, + "volume": 170940000, + "volume24h": 80199340000, + "prevTotalTurnover": 290195404859080, + "totalTurnover": 290199727932490, + "turnover": 4323073410, + "turnover24h": 2106931853270, + "homeNotional24h": 80199340000, + "foreignNotional24h": 2106931.8532699994, + "prevPrice24h": 0.000025001, + "vwap": 0.0000262713, + "highPrice": 0.000027508, + "lowPrice": 0.000024666, + "lastPrice": 0.000025049, + "lastPriceProtected": 0.00002507, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0019, + "bidPrice": 0.000025052, + "midPrice": 0.0000250855, + "askPrice": 0.000025119, + "impactBidPrice": 0.000025045, + "impactMidPrice": 0.000025082, + "impactAskPrice": 0.0000251195, + "hasLiquidity": true, + "openInterest": 44893860000, + "openValue": 1123738209660, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.000025031, + "markMethod": "FairPrice", + "markPrice": 0.000025031, + "indicativeSettlePrice": 0.000025031, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.930Z", + "minTick": 0.000000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "OPUSD", + "rootSymbol": "OP", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-16T04:00:00.000Z", + "front": "2024-01-16T04:00:00.000Z", + "underlying": "OP", + "quoteCurrency": "USD", + "underlyingSymbol": "OP=", + "reference": "BMEX", + "referenceSymbol": ".BOP", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".OPBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".OPUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000506, + "indicativeFundingRate": 0.000206, + "prevClosePrice": 2.6618, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 163783, + "totalVolume": 163783, + "volume": 0, + "volume24h": 102, + "prevTotalTurnover": 3349913583, + "totalTurnover": 3349913583, + "turnover": 0, + "turnover24h": 2620271, + "homeNotional24h": 1010.8163079661531, + "foreignNotional24h": 2597.1064580168945, + "prevPrice24h": 2.7007, + "vwap": 2.569, + "highPrice": 2.6439, + "lowPrice": 2.4935, + "lastPrice": 2.5248, + "lastPriceProtected": 2.5248, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0651, + "bidPrice": 2.4757, + "midPrice": 2.48415, + "askPrice": 2.4926, + "impactBidPrice": 1.9389, + "impactMidPrice": 2.4235, + "impactAskPrice": 2.9081, + "hasLiquidity": false, + "openInterest": 6684, + "openValue": 165208428, + "fairMethod": "FundingRate", + "fairBasisRate": 0.5540700000000001, + "fairBasis": 0.0001, + "fairPrice": 2.4717, + "markMethod": "FairPrice", + "markPrice": 2.4717, + "indicativeSettlePrice": 2.4716, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "AVAXUSDT", + "rootSymbol": "AVAX", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-02-23T04:00:00.000Z", + "front": "2022-02-23T04:00:00.000Z", + "positionCurrency": "AVAX", + "underlying": "AVAX", + "quoteCurrency": "USDT", + "underlyingSymbol": "AVAXT=", + "reference": "BMEX", + "referenceSymbol": ".BAVAXT", + "maxOrderQty": 1000000000, + "maxPrice": 100000, + "lotSize": 1000, + "tickSize": 0.001, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".AVAXBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".AVAXUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000706, + "indicativeFundingRate": 0.000638, + "prevClosePrice": 51.4465, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 60490059000, + "totalVolume": 60490340000, + "volume": 281000, + "volume24h": 88648000, + "prevTotalTurnover": 170346692178400, + "totalTurnover": 170348100554000, + "turnover": 1408375600, + "turnover24h": 457602333800, + "homeNotional24h": 8864.8, + "foreignNotional24h": 457602.3338, + "prevPrice24h": 51.169, + "vwap": 51.62016, + "highPrice": 54.308, + "lowPrice": 49.583, + "lastPrice": 50.027, + "lastPriceProtected": 50.027, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0223, + "bidPrice": 49.639, + "midPrice": 49.71, + "askPrice": 49.781, + "impactBidPrice": 49.63224, + "impactMidPrice": 49.7135, + "impactAskPrice": 49.79515, + "hasLiquidity": true, + "openInterest": 170589000, + "openValue": 848274273180, + "fairMethod": "FundingRate", + "fairBasisRate": 0.77307, + "fairBasis": 0.0036, + "fairPrice": 49.7262, + "markMethod": "FairPrice", + "markPrice": 49.7262, + "indicativeSettlePrice": 49.7226, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "TONUSD", + "rootSymbol": "TON", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-23T04:00:00.000Z", + "front": "2024-04-23T04:00:00.000Z", + "underlying": "TON", + "quoteCurrency": "USD", + "underlyingSymbol": "TON=", + "reference": "BMEX", + "referenceSymbol": ".BTON", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".TONBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".TONUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00129, + "indicativeFundingRate": 0.000921, + "prevClosePrice": 6.7357, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 120273, + "totalVolume": 120273, + "volume": 0, + "volume24h": 218, + "prevTotalTurnover": 7460422228, + "totalTurnover": 7460422228, + "turnover": 0, + "turnover24h": 14132933, + "homeNotional24h": 2153.885468780344, + "foreignNotional24h": 13964.84297258556, + "prevPrice24h": 6.6787, + "vwap": 6.4831, + "highPrice": 6.8089, + "lowPrice": 5.7733, + "lastPrice": 6.5, + "lastPriceProtected": 6.5, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0268, + "bidPrice": 6.4283, + "midPrice": 6.4515, + "askPrice": 6.4747, + "impactBidPrice": 0.9684, + "impactMidPrice": 5.3086, + "impactAskPrice": 9.6488, + "hasLiquidity": false, + "openInterest": 1746, + "openValue": 112552398, + "fairMethod": "FundingRate", + "fairBasisRate": 1.41255, + "fairBasis": 0.0008, + "fairPrice": 6.4463, + "markMethod": "FairPrice", + "markPrice": 6.4463, + "indicativeSettlePrice": 6.4455, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "LDOUSD", + "rootSymbol": "LDO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-11T04:00:00.000Z", + "front": "2024-01-11T04:00:00.000Z", + "underlying": "LDO", + "quoteCurrency": "USD", + "underlyingSymbol": "LDO=", + "reference": "BMEX", + "referenceSymbol": ".BLDO", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LDOBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".LDOUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001011, + "indicativeFundingRate": 0.000761, + "prevClosePrice": 2.1483, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 162066, + "totalVolume": 162066, + "volume": 0, + "volume24h": 68, + "prevTotalTurnover": 2765365908, + "totalTurnover": 2765365908, + "turnover": 0, + "turnover24h": 1421196, + "homeNotional24h": 678.099483468881, + "foreignNotional24h": 1417.2600632278206, + "prevPrice24h": 2.1947, + "vwap": 2.09, + "highPrice": 2.1472, + "lowPrice": 2.013, + "lastPrice": 2.013, + "lastPriceProtected": 2.013, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0828, + "bidPrice": 2.0028, + "midPrice": 2.0142, + "askPrice": 2.0256, + "impactBidPrice": 1.1925, + "impactMidPrice": 1.8193, + "impactAskPrice": 2.4461, + "hasLiquidity": false, + "openInterest": 6268, + "openValue": 126450632, + "fairMethod": "FundingRate", + "fairBasisRate": 1.107045, + "fairBasis": 0.0002, + "fairPrice": 2.0174, + "markMethod": "FairPrice", + "markPrice": 2.0174, + "indicativeSettlePrice": 2.0172, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "TONUSDT", + "rootSymbol": "TON", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-08-19T04:00:00.000Z", + "front": "2024-08-19T04:00:00.000Z", + "positionCurrency": "TON", + "underlying": "TON", + "quoteCurrency": "USDT", + "underlyingSymbol": "TONT=", + "reference": "BMEX", + "referenceSymbol": ".BTONT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".TONBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".TONUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 6.7323, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 53944, + "totalVolume": 53944, + "volume": 0, + "volume24h": 2577, + "prevTotalTurnover": 304899078900, + "totalTurnover": 304899078900, + "turnover": 0, + "turnover24h": 17367115500, + "homeNotional24h": 2577, + "foreignNotional24h": 17367.1155, + "prevPrice24h": 6.7251, + "vwap": 6.739277, + "highPrice": 6.9004, + "lowPrice": 6.688, + "lastPrice": 6.694, + "lastPriceProtected": 6.694, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0218, + "bidPrice": 6.4411, + "midPrice": 6.45435, + "askPrice": 6.4676, + "impactBidPrice": 0.995492, + "impactMidPrice": 9.8125, + "impactAskPrice": 18.629576, + "hasLiquidity": false, + "openInterest": 3289, + "openValue": 21203196300, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0.0001, + "fairPrice": 6.4467, + "markMethod": "FairPrice", + "markPrice": 6.4467, + "indicativeSettlePrice": 6.4466, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "AAVEUSDT", + "rootSymbol": "AAVE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-04T12:00:00.000Z", + "front": "2024-09-04T12:00:00.000Z", + "positionCurrency": "AAVE", + "underlying": "AAVE", + "quoteCurrency": "USDT", + "underlyingSymbol": "AAVET=", + "reference": "BMEX", + "referenceSymbol": ".BAAVET", + "maxOrderQty": 1000000000, + "maxPrice": 100000, + "lotSize": 1000, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".AAVEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".AAVEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001404, + "indicativeFundingRate": 0.000904, + "prevClosePrice": 282.213, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 21503000, + "totalVolume": 21503000, + "volume": 0, + "volume24h": 304000, + "prevTotalTurnover": 360593535000, + "totalTurnover": 360593535000, + "turnover": 0, + "turnover24h": 8323411000, + "homeNotional24h": 30.4, + "foreignNotional24h": 8323.411, + "prevPrice24h": 280, + "vwap": 273.79642, + "highPrice": 279.49, + "lowPrice": 256.89, + "lastPrice": 256.89, + "lastPriceProtected": 257.396, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0933, + "bidPrice": 233.87, + "midPrice": 249.79, + "askPrice": 265.71, + "impactBidPrice": 272.44, + "impactMidPrice": 320.54, + "impactAskPrice": 368.64985, + "hasLiquidity": false, + "openInterest": 1133000, + "openValue": 30099957800, + "fairMethod": "FundingRate", + "fairBasisRate": 1.5373800000000002, + "fairBasis": 0.038, + "fairPrice": 265.666, + "markMethod": "FairPrice", + "markPrice": 265.666, + "indicativeSettlePrice": 265.628, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "OPUSDT", + "rootSymbol": "OP", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-16T04:00:00.000Z", + "front": "2024-01-16T04:00:00.000Z", + "positionCurrency": "OP", + "underlying": "OP", + "quoteCurrency": "USDT", + "underlyingSymbol": "OPT=", + "reference": "BMEX", + "referenceSymbol": ".BOPT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".OPBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".OPUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 2.6604, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 396382, + "totalVolume": 396382, + "volume": 0, + "volume24h": 937, + "prevTotalTurnover": 914028158700, + "totalTurnover": 914028158700, + "turnover": 0, + "turnover24h": 2414310500, + "homeNotional24h": 937, + "foreignNotional24h": 2414.3105, + "prevPrice24h": 2.6622, + "vwap": 2.576639, + "highPrice": 2.6534, + "lowPrice": 2.4883, + "lastPrice": 2.4954, + "lastPriceProtected": 2.4954, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0627, + "bidPrice": 2.476, + "midPrice": 2.5018, + "askPrice": 2.5276, + "hasLiquidity": false, + "openInterest": 5308, + "openValue": 13121906800, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 2.4721, + "markMethod": "FairPrice", + "markPrice": 2.4721, + "indicativeSettlePrice": 2.4721, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "AAVEUSD", + "rootSymbol": "AAVE", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-09-04T12:00:00.000Z", + "front": "2024-09-04T12:00:00.000Z", + "underlying": "AAVE", + "quoteCurrency": "USD", + "underlyingSymbol": "AAVE=", + "reference": "BMEX", + "referenceSymbol": ".BAAVE", + "maxOrderQty": 500000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".AAVEBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".AAVEUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001056, + "indicativeFundingRate": 0.001111, + "prevClosePrice": 282.36, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 112578, + "totalVolume": 112578, + "volume": 0, + "volume24h": 38, + "prevTotalTurnover": 1784559862, + "totalTurnover": 1784559862, + "turnover": 0, + "turnover24h": 1014282, + "homeNotional24h": 3.79381950611705, + "foreignNotional24h": 1012.6187681325515, + "prevPrice24h": 271.74, + "vwap": 266.92, + "highPrice": 281.14, + "lowPrice": 256.08, + "lastPrice": 274.35, + "lastPriceProtected": 274.35, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": 0.0096, + "bidPrice": 248.57, + "midPrice": 257.94, + "askPrice": 267.31, + "impactBidPrice": 184.04, + "impactMidPrice": 325.185, + "impactAskPrice": 466.33, + "hasLiquidity": false, + "openInterest": 3462, + "openValue": 91954182, + "fairMethod": "FundingRate", + "fairBasisRate": 1.15632, + "fairBasis": 0.03, + "fairPrice": 265.61, + "markMethod": "FairPrice", + "markPrice": 265.61, + "indicativeSettlePrice": 265.58, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "AXSUSD", + "rootSymbol": "AXS", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-10-20T04:00:00.000Z", + "front": "2021-10-20T04:00:00.000Z", + "underlying": "AXS", + "quoteCurrency": "USD", + "underlyingSymbol": "AXS=", + "reference": "BMEX", + "referenceSymbol": ".BAXS", + "maxOrderQty": 1000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".AXSBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".AXSUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000259, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 9.2, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 473804334, + "totalVolume": 473805680, + "volume": 1346, + "volume24h": 436215, + "prevTotalTurnover": 814335355515, + "totalTurnover": 814336526409, + "turnover": 1170894, + "turnover24h": 393202373, + "homeNotional24h": 43335.759699004884, + "foreignNotional24h": 390668.66688704776, + "prevPrice24h": 9.13, + "vwap": 9.02, + "highPrice": 9.53, + "lowPrice": 8.49, + "lastPrice": 8.68, + "lastPriceProtected": 8.68, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0534, + "bidPrice": 8.56, + "midPrice": 8.57, + "askPrice": 8.58, + "impactBidPrice": 8.55, + "impactMidPrice": 8.58, + "impactAskPrice": 8.61, + "hasLiquidity": true, + "openInterest": 1069558, + "openValue": 915541648, + "fairMethod": "FundingRate", + "fairBasisRate": 0.283605, + "fairBasis": 0, + "fairPrice": 8.56, + "markMethod": "FairPrice", + "markPrice": 8.56, + "indicativeSettlePrice": 8.56, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "LDOUSDT", + "rootSymbol": "LDO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-11T04:00:00.000Z", + "front": "2024-01-11T04:00:00.000Z", + "positionCurrency": "LDO", + "underlying": "LDO", + "quoteCurrency": "USDT", + "underlyingSymbol": "LDOT=", + "reference": "BMEX", + "referenceSymbol": ".BLDOT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LDOBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".LDOUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 2.1472, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 545522, + "totalVolume": 545552, + "volume": 30, + "volume24h": 722, + "prevTotalTurnover": 980347370700, + "totalTurnover": 980408630700, + "turnover": 61260000, + "turnover24h": 1479489700, + "homeNotional24h": 722, + "foreignNotional24h": 1479.4896999999999, + "prevPrice24h": 2.1039, + "vwap": 2.049155, + "highPrice": 2.1188, + "lowPrice": 2.0074, + "lastPrice": 2.0263, + "lastPriceProtected": 2.0263, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0369, + "bidPrice": 2.0205, + "midPrice": 2.02305, + "askPrice": 2.0256, + "impactBidPrice": 0.178896, + "impactMidPrice": 2.0289, + "impactAskPrice": 3.878926, + "hasLiquidity": false, + "openInterest": 2224, + "openValue": 4486920000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 2.0175, + "markMethod": "FairPrice", + "markPrice": 2.0175, + "indicativeSettlePrice": 2.0175, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "APTUSD", + "rootSymbol": "APT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-10-20T04:00:00.000Z", + "front": "2022-10-20T04:00:00.000Z", + "underlying": "APT", + "quoteCurrency": "USD", + "underlyingSymbol": "APT=", + "reference": "BMEX", + "referenceSymbol": ".BAPT", + "maxOrderQty": 1000000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".APTBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".APTUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.000193, + "prevClosePrice": 14.288, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 163434711, + "totalVolume": 163434938, + "volume": 227, + "volume24h": 28959, + "prevTotalTurnover": 1286073159306, + "totalTurnover": 1286076208370, + "turnover": 3049064, + "turnover24h": 403299848, + "homeNotional24h": 28785.680724288766, + "foreignNotional24h": 400919.9915287746, + "prevPrice24h": 14.244, + "vwap": 13.927, + "highPrice": 14.589, + "lowPrice": 13.369, + "lastPrice": 13.432, + "lastPriceProtected": 13.432, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.057, + "bidPrice": 13.405, + "midPrice": 13.429, + "askPrice": 13.453, + "impactBidPrice": 13.369, + "impactMidPrice": 13.4165, + "impactAskPrice": 13.464, + "hasLiquidity": true, + "openInterest": 65706, + "openValue": 873561270, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 13.295, + "markMethod": "FairPrice", + "markPrice": 13.295, + "indicativeSettlePrice": 13.295, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "WLDUSD", + "rootSymbol": "WLD", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-07-25T04:00:00.000Z", + "front": "2023-07-25T04:00:00.000Z", + "underlying": "WLD", + "quoteCurrency": "USD", + "underlyingSymbol": "WLD=", + "reference": "BMEX", + "referenceSymbol": ".BWLD", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".WLDBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".WLDUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000943, + "indicativeFundingRate": 0.000684, + "prevClosePrice": 3.7114, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 28569196, + "totalVolume": 28569282, + "volume": 86, + "volume24h": 22154, + "prevTotalTurnover": 624298754140, + "totalTurnover": 624301731100, + "turnover": 2976960, + "turnover24h": 789090200, + "homeNotional24h": 219775.72835390622, + "foreignNotional24h": 782896.483466111, + "prevPrice24h": 3.7, + "vwap": 3.5619, + "highPrice": 3.823, + "lowPrice": 3.381, + "lastPrice": 3.426, + "lastPriceProtected": 3.426, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0741, + "bidPrice": 3.425, + "midPrice": 3.427, + "askPrice": 3.429, + "impactBidPrice": 3.4217, + "impactMidPrice": 3.4275, + "impactAskPrice": 3.4341, + "hasLiquidity": true, + "openInterest": 41431, + "openValue": 1419053181, + "fairMethod": "FundingRate", + "fairBasisRate": 1.032585, + "fairBasis": 0.0003, + "fairPrice": 3.4251, + "markMethod": "FairPrice", + "markPrice": 3.4251, + "indicativeSettlePrice": 3.4248, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "AVAXUSD", + "rootSymbol": "AVAX", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-09-29T04:00:00.000Z", + "front": "2021-09-29T04:00:00.000Z", + "underlying": "AVAX", + "quoteCurrency": "USD", + "underlyingSymbol": "AVAX=", + "reference": "BMEX", + "referenceSymbol": ".BAVAX", + "maxOrderQty": 500000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".AVAXBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".AVAXUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000878, + "indicativeFundingRate": 0.000605, + "prevClosePrice": 51.473, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 117789668, + "totalVolume": 117789923, + "volume": 255, + "volume24h": 41253, + "prevTotalTurnover": 3376776835766, + "totalTurnover": 3376789591912, + "turnover": 12756146, + "turnover24h": 2135905131, + "homeNotional24h": 40960.56856219455, + "foreignNotional24h": 2121191.0489819204, + "prevPrice24h": 51.178, + "vwap": 51.777, + "highPrice": 54.549, + "lowPrice": 49.664, + "lastPrice": 49.819, + "lastPriceProtected": 49.819, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0266, + "bidPrice": 49.809, + "midPrice": 49.8335, + "askPrice": 49.858, + "impactBidPrice": 49.748, + "impactMidPrice": 49.8065, + "impactAskPrice": 49.865, + "hasLiquidity": true, + "openInterest": 49333, + "openValue": 2452738094, + "fairMethod": "FundingRate", + "fairBasisRate": 0.96141, + "fairBasis": 0.004, + "fairPrice": 49.718, + "markMethod": "FairPrice", + "markPrice": 49.718, + "indicativeSettlePrice": 49.714, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "FTMUSD", + "rootSymbol": "FTM", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-12-07T04:00:00.000Z", + "front": "2023-12-07T04:00:00.000Z", + "underlying": "FTM", + "quoteCurrency": "USD", + "underlyingSymbol": "FTM=", + "reference": "BMEX", + "referenceSymbol": ".BFTM", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".FTMBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".FTMUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000931, + "indicativeFundingRate": 0.000898, + "prevClosePrice": 1.3123, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1203136, + "totalVolume": 1203137, + "volume": 1, + "volume24h": 463, + "prevTotalTurnover": 7199666950, + "totalTurnover": 7199679370, + "turnover": 12420, + "turnover24h": 5962379, + "homeNotional24h": 4604.8327422149105, + "foreignNotional24h": 5930.823058240413, + "prevPrice24h": 1.3021, + "vwap": 1.2878, + "highPrice": 1.3634, + "lowPrice": 1.2296, + "lastPrice": 1.242, + "lastPriceProtected": 1.242, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0462, + "bidPrice": 1.237, + "midPrice": 1.24615, + "askPrice": 1.2553, + "impactBidPrice": 1.1039, + "impactMidPrice": 1.5274, + "impactAskPrice": 1.9509, + "hasLiquidity": false, + "openInterest": 10802, + "openValue": 133426304, + "fairMethod": "FundingRate", + "fairBasisRate": 1.019445, + "fairBasis": 0.0001, + "fairPrice": 1.2352, + "markMethod": "FairPrice", + "markPrice": 1.2352, + "indicativeSettlePrice": 1.2351, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "SEIUSDT", + "rootSymbol": "SEI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-08-15T13:00:00.000Z", + "front": "2023-08-15T13:00:00.000Z", + "positionCurrency": "SEI", + "underlying": "SEI", + "quoteCurrency": "USDT", + "underlyingSymbol": "SEIT=", + "reference": "BMEX", + "referenceSymbol": ".BSEIT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".SEIBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".SEIUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000688, + "indicativeFundingRate": 0.000178, + "prevClosePrice": 0.6782, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 64354790, + "totalVolume": 64354790, + "volume": 0, + "volume24h": 72870, + "prevTotalTurnover": 23257515491000, + "totalTurnover": 23257515491000, + "turnover": 0, + "turnover24h": 46709077000, + "homeNotional24h": 72870, + "foreignNotional24h": 46709.077000000005, + "prevPrice24h": 0.6658, + "vwap": 0.6409919, + "highPrice": 0.695, + "lowPrice": 0.6173, + "lastPrice": 0.6402, + "lastPriceProtected": 0.6402, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0384, + "bidPrice": 0.6329, + "midPrice": 0.63375, + "askPrice": 0.6346, + "impactBidPrice": 0.0770204, + "impactMidPrice": 0.7434, + "impactAskPrice": 1.4097822, + "hasLiquidity": false, + "openInterest": 370210, + "openValue": 235120371000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.75336, + "fairBasis": 0, + "fairPrice": 0.6351, + "markMethod": "FairPrice", + "markPrice": 0.6351, + "indicativeSettlePrice": 0.6351, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MANTAUSDT", + "rootSymbol": "MANTA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-01-18T12:00:00.000Z", + "front": "2024-01-18T12:00:00.000Z", + "positionCurrency": "MANTA", + "underlying": "MANTA", + "quoteCurrency": "USDT", + "underlyingSymbol": "MANTAT=", + "reference": "BMEX", + "referenceSymbol": ".BMANTAT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MANTABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".MANTAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.2692, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 622166, + "totalVolume": 622166, + "volume": 0, + "volume24h": 14, + "prevTotalTurnover": 1410655792500, + "totalTurnover": 1410655792500, + "turnover": 0, + "turnover24h": 16803500, + "homeNotional24h": 14, + "foreignNotional24h": 16.8035, + "prevPrice24h": 1.2916, + "vwap": 1.20025, + "highPrice": 1.2049, + "lowPrice": 1.1956, + "lastPrice": 1.1956, + "lastPriceProtected": 1.1956, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0743, + "bidPrice": 1.1691, + "midPrice": 1.17955, + "askPrice": 1.19, + "hasLiquidity": false, + "openInterest": 1539, + "openValue": 1796474700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 1.1673, + "markMethod": "FairPrice", + "markPrice": 1.1673, + "indicativeSettlePrice": 1.1673, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ATHUSD", + "rootSymbol": "ATH", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-08-15T04:00:00.000Z", + "front": "2024-08-15T04:00:00.000Z", + "underlying": "ATH", + "quoteCurrency": "USD", + "underlyingSymbol": "ATH=", + "reference": "BMEX", + "referenceSymbol": ".BATH", + "maxOrderQty": 500000, + "maxPrice": 10, + "lotSize": 1, + "tickSize": 0.00001, + "multiplier": 100000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ATHBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".ATHUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.08092, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 23461, + "totalVolume": 23461, + "volume": 0, + "volume24h": 96, + "prevTotalTurnover": 139461644, + "totalTurnover": 139461644, + "turnover": 0, + "turnover24h": 804963, + "homeNotional24h": 9558.593682868895, + "foreignNotional24h": 801.5253694872338, + "prevPrice24h": 0.08221, + "vwap": 0.08386, + "highPrice": 0.08561, + "lowPrice": 0.07958, + "lastPrice": 0.07958, + "lastPriceProtected": 0.07958, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.032, + "bidPrice": 0.08047, + "midPrice": 0.0808, + "askPrice": 0.08113, + "impactBidPrice": 0.00494, + "impactMidPrice": 0.081795, + "impactAskPrice": 0.15865, + "hasLiquidity": false, + "openInterest": 858, + "openValue": 6924918, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.08071, + "markMethod": "FairPrice", + "markPrice": 0.08071, + "indicativeSettlePrice": 0.08071, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "FILUSDT", + "rootSymbol": "FIL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-09-15T04:00:00.000Z", + "front": "2023-09-15T04:00:00.000Z", + "positionCurrency": "FIL", + "underlying": "FIL", + "quoteCurrency": "USDT", + "underlyingSymbol": "FILT=", + "reference": "BMEX", + "referenceSymbol": ".BFILT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".FILBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".FILUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000909, + "indicativeFundingRate": 0.00069, + "prevClosePrice": 7.731, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2509646, + "totalVolume": 2509652, + "volume": 6, + "volume24h": 57703, + "prevTotalTurnover": 16596312025900, + "totalTurnover": 16596354702100, + "turnover": 42676200, + "turnover24h": 424381899400, + "homeNotional24h": 57703, + "foreignNotional24h": 424381.8994000001, + "prevPrice24h": 7.59, + "vwap": 7.354591, + "highPrice": 7.9, + "lowPrice": 7.0574, + "lastPrice": 7.1127, + "lastPriceProtected": 7.1127, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0629, + "bidPrice": 7.0971, + "midPrice": 7.10295, + "askPrice": 7.1088, + "impactBidPrice": 7.092101, + "impactMidPrice": 7.10485, + "impactAskPrice": 7.117635, + "hasLiquidity": true, + "openInterest": 15225, + "openValue": 108184282500, + "fairMethod": "FundingRate", + "fairBasisRate": 0.995355, + "fairBasis": 0.0007, + "fairPrice": 7.1057, + "markMethod": "FairPrice", + "markPrice": 7.1057, + "indicativeSettlePrice": 7.105, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BIGTIMEUSDT", + "rootSymbol": "BIGTIME", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-10-13T04:00:00.000Z", + "front": "2023-10-13T04:00:00.000Z", + "positionCurrency": "BIGTIME", + "underlying": "BIGTIME", + "quoteCurrency": "USDT", + "underlyingSymbol": "BIGTIMET=", + "reference": "BMEX", + "referenceSymbol": ".BBIGTIMET", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 10, + "tickSize": 0.00001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BIGTIMEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BIGTIMEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.222, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 19046700, + "totalVolume": 19046700, + "volume": 0, + "volume24h": 11510, + "prevTotalTurnover": 4563590489900, + "totalTurnover": 4563590489900, + "turnover": 0, + "turnover24h": 2398728600, + "homeNotional24h": 11510, + "foreignNotional24h": 2398.7286, + "prevPrice24h": 0.2199, + "vwap": 0.2084039, + "highPrice": 0.2226, + "lowPrice": 0.1986, + "lastPrice": 0.204, + "lastPriceProtected": 0.204, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0723, + "bidPrice": 0.1996, + "midPrice": 0.20014, + "askPrice": 0.20068, + "impactBidPrice": 0.0678349, + "impactMidPrice": 0.164505, + "impactAskPrice": 0.2611822, + "hasLiquidity": false, + "openInterest": 64250, + "openValue": 12805025000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.1993, + "markMethod": "FairPrice", + "markPrice": 0.1993, + "indicativeSettlePrice": 0.1993, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "MERLUSD", + "rootSymbol": "MERL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-04-19T12:00:00.000Z", + "front": "2024-04-19T12:00:00.000Z", + "underlying": "MERL", + "quoteCurrency": "USD", + "underlyingSymbol": "MERL=", + "reference": "BMEX", + "referenceSymbol": ".BMERL", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".MERLBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".MERLUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.4426, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 387977, + "totalVolume": 387980, + "volume": 3, + "volume24h": 331, + "prevTotalTurnover": 1341480409, + "totalTurnover": 1341492622, + "turnover": 12213, + "turnover24h": 1441126, + "homeNotional24h": 3298.727837248961, + "foreignNotional24h": 1436.522593249438, + "prevPrice24h": 0.4445, + "vwap": 0.4355, + "highPrice": 0.4515, + "lowPrice": 0.398, + "lastPrice": 0.4071, + "lastPriceProtected": 0.4071, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0841, + "bidPrice": 0.4054, + "midPrice": 0.40575, + "askPrice": 0.4061, + "impactBidPrice": 0.0559, + "impactMidPrice": 0.3636, + "impactAskPrice": 0.6713, + "hasLiquidity": false, + "openInterest": 2834, + "openValue": 11477700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.405, + "markMethod": "FairPrice", + "markPrice": 0.405, + "indicativeSettlePrice": 0.405, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "NEIROUSDT", + "rootSymbol": "NEIRO", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-08-13T04:00:00.000Z", + "front": "2024-08-13T04:00:00.000Z", + "positionCurrency": "NEIRO", + "underlying": "NEIRO", + "quoteCurrency": "USDT", + "underlyingSymbol": "NEIROT=", + "reference": "BMEX", + "referenceSymbol": ".BNEIROT", + "maxOrderQty": 1000000000, + "maxPrice": 10, + "lotSize": 1000, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".NEIROBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".NEIROUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.0063, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 27942000, + "totalVolume": 27942000, + "volume": 0, + "volume24h": 34000, + "prevTotalTurnover": 132123248000, + "totalTurnover": 132123248000, + "turnover": 0, + "turnover24h": 210926000, + "homeNotional24h": 34000, + "foreignNotional24h": 210.926, + "prevPrice24h": 0.00645, + "vwap": 0.006203707, + "highPrice": 0.00628, + "lowPrice": 0.00563, + "lastPrice": 0.00563, + "lastPriceProtected": 0.00563, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.1338, + "bidPrice": 0.00575, + "midPrice": 0.005775, + "askPrice": 0.0058, + "impactBidPrice": 0.000169017, + "impactMidPrice": 0.0032155, + "impactAskPrice": 0.006262666, + "hasLiquidity": false, + "openInterest": 110000, + "openValue": 632500000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.00575, + "markMethod": "FairPrice", + "markPrice": 0.00575, + "indicativeSettlePrice": 0.00575, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "100SATSUSD", + "rootSymbol": "SATS", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-16T04:00:00.000Z", + "front": "2023-11-16T04:00:00.000Z", + "underlying": "100SATS", + "quoteCurrency": "USD", + "underlyingSymbol": "100SATS=", + "reference": "BMEX", + "referenceSymbol": ".B100SATS", + "maxOrderQty": 1000000, + "maxPrice": 1, + "lotSize": 1, + "tickSize": 0.00000001, + "multiplier": 100000000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 100000000, + "riskStep": 100000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".100SATSBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".100SATSUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001731, + "indicativeFundingRate": 0.001569, + "prevClosePrice": 0.00003088, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 540887, + "totalVolume": 540887, + "volume": 0, + "volume24h": 5790, + "prevTotalTurnover": 1837666925, + "totalTurnover": 1837666925, + "turnover": 0, + "turnover24h": 17881046, + "homeNotional24h": 577321721.9676169, + "foreignNotional24h": 17829.327227736667, + "prevPrice24h": 0.00003039, + "vwap": 0.00003089, + "highPrice": 0.00003128, + "lowPrice": 0.00002879, + "lastPrice": 0.0000289, + "lastPriceProtected": 0.0000289, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0487, + "bidPrice": 0.000029, + "midPrice": 0.000029125, + "askPrice": 0.00002925, + "impactBidPrice": 0.00000172, + "impactMidPrice": 0.00002491, + "impactAskPrice": 0.0000481, + "hasLiquidity": false, + "openInterest": 10177, + "openValue": 29604893, + "fairMethod": "FundingRate", + "fairBasisRate": 1.8954449999999998, + "fairBasis": 0.00000001, + "fairPrice": 0.00002909, + "markMethod": "FairPrice", + "markPrice": 0.00002909, + "indicativeSettlePrice": 0.00002908, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "USDTUSDC", + "rootSymbol": "USDT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-03-12T04:00:00.000Z", + "front": "2023-03-12T04:00:00.000Z", + "underlying": "USDT", + "quoteCurrency": "USDC", + "underlyingSymbol": "USDTUSDC=", + "reference": "BMEX", + "referenceSymbol": ".BUSDTUSDC", + "maxOrderQty": 100000000, + "maxPrice": 1000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".USDTBON8H", + "fundingQuoteSymbol": ".USDCBON8H", + "fundingPremiumSymbol": ".USDTUSDCPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00018, + "indicativeFundingRate": 0.00018, + "prevClosePrice": 1.001, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 5241171, + "totalVolume": 5241171, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 51855572181, + "totalTurnover": 51855572181, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 1, + "lastPrice": 1, + "lastPriceProtected": 1, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0809, + "bidPrice": 0.95, + "midPrice": 1.005, + "askPrice": 1.06, + "impactBidPrice": 0.7397, + "impactMidPrice": 0.9173, + "impactAskPrice": 1.0949, + "hasLiquidity": false, + "openInterest": 135, + "openValue": 1350000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.19710000000000003, + "fairBasis": 0, + "fairPrice": 1, + "markMethod": "FairPrice", + "markPrice": 1, + "indicativeSettlePrice": 1, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.00006, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ORDIUSD", + "rootSymbol": "ORDI", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-11-13T04:00:00.000Z", + "front": "2023-11-13T04:00:00.000Z", + "underlying": "ORDI", + "quoteCurrency": "USD", + "underlyingSymbol": "ORDI=", + "reference": "BMEX", + "referenceSymbol": ".BORDI", + "maxOrderQty": 1000000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 100000000, + "riskStep": 100000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ORDIBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".ORDIUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00133, + "indicativeFundingRate": 0.000966, + "prevClosePrice": 48.225, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 129739, + "totalVolume": 129810, + "volume": 71, + "volume24h": 3776, + "prevTotalTurnover": 6869639811, + "totalTurnover": 6872861530, + "turnover": 3221719, + "turnover24h": 178851641, + "homeNotional24h": 3756.951123106833, + "foreignNotional24h": 177966.98358631815, + "prevPrice24h": 47.821, + "vwap": 47.366, + "highPrice": 48.84, + "lowPrice": 44.69, + "lastPrice": 45.324, + "lastPriceProtected": 45.324, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0522, + "bidPrice": 44.943, + "midPrice": 45.0455, + "askPrice": 45.148, + "impactBidPrice": 40.032, + "impactMidPrice": 50.579, + "impactAskPrice": 61.126, + "hasLiquidity": false, + "openInterest": 1605, + "openValue": 72271545, + "fairMethod": "FundingRate", + "fairBasisRate": 1.45635, + "fairBasis": 0.006, + "fairPrice": 45.029, + "markMethod": "FairPrice", + "markPrice": 45.029, + "indicativeSettlePrice": 45.023, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "DYDXUSD", + "rootSymbol": "DYDX", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-12-05T04:00:00.000Z", + "front": "2023-12-05T04:00:00.000Z", + "underlying": "DYDX", + "quoteCurrency": "USD", + "underlyingSymbol": "DYDX=", + "reference": "BMEX", + "referenceSymbol": ".BDYDX", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".DYDXBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".DYDXUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001448, + "indicativeFundingRate": 0.00133, + "prevClosePrice": 2.479, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 122717, + "totalVolume": 122717, + "volume": 0, + "volume24h": 600, + "prevTotalTurnover": 2951630137, + "totalTurnover": 2951630137, + "turnover": 0, + "turnover24h": 14995658, + "homeNotional24h": 5969.599507207139, + "foreignNotional24h": 14920.747216327924, + "prevPrice24h": 2.4291, + "vwap": 2.4993, + "highPrice": 2.6497, + "lowPrice": 2.3234, + "lastPrice": 2.3731, + "lastPriceProtected": 2.3731, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0231, + "bidPrice": 2.3243, + "midPrice": 2.333, + "askPrice": 2.3417, + "impactBidPrice": 0.8393, + "impactMidPrice": 1.814, + "impactAskPrice": 2.7887, + "hasLiquidity": false, + "openInterest": 2383, + "openValue": 55516751, + "fairMethod": "FundingRate", + "fairBasisRate": 1.58556, + "fairBasis": 0.0003, + "fairPrice": 2.3297, + "markMethod": "FairPrice", + "markPrice": 2.3297, + "indicativeSettlePrice": 2.3294, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BLURUSD", + "rootSymbol": "BLUR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-02-16T04:00:00.000Z", + "front": "2023-02-16T04:00:00.000Z", + "underlying": "BLUR", + "quoteCurrency": "USD", + "underlyingSymbol": "BLUR=", + "reference": "BMEX", + "referenceSymbol": ".BBLUR", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BLURBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".BLURUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.4055, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 55470916, + "totalVolume": 55470916, + "volume": 0, + "volume24h": 851, + "prevTotalTurnover": 300703376854, + "totalTurnover": 300703376854, + "turnover": 0, + "turnover24h": 3391099, + "homeNotional24h": 8459.142884424824, + "foreignNotional24h": 3371.266436279169, + "prevPrice24h": 0.4, + "vwap": 0.3986, + "highPrice": 0.41, + "lowPrice": 0.3733, + "lastPrice": 0.3733, + "lastPriceProtected": 0.3733, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0783, + "bidPrice": 0.373, + "midPrice": 0.385, + "askPrice": 0.397, + "impactBidPrice": 0.0045, + "impactMidPrice": 0.31955, + "impactAskPrice": 0.6346, + "hasLiquidity": false, + "openInterest": 40556, + "openValue": 151071100, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.3725, + "markMethod": "FairPrice", + "markPrice": 0.3725, + "indicativeSettlePrice": 0.3725, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "FILUSD", + "rootSymbol": "FIL", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-09-15T04:00:00.000Z", + "front": "2023-09-15T04:00:00.000Z", + "underlying": "FIL", + "quoteCurrency": "USD", + "underlyingSymbol": "FIL=", + "reference": "BMEX", + "referenceSymbol": ".BFIL", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".FILBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".FILUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001811, + "indicativeFundingRate": 0.00153, + "prevClosePrice": 7.735, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1921156, + "totalVolume": 1921156, + "volume": 0, + "volume24h": 20285, + "prevTotalTurnover": 93557707960, + "totalTurnover": 93557707960, + "turnover": 0, + "turnover24h": 1515337221, + "homeNotional24h": 201126.15740584536, + "foreignNotional24h": 1502600.6278671029, + "prevPrice24h": 7.6976, + "vwap": 7.4703, + "highPrice": 7.9048, + "lowPrice": 7.0477, + "lastPrice": 7.1898, + "lastPriceProtected": 7.1898, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0646, + "bidPrice": 7.1033, + "midPrice": 7.1104, + "askPrice": 7.1175, + "impactBidPrice": 7.1029, + "impactMidPrice": 7.1114, + "impactAskPrice": 7.1199, + "hasLiquidity": true, + "openInterest": 145529, + "openValue": 10340272037, + "fairMethod": "FundingRate", + "fairBasisRate": 1.983045, + "fairBasis": 0.0013, + "fairPrice": 7.1053, + "markMethod": "FairPrice", + "markPrice": 7.1053, + "indicativeSettlePrice": 7.104, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BLURUSDT", + "rootSymbol": "BLUR", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-02-16T04:00:00.000Z", + "front": "2023-02-16T04:00:00.000Z", + "positionCurrency": "BLUR", + "underlying": "BLUR", + "quoteCurrency": "USDT", + "underlyingSymbol": "BLURT=", + "reference": "BMEX", + "referenceSymbol": ".BBLURT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BLURBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BLURUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000173, + "indicativeFundingRate": 0.000107, + "prevClosePrice": 0.40531, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 12019188000, + "totalVolume": 12019188000, + "volume": 0, + "volume24h": 4328000, + "prevTotalTurnover": 4015671870800, + "totalTurnover": 4015671870800, + "turnover": 0, + "turnover24h": 1712940600, + "homeNotional24h": 4328, + "foreignNotional24h": 1712.9405999999997, + "prevPrice24h": 0.4018, + "vwap": 0.395782, + "highPrice": 0.4115, + "lowPrice": 0.3709, + "lastPrice": 0.3713, + "lastPriceProtected": 0.3713, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0759, + "bidPrice": 0.3731, + "midPrice": 0.37375, + "askPrice": 0.3744, + "impactBidPrice": 0.016563, + "impactMidPrice": 0.7071, + "impactAskPrice": 1.397706, + "hasLiquidity": false, + "openInterest": 43314000, + "openValue": 16138796400, + "fairMethod": "FundingRate", + "fairBasisRate": 0.189435, + "fairBasis": 0.00001, + "fairPrice": 0.3726, + "markMethod": "FairPrice", + "markPrice": 0.3726, + "indicativeSettlePrice": 0.37259, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "POPCATUSDT", + "rootSymbol": "POPCAT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-07-24T04:00:00.000Z", + "front": "2024-07-24T04:00:00.000Z", + "positionCurrency": "POPCAT", + "underlying": "POPCAT", + "quoteCurrency": "USDT", + "underlyingSymbol": "POPCATT=", + "reference": "BMEX", + "referenceSymbol": ".BPOPCATT", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".POPCATBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".POPCATUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 1.5102, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 99390, + "totalVolume": 99390, + "volume": 0, + "volume24h": 590, + "prevTotalTurnover": 128350873000, + "totalTurnover": 128350873000, + "turnover": 0, + "turnover24h": 877449000, + "homeNotional24h": 590, + "foreignNotional24h": 877.4490000000001, + "prevPrice24h": 1.58, + "vwap": 1.4872018, + "highPrice": 1.7896, + "lowPrice": 1.4013, + "lastPrice": 1.4013, + "lastPriceProtected": 1.4013, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1131, + "bidPrice": 1.3643, + "midPrice": 1.47715, + "askPrice": 1.59, + "impactBidPrice": 0.0490201, + "impactMidPrice": 1.301, + "impactAskPrice": 2.553064, + "hasLiquidity": false, + "openInterest": 4670, + "openValue": 6362408000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 1.3624, + "markMethod": "FairPrice", + "markPrice": 1.3624, + "indicativeSettlePrice": 1.3624, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "GMTUSD", + "rootSymbol": "GMT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-04-11T04:00:00.000Z", + "front": "2022-04-11T04:00:00.000Z", + "underlying": "GMT", + "quoteCurrency": "USD", + "underlyingSymbol": "GMT=", + "reference": "BMEX", + "referenceSymbol": ".BGMT", + "maxOrderQty": 500000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 10000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".GMTBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".GMTUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001384, + "indicativeFundingRate": 0.00128, + "prevClosePrice": 0.2384, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 68914050, + "totalVolume": 68914279, + "volume": 229, + "volume24h": 12841, + "prevTotalTurnover": 643446485162, + "totalTurnover": 643446991252, + "turnover": 506090, + "turnover24h": 30394112, + "homeNotional24h": 128114.66610666244, + "foreignNotional24h": 30326.686262217725, + "prevPrice24h": 0.2354, + "vwap": 0.2368, + "highPrice": 0.2453, + "lowPrice": 0.221, + "lastPrice": 0.221, + "lastPriceProtected": 0.221, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0612, + "bidPrice": 0.2182, + "midPrice": 0.21925, + "askPrice": 0.2203, + "impactBidPrice": 0.2098, + "impactMidPrice": 0.218, + "impactAskPrice": 0.2262, + "hasLiquidity": false, + "openInterest": 92535, + "openValue": 203299395, + "fairMethod": "FundingRate", + "fairBasisRate": 1.51548, + "fairBasis": 0, + "fairPrice": 0.2197, + "markMethod": "FairPrice", + "markPrice": 0.2197, + "indicativeSettlePrice": 0.2197, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "GMEUSDT", + "rootSymbol": "GME", + "state": "Open", + "typ": "FFWCSX", + "listing": "2024-06-03T12:00:00.000Z", + "front": "2024-06-03T12:00:00.000Z", + "positionCurrency": "GME", + "underlying": "GME", + "quoteCurrency": "USDT", + "underlyingSymbol": "GMET=", + "reference": "BMEX", + "referenceSymbol": ".BGMET", + "maxOrderQty": 1000000000, + "maxPrice": 10, + "lotSize": 1000, + "tickSize": 0.000001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.1, + "maintMargin": 0.05, + "riskLimit": 20000000000, + "riskStep": 20000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".GMEBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".GMEUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.00609, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 23493000, + "totalVolume": 23493000, + "volume": 0, + "volume24h": 17000, + "prevTotalTurnover": 129172476000, + "totalTurnover": 129172476000, + "turnover": 0, + "turnover24h": 116309000, + "homeNotional24h": 17000, + "foreignNotional24h": 116.309, + "prevPrice24h": 0.00661, + "vwap": 0.006841707, + "highPrice": 0.00705, + "lowPrice": 0.00627, + "lastPrice": 0.00672, + "lastPriceProtected": 0.00672, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0166, + "bidPrice": 0.0066, + "midPrice": 0.00666, + "askPrice": 0.00672, + "hasLiquidity": false, + "openInterest": 259000, + "openValue": 1655010000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.00639, + "markMethod": "FairPrice", + "markPrice": 0.00639, + "indicativeSettlePrice": 0.00639, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "LUNAUSDT", + "rootSymbol": "LUNA", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-06-02T04:00:00.000Z", + "front": "2022-06-02T04:00:00.000Z", + "positionCurrency": "LUNA", + "underlying": "LUNA", + "quoteCurrency": "USDT", + "underlyingSymbol": "LUNAT=", + "reference": "BMEX", + "referenceSymbol": ".BLUNAT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.0001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.125, + "maintMargin": 0.0625, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LUNABON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".LUNAUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 0.7132, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 11805045000, + "totalVolume": 11806045000, + "volume": 1000000, + "volume24h": 13186000, + "prevTotalTurnover": 12454923272300, + "totalTurnover": 12455497524100, + "turnover": 574251800, + "turnover24h": 8740628800, + "homeNotional24h": 13186, + "foreignNotional24h": 8740.628800000002, + "prevPrice24h": 0.7004, + "vwap": 0.662873, + "highPrice": 0.7203, + "lowPrice": 0.4985, + "lastPrice": 0.5627, + "lastPriceProtected": 0.6236, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1966, + "bidPrice": 0.5861, + "midPrice": 0.61475, + "askPrice": 0.6434, + "impactBidPrice": 0.154188, + "impactMidPrice": 1.50605, + "impactAskPrice": 2.857945, + "hasLiquidity": false, + "openInterest": 30708000, + "openValue": 19766739600, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.6437, + "markMethod": "FairPrice", + "markPrice": 0.6437, + "indicativeSettlePrice": 0.6437, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BMEXUSD", + "rootSymbol": "BMEX", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-11-11T04:00:00.000Z", + "front": "2022-11-11T04:00:00.000Z", + "underlying": "BMEX", + "quoteCurrency": "USD", + "underlyingSymbol": "BMEX=", + "reference": "BMEX", + "referenceSymbol": ".BBMEX", + "maxOrderQty": 1000000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.2, + "maintMargin": 0.05, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BMEXBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".BMEXUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.001341, + "indicativeFundingRate": 0.000841, + "prevClosePrice": 0.151, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 357678416, + "totalVolume": 357678416, + "volume": 0, + "volume24h": 6820, + "prevTotalTurnover": 195007944876, + "totalTurnover": 195007944876, + "turnover": 0, + "turnover24h": 1040659, + "homeNotional24h": 6802.947156946328, + "foreignNotional24h": 1038.060414296225, + "prevPrice24h": 0.15, + "vwap": 0.153, + "highPrice": 0.16, + "lowPrice": 0.139, + "lastPrice": 0.153, + "lastPriceProtected": 0.153, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.02, + "bidPrice": 0.151, + "midPrice": 0.1515, + "askPrice": 0.152, + "impactBidPrice": 0.138, + "impactMidPrice": 0.163, + "impactAskPrice": 0.188, + "hasLiquidity": false, + "openInterest": 1212549, + "openValue": 184307448, + "fairMethod": "FundingRate", + "fairBasisRate": 1.468395, + "fairBasis": 0, + "fairPrice": 0.152, + "markMethod": "FairPrice", + "markPrice": 0.152, + "indicativeSettlePrice": 0.152, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "BMEXUSDT", + "rootSymbol": "BMEX", + "state": "Open", + "typ": "FFWCSX", + "listing": "2022-11-11T04:00:00.000Z", + "front": "2022-11-11T04:00:00.000Z", + "positionCurrency": "BMEX", + "underlying": "BMEX", + "quoteCurrency": "USDT", + "underlyingSymbol": "BMEXT=", + "reference": "BMEX", + "referenceSymbol": ".BBMEXT", + "maxOrderQty": 1000000000, + "maxPrice": 100000, + "lotSize": 1000, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.2, + "maintMargin": 0.05, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".BMEXBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".BMEXUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.002065, + "prevClosePrice": 0.1504, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 89806707000, + "totalVolume": 89806707000, + "volume": 0, + "volume24h": 7052000, + "prevTotalTurnover": 47734165727000, + "totalTurnover": 47734165727000, + "turnover": 0, + "turnover24h": 1110430000, + "homeNotional24h": 7052, + "foreignNotional24h": 1110.4299999999998, + "prevPrice24h": 0.152, + "vwap": 0.157464, + "highPrice": 0.16, + "lowPrice": 0.151, + "lastPrice": 0.16, + "lastPriceProtected": 0.16, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": 0.0526, + "bidPrice": 0.16, + "midPrice": 0.1605, + "askPrice": 0.161, + "impactBidPrice": 0.16, + "impactMidPrice": 0.1975, + "impactAskPrice": 0.235212, + "hasLiquidity": false, + "openInterest": 455897000, + "openValue": 69341933700, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 0.1521, + "markMethod": "FairPrice", + "markPrice": 0.1521, + "indicativeSettlePrice": 0.1521, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "CYBERUSDT", + "rootSymbol": "CYBER", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-08-15T13:00:00.000Z", + "front": "2023-08-15T13:00:00.000Z", + "positionCurrency": "CYBER", + "underlying": "CYBER", + "quoteCurrency": "USDT", + "underlyingSymbol": "CYBERT=", + "reference": "BMEX", + "referenceSymbol": ".BCYBERT", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.25, + "maintMargin": 0.125, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".CYBERBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".CYBERUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.0001, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 5.3362, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 13205784, + "totalVolume": 13205870, + "volume": 86, + "volume24h": 14834, + "prevTotalTurnover": 100833436918400, + "totalTurnover": 100833862675200, + "turnover": 425756800, + "turnover24h": 75155232200, + "homeNotional24h": 14834, + "foreignNotional24h": 75155.23220000001, + "prevPrice24h": 5.3679, + "vwap": 5.066418, + "highPrice": 5.4078, + "lowPrice": 4.8065, + "lastPrice": 4.9116, + "lastPriceProtected": 4.9116, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.085, + "bidPrice": 4.9004, + "midPrice": 4.9103, + "askPrice": 4.9202, + "impactBidPrice": 4.883934, + "impactMidPrice": 10.196, + "impactAskPrice": 15.508116, + "hasLiquidity": false, + "openInterest": 2341, + "openValue": 11465281600, + "fairMethod": "FundingRate", + "fairBasisRate": 0.1095, + "fairBasis": 0, + "fairPrice": 4.8976, + "markMethod": "FairPrice", + "markPrice": 4.8976, + "indicativeSettlePrice": 4.8976, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ADAZ24", + "rootSymbol": "ADA", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-09-10T04:00:00.000Z", + "front": "2024-09-10T04:00:00.000Z", + "expiry": "2024-12-27T12:00:00.000Z", + "settle": "2024-12-27T12:00:00.000Z", + "listedSettle": "2024-12-27T12:00:00.000Z", + "positionCurrency": "ADA", + "underlying": "ADA", + "quoteCurrency": "XBT", + "underlyingSymbol": "ADAXBT=", + "reference": "BMEX", + "referenceSymbol": ".BADAXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 0.00001203, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 76476000, + "totalVolume": 76476000, + "volume": 0, + "volume24h": 581000, + "prevTotalTurnover": 566953650, + "totalTurnover": 566953650, + "turnover": 0, + "turnover24h": 6796940, + "homeNotional24h": 5810, + "foreignNotional24h": 0.0679694, + "prevPrice24h": 0.00001233, + "vwap": 0.0000117, + "highPrice": 0.00001233, + "lowPrice": 0.00001132, + "lastPrice": 0.00001133, + "lastPriceProtected": 0.00001133, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0574, + "bidPrice": 0.00001136, + "midPrice": 0.000011415, + "askPrice": 0.00001147, + "impactBidPrice": 0.000010984, + "impactMidPrice": 0.000011345, + "impactAskPrice": 0.000011715, + "hasLiquidity": false, + "openInterest": 16022000, + "openValue": 181529260, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": -0.11, + "fairBasis": -0.00000006, + "fairPrice": 0.00001133, + "markMethod": "FairPrice", + "markPrice": 0.00001133, + "indicativeSettlePrice": 0.00001139, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "XRPZ24", + "rootSymbol": "XRP", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-09-10T04:00:00.000Z", + "front": "2024-09-10T04:00:00.000Z", + "expiry": "2024-12-27T12:00:00.000Z", + "settle": "2024-12-27T12:00:00.000Z", + "listedSettle": "2024-12-27T12:00:00.000Z", + "positionCurrency": "XRP", + "underlying": "XRP", + "quoteCurrency": "XBT", + "underlyingSymbol": "XRPXBT=", + "reference": "BMEX", + "referenceSymbol": ".BXRPXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 0.00002547, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 477571000, + "totalVolume": 477571000, + "volume": 0, + "volume24h": 425000, + "prevTotalTurnover": 5871360240, + "totalTurnover": 5871360240, + "turnover": 0, + "turnover24h": 10591330, + "homeNotional24h": 4250, + "foreignNotional24h": 0.1059133, + "prevPrice24h": 0.00002579, + "vwap": 0.000024922, + "highPrice": 0.00002634, + "lowPrice": 0.00002407, + "lastPrice": 0.00002424, + "lastPriceProtected": 0.00002424, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0586, + "bidPrice": 0.00002417, + "midPrice": 0.00002425, + "askPrice": 0.00002433, + "impactBidPrice": 0.000023529, + "impactMidPrice": 0.000024265, + "impactAskPrice": 0.000025002, + "hasLiquidity": false, + "openInterest": 130635000, + "openValue": 3158754300, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "fairBasis": 0, + "fairPrice": 0.00002418, + "markMethod": "FairPrice", + "markPrice": 0.00002418, + "indicativeSettlePrice": 0.00002418, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "P_SBFPARDONF25", + "rootSymbol": "SBFPARDON", + "state": "Open", + "typ": "FFICSX", + "listing": "2023-11-10T03:00:00.000Z", + "front": "2023-11-10T03:00:00.000Z", + "expiry": "2025-01-31T12:00:00.000Z", + "settle": "2025-01-31T12:00:00.000Z", + "listedSettle": "2025-01-31T12:00:00.000Z", + "underlying": "USDT", + "quoteCurrency": "XXX", + "reference": "BMEX", + "maxOrderQty": 10000000, + "maxPrice": 100, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 0, + "taxed": true, + "deleverage": true, + "makerFee": -0.0005, + "takerFee": 0.002, + "settlementFee": 0, + "prevClosePrice": 25, + "limitDownPrice": 0, + "limitUpPrice": 100, + "prevTotalVolume": 3613, + "totalVolume": 3613, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 1107910600, + "totalTurnover": 1107910600, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 0.1, + "lastPrice": 0.1, + "lastPriceProtected": 0.1, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.9989, + "bidPrice": 0.1, + "midPrice": 44.55, + "askPrice": 89, + "hasLiquidity": false, + "openInterest": 91, + "openValue": 22750000, + "fairBasisRate": 0, + "markMethod": "LastPrice", + "markPrice": 25, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "HYPEUSDTZ25", + "rootSymbol": "HYPE", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-12-02T09:00:00.000Z", + "front": "2024-12-02T09:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "HYPE", + "underlying": "HYPE", + "quoteCurrency": "USDT", + "underlyingSymbol": "HYPET=", + "reference": "BMEX", + "referenceSymbol": ".BHYPET30M", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1000, + "tickSize": 0.001, + "multiplier": 1000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.5, + "maintMargin": 0.25, + "riskLimit": 50000000000, + "riskStep": 50000000000, + "limit": 0.2, + "taxed": true, + "deleverage": true, + "makerFee": -0.000175, + "takerFee": 0.0025, + "settlementFee": 0, + "prevClosePrice": 11.966, + "limitDownPrice": 11.201, + "limitUpPrice": 16.801, + "prevTotalVolume": 9000, + "totalVolume": 9000, + "volume": 0, + "volume24h": 2000, + "prevTotalTurnover": 107346000, + "totalTurnover": 107346000, + "turnover": 0, + "turnover24h": 27988000, + "homeNotional24h": 2, + "foreignNotional24h": 27.988, + "prevPrice24h": 11.966, + "vwap": 13.994, + "highPrice": 14.001, + "lowPrice": 13.987, + "lastPrice": 14.001, + "lastPriceProtected": 14.001, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.1701, + "bidPrice": 13.003, + "midPrice": 15.153, + "askPrice": 17.303, + "hasLiquidity": false, + "openInterest": 4000, + "openValue": 56004000, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "LastPrice", + "markPrice": 14.001, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "USUALUSDTZ25", + "rootSymbol": "USUAL", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-11-21T09:00:00.000Z", + "front": "2024-11-21T09:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "USUAL", + "underlying": "USUAL", + "quoteCurrency": "USDT", + "underlyingSymbol": "USUALT=", + "reference": "BMEX", + "referenceSymbol": ".BUSUALT30M", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 10, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.5, + "maintMargin": 0.25, + "riskLimit": 50000000000, + "riskStep": 50000000000, + "limit": 0.2, + "taxed": true, + "deleverage": true, + "makerFee": -0.000175, + "takerFee": 0.0025, + "settlementFee": 0, + "prevClosePrice": 0.27, + "limitDownPrice": 0.3686, + "limitUpPrice": 0.553, + "prevTotalVolume": 550, + "totalVolume": 550, + "volume": 0, + "volume24h": 30, + "prevTotalTurnover": 137097000, + "totalTurnover": 137097000, + "turnover": 0, + "turnover24h": 11648000, + "homeNotional24h": 30, + "foreignNotional24h": 11.648, + "prevPrice24h": 0.27, + "vwap": 0.3882667, + "highPrice": 0.4608, + "lowPrice": 0.32, + "lastPrice": 0.4608, + "lastPriceProtected": 0.4608, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.7067, + "bidPrice": 0.0001, + "midPrice": 0.28685, + "askPrice": 0.5736, + "hasLiquidity": false, + "openInterest": 30, + "openValue": 13824000, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "LastPrice", + "markPrice": 0.4608, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "MEUSDTZ25", + "rootSymbol": "ME", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-11-21T09:00:00.000Z", + "front": "2024-11-21T09:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "ME", + "underlying": "ME", + "quoteCurrency": "USDT", + "underlyingSymbol": "MET=", + "reference": "BMEX", + "referenceSymbol": ".BMET30M", + "maxOrderQty": 1000000000, + "maxPrice": 10000, + "lotSize": 1, + "tickSize": 0.0001, + "multiplier": 1000000, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.5, + "maintMargin": 0.25, + "riskLimit": 50000000000, + "riskStep": 50000000000, + "limit": 0.2, + "taxed": true, + "deleverage": true, + "makerFee": -0.000175, + "takerFee": 0.0025, + "settlementFee": 0, + "prevClosePrice": 2.42, + "limitDownPrice": 1.936, + "limitUpPrice": 2.904, + "prevTotalVolume": 1, + "totalVolume": 1, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 2420000, + "totalTurnover": 2420000, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 2.42, + "lastPrice": 2.42, + "lastPriceProtected": 2.42, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": 0.0041, + "bidPrice": 2.41, + "midPrice": 2.415, + "askPrice": 2.42, + "hasLiquidity": false, + "openInterest": 1, + "openValue": 2420000, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "LastPrice", + "markPrice": 2.42, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "P_POWELLK26", + "rootSymbol": "POWELL", + "state": "Open", + "typ": "FFICSX", + "listing": "2024-08-09T04:00:00.000Z", + "front": "2024-08-09T04:00:00.000Z", + "expiry": "2026-05-29T12:00:00.000Z", + "settle": "2026-05-29T12:00:00.000Z", + "listedSettle": "2026-05-29T12:00:00.000Z", + "underlying": "USDT", + "quoteCurrency": "XXX", + "reference": "BMEX", + "maxOrderQty": 10000000, + "maxPrice": 100, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 0, + "taxed": true, + "deleverage": true, + "makerFee": -0.0005, + "takerFee": 0.002, + "settlementFee": 0, + "prevClosePrice": 50, + "limitDownPrice": 0, + "limitUpPrice": 100, + "prevTotalVolume": 51, + "totalVolume": 51, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 13790300, + "totalTurnover": 13790300, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 1.25, + "lastPrice": 1.25, + "lastPriceProtected": 1.25, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.975, + "bidPrice": 1, + "midPrice": 49.995, + "askPrice": 98.99, + "hasLiquidity": false, + "openInterest": 10, + "openValue": 5000000, + "fairBasisRate": 0, + "markMethod": "LastPrice", + "markPrice": 50, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "P_FTXZ26", + "rootSymbol": "FTX", + "state": "Open", + "typ": "FFICSX", + "listing": "2023-09-13T03:00:00.000Z", + "front": "2023-09-13T03:00:00.000Z", + "expiry": "2026-12-25T12:00:00.000Z", + "settle": "2026-12-25T12:00:00.000Z", + "listedSettle": "2026-12-25T12:00:00.000Z", + "underlying": "USDT", + "quoteCurrency": "XXX", + "reference": "BMEX", + "maxOrderQty": 10000000, + "maxPrice": 100, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 10000, + "settlCurrency": "USDt", + "underlyingToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 0, + "taxed": true, + "deleverage": true, + "makerFee": -0.0005, + "takerFee": 0.002, + "settlementFee": 0, + "prevClosePrice": 21, + "limitDownPrice": 0, + "limitUpPrice": 100, + "prevTotalVolume": 1751, + "totalVolume": 1751, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 906024800, + "totalTurnover": 906024800, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 66, + "lastPrice": 66, + "lastPriceProtected": 66, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.3333, + "bidPrice": 22.02, + "midPrice": 60.5, + "askPrice": 98.98, + "hasLiquidity": false, + "openInterest": 676, + "openValue": 141960000, + "fairBasisRate": 0, + "markMethod": "LastPrice", + "markPrice": 21, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "BMEX_USDT", + "rootSymbol": "BMEX", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-11-11T00:00:00.000Z", + "underlying": "BMEX", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 100000, + "lotSize": 1000000, + "tickSize": 0.0001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.1504, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 174985124000000, + "totalVolume": 174985124000000, + "volume": 0, + "volume24h": 215444000000, + "prevTotalTurnover": 75366540894600, + "totalTurnover": 75366540894600, + "turnover": 0, + "turnover24h": 32728971300, + "homeNotional24h": 215444, + "foreignNotional24h": 32728.9713, + "prevPrice24h": 0.1506, + "vwap": 0.15191405330387478, + "highPrice": 0.1538, + "lowPrice": 0.1501, + "lastPrice": 0.1521, + "lastPriceProtected": 0.1521, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": 0.01, + "bidPrice": 0.1521, + "midPrice": 0.15215, + "askPrice": 0.1522, + "impactBidPrice": 0.151161, + "impactMidPrice": 0.15235, + "impactAskPrice": 0.153611, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.1521, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "TRX_USDT", + "rootSymbol": "TRX", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-09-06T07:00:00.000Z", + "underlying": "TRX", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 10000000000000, + "maxPrice": 10000, + "lotSize": 100000000, + "tickSize": 0.00001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.31621, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 37919500000000, + "totalVolume": 37919500000000, + "volume": 0, + "volume24h": 5300000000, + "prevTotalTurnover": 2344268853000, + "totalTurnover": 2344268853000, + "turnover": 0, + "turnover24h": 1613295000, + "homeNotional24h": 5300, + "foreignNotional24h": 1613.295, + "prevPrice24h": 0.31621, + "vwap": 0.3043952830188679, + "highPrice": 0.30876, + "lowPrice": 0.30274, + "lastPrice": 0.30287, + "lastPriceProtected": 0.30287, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0422, + "bidPrice": 0.29216, + "midPrice": 0.297315, + "askPrice": 0.30247, + "impactBidPrice": 0.18291651, + "impactMidPrice": 0.38745, + "impactAskPrice": 0.59198685, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.30287, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "ATOM_USDT", + "rootSymbol": "ATOM", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-03-20T04:00:00.000Z", + "underlying": "ATOM", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 10000000000, + "maxPrice": 100000, + "lotSize": 100000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 10.279, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 22855600000, + "totalVolume": 22855600000, + "volume": 0, + "volume24h": 1900000, + "prevTotalTurnover": 142263006500, + "totalTurnover": 142263006500, + "turnover": 0, + "turnover24h": 19501600, + "homeNotional24h": 1.9, + "foreignNotional24h": 19.5016, + "prevPrice24h": 10.279, + "vwap": 10.264, + "highPrice": 10.264, + "lowPrice": 10.264, + "lastPrice": 10.264, + "lastPriceProtected": 10.264, + "lastTickDirection": "MinusTick", + "lastChangePcnt": 0.0602, + "bidPrice": 9.284, + "midPrice": 9.2925, + "askPrice": 9.301, + "impactBidPrice": 9.28401, + "impactMidPrice": 9.2925, + "impactAskPrice": 9.301, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 10.264, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "capped": false + }, + { + "symbol": "AXS_USDT", + "rootSymbol": "AXS", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", + "underlying": "AXS", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 1000000, + "lotSize": 1000000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 9.088, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 150044626000000, + "totalVolume": 150044626000000, + "volume": 0, + "volume24h": 255000000, + "prevTotalTurnover": 22862970564950, + "totalTurnover": 22862970564950, + "turnover": 0, + "turnover24h": 23453950, + "homeNotional24h": 2.55, + "foreignNotional24h": 23.45395, + "prevPrice24h": 9.088, + "vwap": 9.197627450980391, + "highPrice": 9.459, + "lowPrice": 8.684, + "lastPrice": 8.684, + "lastPriceProtected": 8.684, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0445, + "bidPrice": 8.549, + "midPrice": 8.556, + "askPrice": 8.563, + "impactBidPrice": 8.5471, + "impactMidPrice": 8.5555, + "impactAskPrice": 8.5641, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 8.684, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "capped": false + }, + { + "symbol": "STLS_USDT", + "rootSymbol": "STLS", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-12-09T07:00:00.000Z", + "underlying": "STLS", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 100000000000000, + "maxPrice": 100, + "lotSize": 100000000, + "tickSize": 0.0001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.4, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 3590700000000, + "totalVolume": 3721400000000, + "volume": 130700000000, + "volume24h": 3707400000000, + "prevTotalTurnover": 4120791100, + "totalTurnover": 4239753500, + "turnover": 118962400, + "turnover24h": 4226183100, + "homeNotional24h": 37074, + "foreignNotional24h": 4226.183099999999, + "prevPrice24h": 0.4, + "vwap": 0.11399317850784917, + "highPrice": 1.2147, + "lowPrice": 0.0286, + "lastPrice": 0.0972, + "lastPriceProtected": 0.0972, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.757, + "bidPrice": 0.096, + "midPrice": 0.09705, + "askPrice": 0.0981, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.0972, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "GOAT_USDT", + "rootSymbol": "GOAT", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-10-23T04:00:00.000Z", + "underlying": "GOAT", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 100000000000000, + "maxPrice": 100, + "lotSize": 100000000, + "tickSize": 0.00001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.74725, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1153700000000, + "totalVolume": 1153700000000, + "volume": 0, + "volume24h": 100000000, + "prevTotalTurnover": 8483905870, + "totalTurnover": 8483905870, + "turnover": 0, + "turnover24h": 720860, + "homeNotional24h": 1, + "foreignNotional24h": 0.72086, + "prevPrice24h": 0.74725, + "vwap": 0.72086, + "highPrice": 0.72086, + "lowPrice": 0.72086, + "lastPrice": 0.72086, + "lastPriceProtected": 0.72086, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0714, + "bidPrice": 0.71064, + "midPrice": 0.923335, + "askPrice": 1.13603, + "impactBidPrice": 0.696385, + "impactMidPrice": 0.783535, + "impactAskPrice": 0.870693, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.72086, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "LINK_USDT", + "rootSymbol": "LINK", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", + "underlying": "LINK", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 100000, + "lotSize": 10000000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 26.25, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 423946760000000, + "totalVolume": 423946760000000, + "volume": 0, + "volume24h": 11460000000, + "prevTotalTurnover": 32780333067700, + "totalTurnover": 32780333067700, + "turnover": 0, + "turnover24h": 3002703300, + "homeNotional24h": 114.60000000000001, + "foreignNotional24h": 3002.7033, + "prevPrice24h": 25.461, + "vwap": 26.20159947643979, + "highPrice": 27.091, + "lowPrice": 25, + "lastPrice": 25, + "lastPriceProtected": 25, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0181, + "bidPrice": 24.727, + "midPrice": 24.8135, + "askPrice": 24.9, + "impactBidPrice": 24.72701, + "impactMidPrice": 24.8135, + "impactAskPrice": 24.90001, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 25, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "capped": false + }, + { + "symbol": "XRP_USDT", + "rootSymbol": "XRP", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-03-20T04:00:00.000Z", + "underlying": "XRP", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 10000, + "lotSize": 1000000, + "tickSize": 0.0001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 2.5016, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1583680000000, + "totalVolume": 1583680000000, + "volume": 0, + "volume24h": 15980000000, + "prevTotalTurnover": 1268810599200, + "totalTurnover": 1268810599200, + "turnover": 0, + "turnover24h": 40129608400, + "homeNotional24h": 15980, + "foreignNotional24h": 40129.6084, + "prevPrice24h": 2.5016, + "vwap": 2.5112395744680853, + "highPrice": 2.6034, + "lowPrice": 2.3636, + "lastPrice": 2.3993, + "lastPriceProtected": 2.3993, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0409, + "bidPrice": 2.3718, + "midPrice": 2.3799, + "askPrice": 2.388, + "impactBidPrice": 2.371801, + "impactMidPrice": 2.3802, + "impactAskPrice": 2.388664, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 2.3993, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "APE_USDT", + "rootSymbol": "APE", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", + "underlying": "APE", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 10000000000000, + "maxPrice": 100000, + "lotSize": 10000000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 1.888, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 554470430000000, + "totalVolume": 554470430000000, + "volume": 0, + "volume24h": 50540000000, + "prevTotalTurnover": 33916169291700, + "totalTurnover": 33916169291700, + "turnover": 0, + "turnover24h": 894098300, + "homeNotional24h": 505.4, + "foreignNotional24h": 894.0983, + "prevPrice24h": 1.888, + "vwap": 1.7690904234269886, + "highPrice": 1.804, + "lowPrice": 1.735, + "lastPrice": 1.735, + "lastPriceProtected": 1.735, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.081, + "bidPrice": 1.669, + "midPrice": 1.671, + "askPrice": 1.673, + "impactBidPrice": 1.66793, + "impactMidPrice": 1.6705, + "impactAskPrice": 1.6734, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 1.735, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "capped": false + }, + { + "symbol": "UNI_USDT", + "rootSymbol": "UNI", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", + "underlying": "UNI", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 100000, + "lotSize": 10000000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 18.758, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 721908860000000, + "totalVolume": 721908860000000, + "volume": 0, + "volume24h": 12000000000, + "prevTotalTurnover": 45037023135100, + "totalTurnover": 45037023135100, + "turnover": 0, + "turnover24h": 2251424400, + "homeNotional24h": 120, + "foreignNotional24h": 2251.4244, + "prevPrice24h": 18.059, + "vwap": 18.76187, + "highPrice": 19.011, + "lowPrice": 18.389, + "lastPrice": 18.389, + "lastPriceProtected": 18.389, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0051, + "bidPrice": 17.194, + "midPrice": 17.207, + "askPrice": 17.22, + "impactBidPrice": 17.19401, + "impactMidPrice": 17.207, + "impactAskPrice": 17.22001, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 18.389, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "capped": false + }, + { + "symbol": "BONK_USDT", + "rootSymbol": "BONK", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-03-12T04:00:00.000Z", + "underlying": "BONK", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 100000000000000, + "maxPrice": 0.01, + "lotSize": 100000, + "tickSize": 0.000000001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.000048403, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 12038568278600000, + "totalVolume": 12038568278600000, + "volume": 0, + "volume24h": 5822557400000, + "prevTotalTurnover": 2993719469719, + "totalTurnover": 2993719469719, + "turnover": 0, + "turnover24h": 2599926137, + "homeNotional24h": 58225574, + "foreignNotional24h": 2599.926137, + "prevPrice24h": 0.000048403, + "vwap": 0.00004465264931523045, + "highPrice": 0.000046225, + "lowPrice": 0.000043351, + "lastPrice": 0.000043351, + "lastPriceProtected": 0.000043351, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.1044, + "bidPrice": 0.000043063, + "midPrice": 0.000043089, + "askPrice": 0.000043115, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.000043351, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.000000001, + "capped": false + }, + { + "symbol": "TRUMP_USDT", + "rootSymbol": "TRUMP", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-08-20T04:00:00.000Z", + "underlying": "TRUMP", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 10000000000, + "maxPrice": 100000, + "lotSize": 100000000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 2.87, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 491900000000, + "totalVolume": 491900000000, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 18245447000, + "totalTurnover": 18245447000, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 2.87, + "lastPrice": 2.87, + "lastPriceProtected": 2.87, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.2059, + "bidPrice": 1.745, + "midPrice": 2.1215, + "askPrice": 2.498, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 2.87, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "capped": false + }, + { + "symbol": "SOL_USDT", + "rootSymbol": "SOL", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-09-27T07:00:00.000Z", + "underlying": "SOL", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 1000000, + "lotSize": 1000000, + "tickSize": 0.01, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 235.05, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 160352563000000, + "totalVolume": 160352563000000, + "volume": 0, + "volume24h": 3973000000, + "prevTotalTurnover": 9336377567800, + "totalTurnover": 9336377567800, + "turnover": 0, + "turnover24h": 905178200, + "homeNotional24h": 3.973, + "foreignNotional24h": 905.1782000000001, + "prevPrice24h": 235.05, + "vwap": 227.83241882708282, + "highPrice": 235.79, + "lowPrice": 225.51, + "lastPrice": 226.55, + "lastPriceProtected": 226.55, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0494, + "bidPrice": 226.11, + "midPrice": 226.26, + "askPrice": 226.41, + "impactBidPrice": 226.111, + "impactMidPrice": 226.26, + "impactAskPrice": 226.411, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 226.55, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "POL_USDT", + "rootSymbol": "POL", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-09-09T04:00:00.000Z", + "underlying": "POL", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 100000000000000, + "maxPrice": 10000, + "lotSize": 1000000000, + "tickSize": 0.0001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.6965, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 373267000000000, + "totalVolume": 373267000000000, + "volume": 0, + "volume24h": 1967000000000, + "prevTotalTurnover": 176203162500, + "totalTurnover": 176203162500, + "turnover": 0, + "turnover24h": 1310816100, + "homeNotional24h": 1967, + "foreignNotional24h": 1310.8161, + "prevPrice24h": 0.6965, + "vwap": 0.6664037112353839, + "highPrice": 0.7018, + "lowPrice": 0.65, + "lastPrice": 0.6527, + "lastPriceProtected": 0.6527, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0629, + "bidPrice": 0.6367, + "midPrice": 0.63735, + "askPrice": 0.638, + "impactBidPrice": 0.636229, + "impactMidPrice": 0.6371, + "impactAskPrice": 0.638068, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.6527, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "capped": false + }, + { + "symbol": "XBTETH", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2023-08-01T04:00:00.000Z", + "front": "2023-08-01T04:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "XBT", + "quoteCurrency": "ETH", + "underlyingSymbol": "XBTETH=", + "reference": "BMEX", + "referenceSymbol": ".BXBTETH", + "maxOrderQty": 10000000, + "maxPrice": 100000, + "lotSize": 1, + "tickSize": 0.001, + "multiplier": -1000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XBTBON8H", + "fundingQuoteSymbol": ".ETHBON8H", + "fundingPremiumSymbol": ".XBTETHPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0, + "indicativeFundingRate": 0, + "prevClosePrice": 25.0988, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 838883, + "totalVolume": 838883, + "volume": 0, + "volume24h": 3760, + "prevTotalTurnover": 37878342721, + "totalTurnover": 37878342721, + "turnover": 0, + "turnover24h": 148983017, + "homeNotional24h": 1.4898301700000003, + "foreignNotional24h": 37.599999999999994, + "prevPrice24h": 25, + "vwap": 25.2379, + "highPrice": 25.516, + "lowPrice": 25, + "lastPrice": 25.325, + "lastPriceProtected": 25.325, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": 0.0111, + "bidPrice": 25.378, + "midPrice": 25.4205, + "askPrice": 25.463, + "impactBidPrice": 25.3781, + "impactMidPrice": 25.4325, + "impactAskPrice": 25.4874, + "hasLiquidity": true, + "openInterest": 216105, + "openValue": 8488820505, + "fairMethod": "FundingRate", + "fairBasisRate": 0, + "fairBasis": 0, + "fairPrice": 25.4577, + "markMethod": "FairPrice", + "markPrice": 25.4577, + "indicativeSettlePrice": 25.4577, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0003, + "capped": false + }, + { + "symbol": "XBTUSDT", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "XBT", + "underlying": "XBT", + "quoteCurrency": "USDT", + "underlyingSymbol": "XBTT=", + "reference": "BMEX", + "referenceSymbol": ".BXBTT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.1, + "multiplier": 1, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XBTBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".XBTUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00024, + "indicativeFundingRate": 0.000238, + "prevClosePrice": 99705.51, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 1044615208600, + "totalVolume": 1044616421400, + "volume": 1212800, + "volume24h": 294642200, + "prevTotalTurnover": 38842198136488240, + "totalTurnover": 38842317733296920, + "turnover": 119596808680, + "turnover24h": 29362092108410, + "homeNotional24h": 294.6422000000001, + "foreignNotional24h": 29362092.108410005, + "prevPrice24h": 99304.4, + "vwap": 99653.39, + "highPrice": 101483.5, + "lowPrice": 98312.8, + "lastPrice": 98409.7, + "lastPriceProtected": 98409.7, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.009, + "bidPrice": 98406.5, + "midPrice": 98413.3, + "askPrice": 98420.1, + "impactBidPrice": 98376.35, + "impactMidPrice": 98398.25, + "impactAskPrice": 98420.23, + "hasLiquidity": true, + "openInterest": 141930200, + "openValue": 13958954391368, + "fairMethod": "FundingRate", + "fairBasisRate": 0.26280000000000003, + "fairBasis": 2.41, + "fairPrice": 98350.84, + "markMethod": "FairPrice", + "markPrice": 98350.84, + "indicativeSettlePrice": 98348.43, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XBTUSD", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2016-05-13T12:00:00.000Z", + "front": "2016-05-13T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.1, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 20000000000, + "riskStep": 15000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XBTBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".XBTUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.00017, + "indicativeFundingRate": 0.000161, + "prevClosePrice": 99754.43, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 3878801967489, + "totalVolume": 3878803737189, + "volume": 1769700, + "volume24h": 488458700, + "prevTotalTurnover": 37678305826089141, + "totalTurnover": 37678307621909841, + "turnover": 1795820700, + "turnover24h": 489914016711, + "homeNotional24h": 4899.140167110001, + "foreignNotional24h": 488458700, + "prevPrice24h": 99345, + "vwap": 99703.8795, + "highPrice": 101525.90000000001, + "lowPrice": 98312.3, + "lastPrice": 98417.9, + "lastPriceProtected": 98419.3847, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0093, + "bidPrice": 98431.2, + "midPrice": 98437.2, + "askPrice": 98443.2, + "impactBidPrice": 98419.3847, + "impactMidPrice": 98431.45, + "impactAskPrice": 98443.6066, + "hasLiquidity": true, + "openInterest": 433340600, + "openValue": 440664056140, + "fairMethod": "FundingRate", + "fairBasisRate": 0.18615, + "fairBasis": 1.71, + "fairPrice": 98337.78, + "markMethod": "FairPrice", + "markPrice": 98337.78, + "indicativeSettlePrice": 98336.07, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XBTEUR", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-06-16T04:00:00.000Z", + "front": "2021-06-16T04:00:00.000Z", + "positionCurrency": "EUR", + "underlying": "XBT", + "quoteCurrency": "EUR", + "underlyingSymbol": "XBTEUR=", + "reference": "BMEX", + "referenceSymbol": ".BXBTEUR", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".XBTBON8H", + "fundingQuoteSymbol": ".EURBON8H", + "fundingPremiumSymbol": ".XBTEURPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000135, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 94337.66, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2830151000, + "totalVolume": 2830151000, + "volume": 0, + "volume24h": 2072000, + "prevTotalTurnover": 8466972901070, + "totalTurnover": 8466972901070, + "turnover": 0, + "turnover24h": 2207416143, + "homeNotional24h": 22.07416143, + "foreignNotional24h": 2072000, + "prevPrice24h": 93881, + "vwap": 93865.8657, + "highPrice": 95917.5, + "lowPrice": 92863, + "lastPrice": 93120.5, + "lastPriceProtected": 93120.5, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0093, + "bidPrice": 92919, + "midPrice": 92938.25, + "askPrice": 92957.5, + "impactBidPrice": 92867.7563, + "impactMidPrice": 92941, + "impactAskPrice": 93014.6033, + "hasLiquidity": true, + "openInterest": 1822800, + "openValue": 1960457856, + "fairMethod": "FundingRate", + "fairBasisRate": 0.147825, + "fairBasis": 1.28, + "fairPrice": 92978.16, + "markMethod": "FairPrice", + "markPrice": 92978.16, + "indicativeSettlePrice": 92976.88, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XBTZ24", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-03-12T04:00:00.000Z", + "front": "2024-03-12T04:00:00.000Z", + "expiry": "2024-12-27T12:00:00.000Z", + "settle": "2024-12-27T12:00:00.000Z", + "listedSettle": "2024-12-27T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 100689.13, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 623622900, + "totalVolume": 623622900, + "volume": 0, + "volume24h": 1311900, + "prevTotalTurnover": 839633818053, + "totalTurnover": 839633818053, + "turnover": 0, + "turnover24h": 1310641630, + "homeNotional24h": 13.106416299999998, + "foreignNotional24h": 1311900, + "prevPrice24h": 99706, + "vwap": 100097.0942, + "highPrice": 102370.5, + "lowPrice": 99129, + "lastPrice": 99491, + "lastPriceProtected": 99491, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0022, + "bidPrice": 99199, + "midPrice": 99261.5, + "askPrice": 99324, + "impactBidPrice": 99199.4604, + "impactMidPrice": 99263.75, + "impactAskPrice": 99328.5391, + "hasLiquidity": true, + "openInterest": 27016400, + "openValue": 27217942344, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.19, + "fairBasis": 923.14, + "fairPrice": 99259.21, + "markMethod": "FairPrice", + "markPrice": 99259.21, + "indicativeSettlePrice": 98336.07, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTUSDTZ24", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-09-10T04:00:00.000Z", + "front": "2024-09-10T04:00:00.000Z", + "expiry": "2024-12-27T12:00:00.000Z", + "settle": "2024-12-27T12:00:00.000Z", + "listedSettle": "2024-12-27T12:00:00.000Z", + "positionCurrency": "XBT", + "underlying": "XBT", + "quoteCurrency": "USDT", + "underlyingSymbol": "XBTT=", + "reference": "BMEX", + "referenceSymbol": ".BXBTT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.5, + "multiplier": 1, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 101003.07, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 20762000, + "totalVolume": 20762000, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 1625881096500, + "totalTurnover": 1625881096500, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "prevPrice24h": 98915, + "lastPrice": 98915, + "lastPriceProtected": 98915, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0438, + "bidPrice": 97750.5, + "midPrice": 102875.25, + "askPrice": 108000, + "impactBidPrice": 97554.216, + "impactMidPrice": 102830.25, + "impactAskPrice": 108106.584, + "hasLiquidity": false, + "openInterest": 10248000, + "openValue": 1020324083520, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.25, + "fairBasis": 1214.81, + "fairPrice": 99563.24, + "markMethod": "FairPrice", + "markPrice": 99563.24, + "indicativeSettlePrice": 98348.43, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTF25", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-11-26T04:00:00.000Z", + "front": "2024-11-26T04:00:00.000Z", + "expiry": "2025-01-31T12:00:00.000Z", + "settle": "2025-01-31T12:00:00.000Z", + "listedSettle": "2025-01-31T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 102115.75, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 6428400, + "totalVolume": 6428400, + "volume": 0, + "volume24h": 116600, + "prevTotalTurnover": 6280260146, + "totalTurnover": 6280260146, + "turnover": 0, + "turnover24h": 114585113, + "homeNotional24h": 1.1458511299999998, + "foreignNotional24h": 116600, + "prevPrice24h": 101516.5, + "vwap": 101759.4204, + "highPrice": 103773.5, + "lowPrice": 100715, + "lastPrice": 100921, + "lastPriceProtected": 100921, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.0059, + "bidPrice": 100575, + "midPrice": 100615.5, + "askPrice": 100656, + "impactBidPrice": 100431.857, + "impactMidPrice": 100622.5, + "impactAskPrice": 100813.5655, + "hasLiquidity": true, + "openInterest": 123400, + "openValue": 122637388, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.16, + "fairBasis": 2286.1, + "fairPrice": 100622.17, + "markMethod": "FairPrice", + "markPrice": 100622.17, + "indicativeSettlePrice": 98336.07, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTH25", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-06-11T04:00:00.000Z", + "front": "2024-06-11T04:00:00.000Z", + "expiry": "2025-03-28T12:00:00.000Z", + "settle": "2025-03-28T12:00:00.000Z", + "listedSettle": "2025-03-28T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 104263.88, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 253016600, + "totalVolume": 253023800, + "volume": 7200, + "volume24h": 1415700, + "prevTotalTurnover": 338353987932, + "totalTurnover": 338360997690, + "turnover": 7009758, + "turnover24h": 1360553226, + "homeNotional24h": 13.605532260000002, + "foreignNotional24h": 1415700, + "prevPrice24h": 103715, + "vwap": 104053.9416, + "highPrice": 106067, + "lowPrice": 102410.5, + "lastPrice": 102630, + "lastPriceProtected": 102630, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0105, + "bidPrice": 102500.5, + "midPrice": 102555.75, + "askPrice": 102611, + "impactBidPrice": 102449.5692, + "impactMidPrice": 102614.25, + "impactAskPrice": 102779.1482, + "hasLiquidity": true, + "openInterest": 36689300, + "openValue": 35812425730, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.14, + "fairBasis": 4112.54, + "fairPrice": 102448.61, + "markMethod": "FairPrice", + "markPrice": 102448.61, + "indicativeSettlePrice": 98336.07, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTM25", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-09-10T04:00:00.000Z", + "front": "2024-09-10T04:00:00.000Z", + "expiry": "2025-06-27T12:00:00.000Z", + "settle": "2025-06-27T12:00:00.000Z", + "listedSettle": "2025-06-27T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 107445.09, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 171420800, + "totalVolume": 171421100, + "volume": 300, + "volume24h": 1607300, + "prevTotalTurnover": 207296664176, + "totalTurnover": 207296947526, + "turnover": 283350, + "turnover24h": 1495009675, + "homeNotional24h": 14.95009675, + "foreignNotional24h": 1607300, + "prevPrice24h": 106849, + "vwap": 107511.8532, + "highPrice": 109395, + "lowPrice": 105541, + "lastPrice": 105876.5, + "lastPriceProtected": 105876.5, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0091, + "bidPrice": 105510, + "midPrice": 105637.25, + "askPrice": 105764.5, + "impactBidPrice": 105391.8469, + "impactMidPrice": 105653, + "impactAskPrice": 105914.2518, + "hasLiquidity": true, + "openInterest": 35986200, + "openValue": 33987526452, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.14, + "fairBasis": 7544.87, + "fairPrice": 105880.94, + "markMethod": "FairPrice", + "markPrice": 105880.94, + "indicativeSettlePrice": 98336.07, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTU25", + "rootSymbol": "XBT", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-11-18T04:00:00.000Z", + "front": "2024-11-18T04:00:00.000Z", + "expiry": "2025-09-26T12:00:00.000Z", + "settle": "2025-09-26T12:00:00.000Z", + "listedSettle": "2025-09-26T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 110926.93, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 13358200, + "totalVolume": 13358200, + "volume": 0, + "volume24h": 548800, + "prevTotalTurnover": 12399260878, + "totalTurnover": 12399260878, + "turnover": 0, + "turnover24h": 496005211, + "homeNotional24h": 4.9600521099999995, + "foreignNotional24h": 548800, + "prevPrice24h": 110500, + "vwap": 110645.172, + "highPrice": 113605, + "lowPrice": 108902.5, + "lastPrice": 109619, + "lastPriceProtected": 109619, + "lastTickDirection": "ZeroPlusTick", + "lastChangePcnt": -0.008, + "bidPrice": 109237, + "midPrice": 109446, + "askPrice": 109655, + "impactBidPrice": 109067.9057, + "impactMidPrice": 109465, + "impactAskPrice": 109862.3425, + "hasLiquidity": false, + "openInterest": 2901100, + "openValue": 2653926280, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.14, + "fairBasis": 10977.21, + "fairPrice": 109313.28, + "markMethod": "FairPrice", + "markPrice": 109313.28, + "indicativeSettlePrice": 98336.07, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBT_USDT", + "rootSymbol": "XBT", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", + "underlying": "XBT", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 10000000000, + "maxPrice": 1000000, + "lotSize": 10000, + "tickSize": 0.5, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 99746, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2676564600000, + "totalVolume": 2676564600000, + "volume": 0, + "volume24h": 599250000, + "prevTotalTurnover": 688146200464350, + "totalTurnover": 688146200464350, + "turnover": 0, + "turnover24h": 596687122550, + "homeNotional24h": 5.9925, + "foreignNotional24h": 596687.1225500001, + "prevPrice24h": 99160.5, + "vwap": 99572.31915727993, + "highPrice": 101243, + "lowPrice": 98355.5, + "lastPrice": 98690.5, + "lastPriceProtected": 98690.5, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0022, + "bidPrice": 98355.5, + "midPrice": 98380.5, + "askPrice": 98405.5, + "impactBidPrice": 98363.5, + "impactMidPrice": 98386.25, + "impactAskPrice": 98409, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 98690.5, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.5, + "capped": false + }, + { + "symbol": "ETHUSDT", + "rootSymbol": "ETH", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "ETH", + "quoteCurrency": "USDT", + "underlyingSymbol": "ETHT=", + "reference": "BMEX", + "referenceSymbol": ".BETHT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.01, + "multiplier": 10, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ETHBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".ETHUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000207, + "indicativeFundingRate": 0.000311, + "prevClosePrice": 3971.964, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 564933477000, + "totalVolume": 564933963000, + "volume": 486000, + "volume24h": 140212000, + "prevTotalTurnover": 12157113156972801, + "totalTurnover": 12157131991096401, + "turnover": 18834123600, + "turnover24h": 5534739065600, + "homeNotional24h": 1402.1199999999994, + "foreignNotional24h": 5534739.065599999, + "prevPrice24h": 3962.2, + "vwap": 3947.4076, + "highPrice": 4020.29, + "lowPrice": 3853.79, + "lastPrice": 3865.71, + "lastPriceProtected": 3865.71, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0244, + "bidPrice": 3864.36, + "midPrice": 3865.43, + "askPrice": 3866.5, + "impactBidPrice": 3863.0884, + "impactMidPrice": 3864.795, + "impactAskPrice": 3866.5085, + "hasLiquidity": true, + "openInterest": 166340000, + "openValue": 6422239357400, + "fairMethod": "FundingRate", + "fairBasisRate": 0.22666499999999998, + "fairBasis": 0.082, + "fairPrice": 3860.911, + "markMethod": "FairPrice", + "markPrice": 3860.911, + "indicativeSettlePrice": 3860.829, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ETHUSD", + "rootSymbol": "ETH", + "state": "Open", + "typ": "FFWCSX", + "listing": "2018-08-01T12:00:00.000Z", + "front": "2018-08-01T12:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USD", + "underlyingSymbol": "ETH=", + "reference": "BMEX", + "referenceSymbol": ".BETH", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 10000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".ETHBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".ETHUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000545, + "indicativeFundingRate": 0.000639, + "prevClosePrice": 3973.88, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 184186871882, + "totalVolume": 184186872349, + "volume": 467, + "volume24h": 137438, + "prevTotalTurnover": 4161842633113597, + "totalTurnover": 4161842814104182, + "turnover": 180990585, + "turnover24h": 54268845864, + "homeNotional24h": 13673.26519617959, + "foreignNotional24h": 53993346.931936204, + "prevPrice24h": 3962.5, + "vwap": 3948.61, + "highPrice": 4021.9, + "lowPrice": 3855.74, + "lastPrice": 3866.03, + "lastPriceProtected": 3866.03, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0243, + "bidPrice": 3864.19, + "midPrice": 3864.66, + "askPrice": 3865.13, + "impactBidPrice": 3864.19, + "impactMidPrice": 3864.665, + "impactAskPrice": 3865.14, + "hasLiquidity": true, + "openInterest": 238332, + "openValue": 92006400276, + "fairMethod": "FundingRate", + "fairBasisRate": 0.596775, + "fairBasis": 0.21, + "fairPrice": 3860.43, + "markMethod": "FairPrice", + "markPrice": 3860.43, + "indicativeSettlePrice": 3860.22, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "ETHUSDZ24", + "rootSymbol": "ETH", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-09-10T04:00:00.000Z", + "front": "2024-09-10T04:00:00.000Z", + "expiry": "2024-12-27T12:00:00.000Z", + "settle": "2024-12-27T12:00:00.000Z", + "listedSettle": "2024-12-27T12:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USD", + "underlyingSymbol": "ETH=", + "reference": "BMEX", + "referenceSymbol": ".BETH30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.05, + "multiplier": 100, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 4102.14, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 150342, + "totalVolume": 150348, + "volume": 6, + "volume24h": 1404, + "prevTotalTurnover": 49600217790, + "totalTurnover": 49602609330, + "turnover": 2391540, + "turnover24h": 570000865, + "homeNotional24h": 139.58913597800776, + "foreignNotional24h": 566747.43462168, + "prevPrice24h": 4088.9, + "vwap": 4059.84, + "highPrice": 4141.45, + "lowPrice": 3961.7, + "lastPrice": 3985.9, + "lastPriceProtected": 3985.9, + "lastTickDirection": "ZeroMinusTick", + "lastChangePcnt": -0.0252, + "bidPrice": 3974.35, + "midPrice": 3977.2, + "askPrice": 3980.05, + "impactBidPrice": 3965.04, + "impactMidPrice": 3975.775, + "impactAskPrice": 3986.55, + "hasLiquidity": true, + "openInterest": 25605, + "openValue": 10172226375, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.59, + "fairBasis": 112.53, + "fairPrice": 3972.75, + "markMethod": "FairPrice", + "markPrice": 3972.75, + "indicativeSettlePrice": 3860.22, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "ETHZ24", + "rootSymbol": "ETH", + "state": "Open", + "typ": "FFCCSX", + "listing": "2024-09-10T04:00:00.000Z", + "front": "2024-09-10T04:00:00.000Z", + "expiry": "2024-12-27T12:00:00.000Z", + "settle": "2024-12-27T12:00:00.000Z", + "listedSettle": "2024-12-27T12:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "ETH", + "quoteCurrency": "XBT", + "underlyingSymbol": "ETHXBT=", + "reference": "BMEX", + "referenceSymbol": ".BETHXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 1000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "prevClosePrice": 0.0403, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 618323000, + "totalVolume": 618323000, + "volume": 0, + "volume24h": 2562000, + "prevTotalTurnover": 23513541460, + "totalTurnover": 23513541460, + "turnover": 0, + "turnover24h": 102550380, + "homeNotional24h": 25.620000000000008, + "foreignNotional24h": 1.0255037999999999, + "prevPrice24h": 0.04043, + "vwap": 0.040028, + "highPrice": 0.04047, + "lowPrice": 0.03941, + "lastPrice": 0.03981, + "lastPriceProtected": 0.03981, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0097, + "bidPrice": 0.0397, + "midPrice": 0.03971, + "askPrice": 0.03972, + "impactBidPrice": 0.039701, + "impactMidPrice": 0.039725, + "impactAskPrice": 0.039757, + "hasLiquidity": true, + "openInterest": 186283000, + "openValue": 7397297930, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0.23, + "fairBasis": 0.00045, + "fairPrice": 0.03971, + "markMethod": "FairPrice", + "markPrice": 0.03971, + "indicativeSettlePrice": 0.03926, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "ETH_USDT", + "rootSymbol": "ETH", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 1000000000000, + "maxPrice": 1000000, + "lotSize": 1000000, + "tickSize": 0.05, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 4017.3, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 72233628000000, + "totalVolume": 72233628000000, + "volume": 0, + "volume24h": 3350000000, + "prevTotalTurnover": 115928984434000, + "totalTurnover": 115928984434000, + "turnover": 0, + "turnover24h": 13351253150, + "homeNotional24h": 3.3499999999999996, + "foreignNotional24h": 13351.253149999997, + "prevPrice24h": 4017.3, + "vwap": 3985.448701492537, + "highPrice": 3992, + "lowPrice": 3868.75, + "lastPrice": 3882.45, + "lastPriceProtected": 3882.45, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0336, + "bidPrice": 3859.7, + "midPrice": 3861.275, + "askPrice": 3862.85, + "impactBidPrice": 3859.71, + "impactMidPrice": 3861.275, + "impactAskPrice": 3862.85, + "hasLiquidity": true, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 3882.45, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.05, + "capped": false + }, + { + "symbol": "ETH_XBT", + "rootSymbol": "ETH", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-10-18T06:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "XBT", + "reference": "BMEX", + "maxOrderQty": 100000000000, + "maxPrice": 10, + "lotSize": 1000000, + "tickSize": 0.0000001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "prevClosePrice": 0.0399, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 4970017000000, + "totalVolume": 4970017000000, + "volume": 0, + "volume24h": 753000000, + "prevTotalTurnover": 30308569397, + "totalTurnover": 30308569397, + "turnover": 0, + "turnover24h": 3001975, + "homeNotional24h": 0.753, + "foreignNotional24h": 0.030019749999999994, + "prevPrice24h": 0.0399, + "vwap": 0.03986687, + "highPrice": 0.0399183, + "lowPrice": 0.0398, + "lastPrice": 0.0399183, + "lastPriceProtected": 0.0399183, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0062, + "bidPrice": 0.0377506, + "midPrice": 0.0385601, + "askPrice": 0.0393696, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "markPrice": 0.0399183, + "instantPnl": false, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0000001, + "capped": false + }, + { + "symbol": "LTCUSDT", + "rootSymbol": "LTC", + "state": "Open", + "typ": "FFWCSX", + "listing": "2021-11-10T04:00:00.000Z", + "front": "2021-11-10T04:00:00.000Z", + "positionCurrency": "LTC", + "underlying": "LTC", + "quoteCurrency": "USDT", + "underlyingSymbol": "LTCT=", + "reference": "BMEX", + "referenceSymbol": ".BLTCT", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.01, + "multiplier": 100, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 10000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LTCBON8H", + "fundingQuoteSymbol": ".USDTBON8H", + "fundingPremiumSymbol": ".LTCUSDTPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000148, + "indicativeFundingRate": 0.0001, + "prevClosePrice": 132.737, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 227539419000, + "totalVolume": 227539485000, + "volume": 66000, + "volume24h": 152860000, + "prevTotalTurnover": 1876648673192000, + "totalTurnover": 1876649495288000, + "turnover": 822096000, + "turnover24h": 1971503534000, + "homeNotional24h": 15286, + "foreignNotional24h": 1971503.5340000007, + "prevPrice24h": 133.81, + "vwap": 128.97446, + "highPrice": 136.09, + "lowPrice": 122.82, + "lastPrice": 124.56, + "lastPriceProtected": 124.56, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0691, + "bidPrice": 123.52, + "midPrice": 123.665, + "askPrice": 123.81, + "impactBidPrice": 123.49193, + "impactMidPrice": 123.65, + "impactAskPrice": 123.81695, + "hasLiquidity": true, + "openInterest": 54063000, + "openValue": 667407735000, + "fairMethod": "FundingRate", + "fairBasisRate": 0.16205999999999998, + "fairBasis": 0.002, + "fairPrice": 123.45, + "markMethod": "FairPrice", + "markPrice": 123.45, + "indicativeSettlePrice": 123.448, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "LTCUSD", + "rootSymbol": "LTC", + "state": "Open", + "typ": "FFWCSX", + "listing": "2020-07-30T04:00:00.000Z", + "front": "2020-07-30T04:00:00.000Z", + "underlying": "LTC", + "quoteCurrency": "USD", + "underlyingSymbol": "LTC=", + "reference": "BMEX", + "referenceSymbol": ".BLTC", + "maxOrderQty": 100000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.01, + "multiplier": 200, + "settlCurrency": "XBt", + "quoteToSettleMultiplier": 1017, + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.01, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "fundingBaseSymbol": ".LTCBON8H", + "fundingQuoteSymbol": ".USDBON8H", + "fundingPremiumSymbol": ".LTCUSDPI8H", + "fundingTimestamp": "2024-12-09T12:00:00.000Z", + "fundingInterval": "2000-01-01T08:00:00.000Z", + "fundingRate": 0.000983, + "indicativeFundingRate": 0.00127, + "prevClosePrice": 132.81, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 2006493033, + "totalVolume": 2006493182, + "volume": 149, + "volume24h": 155260, + "prevTotalTurnover": 37908265557990, + "totalTurnover": 37908269262524, + "turnover": 3704534, + "turnover24h": 4074354164, + "homeNotional24h": 30913.538194047414, + "foreignNotional24h": 4056596.2475786526, + "prevPrice24h": 132.75, + "vwap": 131.215, + "highPrice": 136.1, + "lowPrice": 122.73, + "lastPrice": 123.42, + "lastPriceProtected": 123.42, + "lastTickDirection": "MinusTick", + "lastChangePcnt": -0.0703, + "bidPrice": 123.37, + "midPrice": 123.445, + "askPrice": 123.52, + "impactBidPrice": 123.34, + "impactMidPrice": 123.44, + "impactAskPrice": 123.54, + "hasLiquidity": true, + "openInterest": 356744, + "openValue": 8808009360, + "fairMethod": "FundingRate", + "fairBasisRate": 1.076385, + "fairBasis": 0.01, + "fairPrice": 123.45, + "markMethod": "FairPrice", + "markPrice": 123.45, + "indicativeSettlePrice": 123.44, + "instantPnl": true, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.005, + "fundingBaseRate": 0.0003, + "fundingQuoteRate": 0.0006, + "capped": false + }, + { + "symbol": "XRPH25", + "rootSymbol": "XRP", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2024-12-10T04:00:00.000Z", + "front": "2024-12-10T04:00:00.000Z", + "expiry": "2025-03-28T12:00:00.000Z", + "settle": "2025-03-28T12:00:00.000Z", + "listedSettle": "2025-03-28T12:00:00.000Z", + "positionCurrency": "XRP", + "underlying": "XRP", + "quoteCurrency": "XBT", + "underlyingSymbol": "XRPXBT=", + "reference": "BMEX", + "referenceSymbol": ".BXRPXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "ADAH25", + "rootSymbol": "ADA", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2024-12-10T04:00:00.000Z", + "front": "2024-12-10T04:00:00.000Z", + "expiry": "2025-03-28T12:00:00.000Z", + "settle": "2025-03-28T12:00:00.000Z", + "listedSettle": "2025-03-28T12:00:00.000Z", + "positionCurrency": "ADA", + "underlying": "ADA", + "quoteCurrency": "XBT", + "underlyingSymbol": "ADAXBT=", + "reference": "BMEX", + "referenceSymbol": ".BADAXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "ADAM25", + "rootSymbol": "ADA", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-11T04:00:00.000Z", + "front": "2025-03-11T04:00:00.000Z", + "expiry": "2025-06-27T12:00:00.000Z", + "settle": "2025-06-27T12:00:00.000Z", + "listedSettle": "2025-06-27T12:00:00.000Z", + "positionCurrency": "ADA", + "underlying": "ADA", + "quoteCurrency": "XBT", + "underlyingSymbol": "ADAXBT=", + "reference": "BMEX", + "referenceSymbol": ".BADAXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "XRPM25", + "rootSymbol": "XRP", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-11T04:00:00.000Z", + "front": "2025-03-11T04:00:00.000Z", + "expiry": "2025-06-27T12:00:00.000Z", + "settle": "2025-06-27T12:00:00.000Z", + "listedSettle": "2025-06-27T12:00:00.000Z", + "positionCurrency": "XRP", + "underlying": "XRP", + "quoteCurrency": "XBT", + "underlyingSymbol": "XRPXBT=", + "reference": "BMEX", + "referenceSymbol": ".BXRPXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "XRPU25", + "rootSymbol": "XRP", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-06-10T04:00:00.000Z", + "front": "2025-06-10T04:00:00.000Z", + "expiry": "2025-09-26T12:00:00.000Z", + "settle": "2025-09-26T12:00:00.000Z", + "listedSettle": "2025-09-26T12:00:00.000Z", + "positionCurrency": "XRP", + "underlying": "XRP", + "quoteCurrency": "XBT", + "underlyingSymbol": "XRPXBT=", + "reference": "BMEX", + "referenceSymbol": ".BXRPXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "ADAU25", + "rootSymbol": "ADA", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-06-10T04:00:00.000Z", + "front": "2025-06-10T04:00:00.000Z", + "expiry": "2025-09-26T12:00:00.000Z", + "settle": "2025-09-26T12:00:00.000Z", + "listedSettle": "2025-09-26T12:00:00.000Z", + "positionCurrency": "ADA", + "underlying": "ADA", + "quoteCurrency": "XBT", + "underlyingSymbol": "ADAXBT=", + "reference": "BMEX", + "referenceSymbol": ".BADAXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "XRPZ25", + "rootSymbol": "XRP", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-09-09T04:00:00.000Z", + "front": "2025-09-09T04:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "XRP", + "underlying": "XRP", + "quoteCurrency": "XBT", + "underlyingSymbol": "XRPXBT=", + "reference": "BMEX", + "referenceSymbol": ".BXRPXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "ADAZ25", + "rootSymbol": "ADA", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-09-09T04:00:00.000Z", + "front": "2025-09-09T04:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "ADA", + "underlying": "ADA", + "quoteCurrency": "XBT", + "underlyingSymbol": "ADAXBT=", + "reference": "BMEX", + "referenceSymbol": ".BADAXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1, + "lotSize": 1000, + "tickSize": 0.00000001, + "multiplier": 1000000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.05, + "maintMargin": 0.025, + "riskLimit": 5000000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "USDC_USDT", + "rootSymbol": "USDT", + "state": "Unlisted", + "typ": "IFXXXP", + "listing": "2200-02-01T00:00:00.000Z", + "underlying": "USDC", + "quoteCurrency": "USDT", + "reference": "BMEX", + "maxOrderQty": 100000000000000, + "maxPrice": 100, + "lotSize": 1, + "tickSize": 0.00001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:11:08.009Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "XBTG25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2024-12-24T04:00:00.000Z", + "front": "2024-12-24T04:00:00.000Z", + "expiry": "2025-02-28T12:00:00.000Z", + "settle": "2025-02-28T12:00:00.000Z", + "listedSettle": "2025-02-28T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTUSDTH25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2024-12-10T04:00:00.000Z", + "front": "2024-12-10T04:00:00.000Z", + "expiry": "2025-03-28T12:00:00.000Z", + "settle": "2025-03-28T12:00:00.000Z", + "listedSettle": "2025-03-28T12:00:00.000Z", + "positionCurrency": "XBT", + "underlying": "XBT", + "quoteCurrency": "USDT", + "underlyingSymbol": "XBTT=", + "reference": "BMEX", + "referenceSymbol": ".BXBTT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.5, + "multiplier": 1, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTJ25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-02-25T04:00:00.000Z", + "front": "2025-02-25T04:00:00.000Z", + "expiry": "2025-04-25T12:00:00.000Z", + "settle": "2025-04-25T12:00:00.000Z", + "listedSettle": "2025-04-25T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTK25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-25T04:00:00.000Z", + "front": "2025-03-25T04:00:00.000Z", + "expiry": "2025-05-30T12:00:00.000Z", + "settle": "2025-05-30T12:00:00.000Z", + "listedSettle": "2025-05-30T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTUSDTM25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-11T04:00:00.000Z", + "front": "2025-03-11T04:00:00.000Z", + "expiry": "2025-06-27T12:00:00.000Z", + "settle": "2025-06-27T12:00:00.000Z", + "listedSettle": "2025-06-27T12:00:00.000Z", + "positionCurrency": "XBT", + "underlying": "XBT", + "quoteCurrency": "USDT", + "underlyingSymbol": "XBTT=", + "reference": "BMEX", + "referenceSymbol": ".BXBTT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.5, + "multiplier": 1, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTN25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-05-27T04:00:00.000Z", + "front": "2025-05-27T04:00:00.000Z", + "expiry": "2025-07-25T12:00:00.000Z", + "settle": "2025-07-25T12:00:00.000Z", + "listedSettle": "2025-07-25T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTQ25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-06-24T04:00:00.000Z", + "front": "2025-06-24T04:00:00.000Z", + "expiry": "2025-08-29T12:00:00.000Z", + "settle": "2025-08-29T12:00:00.000Z", + "listedSettle": "2025-08-29T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTUSDTU25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-06-10T04:00:00.000Z", + "front": "2025-06-10T04:00:00.000Z", + "expiry": "2025-09-26T12:00:00.000Z", + "settle": "2025-09-26T12:00:00.000Z", + "listedSettle": "2025-09-26T12:00:00.000Z", + "positionCurrency": "XBT", + "underlying": "XBT", + "quoteCurrency": "USDT", + "underlyingSymbol": "XBTT=", + "reference": "BMEX", + "referenceSymbol": ".BXBTT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.5, + "multiplier": 1, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTV25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-08-26T04:00:00.000Z", + "front": "2025-08-26T04:00:00.000Z", + "expiry": "2025-10-31T12:00:00.000Z", + "settle": "2025-10-31T12:00:00.000Z", + "listedSettle": "2025-10-31T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTX25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-09-23T04:00:00.000Z", + "front": "2025-09-23T04:00:00.000Z", + "expiry": "2025-11-28T12:00:00.000Z", + "settle": "2025-11-28T12:00:00.000Z", + "listedSettle": "2025-11-28T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTUSDTZ25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-09-09T04:00:00.000Z", + "front": "2025-09-09T04:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "XBT", + "underlying": "XBT", + "quoteCurrency": "USDT", + "underlyingSymbol": "XBTT=", + "reference": "BMEX", + "referenceSymbol": ".BXBTT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000000, + "lotSize": 1000, + "tickSize": 0.5, + "multiplier": 1, + "settlCurrency": "USDt", + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 1000000000000, + "riskStep": 1000000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "XBTZ25", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-11T04:00:00.000Z", + "front": "2025-03-11T04:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "USD", + "underlying": "XBT", + "quoteCurrency": "USD", + "underlyingSymbol": "XBT=", + "reference": "BMEX", + "referenceSymbol": ".BXBT30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 100, + "tickSize": 0.5, + "multiplier": -100000000, + "settlCurrency": "XBt", + "underlyingToSettleMultiplier": -100000000, + "isQuanto": false, + "isInverse": true, + "initMargin": 0.01, + "maintMargin": 0.005, + "riskLimit": 7500000000, + "riskStep": 7500000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "USDC_XBT", + "rootSymbol": "XBT", + "state": "Unlisted", + "typ": "IFXXXP", + "listing": "2200-02-01T00:00:00.000Z", + "underlying": "USDC", + "quoteCurrency": "XBT", + "reference": "BMEX", + "maxOrderQty": 100000000000000, + "maxPrice": 1, + "lotSize": 1, + "tickSize": 0.00000001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 1, + "maintMargin": 1, + "taxed": true, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "markMethod": "LastPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:11:08.009Z", + "minTick": 0.00000001, + "capped": false + }, + { + "symbol": "ETHUSDH25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2024-12-10T04:00:00.000Z", + "front": "2024-12-10T04:00:00.000Z", + "expiry": "2025-03-28T12:00:00.000Z", + "settle": "2025-03-28T12:00:00.000Z", + "listedSettle": "2025-03-28T12:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USD", + "underlyingSymbol": "ETH=", + "reference": "BMEX", + "referenceSymbol": ".BETH30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.05, + "multiplier": 100, + "settlCurrency": "XBt", + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "ETHH25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2024-12-10T04:00:00.000Z", + "front": "2024-12-10T04:00:00.000Z", + "expiry": "2025-03-28T12:00:00.000Z", + "settle": "2025-03-28T12:00:00.000Z", + "listedSettle": "2025-03-28T12:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "ETH", + "quoteCurrency": "XBT", + "underlyingSymbol": "ETHXBT=", + "reference": "BMEX", + "referenceSymbol": ".BETHXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 1000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "ETHM25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-11T04:00:00.000Z", + "front": "2025-03-11T04:00:00.000Z", + "expiry": "2025-06-27T12:00:00.000Z", + "settle": "2025-06-27T12:00:00.000Z", + "listedSettle": "2025-06-27T12:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "ETH", + "quoteCurrency": "XBT", + "underlyingSymbol": "ETHXBT=", + "reference": "BMEX", + "referenceSymbol": ".BETHXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 1000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "ETHUSDM25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-03-11T04:00:00.000Z", + "front": "2025-03-11T04:00:00.000Z", + "expiry": "2025-06-27T12:00:00.000Z", + "settle": "2025-06-27T12:00:00.000Z", + "listedSettle": "2025-06-27T12:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USD", + "underlyingSymbol": "ETH=", + "reference": "BMEX", + "referenceSymbol": ".BETH30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.05, + "multiplier": 100, + "settlCurrency": "XBt", + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "ETHU25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-06-10T04:00:00.000Z", + "front": "2025-06-10T04:00:00.000Z", + "expiry": "2025-09-26T12:00:00.000Z", + "settle": "2025-09-26T12:00:00.000Z", + "listedSettle": "2025-09-26T12:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "ETH", + "quoteCurrency": "XBT", + "underlyingSymbol": "ETHXBT=", + "reference": "BMEX", + "referenceSymbol": ".BETHXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 1000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00001, + "capped": false + }, + { + "symbol": "ETHUSDU25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-06-10T04:00:00.000Z", + "front": "2025-06-10T04:00:00.000Z", + "expiry": "2025-09-26T12:00:00.000Z", + "settle": "2025-09-26T12:00:00.000Z", + "listedSettle": "2025-09-26T12:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USD", + "underlyingSymbol": "ETH=", + "reference": "BMEX", + "referenceSymbol": ".BETH30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.05, + "multiplier": 100, + "settlCurrency": "XBt", + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "ETHUSDZ25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-09-09T04:00:00.000Z", + "front": "2025-09-09T04:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "underlying": "ETH", + "quoteCurrency": "USD", + "underlyingSymbol": "ETH=", + "reference": "BMEX", + "referenceSymbol": ".BETH30M", + "maxOrderQty": 10000000, + "maxPrice": 1000000, + "lotSize": 1, + "tickSize": 0.05, + "multiplier": 100, + "settlCurrency": "XBt", + "isQuanto": true, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.01, + "capped": false + }, + { + "symbol": "ETHZ25", + "rootSymbol": "ETH", + "state": "Unlisted", + "typ": "FFCCSX", + "listing": "2025-09-09T04:00:00.000Z", + "front": "2025-09-09T04:00:00.000Z", + "expiry": "2025-12-26T12:00:00.000Z", + "settle": "2025-12-26T12:00:00.000Z", + "listedSettle": "2025-12-26T12:00:00.000Z", + "positionCurrency": "ETH", + "underlying": "ETH", + "quoteCurrency": "XBT", + "underlyingSymbol": "ETHXBT=", + "reference": "BMEX", + "referenceSymbol": ".BETHXBT30M", + "maxOrderQty": 1000000000, + "maxPrice": 1000, + "lotSize": 1000, + "tickSize": 0.00001, + "multiplier": 1000, + "settlCurrency": "XBt", + "underlyingToPositionMultiplier": 100000, + "quoteToSettleMultiplier": 100000000, + "isQuanto": false, + "isInverse": false, + "initMargin": 0.02, + "maintMargin": 0.007, + "riskLimit": 5000000000, + "riskStep": 5000000000, + "taxed": true, + "deleverage": true, + "makerFee": 0.0005, + "takerFee": 0.0005, + "settlementFee": 0, + "limitDownPrice": null, + "limitUpPrice": null, + "prevTotalVolume": 0, + "totalVolume": 0, + "volume": 0, + "volume24h": 0, + "prevTotalTurnover": 0, + "totalTurnover": 0, + "turnover": 0, + "turnover24h": 0, + "homeNotional24h": 0, + "foreignNotional24h": 0, + "hasLiquidity": false, + "openInterest": 0, + "openValue": 0, + "fairMethod": "ImpactMidPrice", + "fairBasisRate": 0, + "markMethod": "FairPrice", + "instantPnl": false, + "timestamp": "2024-12-09T11:10:15.533Z", + "minTick": 0.00001, + "capped": false + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_user_wallet.json b/xchange-bitmex/src/test/resources/__files/api_v1_user_wallet.json new file mode 100644 index 00000000000..6bffcc5e49f --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_user_wallet.json @@ -0,0 +1,54 @@ +[ + { + "account": 2273415, + "currency": "LAMp", + "deposited": 0, + "withdrawn": 0, + "transferIn": 0, + "transferOut": 0, + "amount": 22000000, + "pendingCredit": 0, + "pendingDebit": 0, + "confirmedDebit": 0, + "timestamp": "2024-12-09T11:17:40.965Z" + }, + { + "account": 2273415, + "currency": "USDt", + "deposited": 49000000, + "withdrawn": 0, + "transferIn": 0, + "transferOut": 0, + "amount": 40116243, + "pendingCredit": 0, + "pendingDebit": 0, + "confirmedDebit": 0, + "timestamp": "2024-12-09T11:17:40.965Z" + }, + { + "account": 2273415, + "currency": "Gwei", + "deposited": 0, + "withdrawn": 0, + "transferIn": 0, + "transferOut": 0, + "amount": 1000000, + "pendingCredit": 0, + "pendingDebit": 0, + "confirmedDebit": 0, + "timestamp": "2024-12-09T09:54:20.367Z" + }, + { + "account": 2273415, + "currency": "XBt", + "deposited": 0, + "withdrawn": 0, + "transferIn": 0, + "transferOut": 0, + "amount": 0, + "pendingCredit": 0, + "pendingDebit": 0, + "confirmedDebit": 0, + "timestamp": "2024-12-06T12:10:54.920Z" + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json b/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json new file mode 100644 index 00000000000..6410e167347 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json @@ -0,0 +1,126 @@ +[ + { + "asset": "USDT", + "currency": "USDt", + "majorCurrency": "USDT", + "name": "USD Tether", + "currencyType": "Crypto", + "scale": 6, + "enabled": true, + "isMarginCurrency": true, + "minDepositAmount": 1000000, + "minWithdrawalAmount": 10000000, + "maxWithdrawalAmount": 100000000000000, + "memoRequired": false, + "networks": [ + { + "asset": "eth", + "tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 10000000, + "minFee": 10000000, + "maxFee": 10000000 + }, + { + "asset": "sol", + "tokenAddress": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 1000000, + "minFee": 1000000, + "maxFee": 1000000 + }, + { + "asset": "tron", + "tokenAddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 4500000, + "minFee": 4500000, + "maxFee": 4500000 + } + ] + }, + { + "asset": "XBT", + "currency": "XBt", + "majorCurrency": "XBT", + "name": "Bitcoin", + "currencyType": "Crypto", + "scale": 8, + "enabled": true, + "isMarginCurrency": true, + "minDepositAmount": 10000, + "minWithdrawalAmount": 1000, + "maxWithdrawalAmount": 100000000000000, + "memoRequired": false, + "networks": [ + { + "asset": "btc", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 1000, + "minFee": 5000, + "maxFee": 10000000 + } + ] + }, + { + "asset": "SOL", + "currency": "LAMp", + "majorCurrency": "SOL", + "name": "Solana", + "currencyType": "Crypto", + "scale": 9, + "enabled": true, + "isMarginCurrency": false, + "minDepositAmount": 10000000, + "minWithdrawalAmount": 20000000, + "maxWithdrawalAmount": 1000000000000000, + "memoRequired": false, + "networks": [ + { + "asset": "sol", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 10000000, + "minFee": 10000000, + "maxFee": 10000000 + } + ] + }, + { + "asset": "ETH", + "currency": "Gwei", + "majorCurrency": "ETH", + "name": "Ethereum", + "currencyType": "Crypto", + "scale": 9, + "enabled": true, + "isMarginCurrency": false, + "minDepositAmount": 10000000, + "minWithdrawalAmount": 10000000, + "maxWithdrawalAmount": 100000000000000, + "memoRequired": false, + "networks": [ + { + "asset": "bsc", + "tokenAddress": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + "depositEnabled": false, + "withdrawalEnabled": false, + "withdrawalFee": 5, + "minFee": 5, + "maxFee": 5 + }, + { + "asset": "eth", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 5000000, + "minFee": 5000000, + "maxFee": 5000000 + } + ] + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_instrument_active.json b/xchange-bitmex/src/test/resources/mappings/api_v1_instrument_active.json new file mode 100644 index 00000000000..4ba7862c4c3 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_instrument_active.json @@ -0,0 +1,15 @@ +{ + "id" : "230aca2b-ef08-420a-8463-fa7ffe1b87fd", + "name" : "api_v1_instrument_active", + "request" : { + "url" : "/api/v1/instrument/active", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_instrument_active.json" + }, + "uuid" : "230aca2b-ef08-420a-8463-fa7ffe1b87fd", + "persistent" : true, + "insertionIndex" : 5 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_user_wallet.json b/xchange-bitmex/src/test/resources/mappings/api_v1_user_wallet.json new file mode 100644 index 00000000000..47387d80860 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_user_wallet.json @@ -0,0 +1,15 @@ +{ + "id" : "f6aa1f66-28cf-4f15-a8d3-601d5cb85f76", + "name" : "api_v1_user_wallet", + "request" : { + "url" : "/api/v1/user/wallet?currency=all", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_user_wallet.json" + }, + "uuid" : "f6aa1f66-28cf-4f15-a8d3-601d5cb85f76", + "persistent" : true, + "insertionIndex" : 2 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_wallet_assets.json b/xchange-bitmex/src/test/resources/mappings/api_v1_wallet_assets.json new file mode 100644 index 00000000000..3fa7317acfb --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_wallet_assets.json @@ -0,0 +1,15 @@ +{ + "id" : "c82f2676-162c-4bc1-adbb-2fc3ecaa75d2", + "name" : "api_v1_wallet_assets", + "request" : { + "url" : "/api/v1/wallet/assets", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_wallet_assets.json" + }, + "uuid" : "c82f2676-162c-4bc1-adbb-2fc3ecaa75d2", + "persistent" : true, + "insertionIndex" : 4 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet.json b/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet.json deleted file mode 100644 index 78396c54334..00000000000 --- a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "account": 0, - "currency": "string", - "prevDeposited": 0, - "prevWithdrawn": 0, - "prevTransferIn": 0, - "prevTransferOut": 0, - "prevAmount": 0, - "prevTimestamp": "2017-12-19T06:03:16.830Z", - "deltaDeposited": 0, - "deltaWithdrawn": 0, - "deltaTransferIn": 0, - "deltaTransferOut": 0, - "deltaAmount": 0, - "deposited": 0, - "withdrawn": 0, - "transferIn": 0, - "transferOut": 0, - "amount": 0, - "pendingCredit": 0, - "pendingDebit": 0, - "confirmedDebit": 0, - "timestamp": "2017-12-19T06:03:16.830Z", - "addr": "string", - "script": "string", - "withdrawalLock": [ - "string" - ] -} \ No newline at end of file diff --git a/xchange-examples/src/main/java/org/knowm/xchange/examples/bitmex/dto/account/BitmexAccountDemo.java b/xchange-examples/src/main/java/org/knowm/xchange/examples/bitmex/dto/account/BitmexAccountDemo.java index 088c53349fd..52c8525d7de 100755 --- a/xchange-examples/src/main/java/org/knowm/xchange/examples/bitmex/dto/account/BitmexAccountDemo.java +++ b/xchange-examples/src/main/java/org/knowm/xchange/examples/bitmex/dto/account/BitmexAccountDemo.java @@ -5,7 +5,6 @@ import org.knowm.xchange.Exchange; import org.knowm.xchange.bitmex.dto.account.BitmexAccount; import org.knowm.xchange.bitmex.dto.account.BitmexMarginAccount; -import org.knowm.xchange.bitmex.dto.account.BitmexWallet; import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransaction; import org.knowm.xchange.bitmex.service.BitmexAccountServiceRaw; import org.knowm.xchange.currency.Currency; @@ -37,7 +36,6 @@ private static void marginInfo(AccountService accountService) throws IOException private static void walletInfo(AccountService accountService) throws IOException { BitmexAccountServiceRaw accountServiceRaw = (BitmexAccountServiceRaw) accountService; - BitmexWallet xBt = accountServiceRaw.getBitmexWallet(Currency.getInstance("XBt")); List walletHistory = accountServiceRaw.getBitmexWalletHistory(Currency.getInstance("XBt")); From 80cbc78fbe7164fae4c6dd45e0c694afb28f20ed Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Mon, 9 Dec 2024 13:05:48 +0100 Subject: [PATCH 13/32] [bitmex] Add authorized rest request --- xchange-bitmex/.gitignore | 5 ++++ .../example.http-client.private.env.json | 6 +++++ .../src/test/resources/rest/authorized.http | 12 ++++++++++ .../src/test/resources/rest/sign.js | 23 +++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 xchange-bitmex/.gitignore create mode 100644 xchange-bitmex/example.http-client.private.env.json create mode 100644 xchange-bitmex/src/test/resources/rest/authorized.http create mode 100644 xchange-bitmex/src/test/resources/rest/sign.js diff --git a/xchange-bitmex/.gitignore b/xchange-bitmex/.gitignore new file mode 100644 index 00000000000..e0acc9b7bf4 --- /dev/null +++ b/xchange-bitmex/.gitignore @@ -0,0 +1,5 @@ +# private properties for idea rest client +http-client.private.env.json + +# private properties for integration tests +integration-test.env.properties \ No newline at end of file diff --git a/xchange-bitmex/example.http-client.private.env.json b/xchange-bitmex/example.http-client.private.env.json new file mode 100644 index 00000000000..483aa417d8a --- /dev/null +++ b/xchange-bitmex/example.http-client.private.env.json @@ -0,0 +1,6 @@ +{ + "default": { + "api_key": "change_me", + "api_secret": "change_me", + } +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http new file mode 100644 index 00000000000..b3375f699b9 --- /dev/null +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -0,0 +1,12 @@ +### Get your current wallet information +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +GET {{api_v1}}/user/wallet?currency=all +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Accept: application/json + + diff --git a/xchange-bitmex/src/test/resources/rest/sign.js b/xchange-bitmex/src/test/resources/rest/sign.js new file mode 100644 index 00000000000..3a16d334146 --- /dev/null +++ b/xchange-bitmex/src/test/resources/rest/sign.js @@ -0,0 +1,23 @@ +export function gen_sign(request) { + const pattern = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); + const method = request.method; + const url = request.url.tryGetSubstituted(); + const matches = url.match(pattern); + + const path = matches[5]; + + let query = matches[7] || ""; + if (query !== "") { + query = "?" + query; + } + + const body = request.body.tryGetSubstituted() || ""; + const timestamp = Math.floor(new Date(new Date().getTime() + 30000)).toFixed(); + + const payloadToSign = `${method}${path}${query}${timestamp}${body}`; + const apiSecret = request.environment.get("api_secret"); + const sign = crypto.hmac.sha256().withTextSecret(apiSecret).updateWithText(payloadToSign).digest().toHex(); + + request.variables.set("timestamp", timestamp); + request.variables.set("sign", sign); +} \ No newline at end of file From 0ae1bb65f5391ed72b3e88dcdad53b46bd7a1d8a Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Tue, 10 Dec 2024 20:20:38 +0100 Subject: [PATCH 14/32] [bitmex] Implement getting details of filled market buy order --- .../knowm/xchange/bitmex/BitmexAdapters.java | 51 ++- .../bitmex/dto/account/BitmexWallet.java | 17 +- .../dto/marketdata/BitmexPrivateOrder.java | 401 ++++-------------- .../bitmex/service/BitmexTradeService.java | 11 +- .../bitmex/BitmexExchangeWiremock.java | 4 +- .../service/BitmexAccountServiceTest.java | 4 + .../service/BitmexTradeServiceTest.java | 46 ++ .../api_v1_order_filled-marked-buy-order.json | 20 + .../api_v1_order_filled-marked-buy-order.json | 15 + .../src/test/resources/rest/authorized.http | 12 + .../src/test/resources/rest/sign.js | 4 +- .../bitmex/BitmexOrderIntegration.java | 9 +- .../bitmex/dto/BitmexExecutionTest.java | 2 +- 13 files changed, 228 insertions(+), 368 deletions(-) create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 643a8d5a482..c8f741fcc0c 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -46,6 +46,7 @@ import org.knowm.xchange.dto.marketdata.Trades.TradeSortType; import org.knowm.xchange.dto.meta.InstrumentMetaData; import org.knowm.xchange.dto.trade.LimitOrder; +import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.UserTrade; import org.knowm.xchange.exceptions.ExchangeException; @@ -148,22 +149,28 @@ public LimitOrder toLimitOrder(BitmexPublicOrder order) { order.getId(), toDate(order.getUpdatedAt()), order.getPrice()); } - public LimitOrder adaptOrder(BitmexPrivateOrder rawOrder) { - OrderType type = rawOrder.getSide() == BitmexSide.BUY ? OrderType.BID : OrderType.ASK; - - Instrument instrument = toInstrument(rawOrder.getSymbol()); + public Order toOrder(BitmexPrivateOrder bitmexPrivateOrder) { + Order.Builder builder; + switch (bitmexPrivateOrder.getOrderClass()) { + case MARKET: + builder = new MarketOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()); + break; + case LIMIT: + builder = new LimitOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()).limitPrice(bitmexPrivateOrder.getAveragePrice()); + break; + default: + throw new IllegalArgumentException("Can't map " + bitmexPrivateOrder.getOrderType()); + } - return new LimitOrder( - type, - rawOrder.getVolume(), - instrument, - rawOrder.getId(), - rawOrder.getTimestamp(), - rawOrder.getPrice(), - rawOrder.getAvgPx(), - rawOrder.getCumQty(), - null, - BitmexAdapters.adaptOrderStatus(rawOrder.getOrderStatus())); + return builder + .originalAmount(bitmexPrivateOrder.getOriginalAmount()) + .id(bitmexPrivateOrder.getId()) + .timestamp(toDate(bitmexPrivateOrder.getUpdatedAt())) + .cumulativeAmount(bitmexPrivateOrder.getCumulativeAmount()) + .averagePrice(bitmexPrivateOrder.getAveragePrice()) + .orderStatus(toOrderStatus(bitmexPrivateOrder.getOrderStatus())) + .userReference(bitmexPrivateOrder.getText()) + .build(); } public Ticker toTicker(BitmexTicker bitmexTicker) { @@ -302,18 +309,20 @@ public OrderStatus adaptOrderStatus(BitmexOrderStatus status) { } } - public OrderStatus adaptOrderStatus(BitmexPrivateOrder.OrderStatus status) { + public OrderStatus toOrderStatus(BitmexPrivateOrder.OrderStatus status) { switch (status) { - case New: + case NEW: return OrderStatus.NEW; - case PartiallyFilled: + case PARTIALLY_FILLED: return OrderStatus.PARTIALLY_FILLED; - case Filled: + case FILLED: return OrderStatus.FILLED; - case Canceled: + case CANCELED: return OrderStatus.CANCELED; - case Rejected: + case REJECTED: return OrderStatus.REJECTED; + case REPLACED: + return OrderStatus.REPLACED; default: return null; } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java index a4227344117..087713bf988 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java @@ -4,14 +4,19 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.math.BigDecimal; import java.time.ZonedDateTime; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; import org.knowm.xchange.bitmex.AbstractHttpResponseAware; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.currency.Currency; -@Value +@Data +@Builder +@AllArgsConstructor public class BitmexWallet extends AbstractHttpResponseAware { + @JsonProperty("account") Integer account; Currency currency; @@ -32,10 +37,11 @@ public class BitmexWallet extends AbstractHttpResponseAware { BigDecimal confirmedDebit; + @JsonProperty("timestamp") ZonedDateTime timestamp; @JsonCreator - public BitmexWallet(@JsonProperty("account") Integer account, + public BitmexWallet( @JsonProperty("currency") String currencyCode, @JsonProperty("deposited") BigDecimal deposited, @JsonProperty("withdrawn") BigDecimal withdrawn, @@ -44,12 +50,9 @@ public BitmexWallet(@JsonProperty("account") Integer account, @JsonProperty("amount") BigDecimal amount, @JsonProperty("pendingCredit") BigDecimal pendingCredit, @JsonProperty("pendingDebit") BigDecimal pendingDebit, - @JsonProperty("confirmedDebit") BigDecimal confirmedDebit, - @JsonProperty("timestamp") ZonedDateTime timestamp) { + @JsonProperty("confirmedDebit") BigDecimal confirmedDebit) { - this.account = account; this.currency = BitmexAdapters.bitmexCodeToCurrency(currencyCode); - this.timestamp = timestamp; // scale values this.deposited = BitmexAdapters.scaleAmount(deposited, currency); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java index 910ef178a3d..842e7ca5fb2 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java @@ -1,362 +1,109 @@ package org.knowm.xchange.bitmex.dto.marketdata; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; -import java.util.Date; +import java.time.ZonedDateTime; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; import org.knowm.xchange.bitmex.AbstractHttpResponseAware; -import org.knowm.xchange.bitmex.dto.trade.BitmexSide; - -/** see field description at http://www.onixs.biz/fix-dictionary/5.0.SP2/fields_by_name.html */ +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.bitmex.config.converter.StringToCurrencyConverter; +import org.knowm.xchange.bitmex.config.converter.StringToOrderTypeConverter; +import org.knowm.xchange.currency.Currency; +import org.knowm.xchange.dto.Order.OrderType; +import org.knowm.xchange.instrument.Instrument; + +@Data +@Builder +@AllArgsConstructor public class BitmexPrivateOrder extends AbstractHttpResponseAware { - private final BigDecimal price; - private final BigDecimal size; - private final String symbol; - private final String id; - private final String clOrdID; - private final BitmexSide side; - private final Date timestamp; - private final OrderStatus orderStatus; - private final String currency; - private final String settleCurrency; - - private final String clOrdLinkID; - - private final BigDecimal simpleOrderQty; - private final BigDecimal displayQty; - private final BigDecimal stopPx; - private final BigDecimal pegOffsetValue; - private final String pegPriceType; - private final String orderType; - private final String timeInForce; - private final String execInst; - private final String contingencyType; - private final String exDestination; - private final String triggered; - private final boolean workingIndicator; - private final String ordRejReason; - - private final BigDecimal simpleLeavesQty; - private final BigDecimal leavesQty; - private final BigDecimal simpleCumQty; - private final BigDecimal cumQty; - private final BigDecimal avgPx; - - private final String multiLegReportingType; - private final String text; - - // "2018-06-03T05:22:49.018Z" - private final Date transactTime; - - private final String error; - - public BitmexPrivateOrder( - @JsonProperty("price") BigDecimal price, - @JsonProperty("orderID") String id, - @JsonProperty("orderQty") BigDecimal size, - @JsonProperty("side") BitmexSide side, - @JsonProperty("symbol") String symbol, - @JsonProperty("clOrdID") String clOrdID, - @JsonProperty("timestamp") Date timestamp, - @JsonProperty("ordStatus") OrderStatus orderStatus, - @JsonProperty("currency") String currency, - @JsonProperty("settlCurrency") String settleCurrency, - @JsonProperty("clOrdLinkID") String clOrdLinkID, - @JsonProperty("simpleOrderQty") BigDecimal simpleOrderQty, - @JsonProperty("displayQty") BigDecimal displayQty, - @JsonProperty("stopPx") BigDecimal stopPx, - @JsonProperty("pegOffsetValue") BigDecimal pegOffsetValue, - @JsonProperty("pegPriceType") String pegPriceType, - @JsonProperty("orderType") String orderType, - @JsonProperty("timeInForce") String timeInForce, - @JsonProperty("execInst") String execInst, - @JsonProperty("contingencyType") String contingencyType, - @JsonProperty("exDestination") String exDestination, - @JsonProperty("triggered") String triggered, - @JsonProperty("workingIndicator") boolean workingIndicator, - @JsonProperty("ordRejReason") String ordRejReason, - @JsonProperty("simpleLeavesQty") BigDecimal simpleLeavesQty, - @JsonProperty("leavesQty") BigDecimal leavesQty, - @JsonProperty("simpleCumQty") BigDecimal simpleCumQty, - @JsonProperty("cumQty") BigDecimal cumQty, - @JsonProperty("avgPx") BigDecimal avgPx, - @JsonProperty("multiLegReportingType") String multiLegReportingType, - @JsonProperty("text") String text, - @JsonProperty("transactTime") Date transactTime, - @JsonProperty("error") String error) { - - this.symbol = symbol; - this.id = id; - this.side = side; - this.size = size; - this.price = price; - this.clOrdID = clOrdID; - this.timestamp = timestamp; - this.orderStatus = orderStatus; - this.currency = currency; - this.settleCurrency = settleCurrency; - - this.clOrdLinkID = clOrdLinkID; - this.simpleOrderQty = simpleOrderQty; - this.displayQty = displayQty; - this.stopPx = stopPx; - this.pegOffsetValue = pegOffsetValue; - this.pegPriceType = pegPriceType; - this.orderType = orderType; - this.timeInForce = timeInForce; - this.execInst = execInst; - this.contingencyType = contingencyType; - this.exDestination = exDestination; - this.triggered = triggered; - this.workingIndicator = workingIndicator; - this.ordRejReason = ordRejReason; - this.simpleLeavesQty = simpleLeavesQty; - this.leavesQty = leavesQty; - this.simpleCumQty = simpleCumQty; - this.cumQty = cumQty; - this.avgPx = avgPx; - this.multiLegReportingType = multiLegReportingType; - this.text = text; - this.transactTime = transactTime; - this.error = error; - } - - public BigDecimal getPrice() { - - return price; - } - - public BigDecimal getVolume() { - - return size; - } - - public BitmexSide getSide() { - - return side; - } + @JsonProperty("account") + private Integer account; - public String getId() { + @JsonProperty("avgPx") + private BigDecimal averagePrice; - return id; - } - - public String getSymbol() { + @JsonProperty("currency") + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency currency; - return symbol; - } + @JsonProperty("ordStatus") + private OrderStatus orderStatus; - public Date getTimestamp() { + @JsonProperty("ordType") + private OrderClass orderClass; - return timestamp; - } + @JsonProperty("orderID") + private String id; - public OrderStatus getOrderStatus() { + @JsonProperty("side") + @JsonDeserialize(converter = StringToOrderTypeConverter.class) + private OrderType orderType; - return orderStatus; - } + @JsonProperty("text") + private String text; - public String getCurrency() { - return currency; - } + @JsonProperty("timeInForce") + private String timeInForce; - public String getSettleCurrency() { - return settleCurrency; - } + @JsonProperty("transactTime") + private ZonedDateTime createdAt; - public String getClOrdID() { - return clOrdID; - } + @JsonProperty("timestamp") + private ZonedDateTime updatedAt; - public String getClOrdLinkID() { - return clOrdLinkID; - } + @JsonProperty("workingIndicator") + private Boolean workingIndicator; - public BigDecimal getSimpleOrderQty() { - return simpleOrderQty; - } + private BigDecimal cumulativeAmount; + private BigDecimal originalAmount; + private BigDecimal notFilledAmount; - public BigDecimal getDisplayQty() { - return displayQty; - } + private Instrument instrument; - public BigDecimal getStopPx() { - return stopPx; + @JsonCreator + public BitmexPrivateOrder(@JsonProperty("cumQty") BigDecimal cumulativeAmount, + @JsonProperty("orderQty") BigDecimal originalAmount, + @JsonProperty("leavesQty") BigDecimal notFilledAmount, + @JsonProperty("symbol") String symbol + ) { + this.instrument = BitmexAdapters.toInstrument(symbol); + this.cumulativeAmount = BitmexAdapters.scaleAmount(cumulativeAmount, instrument.getBase()); + this.originalAmount = BitmexAdapters.scaleAmount(originalAmount, instrument.getBase()); + this.notFilledAmount = BitmexAdapters.scaleAmount(notFilledAmount, instrument.getBase()); } - public BigDecimal getPegOffsetValue() { - return pegOffsetValue; - } - public String getPegPriceType() { - return pegPriceType; - } - - public String getOrderType() { - return orderType; - } - - public String getTimeInForce() { - return timeInForce; - } - - public String getExecInst() { - return execInst; - } - - public String getContingencyType() { - return contingencyType; - } - - public String getExDestination() { - return exDestination; - } - - public String getTriggered() { - return triggered; - } - - public boolean isWorkingIndicator() { - return workingIndicator; - } - - public String getOrdRejReason() { - return ordRejReason; - } + public enum OrderStatus { + @JsonProperty("New") + NEW, - public BigDecimal getSimpleLeavesQty() { - return simpleLeavesQty; - } + @JsonProperty("PartiallyFilled") + PARTIALLY_FILLED, - public BigDecimal getLeavesQty() { - return leavesQty; - } + @JsonProperty("Filled") + FILLED, - public BigDecimal getSimpleCumQty() { - return simpleCumQty; - } + @JsonProperty("Canceled") + CANCELED, - public BigDecimal getCumQty() { - return cumQty; - } + @JsonProperty("Rejected") + REJECTED, - public BigDecimal getAvgPx() { - return avgPx; + @JsonProperty("Replaced") + REPLACED } - public String getMultiLegReportingType() { - return multiLegReportingType; - } + public static enum OrderClass { + @JsonProperty("Limit") + LIMIT, - public String getText() { - return text; + @JsonProperty("Market") + MARKET } - public Date getTransactTime() { - return transactTime; - } - - public String getError() { - return error; - } - - @Override - public String toString() { - return "BitmexPrivateOrder{" - + "price=" - + price - + ", size=" - + size - + ", symbol='" - + symbol - + '\'' - + ", id='" - + id - + '\'' - + ", side=" - + side - + ", timestamp=" - + timestamp - + ", orderStatus=" - + orderStatus - + ", currency='" - + currency - + '\'' - + ", settleCurrency='" - + settleCurrency - + '\'' - + ", clOrdID='" - + clOrdID - + '\'' - + ", clOrdLinkID='" - + clOrdLinkID - + '\'' - + ", simpleOrderQty=" - + simpleOrderQty - + ", displayQty=" - + displayQty - + ", stopPx=" - + stopPx - + ", pegOffsetValue='" - + pegOffsetValue - + '\'' - + ", pegPriceType='" - + pegPriceType - + '\'' - + ", orderType='" - + orderType - + '\'' - + ", timeInForce='" - + timeInForce - + '\'' - + ", execInst='" - + execInst - + '\'' - + ", contingencyType='" - + contingencyType - + '\'' - + ", exDestination='" - + exDestination - + '\'' - + ", triggered='" - + triggered - + '\'' - + ", workingIndicator=" - + workingIndicator - + ", ordRejReason='" - + ordRejReason - + '\'' - + ", simpleLeavesQty=" - + simpleLeavesQty - + ", leavesQty=" - + leavesQty - + ", simpleCumQty=" - + simpleCumQty - + ", cumQty=" - + cumQty - + ", avgPx=" - + avgPx - + ", multiLegReportingType='" - + multiLegReportingType - + '\'' - + ", text='" - + text - + '\'' - + ", transactTime='" - + transactTime - + '\'' - + ", error='" - + error - + '\'' - + '}'; - } - - public enum OrderStatus { - New, - PartiallyFilled, - Filled, - Canceled, - Rejected, - Replaced - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index 2bb71a932cd..5741c7c4d09 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -56,15 +56,18 @@ public OpenOrders getOpenOrders() throws ExchangeException { List bitmexOrders = super.getBitmexOrders(null, "{\"open\": true}", null, null, null); - return new OpenOrders( - bitmexOrders.stream().map(BitmexAdapters::adaptOrder).collect(Collectors.toList())); + return new OpenOrders(bitmexOrders.stream() + .map(BitmexAdapters::toOrder) + .map(LimitOrder.class::cast) + .collect(Collectors.toList())); } @Override public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeException { List limitOrders = super.getBitmexOrders(null, "{\"open\": true}", null, null, null).stream() - .map(BitmexAdapters::adaptOrder) + .map(BitmexAdapters::toOrder) + .map(LimitOrder.class::cast) .filter(params::accept) .collect(Collectors.toList()); @@ -159,7 +162,7 @@ public Collection getOrder(OrderQueryParams... orderQueryParams) throws I String filter = "{\"orderID\": [\"" + String.join("\",\"", orderIds) + "\"]}"; List privateOrders = getBitmexOrders(null, filter, null, null, null); - return privateOrders.stream().map(BitmexAdapters::adaptOrder).collect(Collectors.toList()); + return privateOrders.stream().map(BitmexAdapters::toOrder).collect(Collectors.toList()); } @Override diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java index c929f91209d..3a51b1b9fc2 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexExchangeWiremock.java @@ -26,8 +26,8 @@ public static void initExchange() { ExchangeSpecification exSpec = new ExchangeSpecification(BitmexExchange.class); exSpec.setSslUri("http://localhost:" + wireMockServer.port()); - exSpec.setApiKey("abc"); - exSpec.setSecretKey("bcd"); + exSpec.setApiKey(System.getProperty("apiKey", "abc")); + exSpec.setSecretKey(System.getProperty("secretKey", "bcd")); if (IS_RECORDING) { // use default url and record the requests diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java index a9cdf6c9b89..9c5f416ad31 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java @@ -4,6 +4,8 @@ import java.io.IOException; import java.math.BigDecimal; +import java.time.Instant; +import java.util.Date; import org.junit.jupiter.api.Test; import org.knowm.xchange.bitmex.BitmexExchangeWiremock; import org.knowm.xchange.currency.Currency; @@ -26,10 +28,12 @@ void getAccountInfo() throws IOException { Balance usdtBalance = accountInfo.getWallet().getBalance(Currency.USDT); assertThat(usdtBalance.getTotal()).isEqualTo(new BigDecimal("40.116243")); assertThat(usdtBalance.getAvailable()).isEqualTo(new BigDecimal("40.116243")); + assertThat(usdtBalance.getTimestamp()).isEqualTo(Date.from(Instant.parse("2024-12-09T11:17:40.965Z"))); Balance ethBalance = accountInfo.getWallet().getBalance(Currency.ETH); assertThat(ethBalance.getTotal()).isEqualTo(new BigDecimal("0.001000000")); assertThat(ethBalance.getAvailable()).isEqualTo(new BigDecimal("0.001000000")); + assertThat(ethBalance.getTimestamp()).isEqualTo(Date.from(Instant.parse("2024-12-09T09:54:20.367Z"))); } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java new file mode 100644 index 00000000000..eede680a2ee --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -0,0 +1,46 @@ +package org.knowm.xchange.bitmex.service; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.math.BigDecimal; +import java.time.Instant; +import java.util.Collection; +import java.util.Date; +import org.junit.jupiter.api.Test; +import org.knowm.xchange.bitmex.BitmexExchangeWiremock; +import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.dto.Order; +import org.knowm.xchange.dto.Order.OrderStatus; +import org.knowm.xchange.dto.Order.OrderType; +import org.knowm.xchange.dto.trade.MarketOrder; +import org.knowm.xchange.service.trade.TradeService; + +class BitmexTradeServiceTest extends BitmexExchangeWiremock { + + TradeService tradeService = exchange.getTradeService(); + + @Test + void filled_market_buy_order_details() throws IOException { + MarketOrder expected = + new MarketOrder.Builder(OrderType.BID, CurrencyPair.ETH_USDT) + .id("5d873440-48c6-48ed-86d9-e8e4259b0e7a") + .userReference("valid-filled-market-sell-order") + .timestamp(Date.from(Instant.parse("2024-12-09T09:54:20.367Z"))) + .originalAmount(new BigDecimal("0.001")) + .orderStatus(OrderStatus.FILLED) + .cumulativeAmount(new BigDecimal("0.001")) + .averagePrice(new BigDecimal("3879.35")) + .build(); + + Collection orders = tradeService.getOrder("5d873440-48c6-48ed-86d9-e8e4259b0e7a"); + assertThat(orders).hasSize(1); + assertThat(orders) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + + +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json new file mode 100644 index 00000000000..c4271d398dd --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json @@ -0,0 +1,20 @@ +[ + { + "account": 2273415, + "avgPx": 3879.35, + "cumQty": 1000000, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Filled", + "ordType": "Market", + "orderID": "5d873440-48c6-48ed-86d9-e8e4259b0e7a", + "orderQty": 1000000, + "side": "Buy", + "symbol": "ETH_USDT", + "text": "valid-filled-market-sell-order", + "timeInForce": "ImmediateOrCancel", + "timestamp": "2024-12-09T09:54:20.367Z", + "transactTime": "2024-12-09T09:54:20.367Z", + "workingIndicator": false + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json new file mode 100644 index 00000000000..70fea3f163a --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json @@ -0,0 +1,15 @@ +{ + "id" : "650d1146-f3b7-4a39-a621-8da07bb290cb", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%225d873440-48c6-48ed-86d9-e8e4259b0e7a%22%5D%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_filled-marked-buy-order.json" + }, + "uuid" : "650d1146-f3b7-4a39-a621-8da07bb290cb", + "persistent" : true, + "insertionIndex" : 4 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index b3375f699b9..5d2bd98f921 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -1,3 +1,15 @@ +### Get your orders +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +GET {{api_v1}}/order?filter={"orderID":"5d873440-48c6-48ed-86d9-e8e4259b0e7a","ordType":"Market"} +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Accept: application/json + + ### Get your current wallet information < {% import {gen_sign} from 'sign.js' diff --git a/xchange-bitmex/src/test/resources/rest/sign.js b/xchange-bitmex/src/test/resources/rest/sign.js index 3a16d334146..cf5b74962ef 100644 --- a/xchange-bitmex/src/test/resources/rest/sign.js +++ b/xchange-bitmex/src/test/resources/rest/sign.js @@ -8,7 +8,9 @@ export function gen_sign(request) { let query = matches[7] || ""; if (query !== "") { - query = "?" + query; + query = "?" + encodeURI(query) + .replaceAll(":", "%3A") + .replaceAll(",", "%2C"); } const body = request.body.tryGetSubstituted() || ""; diff --git a/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/BitmexOrderIntegration.java b/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/BitmexOrderIntegration.java index afff96ba347..c7cbedc3ab1 100644 --- a/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/BitmexOrderIntegration.java +++ b/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/BitmexOrderIntegration.java @@ -112,7 +112,7 @@ private BitmexPrivateOrder cancelLimitOrder(String clOrdId) { List bitmexPrivateOrders = tradeService.cancelBitmexOrder(null, clOrdId); Assert.assertEquals(1, bitmexPrivateOrders.size()); BitmexPrivateOrder order = bitmexPrivateOrders.get(0); - Assert.assertEquals(BitmexPrivateOrder.OrderStatus.Canceled, order.getOrderStatus()); + Assert.assertEquals(BitmexPrivateOrder.OrderStatus.CANCELED, order.getOrderStatus()); LOG.info("Order was cancelled = {}", order); return order; } @@ -124,9 +124,8 @@ private void checkPrivateOrder( BitmexSide side, BitmexPrivateOrder bitmexPrivateOrder) { Assert.assertEquals(orderId, bitmexPrivateOrder.getId()); - Assert.assertEquals(price, bitmexPrivateOrder.getPrice()); - Assert.assertEquals(size, bitmexPrivateOrder.getVolume().toString()); - Assert.assertEquals(side, bitmexPrivateOrder.getSide()); + Assert.assertEquals(price, bitmexPrivateOrder.getAveragePrice()); + Assert.assertEquals(size, bitmexPrivateOrder.getCumulativeAmount().toString()); } @Test @@ -195,7 +194,7 @@ public void shouldFillPlacedOrder() throws Exception { Assert.assertEquals(1, bitmexPrivateOrders.size()); BitmexPrivateOrder order = bitmexPrivateOrders.get(0); - Assert.assertEquals(BitmexPrivateOrder.OrderStatus.Filled, order.getOrderStatus()); + Assert.assertEquals(BitmexPrivateOrder.OrderStatus.FILLED, order.getOrderStatus()); } @Test(expected = AssertionError.class) diff --git a/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/dto/BitmexExecutionTest.java b/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/dto/BitmexExecutionTest.java index 28fc7a845a5..ff9ea95d75e 100644 --- a/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/dto/BitmexExecutionTest.java +++ b/xchange-stream-bitmex/src/test/java/info/bitrich/xchangestream/bitmex/dto/BitmexExecutionTest.java @@ -54,7 +54,7 @@ public void testDesialization() throws IOException { assertEquals("", bitmexExecution.execInst); assertEquals("", bitmexExecution.contingencyType); assertEquals("XBME", bitmexExecution.exDestination); - assertEquals(BitmexPrivateOrder.OrderStatus.Filled, bitmexExecution.ordStatus); + assertEquals(BitmexPrivateOrder.OrderStatus.FILLED, bitmexExecution.ordStatus); assertEquals("", bitmexExecution.triggered); assertEquals(false, bitmexExecution.workingIndicator); assertEquals("", bitmexExecution.ordRejReason); From 07563ede47169fcb5d62b72fab70437450c1044d Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 01:10:02 +0100 Subject: [PATCH 15/32] [bitmex] Add tests for different order types --- .../knowm/xchange/bitmex/BitmexAdapters.java | 2 +- .../dto/marketdata/BitmexPrivateOrder.java | 3 + .../service/BitmexTradeServiceTest.java | 120 +++++++++++++++++- .../api_v1_order-filled-limit-buy-order.json | 21 +++ .../api_v1_order-filled-limit-sell-order.json | 21 +++ ...api_v1_order-filled-market-sell-order.json | 20 +++ .../api_v1_order-pending-limit-buy-order.json | 20 +++ ...api_v1_order-pending-limit-sell-order.json | 20 +++ .../api_v1_order_filled-marked-buy-order.json | 2 +- .../api_v1_order-filled-limit-buy-order.json | 15 +++ .../api_v1_order-filled-limit-sell-order.json | 15 +++ ...api_v1_order-filled-market-sell-order.json | 15 +++ .../api_v1_order-pending-limit-buy-order.json | 15 +++ ...api_v1_order-pending-limit-sell-order.json | 15 +++ .../src/test/resources/rest/authorized.http | 3 +- 15 files changed, 303 insertions(+), 4 deletions(-) create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order-filled-market-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index c8f741fcc0c..307d2670a3e 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -156,7 +156,7 @@ public Order toOrder(BitmexPrivateOrder bitmexPrivateOrder) { builder = new MarketOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()); break; case LIMIT: - builder = new LimitOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()).limitPrice(bitmexPrivateOrder.getAveragePrice()); + builder = new LimitOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()).limitPrice(bitmexPrivateOrder.getOriginalPrice()); break; default: throw new IllegalArgumentException("Can't map " + bitmexPrivateOrder.getOrderType()); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java index 842e7ca5fb2..3e26581dd92 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java @@ -24,6 +24,9 @@ public class BitmexPrivateOrder extends AbstractHttpResponseAware { @JsonProperty("account") private Integer account; + @JsonProperty("price") + private BigDecimal originalPrice; + @JsonProperty("avgPx") private BigDecimal averagePrice; diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java index eede680a2ee..dd4a036083f 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -13,6 +13,7 @@ import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.Order.OrderStatus; import org.knowm.xchange.dto.Order.OrderType; +import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.service.trade.TradeService; @@ -25,7 +26,7 @@ void filled_market_buy_order_details() throws IOException { MarketOrder expected = new MarketOrder.Builder(OrderType.BID, CurrencyPair.ETH_USDT) .id("5d873440-48c6-48ed-86d9-e8e4259b0e7a") - .userReference("valid-filled-market-sell-order") + .userReference("filled-market-buy-order") .timestamp(Date.from(Instant.parse("2024-12-09T09:54:20.367Z"))) .originalAmount(new BigDecimal("0.001")) .orderStatus(OrderStatus.FILLED) @@ -43,4 +44,121 @@ void filled_market_buy_order_details() throws IOException { } + @Test + void filled_market_sell_order_details() throws IOException { + MarketOrder expected = + new MarketOrder.Builder(OrderType.ASK, new CurrencyPair("SOL/USDT")) + .id("4245a5fc-b7aa-400f-a11d-c4f50d24be13") + .userReference("filled-market-sell-order") + .timestamp(Date.from(Instant.parse("2024-12-11T23:20:29.099Z"))) + .originalAmount(new BigDecimal("0.022")) + .orderStatus(OrderStatus.FILLED) + .cumulativeAmount(new BigDecimal("0.022")) + .averagePrice(new BigDecimal("227.72")) + .build(); + + Collection orders = tradeService.getOrder("4245a5fc-b7aa-400f-a11d-c4f50d24be13"); + assertThat(orders).hasSize(1); + assertThat(orders) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + + + @Test + void pending_limit_buy_order_details() throws IOException { + LimitOrder expected = + new LimitOrder.Builder(OrderType.BID, CurrencyPair.BTC_USDT) + .limitPrice(new BigDecimal("101300")) + .id("fcfe266b-540c-4f06-be26-6b540cef0695") + .userReference("pending-limit-buy-order") + .timestamp(Date.from(Instant.parse("2024-12-11T23:29:08.347Z"))) + .originalAmount(new BigDecimal("0.0001")) + .orderStatus(OrderStatus.NEW) + .cumulativeAmount(BigDecimal.ZERO) + .build(); + + Collection orders = tradeService.getOrder("fcfe266b-540c-4f06-be26-6b540cef0695"); + assertThat(orders).hasSize(1); + assertThat(orders) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + + + @Test + void pending_limit_sell_order_details() throws IOException { + LimitOrder expected = + new LimitOrder.Builder(OrderType.ASK, CurrencyPair.BTC_USDT) + .limitPrice(new BigDecimal("101301")) + .id("2c866db3-baa5-4e83-866d-b3baa5be8377") + .userReference("pending-limit-sell-order") + .timestamp(Date.from(Instant.parse("2024-12-11T23:48:29.109Z"))) + .originalAmount(new BigDecimal("0.0001")) + .orderStatus(OrderStatus.NEW) + .cumulativeAmount(BigDecimal.ZERO) + .build(); + + Collection orders = tradeService.getOrder("2c866db3-baa5-4e83-866d-b3baa5be8377"); + assertThat(orders).hasSize(1); + assertThat(orders) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + + + @Test + void filled_limit_buy_order_details() throws IOException { + LimitOrder expected = + new LimitOrder.Builder(OrderType.BID, CurrencyPair.BTC_USDT) + .limitPrice(new BigDecimal("101300")) + .id("2efd2937-00de-401b-a9d8-dcdc7636c310") + .userReference("filled-limit-buy-order") + .timestamp(Date.from(Instant.parse("2024-12-11T23:32:24.579Z"))) + .originalAmount(new BigDecimal("0.0001")) + .orderStatus(OrderStatus.FILLED) + .cumulativeAmount(new BigDecimal("0.0001")) + .averagePrice(new BigDecimal("101300")) + .build(); + + Collection orders = tradeService.getOrder("2efd2937-00de-401b-a9d8-dcdc7636c310"); + assertThat(orders).hasSize(1); + assertThat(orders) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + + + @Test + void filled_limit_sell_order_details() throws IOException { + LimitOrder expected = + new LimitOrder.Builder(OrderType.ASK, CurrencyPair.BTC_USDT) + .limitPrice(new BigDecimal("101145")) + .id("1f2698bb-36c3-489a-b44c-b3f7e094350d") + .userReference("filled-limit-sell-order") + .timestamp(Date.from(Instant.parse("2024-12-12T00:00:05.803Z"))) + .originalAmount(new BigDecimal("0.0001")) + .orderStatus(OrderStatus.FILLED) + .cumulativeAmount(new BigDecimal("0.0001")) + .averagePrice(new BigDecimal("101145")) + .build(); + + Collection orders = tradeService.getOrder("1f2698bb-36c3-489a-b44c-b3f7e094350d"); + assertThat(orders).hasSize(1); + assertThat(orders) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + + } \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-buy-order.json new file mode 100644 index 00000000000..f24ba304bb3 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-buy-order.json @@ -0,0 +1,21 @@ +[ + { + "account": 2273415, + "avgPx": 101300, + "cumQty": 10000, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Filled", + "ordType": "Limit", + "orderID": "2efd2937-00de-401b-a9d8-dcdc7636c310", + "orderQty": 10000, + "price": 101300, + "side": "Buy", + "symbol": "XBT_USDT", + "text": "filled-limit-buy-order", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-11T23:32:24.579Z", + "transactTime": "2024-12-11T23:32:24.579Z", + "workingIndicator": false + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-sell-order.json new file mode 100644 index 00000000000..5e47e3d7f1f --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-sell-order.json @@ -0,0 +1,21 @@ +[ + { + "account": 2273415, + "avgPx": 101145, + "cumQty": 10000, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Filled", + "ordType": "Limit", + "orderID": "1f2698bb-36c3-489a-b44c-b3f7e094350d", + "orderQty": 10000, + "price": 101145, + "side": "Sell", + "symbol": "XBT_USDT", + "text": "filled-limit-sell-order", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-12T00:00:05.803Z", + "transactTime": "2024-12-12T00:00:05.803Z", + "workingIndicator": false + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-market-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-market-sell-order.json new file mode 100644 index 00000000000..1c71bcc0e9b --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-market-sell-order.json @@ -0,0 +1,20 @@ +[ + { + "account": 2273415, + "avgPx": 227.72, + "cumQty": 22000000, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Filled", + "ordType": "Market", + "orderID": "4245a5fc-b7aa-400f-a11d-c4f50d24be13", + "orderQty": 22000000, + "side": "Sell", + "symbol": "SOL_USDT", + "text": "filled-market-sell-order", + "timeInForce": "ImmediateOrCancel", + "timestamp": "2024-12-11T23:20:29.099Z", + "transactTime": "2024-12-11T23:20:29.099Z", + "workingIndicator": false + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-buy-order.json new file mode 100644 index 00000000000..a55fe882a32 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-buy-order.json @@ -0,0 +1,20 @@ +[ + { + "account": 2273415, + "cumQty": 0, + "currency": "USDT", + "leavesQty": 10000, + "ordStatus": "New", + "ordType": "Limit", + "orderID": "fcfe266b-540c-4f06-be26-6b540cef0695", + "orderQty": 10000, + "price": 101300, + "side": "Buy", + "symbol": "XBT_USDT", + "text": "pending-limit-buy-order", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-11T23:29:08.347Z", + "transactTime": "2024-12-11T23:29:08.347Z", + "workingIndicator": true + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-sell-order.json new file mode 100644 index 00000000000..fd8eef4168e --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-sell-order.json @@ -0,0 +1,20 @@ +[ + { + "account": 2273415, + "cumQty": 0, + "currency": "USDT", + "leavesQty": 10000, + "ordStatus": "New", + "ordType": "Limit", + "orderID": "2c866db3-baa5-4e83-866d-b3baa5be8377", + "orderQty": 10000, + "price": 101301, + "side": "Sell", + "symbol": "XBT_USDT", + "text": "pending-limit-sell-order", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-11T23:48:29.109Z", + "transactTime": "2024-12-11T23:48:29.109Z", + "workingIndicator": true + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json index c4271d398dd..45486519a5b 100644 --- a/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-marked-buy-order.json @@ -11,7 +11,7 @@ "orderQty": 1000000, "side": "Buy", "symbol": "ETH_USDT", - "text": "valid-filled-market-sell-order", + "text": "filled-market-buy-order", "timeInForce": "ImmediateOrCancel", "timestamp": "2024-12-09T09:54:20.367Z", "transactTime": "2024-12-09T09:54:20.367Z", diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json new file mode 100644 index 00000000000..1ea3a80249a --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json @@ -0,0 +1,15 @@ +{ + "id" : "17cd05a1-bdd7-4141-a3c1-2e7d2fc204bd", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%222efd2937-00de-401b-a9d8-dcdc7636c310%22%5D%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order-filled-limit-buy-order.json" + }, + "uuid" : "17cd05a1-bdd7-4141-a3c1-2e7d2fc204bd", + "persistent" : true, + "insertionIndex" : 7 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json new file mode 100644 index 00000000000..ce1849fb6c6 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json @@ -0,0 +1,15 @@ +{ + "id" : "c3d07156-0920-43dd-8a1b-98b4a2fe9f31", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%221f2698bb-36c3-489a-b44c-b3f7e094350d%22%5D%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order-filled-limit-sell-order.json" + }, + "uuid" : "c3d07156-0920-43dd-8a1b-98b4a2fe9f31", + "persistent" : true, + "insertionIndex" : 9 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json new file mode 100644 index 00000000000..cf1564ac073 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json @@ -0,0 +1,15 @@ +{ + "id" : "ad15befc-62af-47be-9d07-c192806481ad", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%224245a5fc-b7aa-400f-a11d-c4f50d24be13%22%5D%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order-filled-market-sell-order.json" + }, + "uuid" : "ad15befc-62af-47be-9d07-c192806481ad", + "persistent" : true, + "insertionIndex" : 5 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json new file mode 100644 index 00000000000..60fc40d051f --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json @@ -0,0 +1,15 @@ +{ + "id" : "3cfcd90a-7847-4593-a88d-e46ae9ab8de2", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%22fcfe266b-540c-4f06-be26-6b540cef0695%22%5D%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order-pending-limit-buy-order.json" + }, + "uuid" : "3cfcd90a-7847-4593-a88d-e46ae9ab8de2", + "persistent" : true, + "insertionIndex" : 6 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json new file mode 100644 index 00000000000..2d873a9ec52 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json @@ -0,0 +1,15 @@ +{ + "id" : "4eb46bc7-6fa7-43af-88ca-ccbbcc7cc508", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%222c866db3-baa5-4e83-866d-b3baa5be8377%22%5D%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order-pending-limit-sell-order.json" + }, + "uuid" : "4eb46bc7-6fa7-43af-88ca-ccbbcc7cc508", + "persistent" : true, + "insertionIndex" : 8 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index 5d2bd98f921..562cb77c482 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -3,7 +3,8 @@ import {gen_sign} from 'sign.js' gen_sign(request); %} -GET {{api_v1}}/order?filter={"orderID":"5d873440-48c6-48ed-86d9-e8e4259b0e7a","ordType":"Market"} +#GET {{api_v1}}/order?filter={"orderID":"5d873440-48c6-48ed-86d9-e8e4259b0e7a","ordType":"Market"} +GET {{api_v1}}/order api-key: {{api_key}} api-expires: {{timestamp}} api-signature: {{sign}} From 07c976c67e1d37a86fe18459c1ffafe506872206 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 15:32:10 +0100 Subject: [PATCH 16/32] [bitmex] Add filter param object --- .../knowm/xchange/bitmex/BitmexAdapters.java | 10 ++++++ .../xchange/bitmex/BitmexAuthenticated.java | 3 +- .../BitmexJacksonObjectMapperFactory.java | 7 +++++ .../knowm/xchange/bitmex/config/Config.java | 22 +++++++++++++ .../bitmex/dto/params/FilterParam.java | 31 +++++++++++++++++++ .../bitmex/service/BitmexTradeService.java | 14 ++++++--- .../bitmex/service/BitmexTradeServiceRaw.java | 5 +-- .../api_v1_order-filled-limit-buy-order.json | 2 +- .../api_v1_order-filled-limit-sell-order.json | 2 +- ...api_v1_order-filled-market-sell-order.json | 2 +- .../api_v1_order-pending-limit-buy-order.json | 2 +- ...api_v1_order-pending-limit-sell-order.json | 2 +- .../api_v1_order_filled-marked-buy-order.json | 2 +- 13 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/Config.java create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 307d2670a3e..c06936cf42a 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -1,5 +1,6 @@ package org.knowm.xchange.bitmex; +import com.fasterxml.jackson.databind.ObjectMapper; import java.math.BigDecimal; import java.math.MathContext; import java.time.ZonedDateTime; @@ -15,15 +16,18 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.stream.Collectors; +import lombok.SneakyThrows; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.knowm.xchange.bitmex.config.Config; import org.knowm.xchange.bitmex.dto.account.BitmexTicker; import org.knowm.xchange.bitmex.dto.account.BitmexWallet; import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransaction; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicOrder; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPublicTrade; +import org.knowm.xchange.bitmex.dto.params.FilterParam; import org.knowm.xchange.bitmex.dto.trade.BitmexOrder; import org.knowm.xchange.bitmex.dto.trade.BitmexOrderDescription; import org.knowm.xchange.bitmex.dto.trade.BitmexOrderResponse; @@ -575,5 +579,11 @@ public Balance toBalance(BitmexWallet bitmexWallet) { } + @SneakyThrows + public String asJsonString(FilterParam filterParam) { + ObjectMapper objectMapper = Config.getInstance().getObjectMapper(); + return objectMapper.writeValueAsString(filterParam); + } + } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java index d156d2051c8..dc31ecdfc0f 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java @@ -23,6 +23,7 @@ import org.knowm.xchange.bitmex.dto.account.BitmexWalletTransactionList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrderList; +import org.knowm.xchange.bitmex.dto.params.FilterParam; import org.knowm.xchange.bitmex.dto.trade.BitmexCancelAll; import org.knowm.xchange.bitmex.dto.trade.BitmexPosition; import org.knowm.xchange.bitmex.dto.trade.BitmexPositionList; @@ -106,7 +107,7 @@ BitmexPrivateOrderList getOrders( @HeaderParam("api-expires") SynchronizedValueFactory nonce, @HeaderParam("api-signature") ParamsDigest paramsDigest, @Nullable @QueryParam("symbol") String symbol, - @Nullable @QueryParam("filter") String filter, + @Nullable @QueryParam("filter") FilterParam filterParam, @Nullable @QueryParam("columns") String columns, @Nullable @QueryParam("count") Integer count, @Nullable @QueryParam("start") Long start, diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java index 2b9ffd48e99..7d5dc8b6a09 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java @@ -1,5 +1,6 @@ package org.knowm.xchange.bitmex.config; +import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; @@ -17,5 +18,11 @@ public void configureObjectMapper(ObjectMapper objectMapper) { // enable jsr310 types objectMapper.registerModule(new JavaTimeModule()); + // don't render null's + objectMapper.setSerializationInclusion(Include.NON_NULL); + + // store object mapper for using in module + Config.getInstance().setObjectMapper(objectMapper); + } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/Config.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/Config.java new file mode 100644 index 00000000000..7a536a3ac18 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/Config.java @@ -0,0 +1,22 @@ +package org.knowm.xchange.bitmex.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.time.Clock; +import lombok.Data; + +@Data +public final class Config { + + private ObjectMapper objectMapper; + private Clock clock; + + private static Config instance = new Config(); + + private Config() { + clock = Clock.systemDefaultZone(); + } + + public static Config getInstance() { + return instance; + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java new file mode 100644 index 00000000000..7ee4c8a2064 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java @@ -0,0 +1,31 @@ +package org.knowm.xchange.bitmex.dto.params; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import lombok.Builder; +import lombok.Data; +import lombok.Singular; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.bitmex.BitmexAdapters; + +@Data +@Builder +@Jacksonized +public class FilterParam { + + @Singular + @JsonProperty("orderID") + private List orderIds; + + @JsonProperty("open") + private Boolean isOpen; + + /** + * + * @return Value rendered as json + */ + @Override + public String toString() { + return BitmexAdapters.asJsonString(this); + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index 5741c7c4d09..b2f79ea69d8 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -1,6 +1,7 @@ package org.knowm.xchange.bitmex.service; import java.io.IOException; +import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.List; @@ -9,6 +10,7 @@ import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; +import org.knowm.xchange.bitmex.dto.params.FilterParam; import org.knowm.xchange.bitmex.dto.trade.BitmexExecutionInstruction; import org.knowm.xchange.bitmex.dto.trade.BitmexOrderFlags; import org.knowm.xchange.bitmex.dto.trade.BitmexPlaceOrderParameters; @@ -53,8 +55,9 @@ public OpenOrdersParams createOpenOrdersParams() { @Override public OpenOrders getOpenOrders() throws ExchangeException { + FilterParam filterParam = FilterParam.builder().isOpen(true).build(); List bitmexOrders = - super.getBitmexOrders(null, "{\"open\": true}", null, null, null); + getBitmexOrders(null, filterParam, null, null, null); return new OpenOrders(bitmexOrders.stream() .map(BitmexAdapters::toOrder) @@ -64,8 +67,9 @@ public OpenOrders getOpenOrders() throws ExchangeException { @Override public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeException { + FilterParam filterParam = FilterParam.builder().isOpen(true).build(); List limitOrders = - super.getBitmexOrders(null, "{\"open\": true}", null, null, null).stream() + getBitmexOrders(null, filterParam, null, null, null).stream() .map(BitmexAdapters::toOrder) .map(LimitOrder.class::cast) .filter(params::accept) @@ -159,9 +163,11 @@ public boolean cancelOrder(CancelOrderParams params) throws ExchangeException { public Collection getOrder(OrderQueryParams... orderQueryParams) throws IOException { String[] orderIds = TradeService.toOrderIds(orderQueryParams); - String filter = "{\"orderID\": [\"" + String.join("\",\"", orderIds) + "\"]}"; + FilterParam filterParam = FilterParam.builder() + .orderIds(Arrays.asList(orderIds)) + .build(); - List privateOrders = getBitmexOrders(null, filter, null, null, null); + List privateOrders = getBitmexOrders(null, filterParam, null, null, null); return privateOrders.stream().map(BitmexAdapters::toOrder).collect(Collectors.toList()); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java index ce090e83995..f4fc53a541f 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java @@ -11,6 +11,7 @@ import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.HttpResponseAwareList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; +import org.knowm.xchange.bitmex.dto.params.FilterParam; import org.knowm.xchange.bitmex.dto.trade.BitmexCancelAll; import org.knowm.xchange.bitmex.dto.trade.BitmexPlaceOrderParameters; import org.knowm.xchange.bitmex.dto.trade.BitmexPosition; @@ -57,7 +58,7 @@ public List getBitmexPositions(String symbol) throws ExchangeExc */ public List getBitmexOrders( @Nullable String symbol, - @Nullable String filter, + @Nullable FilterParam filterParam, @Nullable String columns, @Nullable Date startTime, @Nullable Date endTime) @@ -74,7 +75,7 @@ public List getBitmexOrders( exchange.getNonceFactory(), signatureCreator, symbol, - filter, + filterParam, columns, 500, (long) (j * 500), diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json index 1ea3a80249a..3dd748ecf8a 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json @@ -2,7 +2,7 @@ "id" : "17cd05a1-bdd7-4141-a3c1-2e7d2fc204bd", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%222efd2937-00de-401b-a9d8-dcdc7636c310%22%5D%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%222efd2937-00de-401b-a9d8-dcdc7636c310%22%5D%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json index ce1849fb6c6..8aa89654ce0 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json @@ -2,7 +2,7 @@ "id" : "c3d07156-0920-43dd-8a1b-98b4a2fe9f31", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%221f2698bb-36c3-489a-b44c-b3f7e094350d%22%5D%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%221f2698bb-36c3-489a-b44c-b3f7e094350d%22%5D%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json index cf1564ac073..701c7937aa4 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json @@ -2,7 +2,7 @@ "id" : "ad15befc-62af-47be-9d07-c192806481ad", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%224245a5fc-b7aa-400f-a11d-c4f50d24be13%22%5D%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%224245a5fc-b7aa-400f-a11d-c4f50d24be13%22%5D%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json index 60fc40d051f..e7f1630915c 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json @@ -2,7 +2,7 @@ "id" : "3cfcd90a-7847-4593-a88d-e46ae9ab8de2", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%22fcfe266b-540c-4f06-be26-6b540cef0695%22%5D%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%22fcfe266b-540c-4f06-be26-6b540cef0695%22%5D%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json index 2d873a9ec52..40c3fccbe58 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json @@ -2,7 +2,7 @@ "id" : "4eb46bc7-6fa7-43af-88ca-ccbbcc7cc508", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%222c866db3-baa5-4e83-866d-b3baa5be8377%22%5D%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%222c866db3-baa5-4e83-866d-b3baa5be8377%22%5D%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json index 70fea3f163a..b224f412523 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-marked-buy-order.json @@ -2,7 +2,7 @@ "id" : "650d1146-f3b7-4a39-a621-8da07bb290cb", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A+%5B%225d873440-48c6-48ed-86d9-e8e4259b0e7a%22%5D%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%225d873440-48c6-48ed-86d9-e8e4259b0e7a%22%5D%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { From 809a9e03b5efd5867895be2d7bb7fa664b740d4d Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 15:36:14 +0100 Subject: [PATCH 17/32] [bitmex] Reorganize mock files --- ...-buy-order.json => api_v1_order_filled-limit-buy-order.json} | 0 ...ell-order.json => api_v1_order_filled-limit-sell-order.json} | 0 ...ll-order.json => api_v1_order_filled-market-sell-order.json} | 0 ...buy-order.json => api_v1_order_pending-limit-buy-order.json} | 0 ...ll-order.json => api_v1_order_pending-limit-sell-order.json} | 0 ...-buy-order.json => api_v1_order_filled-limit-buy-order.json} | 2 +- ...ell-order.json => api_v1_order_filled-limit-sell-order.json} | 2 +- ...ll-order.json => api_v1_order_filled-market-sell-order.json} | 2 +- ...buy-order.json => api_v1_order_pending-limit-buy-order.json} | 2 +- ...ll-order.json => api_v1_order_pending-limit-sell-order.json} | 2 +- 10 files changed, 5 insertions(+), 5 deletions(-) rename xchange-bitmex/src/test/resources/__files/{api_v1_order-filled-limit-buy-order.json => api_v1_order_filled-limit-buy-order.json} (100%) rename xchange-bitmex/src/test/resources/__files/{api_v1_order-filled-limit-sell-order.json => api_v1_order_filled-limit-sell-order.json} (100%) rename xchange-bitmex/src/test/resources/__files/{api_v1_order-filled-market-sell-order.json => api_v1_order_filled-market-sell-order.json} (100%) rename xchange-bitmex/src/test/resources/__files/{api_v1_order-pending-limit-buy-order.json => api_v1_order_pending-limit-buy-order.json} (100%) rename xchange-bitmex/src/test/resources/__files/{api_v1_order-pending-limit-sell-order.json => api_v1_order_pending-limit-sell-order.json} (100%) rename xchange-bitmex/src/test/resources/mappings/{api_v1_order-filled-limit-buy-order.json => api_v1_order_filled-limit-buy-order.json} (86%) rename xchange-bitmex/src/test/resources/mappings/{api_v1_order-filled-limit-sell-order.json => api_v1_order_filled-limit-sell-order.json} (86%) rename xchange-bitmex/src/test/resources/mappings/{api_v1_order-filled-market-sell-order.json => api_v1_order_filled-market-sell-order.json} (86%) rename xchange-bitmex/src/test/resources/mappings/{api_v1_order-pending-limit-buy-order.json => api_v1_order_pending-limit-buy-order.json} (86%) rename xchange-bitmex/src/test/resources/mappings/{api_v1_order-pending-limit-sell-order.json => api_v1_order_pending-limit-sell-order.json} (86%) diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-limit-buy-order.json similarity index 100% rename from xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-buy-order.json rename to xchange-bitmex/src/test/resources/__files/api_v1_order_filled-limit-buy-order.json diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-limit-sell-order.json similarity index 100% rename from xchange-bitmex/src/test/resources/__files/api_v1_order-filled-limit-sell-order.json rename to xchange-bitmex/src/test/resources/__files/api_v1_order_filled-limit-sell-order.json diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-filled-market-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_filled-market-sell-order.json similarity index 100% rename from xchange-bitmex/src/test/resources/__files/api_v1_order-filled-market-sell-order.json rename to xchange-bitmex/src/test/resources/__files/api_v1_order_filled-market-sell-order.json diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_pending-limit-buy-order.json similarity index 100% rename from xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-buy-order.json rename to xchange-bitmex/src/test/resources/__files/api_v1_order_pending-limit-buy-order.json diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_pending-limit-sell-order.json similarity index 100% rename from xchange-bitmex/src/test/resources/__files/api_v1_order-pending-limit-sell-order.json rename to xchange-bitmex/src/test/resources/__files/api_v1_order_pending-limit-sell-order.json diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-limit-buy-order.json similarity index 86% rename from xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json rename to xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-limit-buy-order.json index 3dd748ecf8a..6f872a400c1 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-buy-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-limit-buy-order.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "bodyFileName" : "api_v1_order-filled-limit-buy-order.json" + "bodyFileName" : "api_v1_order_filled-limit-buy-order.json" }, "uuid" : "17cd05a1-bdd7-4141-a3c1-2e7d2fc204bd", "persistent" : true, diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-limit-sell-order.json similarity index 86% rename from xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json rename to xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-limit-sell-order.json index 8aa89654ce0..22de2fd48e5 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-limit-sell-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-limit-sell-order.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "bodyFileName" : "api_v1_order-filled-limit-sell-order.json" + "bodyFileName" : "api_v1_order_filled-limit-sell-order.json" }, "uuid" : "c3d07156-0920-43dd-8a1b-98b4a2fe9f31", "persistent" : true, diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-market-sell-order.json similarity index 86% rename from xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json rename to xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-market-sell-order.json index 701c7937aa4..c8ac55e9761 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-filled-market-sell-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filled-market-sell-order.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "bodyFileName" : "api_v1_order-filled-market-sell-order.json" + "bodyFileName" : "api_v1_order_filled-market-sell-order.json" }, "uuid" : "ad15befc-62af-47be-9d07-c192806481ad", "persistent" : true, diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_pending-limit-buy-order.json similarity index 86% rename from xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json rename to xchange-bitmex/src/test/resources/mappings/api_v1_order_pending-limit-buy-order.json index e7f1630915c..b4fb23f4498 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-buy-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_pending-limit-buy-order.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "bodyFileName" : "api_v1_order-pending-limit-buy-order.json" + "bodyFileName" : "api_v1_order_pending-limit-buy-order.json" }, "uuid" : "3cfcd90a-7847-4593-a88d-e46ae9ab8de2", "persistent" : true, diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_pending-limit-sell-order.json similarity index 86% rename from xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json rename to xchange-bitmex/src/test/resources/mappings/api_v1_order_pending-limit-sell-order.json index 40c3fccbe58..683880f5c41 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order-pending-limit-sell-order.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_pending-limit-sell-order.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "bodyFileName" : "api_v1_order-pending-limit-sell-order.json" + "bodyFileName" : "api_v1_order_pending-limit-sell-order.json" }, "uuid" : "4eb46bc7-6fa7-43af-88ca-ccbbcc7cc508", "persistent" : true, From 5d34172c72196c9b14c77fa6d1c7211e014f3888 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 15:59:42 +0100 Subject: [PATCH 18/32] [bitmex] Refactor getting of open orders --- .../InstrumentToStringConverter.java | 14 +++++++ .../bitmex/dto/params/FilterParam.java | 7 ++++ .../bitmex/service/BitmexTradeService.java | 21 +++++----- .../service/BitmexTradeServiceTest.java | 25 +++++++++++ .../__files/api_v1_order_all-open-orders.json | 42 +++++++++++++++++++ .../api_v1_order_filtered-open-orders.json | 22 ++++++++++ .../api_v1_order_all-open-orders.json | 15 +++++++ .../api_v1_order_filtered-open-orders.json | 15 +++++++ 8 files changed, 150 insertions(+), 11 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentToStringConverter.java create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_all-open-orders.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_filtered-open-orders.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentToStringConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentToStringConverter.java new file mode 100644 index 00000000000..ce47f9c227f --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentToStringConverter.java @@ -0,0 +1,14 @@ +package org.knowm.xchange.bitmex.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.instrument.Instrument; + +/** Converts {@code Instrument} to String */ +public class InstrumentToStringConverter extends StdConverter { + + @Override + public String convert(Instrument value) { + return BitmexAdapters.toString(value); + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java index 7ee4c8a2064..b95c3fafd1c 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java @@ -1,12 +1,15 @@ package org.knowm.xchange.bitmex.dto.params; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import java.util.List; import lombok.Builder; import lombok.Data; import lombok.Singular; import lombok.extern.jackson.Jacksonized; import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.bitmex.config.converter.InstrumentToStringConverter; +import org.knowm.xchange.instrument.Instrument; @Data @Builder @@ -17,6 +20,10 @@ public class FilterParam { @JsonProperty("orderID") private List orderIds; + @JsonProperty("symbol") + @JsonSerialize(converter = InstrumentToStringConverter.class) + private Instrument instrument; + @JsonProperty("open") private Boolean isOpen; diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index b2f79ea69d8..2992006134e 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -30,6 +30,7 @@ import org.knowm.xchange.service.trade.params.CancelAllOrders; import org.knowm.xchange.service.trade.params.CancelOrderParams; import org.knowm.xchange.service.trade.params.DefaultCancelOrderParamId; +import org.knowm.xchange.service.trade.params.InstrumentParam; import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; import org.knowm.xchange.service.trade.params.TradeHistoryParamLimit; import org.knowm.xchange.service.trade.params.TradeHistoryParamOffset; @@ -37,6 +38,7 @@ import org.knowm.xchange.service.trade.params.TradeHistoryParamsSorted; import org.knowm.xchange.service.trade.params.TradeHistoryParamsTimeSpan; import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParam; +import org.knowm.xchange.service.trade.params.orders.OpenOrdersParamInstrument; import org.knowm.xchange.service.trade.params.orders.OpenOrdersParams; import org.knowm.xchange.service.trade.params.orders.OrderQueryParams; @@ -54,22 +56,19 @@ public OpenOrdersParams createOpenOrdersParams() { @Override public OpenOrders getOpenOrders() throws ExchangeException { - - FilterParam filterParam = FilterParam.builder().isOpen(true).build(); - List bitmexOrders = - getBitmexOrders(null, filterParam, null, null, null); - - return new OpenOrders(bitmexOrders.stream() - .map(BitmexAdapters::toOrder) - .map(LimitOrder.class::cast) - .collect(Collectors.toList())); + return getOpenOrders(new DefaultOpenOrdersParam()); } @Override public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeException { - FilterParam filterParam = FilterParam.builder().isOpen(true).build(); + FilterParam.FilterParamBuilder builder = FilterParam.builder() + .isOpen(true); + if (params instanceof OpenOrdersParamInstrument) { + builder.instrument(((InstrumentParam) params).getInstrument()); + } + List limitOrders = - getBitmexOrders(null, filterParam, null, null, null).stream() + getBitmexOrders(null, builder.build(), null, null, null).stream() .map(BitmexAdapters::toOrder) .map(LimitOrder.class::cast) .filter(params::accept) diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java index dd4a036083f..ef68e0b694c 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -15,7 +15,9 @@ import org.knowm.xchange.dto.Order.OrderType; import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; +import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.service.trade.TradeService; +import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParamInstrument; class BitmexTradeServiceTest extends BitmexExchangeWiremock { @@ -160,5 +162,28 @@ void filled_limit_sell_order_details() throws IOException { .isEqualTo(expected); } + @Test + void all_open_orders() throws IOException { + OpenOrders actual = tradeService.getOpenOrders(); + + assertThat(actual.getOpenOrders()).hasSize(2); + assertThat(actual.getHiddenOrders()).isEmpty(); + + assertThat(actual.getAllOpenOrders().get(0).getInstrument()) + .isEqualTo(CurrencyPair.ETH_USDT); + assertThat(actual.getAllOpenOrders().get(1).getInstrument()) + .isEqualTo(CurrencyPair.BTC_USDT); + } + + @Test + void filtered_open_orders() throws IOException { + OpenOrders actual = tradeService.getOpenOrders(new DefaultOpenOrdersParamInstrument(CurrencyPair.BTC_USDT)); + + assertThat(actual.getOpenOrders()).hasSize(1); + assertThat(actual.getHiddenOrders()).isEmpty(); + + assertThat(actual.getAllOpenOrders().get(0).getInstrument()) + .isEqualTo(CurrencyPair.BTC_USDT); + } } \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_all-open-orders.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_all-open-orders.json new file mode 100644 index 00000000000..191a99297da --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_all-open-orders.json @@ -0,0 +1,42 @@ +[ + { + "execID": "00000000-006d-1000-0000-000f891f7ba4", + "orderID": "330ff682-ad2c-44b7-8b22-46241d7b8c2e", + "account": 2273415, + "symbol": "ETH_USDT", + "side": "Buy", + "orderQty": 1000000, + "price": 3000, + "currency": "USDT", + "execType": "New", + "ordType": "Limit", + "timeInForce": "GoodTillCancel", + "ordStatus": "New", + "workingIndicator": true, + "leavesQty": 1000000, + "cumQty": 0, + "text": "Submission from www.bitmex.com", + "transactTime": "2024-12-12T14:39:17.503Z", + "timestamp": "2024-12-12T14:39:17.503Z" + }, + { + "execID": "00000000-006d-1000-0000-000f85e2d78f", + "orderID": "36b592c1-5b14-4156-81fe-83ed9a440f06", + "account": 2273415, + "symbol": "XBT_USDT", + "side": "Buy", + "orderQty": 10000, + "price": 90000, + "currency": "USDT", + "execType": "New", + "ordType": "Limit", + "timeInForce": "GoodTillCancel", + "ordStatus": "New", + "workingIndicator": true, + "leavesQty": 10000, + "cumQty": 0, + "text": "Submission from www.bitmex.com", + "transactTime": "2024-12-12T09:18:01.023Z", + "timestamp": "2024-12-12T09:18:01.023Z" + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_filtered-open-orders.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_filtered-open-orders.json new file mode 100644 index 00000000000..33d9506eaa8 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_filtered-open-orders.json @@ -0,0 +1,22 @@ +[ + { + "execID": "00000000-006d-1000-0000-000f85e2d78f", + "orderID": "36b592c1-5b14-4156-81fe-83ed9a440f06", + "account": 2273415, + "symbol": "XBT_USDT", + "side": "Buy", + "orderQty": 10000, + "price": 90000, + "currency": "USDT", + "execType": "New", + "ordType": "Limit", + "timeInForce": "GoodTillCancel", + "ordStatus": "New", + "workingIndicator": true, + "leavesQty": 10000, + "cumQty": 0, + "text": "Submission from www.bitmex.com", + "transactTime": "2024-12-12T09:18:01.023Z", + "timestamp": "2024-12-12T09:18:01.023Z" + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json new file mode 100644 index 00000000000..69ac5bedea1 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json @@ -0,0 +1,15 @@ +{ + "id" : "96ae8b93-b4ab-4c35-a4f7-7a4f9f1f9e43", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%5D%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_all-open-orders.json" + }, + "uuid" : "96ae8b93-b4ab-4c35-a4f7-7a4f9f1f9e43", + "persistent" : true, + "insertionIndex" : 10 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json new file mode 100644 index 00000000000..e263f3078fd --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json @@ -0,0 +1,15 @@ +{ + "id" : "75dbdfb2-6dc1-4563-9c05-09e7f2056889", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%5D%2C%22symbol%22%3A%22XBT_USDT%22%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_filtered-open-orders.json" + }, + "uuid" : "75dbdfb2-6dc1-4563-9c05-09e7f2056889", + "persistent" : true, + "insertionIndex" : 11 +} \ No newline at end of file From 75f7b82d243466de669a7bea643dc7d25623146d Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 16:28:13 +0100 Subject: [PATCH 19/32] [bitmex] Refactor cancelling of orders --- .../bitmex/service/BitmexTradeService.java | 27 +++++------------ .../service/BitmexTradeServiceTest.java | 6 ++++ .../__files/api_v1_order_cancel-order.json | 20 +++++++++++++ .../mappings/api_v1_order_cancel-order.json | 19 ++++++++++++ .../src/test/resources/rest/authorized.http | 30 ++++++++++++++++++- .../params/DefaultCancelOrderParamId.java | 22 +++++++------- 6 files changed, 92 insertions(+), 32 deletions(-) create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_cancel-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_cancel-order.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index 2992006134e..21619f61065 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import org.apache.commons.lang3.Validate; import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; @@ -25,11 +26,10 @@ import org.knowm.xchange.dto.trade.UserTrade; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.CancelAllOrders; +import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; import org.knowm.xchange.service.trade.params.CancelOrderParams; -import org.knowm.xchange.service.trade.params.DefaultCancelOrderParamId; import org.knowm.xchange.service.trade.params.InstrumentParam; import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; import org.knowm.xchange.service.trade.params.TradeHistoryParamLimit; @@ -133,29 +133,18 @@ public String changeOrder(LimitOrder limitOrder) throws ExchangeException { } @Override - public boolean cancelOrder(String orderId) throws ExchangeException { - List orders = cancelBitmexOrder(orderId); - - if (orders.isEmpty()) { - return true; - } - return orders.get(0).getId().equals(orderId); - } - public boolean cancelOrder(CancelOrderParams params) throws ExchangeException { - - if (params instanceof DefaultCancelOrderParamId) { - DefaultCancelOrderParamId paramsWithId = (DefaultCancelOrderParamId) params; - return cancelOrder(paramsWithId.getOrderId()); - } - if (params instanceof CancelAllOrders) { List orders = cancelAllOrders(); return !orders.isEmpty(); } - throw new NotYetImplementedForExchangeException( - String.format("Unexpected type of parameter: %s", params)); + Validate.isInstanceOf(CancelOrderByIdParams.class,params); + String orderId = ((CancelOrderByIdParams) params).getOrderId(); + + List orders = cancelBitmexOrder(orderId); + + return orders.isEmpty() || orders.get(0).getId().equals(orderId); } @Override diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java index ef68e0b694c..ef770e766d4 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -186,4 +186,10 @@ void filtered_open_orders() throws IOException { .isEqualTo(CurrencyPair.BTC_USDT); } + @Test + void valid_cancel_order() throws IOException { + boolean actual = tradeService.cancelOrder("330ff682-ad2c-44b7-8b22-46241d7b8c2e"); + assertThat(actual).isTrue(); + } + } \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_cancel-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_cancel-order.json new file mode 100644 index 00000000000..a4470d7c5fc --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_cancel-order.json @@ -0,0 +1,20 @@ +[ + { + "account": 2273415, + "cumQty": 0, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Canceled", + "ordType": "Limit", + "orderID": "330ff682-ad2c-44b7-8b22-46241d7b8c2e", + "orderQty": 1000000, + "price": 3000.0, + "side": "Buy", + "symbol": "ETH_USDT", + "text": "Canceled\nCanceled via API.", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-12T15:15:20.084Z", + "transactTime": "2024-12-12T15:15:20.084Z", + "workingIndicator": false + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_cancel-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_cancel-order.json new file mode 100644 index 00000000000..4f495a1fa84 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_cancel-order.json @@ -0,0 +1,19 @@ +{ + "id" : "c68379b5-9c17-41aa-b220-6cb849abd431", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order", + "method" : "DELETE", + "bodyPatterns" : [ { + "equalTo" : "orderID=330ff682-ad2c-44b7-8b22-46241d7b8c2e", + "caseInsensitive" : false + } ] + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_cancel-order.json" + }, + "uuid" : "c68379b5-9c17-41aa-b220-6cb849abd431", + "persistent" : true, + "insertionIndex" : 12 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index 562cb77c482..f168eef645a 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -4,13 +4,29 @@ gen_sign(request); %} #GET {{api_v1}}/order?filter={"orderID":"5d873440-48c6-48ed-86d9-e8e4259b0e7a","ordType":"Market"} -GET {{api_v1}}/order +GET {{api_v1}}/order?filter={"open":"true"} +#GET {{api_v1}}/order api-key: {{api_key}} api-expires: {{timestamp}} api-signature: {{sign}} Accept: application/json +### Cancel order(s) +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +#GET {{api_v1}}/order?filter={"orderID":"5d873440-48c6-48ed-86d9-e8e4259b0e7a","ordType":"Market"} +DELETE {{api_v1}}/order +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Content-Type: application/x-www-form-urlencoded + +orderID = 36b592c1-5b14-4156-81fe-83ed9a440f06 + + ### Get your current wallet information < {% import {gen_sign} from 'sign.js' @@ -23,3 +39,15 @@ api-signature: {{sign}} Accept: application/json +### + +# curl -X DELETE --header 'Content-Type: application/x-www-form-urlencoded' --header 'Accept: application/json' --header 'X-Requested-With: XMLHttpRequest' -d 'orderID=asdf' 'https://www.bitmex.com/api/v1/order' +DELETE https://www.bitmex.com/api/v1/order +Accept: application/json +X-Requested-With: XMLHttpRequest +Content-Type: application/x-www-form-urlencoded + +orderID = asdf + +### + diff --git a/xchange-core/src/main/java/org/knowm/xchange/service/trade/params/DefaultCancelOrderParamId.java b/xchange-core/src/main/java/org/knowm/xchange/service/trade/params/DefaultCancelOrderParamId.java index 191497530a4..c8ff0edf6cb 100644 --- a/xchange-core/src/main/java/org/knowm/xchange/service/trade/params/DefaultCancelOrderParamId.java +++ b/xchange-core/src/main/java/org/knowm/xchange/service/trade/params/DefaultCancelOrderParamId.java @@ -1,19 +1,17 @@ package org.knowm.xchange.service.trade.params; -public class DefaultCancelOrderParamId implements CancelOrderByIdParams { - - private String orderId; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; - public DefaultCancelOrderParamId() {} - public DefaultCancelOrderParamId(String orderId) { - - this.orderId = orderId; - } +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DefaultCancelOrderParamId implements CancelOrderByIdParams { - @Override - public String getOrderId() { + private String orderId; - return orderId; - } } From 44398ad45fa4636587a1f82e29af77898be66918 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 23:28:17 +0100 Subject: [PATCH 20/32] [bitmex] Implement order placing --- .../knowm/xchange/bitmex/BitmexAdapters.java | 20 +- .../xchange/bitmex/BitmexAuthenticated.java | 39 +- .../BitmexJacksonObjectMapperFactory.java | 4 +- .../converter/OrderTypeToStringConverter.java | 20 + .../bitmex/dto/account/BitmexWallet.java | 16 +- .../dto/marketdata/BitmexPrivateOrder.java | 6 +- .../dto/trade/BitmexContingencyType.java | 21 +- .../dto/trade/BitmexExecutionInstruction.java | 121 +----- .../bitmex/dto/trade/BitmexOrderType.java | 37 +- .../bitmex/dto/trade/BitmexPegPriceType.java | 24 +- .../dto/trade/BitmexPlaceOrderParameters.java | 363 +++--------------- .../bitmex/dto/trade/BitmexTimeInForce.java | 24 +- .../bitmex/dto/trade/PlaceOrderCommand.java | 146 ------- .../bitmex/service/BitmexTradeService.java | 43 +-- .../bitmex/service/BitmexTradeServiceRaw.java | 34 +- .../service/BitmexTradeServiceTest.java | 57 +++ .../service/trade/BitmexBulkOrderTest.java | 107 ------ .../api_v1_order_new-limit-buy-order.json | 19 + .../api_v1_order_new-limit-sell-order.json | 19 + .../api_v1_order_new-marked-buy-order.json | 19 + .../api_v1_order_new-market-sell-order.json | 19 + .../api_v1_order_all-open-orders.json | 2 +- .../api_v1_order_filtered-open-orders.json | 2 +- .../api_v1_order_new-limit-buy-order.json | 20 + .../api_v1_order_new-limit-sell-order.json | 20 + .../api_v1_order_new-marked-buy-order.json | 20 + .../api_v1_order_new-market-sell-order.json | 20 + .../src/test/resources/rest/authorized.http | 34 +- 28 files changed, 427 insertions(+), 849 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/OrderTypeToStringConverter.java delete mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java delete mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/trade/BitmexBulkOrderTest.java create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_new-marked-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_new-market-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-sell-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_new-marked-buy-order.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_new-market-sell-order.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index c06936cf42a..9840b3dd11e 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -549,13 +549,29 @@ public Date toDate (ZonedDateTime zonedDateTime) { .orElse(null); } - public BigDecimal scaleAmount(BigDecimal amount, Currency currency) { + public BigDecimal scaleToLocalAmount(BigDecimal amount, Currency currency) { + return scaleAmount(amount, currency, false); + } + + public BigDecimal scaleToExchangeAmount(BigDecimal amount, Currency currency) { + return scaleAmount(amount, currency, true); + } + + private BigDecimal scaleAmount(BigDecimal amount, Currency currency, boolean scaleUp) { + if (amount == null) { + return null; + } Integer scale = getCurrencyScale(currency); if (scale == null || scale == 0) { log.warn("Scale for {} not found. Returning as is", currency); return amount; } - return amount.scaleByPowerOfTen(-scale); + if (scaleUp) { + return amount.scaleByPowerOfTen(scale); + } + else { + return amount.scaleByPowerOfTen(-scale); + } } public Wallet toWallet(List bitmexWallets) { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java index dc31ecdfc0f..850843a014f 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java @@ -25,10 +25,10 @@ import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrderList; import org.knowm.xchange.bitmex.dto.params.FilterParam; import org.knowm.xchange.bitmex.dto.trade.BitmexCancelAll; +import org.knowm.xchange.bitmex.dto.trade.BitmexPlaceOrderParameters; import org.knowm.xchange.bitmex.dto.trade.BitmexPosition; import org.knowm.xchange.bitmex.dto.trade.BitmexPositionList; import org.knowm.xchange.bitmex.dto.trade.BitmexPrivateExecution; -import org.knowm.xchange.bitmex.dto.trade.PlaceOrderCommand; import org.knowm.xchange.bitmex.dto.trade.ReplaceOrderCommand; import si.mazi.rescu.ParamsDigest; import si.mazi.rescu.SynchronizedValueFactory; @@ -168,26 +168,13 @@ BitmexPrivateOrderList getOrders( */ @POST @Path("order") + @Consumes(MediaType.APPLICATION_JSON) BitmexPrivateOrder placeOrder( @HeaderParam("api-key") String apiKey, @HeaderParam("api-expires") SynchronizedValueFactory nonce, @HeaderParam("api-signature") ParamsDigest paramsDigest, - @FormParam("symbol") String symbol, - @Nullable @FormParam("side") String side, - @Nullable @FormParam("orderQty") BigDecimal orderQuantity, - @Nullable @FormParam("simpleOrderQty") BigDecimal simpleOrderQuantity, - @Nullable @FormParam("displayQty") BigDecimal displayQuantity, - @Nullable @FormParam("price") BigDecimal price, - @Nullable @FormParam("stopPx") BigDecimal stopPrice, - @Nullable @FormParam("ordType") String orderType, - @Nullable @FormParam("clOrdID") String clOrdID, - @Nullable @FormParam("execInst") String executionInstructions, - @Nullable @FormParam("clOrdLinkID") String clOrdLinkID, - @Nullable @FormParam("contingencyType") String contingencyType, - @Nullable @FormParam("pegOffsetValue") BigDecimal pegOffsetValue, - @Nullable @FormParam("pegPriceType") String pegPriceType, - @Nullable @FormParam("timeInForce") String timeInForce, - @Nullable @FormParam("text") String text) + BitmexPlaceOrderParameters bitmexPlaceOrderParameters +) throws IOException, BitmexException; /** @@ -239,24 +226,6 @@ BitmexPrivateOrder replaceOrder( @Nullable @FormParam("text") String text) throws IOException, BitmexException; - /** - * @param apiKey - * @param nonce - * @param paramsDigest - * @param orderCommands JSON Array of order(s). Use {@link PlaceOrderCommand} to generate JSON. - * @return {@link BitmexPrivateOrderList} contains the results of the call. - * @throws IOException - * @throws BitmexException - */ - @POST - @Path("order/bulk") - BitmexPrivateOrderList placeOrderBulk( - @HeaderParam("api-key") String apiKey, - @HeaderParam("api-expires") SynchronizedValueFactory nonce, - @HeaderParam("api-signature") ParamsDigest paramsDigest, - @FormParam("orders") String orderCommands) - throws IOException, BitmexException; - /** * @param apiKey * @param nonce diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java index 7d5dc8b6a09..5503c8928bb 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/BitmexJacksonObjectMapperFactory.java @@ -18,8 +18,8 @@ public void configureObjectMapper(ObjectMapper objectMapper) { // enable jsr310 types objectMapper.registerModule(new JavaTimeModule()); - // don't render null's - objectMapper.setSerializationInclusion(Include.NON_NULL); + // don't render null's or empty lists + objectMapper.setSerializationInclusion(Include.NON_EMPTY); // store object mapper for using in module Config.getInstance().setObjectMapper(objectMapper); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/OrderTypeToStringConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/OrderTypeToStringConverter.java new file mode 100644 index 00000000000..a30459b1b94 --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/OrderTypeToStringConverter.java @@ -0,0 +1,20 @@ +package org.knowm.xchange.bitmex.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.dto.Order.OrderType; + +/** Converts {@code OrderType} to string */ +public class OrderTypeToStringConverter extends StdConverter { + + @Override + public String convert(OrderType value) { + switch (value) { + case BID: + return "Buy"; + case ASK: + return "Sell"; + default: + throw new IllegalArgumentException("Can't map " + value); + } + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java index 087713bf988..c1e18a6ecd8 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWallet.java @@ -55,13 +55,13 @@ public BitmexWallet( this.currency = BitmexAdapters.bitmexCodeToCurrency(currencyCode); // scale values - this.deposited = BitmexAdapters.scaleAmount(deposited, currency); - this.withdrawn = BitmexAdapters.scaleAmount(withdrawn, currency); - this.transferIn = BitmexAdapters.scaleAmount(transferIn, currency); - this.transferOut = BitmexAdapters.scaleAmount(transferOut, currency); - this.amount = BitmexAdapters.scaleAmount(amount, currency); - this.pendingCredit = BitmexAdapters.scaleAmount(pendingCredit, currency); - this.pendingDebit = BitmexAdapters.scaleAmount(pendingDebit, currency); - this.confirmedDebit = BitmexAdapters.scaleAmount(confirmedDebit, currency); + this.deposited = BitmexAdapters.scaleToLocalAmount(deposited, currency); + this.withdrawn = BitmexAdapters.scaleToLocalAmount(withdrawn, currency); + this.transferIn = BitmexAdapters.scaleToLocalAmount(transferIn, currency); + this.transferOut = BitmexAdapters.scaleToLocalAmount(transferOut, currency); + this.amount = BitmexAdapters.scaleToLocalAmount(amount, currency); + this.pendingCredit = BitmexAdapters.scaleToLocalAmount(pendingCredit, currency); + this.pendingDebit = BitmexAdapters.scaleToLocalAmount(pendingDebit, currency); + this.confirmedDebit = BitmexAdapters.scaleToLocalAmount(confirmedDebit, currency); } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java index 3e26581dd92..0cf41aa7593 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java @@ -75,9 +75,9 @@ public BitmexPrivateOrder(@JsonProperty("cumQty") BigDecimal cumulativeAmount, @JsonProperty("symbol") String symbol ) { this.instrument = BitmexAdapters.toInstrument(symbol); - this.cumulativeAmount = BitmexAdapters.scaleAmount(cumulativeAmount, instrument.getBase()); - this.originalAmount = BitmexAdapters.scaleAmount(originalAmount, instrument.getBase()); - this.notFilledAmount = BitmexAdapters.scaleAmount(notFilledAmount, instrument.getBase()); + this.cumulativeAmount = BitmexAdapters.scaleToLocalAmount(cumulativeAmount, instrument.getBase()); + this.originalAmount = BitmexAdapters.scaleToLocalAmount(originalAmount, instrument.getBase()); + this.notFilledAmount = BitmexAdapters.scaleToLocalAmount(notFilledAmount, instrument.getBase()); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexContingencyType.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexContingencyType.java index 18a39bc69ba..63d2e61b40e 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexContingencyType.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexContingencyType.java @@ -1,19 +1,10 @@ package org.knowm.xchange.bitmex.dto.trade; -@SuppressWarnings("unused") -public enum BitmexContingencyType { - OCO("OneCancelsTheOther"), - OTO("OneTriggersTheOther"), - OUOA("OneUpdatesTheOtherAbsolute"), - OUOP("OneUpdatesTheOtherProportional"); - - private String apiParameter; +import com.fasterxml.jackson.annotation.JsonProperty; - BitmexContingencyType(String apiParameter) { - this.apiParameter = apiParameter; - } - - public String toApiParameter() { - return apiParameter; - } +public enum BitmexContingencyType { + @JsonProperty("OneCancelsTheOther") + OCO, + @JsonProperty("OneTriggersTheOther") + OTO; } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexExecutionInstruction.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexExecutionInstruction.java index a82a24f32df..70c0d60609e 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexExecutionInstruction.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexExecutionInstruction.java @@ -1,108 +1,25 @@ package org.knowm.xchange.bitmex.dto.trade; -import java.util.ArrayList; -import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; -@SuppressWarnings("unused") public enum BitmexExecutionInstruction { - PARTICIPATE_DO_NOT_INITIATE("ParticipateDoNotInitiate"), - ALL_OR_NONE("AllOrNone"), - MARK_PRICE("MarkPrice"), - INDEX_PRICE("IndexPrice"), - LAST_PRICE("LastPrice"), - CLOSE("Close"), - REDUCE_ONLY("ReduceOnly"), - FIXED("Fixed"); + @JsonProperty("ParticipateDoNotInitiate") + PARTICIPATE_DO_NOT_INITIATE, + @JsonProperty("AllOrNone") + ALL_OR_NONE, + @JsonProperty("MarkPrice") + MARK_PRICE, + @JsonProperty("IndexPrice") + INDEX_PRICE, + @JsonProperty("LastPrice") + LAST_PRICE, + @JsonProperty("Close") + CLOSE, + @JsonProperty("ReduceOnly") + REDUCE_ONLY, + @JsonProperty("Fixed") + FIXED, + @JsonProperty("LastWithinMark") + LAST_WITHIN_MARK; - private String apiParameter; - - BitmexExecutionInstruction(String apiParameter) { - this.apiParameter = apiParameter; - } - - @Override - public String toString() { - return apiParameter; - } - - public static class Builder { - - private boolean postOnly; - private boolean allOrNone; - private boolean markPrice; - private boolean indexPrice; - private boolean lastPrice; - private boolean close; - private boolean reduceOnly; - private boolean fixed; - - public List build() { - final ArrayList instructions = new ArrayList<>(); - if (postOnly) { - instructions.add(PARTICIPATE_DO_NOT_INITIATE); - } - if (allOrNone) { - instructions.add(ALL_OR_NONE); - } - if (markPrice) { - instructions.add(MARK_PRICE); - } - if (indexPrice) { - instructions.add(INDEX_PRICE); - } - if (lastPrice) { - instructions.add(LAST_PRICE); - } - if (close) { - instructions.add(CLOSE); - } - if (reduceOnly) { - instructions.add(REDUCE_ONLY); - } - if (fixed) { - instructions.add(FIXED); - } - return instructions; - } - - public Builder setPostOnly(boolean postOnly) { - this.postOnly = postOnly; - return this; - } - - public Builder setAllOrNone(boolean allOrNone) { - this.allOrNone = allOrNone; - return this; - } - - public Builder setMarkPrice(boolean markPrice) { - this.markPrice = markPrice; - return this; - } - - public Builder setIndexPrice(boolean indexPrice) { - this.indexPrice = indexPrice; - return this; - } - - public Builder setLastPrice(boolean lastPrice) { - this.lastPrice = lastPrice; - return this; - } - - public Builder setClose(boolean close) { - this.close = close; - return this; - } - - public Builder setReduceOnly(boolean reduceOnly) { - this.reduceOnly = reduceOnly; - return this; - } - - public Builder setFixed(boolean fixed) { - this.fixed = fixed; - return this; - } - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexOrderType.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexOrderType.java index 70ba65bb103..ade47159d72 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexOrderType.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexOrderType.java @@ -1,23 +1,22 @@ package org.knowm.xchange.bitmex.dto.trade; -@SuppressWarnings("unused") -public enum BitmexOrderType { - LIMIT("Limit"), - STOP("Stop"), - MARKET("Market"), - STOP_LIMIT("StopLimit"), - PEGGED("Pegged"), - MARKET_IF_TOUCHED("MarketIfTouched"), - LIMIT_IF_TOUCHED("LimitIfTouched"), - MARKET_WITH_LEFT_OVER_AS_LIMIT("MarketWithLeftOverAsLimit"); - - private String apiParameter; +import com.fasterxml.jackson.annotation.JsonProperty; - BitmexOrderType(String apiParameter) { - this.apiParameter = apiParameter; - } - - public String toApiParameter() { - return apiParameter; - } +public enum BitmexOrderType { + @JsonProperty("Limit") + LIMIT, + @JsonProperty("Stop") + STOP, + @JsonProperty("Market") + MARKET, + @JsonProperty("StopLimit") + STOP_LIMIT, + @JsonProperty("Pegged") + PEGGED, + @JsonProperty("MarketIfTouched") + MARKET_IF_TOUCHED, + @JsonProperty("LimitIfTouched") + LIMIT_IF_TOUCHED, + @JsonProperty("MarketWithLeftOverAsLimit") + MARKET_WITH_LEFT_OVER_AS_LIMIT; } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPegPriceType.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPegPriceType.java index cc1d42408b9..c00f5bc1951 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPegPriceType.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPegPriceType.java @@ -1,20 +1,12 @@ package org.knowm.xchange.bitmex.dto.trade; -@SuppressWarnings("unused") -public enum BitmexPegPriceType { - LAST_PEG("LastPeg"), - MID_PRICE_PEG("MidPricePeg"), - MARGET_PEG("MarketPeg"), - PRIMARY_PEG("PrimaryPeg"), - TRAILING_STOP_PEG("TrailingStopPeg"); - - private String apiParameter; +import com.fasterxml.jackson.annotation.JsonProperty; - BitmexPegPriceType(String apiParameter) { - this.apiParameter = apiParameter; - } - - public String toApiParameter() { - return apiParameter; - } +public enum BitmexPegPriceType { + @JsonProperty("MarketPeg") + MARGET_PEG, + @JsonProperty("PrimaryPeg") + PRIMARY_PEG, + @JsonProperty("TrailingStopPeg") + TRAILING_STOP_PEG; } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPlaceOrderParameters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPlaceOrderParameters.java index c86113b07a9..bee65a7cb7a 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPlaceOrderParameters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPlaceOrderParameters.java @@ -1,335 +1,82 @@ package org.knowm.xchange.bitmex.dto.trade; +import com.fasterxml.jackson.annotation.JsonGetter; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import org.apache.commons.lang3.StringUtils; -import org.knowm.xchange.bitmex.Bitmex; - -/** See {@link Bitmex#placeOrder} */ -@SuppressWarnings({"unused", "WeakerAccess"}) +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.Singular; +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.bitmex.config.converter.InstrumentToStringConverter; +import org.knowm.xchange.bitmex.config.converter.OrderTypeToStringConverter; +import org.knowm.xchange.dto.Order.OrderType; +import org.knowm.xchange.instrument.Instrument; + +@Data +@Builder +@AllArgsConstructor public class BitmexPlaceOrderParameters { - private final String symbol; - @Nullable private final BigDecimal orderQuantity; - @Nullable private final BigDecimal simpleOrderQuantity; - @Nullable private final BigDecimal displayQuantity; - @Nullable private final BigDecimal price; - @Nullable private final BigDecimal stopPrice; - @Nullable private final BitmexSide side; - @Nullable private final BitmexOrderType orderType; - @Nullable private final String clOrdId; - @Nullable private final List executionInstructions; - @Nullable private final String clOrdLinkId; - @Nullable private final BitmexContingencyType contingencyType; - @Nullable private final BigDecimal pegOffsetValue; - @Nullable private final BitmexPegPriceType pegPriceType; - @Nullable private final BitmexTimeInForce timeInForce; - @Nullable private final String text; - - public BitmexPlaceOrderParameters( - @Nonnull String symbol, - @Nullable BigDecimal orderQuantity, - @Nullable BigDecimal simpleOrderQuantity, - @Nullable BigDecimal displayQuantity, - @Nullable BigDecimal price, - @Nullable BigDecimal stopPrice, - @Nullable BitmexSide side, - @Nullable BitmexOrderType orderType, - @Nullable String clOrdId, - @Nullable List executionInstructions, - @Nullable String clOrdLinkId, - @Nullable BitmexContingencyType contingencyType, - @Nullable BigDecimal pegOffsetValue, - @Nullable BitmexPegPriceType pegPriceType, - @Nullable BitmexTimeInForce timeInForce, - @Nullable String text) { - this.symbol = symbol; - this.orderQuantity = orderQuantity; - this.simpleOrderQuantity = simpleOrderQuantity; - this.displayQuantity = displayQuantity; - this.price = price; - this.stopPrice = stopPrice; - this.side = side; - this.orderType = orderType; - this.clOrdId = clOrdId; - this.executionInstructions = executionInstructions; - this.clOrdLinkId = clOrdLinkId; - this.contingencyType = contingencyType; - this.pegOffsetValue = pegOffsetValue; - this.pegPriceType = pegPriceType; - this.timeInForce = timeInForce; - this.text = text; - } - - @Nonnull - public String getSymbol() { - return symbol; - } + @JsonProperty("symbol") + @JsonSerialize(converter = InstrumentToStringConverter.class) + private Instrument instrument; - @Nullable - public BigDecimal getOrderQuantity() { - return orderQuantity; - } + @JsonProperty("side") + @JsonSerialize(converter = OrderTypeToStringConverter.class) + private OrderType side; - @Nullable - public BigDecimal getSimpleOrderQuantity() { - return simpleOrderQuantity; - } + @JsonProperty("orderQty") + private BigDecimal orderQuantity; - @Nullable - public BigDecimal getDisplayQuantity() { - return displayQuantity; - } + @JsonProperty("price") + private BigDecimal price; - @Nullable - public BigDecimal getPrice() { - return price; - } + @JsonProperty("displayQty") + private BigDecimal displayQuantity; - @Nullable - public BigDecimal getStopPrice() { - return stopPrice; - } + @JsonProperty("stopPx") + private BigDecimal stopPrice; - @Nullable - public BitmexSide getSide() { - return side; - } + @JsonProperty("clOrdID") + private String clientOid; - @Nullable - public BitmexOrderType getOrderType() { - return orderType; - } + @JsonProperty("clOrdLinkID") + private String clientOrderLinkId; - @Nullable - public String getClOrdId() { - return clOrdId; - } + @JsonProperty("pegOffsetValue") + private BigDecimal pegOffsetValue; - @Nullable - public List getExecutionInstructions() { - return executionInstructions; - } + @JsonProperty("pegPriceType") + private BitmexPegPriceType pegPriceType; - @Nullable - public String getExecutionInstructionsAsParameter() { - return executionInstructions != null ? StringUtils.join(executionInstructions, ", ") : null; - } + @JsonProperty("ordType") + private BitmexOrderType orderType; - @Nullable - public String getClOrdLinkId() { - return clOrdLinkId; - } + @JsonProperty("timeInForce") + private BitmexTimeInForce timeInForce; - @Nullable - public BitmexContingencyType getContingencyType() { - return contingencyType; - } + @Singular + @JsonProperty("execInst") + private List executionInstructions; - @Nullable - public BigDecimal getPegOffsetValue() { - return pegOffsetValue; - } + @JsonProperty("contingencyType") + private BitmexContingencyType contingencyType; - @Nullable - public BitmexPegPriceType getPegPriceType() { - return pegPriceType; - } + @JsonProperty("text") + private String text; - @Nullable - public BitmexTimeInForce getTimeInForce() { - return timeInForce; + @JsonGetter("orderQty") + public BigDecimal getOrderQuantityScaled() { + return BitmexAdapters.scaleToExchangeAmount(orderQuantity, instrument.getBase()); } - @Nullable - public String getText() { - return text; + @JsonGetter("displayQty") + public BigDecimal getDisplayQuantityScaled() { + return BitmexAdapters.scaleToExchangeAmount(displayQuantity, instrument.getBase()); } - /** See {@link Bitmex#placeOrder} */ - public static class Builder { - - private final String symbol; - @Nullable private BigDecimal orderQuantity; - @Nullable private BigDecimal simpleOrderQuantity; - @Nullable private BigDecimal displayQuantity; - @Nullable private BigDecimal price; - @Nullable private BigDecimal stopPrice; - @Nullable private BitmexSide side; - @Nullable private BitmexOrderType orderType; - @Nullable private String clOrdId; - @Nullable private List executionInstructions; - @Nullable private String clOrdLinkId; - @Nullable private BitmexContingencyType contingencyType; - @Nullable private BigDecimal pegOffsetValue; - @Nullable private BitmexPegPriceType pegPriceType; - @Nullable private BitmexTimeInForce timeInForce; - @Nullable private String text; - public Builder(@Nonnull String symbol) { - this.symbol = symbol; - } - - @Nonnull - public BitmexPlaceOrderParameters build() { - return new BitmexPlaceOrderParameters( - symbol, - orderQuantity, - simpleOrderQuantity, - displayQuantity, - price, - stopPrice, - side, - orderType, - clOrdId, - executionInstructions, - clOrdLinkId, - contingencyType, - pegOffsetValue, - pegPriceType, - timeInForce, - text); - } - - @Nonnull - public Builder setOrderQuantity(@Nullable BigDecimal orderQuantity) { - this.orderQuantity = orderQuantity; - return this; - } - - @Nonnull - public Builder setSimpleOrderQuantity(@Nullable BigDecimal simpleOrderQuantity) { - this.simpleOrderQuantity = simpleOrderQuantity; - return this; - } - - @Nonnull - public Builder setDisplayQuantity(@Nullable BigDecimal displayQuantity) { - this.displayQuantity = displayQuantity; - return this; - } - - @Nonnull - public Builder setPrice(@Nullable BigDecimal price) { - this.price = price; - return this; - } - - @Nonnull - public Builder setStopPrice(@Nullable BigDecimal stopPrice) { - this.stopPrice = stopPrice; - return this; - } - - @Nonnull - public Builder setSide(@Nullable BitmexSide side) { - this.side = side; - return this; - } - - @Nonnull - public Builder setOrderType(@Nullable BitmexOrderType orderType) { - this.orderType = orderType; - return this; - } - - @Nonnull - public Builder setClOrdId(@Nullable String clOrdId) { - this.clOrdId = clOrdId; - return this; - } - - @Nonnull - public Builder setExecutionInstructions( - @Nullable List executionInstructions) { - this.executionInstructions = executionInstructions; - return this; - } - - @Nonnull - public Builder addExecutionInstruction(@Nullable BitmexExecutionInstruction execInst) { - if (this.executionInstructions == null) { - this.executionInstructions = new ArrayList<>(); - } - this.executionInstructions.add(execInst); - return this; - } - - @Nonnull - public Builder setClOrdLinkId(@Nullable String clOrdLinkId) { - this.clOrdLinkId = clOrdLinkId; - return this; - } - - @Nonnull - public Builder setContingencyType(@Nullable BitmexContingencyType contingencyType) { - this.contingencyType = contingencyType; - return this; - } - - @Nonnull - public Builder setPegOffsetValue(@Nullable BigDecimal pegOffsetValue) { - this.pegOffsetValue = pegOffsetValue; - return this; - } - - @Nonnull - public Builder setPegPriceType(@Nullable BitmexPegPriceType pegPriceType) { - this.pegPriceType = pegPriceType; - return this; - } - - @Nonnull - public Builder setTimeInForce(@Nullable BitmexTimeInForce timeInForce) { - this.timeInForce = timeInForce; - return this; - } - - @Nonnull - public Builder setText(@Nullable String text) { - this.text = text; - return this; - } - } - - @Override - public String toString() { - return "BitmexPlaceOrderParameters{" - + "symbol=" - + symbol - + ", orderQuantity=" - + orderQuantity - + ", simpleOrderQuantity=" - + simpleOrderQuantity - + ", displayQuantity=" - + displayQuantity - + ", price=" - + price - + ", stopPrice=" - + stopPrice - + ", side=" - + side - + ", orderType=" - + orderType - + ", clOrdId='" - + clOrdId - + "', executionInstructions=" - + StringUtils.join(executionInstructions) - + ", clOrdLinkId='" - + clOrdLinkId - + "', contingencyType=" - + contingencyType - + ", pegOffsetValue=" - + pegOffsetValue - + ", pegPriceType=" - + pegPriceType - + ", timeInForce='" - + timeInForce - + ", text='" - + text - + "'}"; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexTimeInForce.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexTimeInForce.java index 7353afca53c..fa612b723b3 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexTimeInForce.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexTimeInForce.java @@ -1,19 +1,15 @@ package org.knowm.xchange.bitmex.dto.trade; -@SuppressWarnings("unused") -public enum BitmexTimeInForce { - DAY("Day"), - GOOD_TILL_CANCEL("GoodTillCancel"), - IMMEDIATE_OR_CANCEL("ImmediateOrCancel"), - FILL_OR_KILL("FillOrKill"); - - private String apiParameter; +import com.fasterxml.jackson.annotation.JsonProperty; - BitmexTimeInForce(String apiParameter) { - this.apiParameter = apiParameter; - } +public enum BitmexTimeInForce { + @JsonProperty("Day") + DAY, + @JsonProperty("GoodTillCancel") + GOOD_TILL_CANCEL, + @JsonProperty("ImmediateOrCancel") + IMMEDIATE_OR_CANCEL, + @JsonProperty("FillOrKill") + FILL_OR_KILL; - public String toApiParameter() { - return apiParameter; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java deleted file mode 100644 index 4c74143eae5..00000000000 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/PlaceOrderCommand.java +++ /dev/null @@ -1,146 +0,0 @@ -package org.knowm.xchange.bitmex.dto.trade; - -import com.fasterxml.jackson.annotation.JsonProperty; -import java.math.BigDecimal; -import javax.annotation.Nullable; -import org.knowm.xchange.bitmex.Bitmex; - -public class PlaceOrderCommand { - - @JsonProperty("symbol") - public final String symbol; - - @Nullable - @JsonProperty("side") - public final String side; - - @Nullable - @JsonProperty("orderQty") - public final BigDecimal orderQuantity; - - @Nullable - @JsonProperty("simpleOrderQuantity") - public final BigDecimal simpleOrderQuantity; - - @Nullable - @JsonProperty("displayQuantity") - public final BigDecimal displayQuantity; - - @Nullable - @JsonProperty("price") - public final BigDecimal price; - - @Nullable - @JsonProperty("stopPx") - public final BigDecimal stopPrice; - - @Nullable - @JsonProperty("ordType") - public final String orderType; - - @Nullable - @JsonProperty("clOrdID") - public final String clOrdID; - - @Nullable - @JsonProperty("execInst") - public final String executionInstructions; - - @Nullable - @JsonProperty("clOrdLinkID") - public final String clOrdLinkID; - - @Nullable - @JsonProperty("contingencyType") - public final String contingencyType; - - @Nullable - @JsonProperty("pegOffsetValue") - public final BigDecimal pegOffsetValue; - - @Nullable - @JsonProperty("pegPriceType") - public final String pegPriceType; - - @Nullable - @JsonProperty("timeInForce") - public final String timeInForce; - - @Nullable - @JsonProperty("text") - public final String text; - - /** See {@link Bitmex#placeOrder}. */ - public PlaceOrderCommand(final BitmexPlaceOrderParameters parameters) { - this.symbol = parameters.getSymbol(); - this.side = parameters.getSide() != null ? parameters.getSide().getValue() : null; - this.orderQuantity = parameters.getOrderQuantity(); - this.simpleOrderQuantity = parameters.getSimpleOrderQuantity(); - this.displayQuantity = parameters.getDisplayQuantity(); - this.price = parameters.getPrice(); - this.stopPrice = parameters.getStopPrice(); - this.orderType = - parameters.getOrderType() != null ? parameters.getOrderType().toApiParameter() : null; - this.clOrdID = parameters.getClOrdId(); - this.executionInstructions = parameters.getExecutionInstructionsAsParameter(); - this.clOrdLinkID = parameters.getClOrdLinkId(); - this.contingencyType = - parameters.getContingencyType() != null - ? parameters.getContingencyType().toApiParameter() - : null; - this.pegOffsetValue = parameters.getPegOffsetValue(); - this.pegPriceType = - parameters.getPegPriceType() != null ? parameters.getPegPriceType().toApiParameter() : null; - this.timeInForce = - parameters.getTimeInForce() != null ? parameters.getTimeInForce().toApiParameter() : null; - this.text = parameters.getText(); - } - - @Override - public String toString() { - return "PlaceOrderCommand{" - + "symbol='" - + symbol - + '\'' - + ", side='" - + side - + '\'' - + ", orderQuantity=" - + orderQuantity - + ", simpleOrderQuantity=" - + simpleOrderQuantity - + ", displayQuantity=" - + displayQuantity - + ", price=" - + price - + ", stopPrice=" - + stopPrice - + ", orderType='" - + orderType - + '\'' - + ", clOrdID='" - + clOrdID - + '\'' - + ", executionInstructions='" - + executionInstructions - + '\'' - + ", clOrdLinkID='" - + clOrdLinkID - + '\'' - + ", contingencyType='" - + contingencyType - + '\'' - + ", pegOffsetValue=" - + pegOffsetValue - + ", pegPriceType='" - + pegPriceType - + '\'' - + ", timeInForce='" - + timeInForce - + '\'' - + ", text='" - + text - + '\'' - + '}'; - } -} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index 21619f61065..c6ea79b157d 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -15,7 +15,6 @@ import org.knowm.xchange.bitmex.dto.trade.BitmexExecutionInstruction; import org.knowm.xchange.bitmex.dto.trade.BitmexOrderFlags; import org.knowm.xchange.bitmex.dto.trade.BitmexPlaceOrderParameters; -import org.knowm.xchange.bitmex.dto.trade.BitmexPlaceOrderParameters.Builder; import org.knowm.xchange.bitmex.dto.trade.BitmexReplaceOrderParameters; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.marketdata.Trades.TradeSortType; @@ -79,43 +78,41 @@ public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeExceptio @Override public String placeMarketOrder(MarketOrder marketOrder) throws ExchangeException { - String symbol = BitmexAdapters.toString(marketOrder.getCurrencyPair()); - return placeOrder( - new BitmexPlaceOrderParameters.Builder(symbol) - .setSide(BitmexAdapters.toBitmexSide(marketOrder.getType())) - .setOrderQuantity(marketOrder.getOriginalAmount()) + BitmexPlaceOrderParameters.builder() + .instrument(marketOrder.getInstrument()) + .side(marketOrder.getType()) + .orderQuantity(marketOrder.getOriginalAmount()) + .clientOid(marketOrder.getUserReference()) .build()) .getId(); } @Override public String placeLimitOrder(LimitOrder limitOrder) throws ExchangeException { - String symbol = BitmexAdapters.toString(limitOrder.getCurrencyPair()); - - Builder b = - new BitmexPlaceOrderParameters.Builder(symbol) - .setOrderQuantity(limitOrder.getOriginalAmount()) - .setPrice(limitOrder.getLimitPrice()) - .setSide(BitmexAdapters.toBitmexSide(limitOrder.getType())) - .setClOrdId(limitOrder.getId()); + BitmexPlaceOrderParameters.BitmexPlaceOrderParametersBuilder b = + BitmexPlaceOrderParameters.builder() + .instrument(limitOrder.getInstrument()) + .orderQuantity(limitOrder.getOriginalAmount()) + .price(limitOrder.getLimitPrice()) + .side(limitOrder.getType()) + .clientOid(limitOrder.getUserReference()); if (limitOrder.hasFlag(BitmexOrderFlags.POST)) { - b.addExecutionInstruction(BitmexExecutionInstruction.PARTICIPATE_DO_NOT_INITIATE); + b.executionInstruction(BitmexExecutionInstruction.PARTICIPATE_DO_NOT_INITIATE); } return placeOrder(b.build()).getId(); } @Override public String placeStopOrder(StopOrder stopOrder) throws ExchangeException { - String symbol = BitmexAdapters.toString(stopOrder.getCurrencyPair()); - return placeOrder( - new BitmexPlaceOrderParameters.Builder(symbol) - .setSide(BitmexAdapters.toBitmexSide(stopOrder.getType())) - .setOrderQuantity(stopOrder.getOriginalAmount()) - .setStopPrice(stopOrder.getStopPrice()) - .setClOrdId(stopOrder.getId()) - .build()) + BitmexPlaceOrderParameters.builder() + .instrument(stopOrder.getInstrument()) + .side(stopOrder.getType()) + .orderQuantity(stopOrder.getOriginalAmount()) + .stopPrice(stopOrder.getStopPrice()) + .clientOid(stopOrder.getUserReference()) + .build()) .getId(); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java index f4fc53a541f..e6346102b31 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java @@ -17,7 +17,6 @@ import org.knowm.xchange.bitmex.dto.trade.BitmexPosition; import org.knowm.xchange.bitmex.dto.trade.BitmexPrivateExecution; import org.knowm.xchange.bitmex.dto.trade.BitmexReplaceOrderParameters; -import org.knowm.xchange.bitmex.dto.trade.PlaceOrderCommand; import org.knowm.xchange.bitmex.dto.trade.ReplaceOrderCommand; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.utils.ObjectMapperHelper; @@ -113,30 +112,7 @@ public BitmexPrivateOrder placeOrder(@Nonnull final BitmexPlaceOrderParameters p apiKey, exchange.getNonceFactory(), signatureCreator, - parameters.getSymbol(), - parameters.getSide() != null ? parameters.getSide().getValue() : null, - parameters.getOrderQuantity(), - parameters.getSimpleOrderQuantity(), - parameters.getDisplayQuantity(), - parameters.getPrice(), - parameters.getStopPrice(), - parameters.getOrderType() != null - ? parameters.getOrderType().toApiParameter() - : null, - parameters.getClOrdId(), - parameters.getExecutionInstructionsAsParameter(), - parameters.getClOrdLinkId(), - parameters.getContingencyType() != null - ? parameters.getContingencyType().toApiParameter() - : null, - parameters.getPegOffsetValue(), - parameters.getPegPriceType() != null - ? parameters.getPegPriceType().toApiParameter() - : null, - parameters.getTimeInForce() != null - ? parameters.getTimeInForce().toApiParameter() - : null, - parameters.getText())); + parameters)); } /** @@ -166,14 +142,6 @@ public BitmexPrivateOrder replaceOrder(@Nonnull final BitmexReplaceOrderParamete parameters.getText())); } - @Nonnull - public List placeOrderBulk(@Nonnull Collection commands) - throws ExchangeException { - String s = ObjectMapperHelper.toCompactJSON(commands); - return updateRateLimit( - () -> bitmex.placeOrderBulk(apiKey, exchange.getNonceFactory(), signatureCreator, s)); - } - @Nonnull public List replaceOrderBulk( @Nonnull Collection commands) throws ExchangeException { diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java index ef770e766d4..148dd378f22 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -192,4 +192,61 @@ void valid_cancel_order() throws IOException { assertThat(actual).isTrue(); } + @Test + void place_limit_buy_order() throws IOException { + LimitOrder limitOrder = + new LimitOrder.Builder(OrderType.BID, CurrencyPair.BTC_USDT) + .userReference("new-limit-buy-order") + .originalAmount(new BigDecimal("0.0001")) + .limitPrice(new BigDecimal("10000.5")) + .build(); + + String actualResponse = tradeService.placeLimitOrder(limitOrder); + assertThat(actualResponse).isEqualTo("a125b16d-a1fb-485a-b88f-20f6e3a39314"); + } + + + @Test + void place_limit_sell_order() throws IOException { + LimitOrder limitOrder = + new LimitOrder.Builder(OrderType.ASK, CurrencyPair.BTC_USDT) + .userReference("new-limit-sell-order") + .originalAmount(new BigDecimal("0.0001")) + .limitPrice(new BigDecimal("110000.5")) + .build(); + + String actualResponse = tradeService.placeLimitOrder(limitOrder); + assertThat(actualResponse).isEqualTo("2712af57-0b78-4cdc-a81e-8fc2811fe2e3"); + } + + + @Test + void place_market_buy_order() throws IOException { + MarketOrder marketOrder = + new MarketOrder.Builder(OrderType.BID, CurrencyPair.BTC_USDT) + .userReference("new-market-buy-order") + // bitmex requires always asset amount for all orders + .originalAmount(new BigDecimal("0.0001")) + .build(); + + String actualResponse = tradeService.placeMarketOrder(marketOrder); + assertThat(actualResponse).isEqualTo("2b8a53f3-5e5d-4830-a152-f9f280d2c121"); + } + + + @Test + void place_market_sell_order() throws IOException { + MarketOrder marketOrder = + new MarketOrder.Builder(OrderType.ASK, CurrencyPair.BTC_USDT) + .userReference("new-market-sell-order") + // bitmex requires always asset amount for all orders + .originalAmount(new BigDecimal("0.0001")) + .build(); + + String actualResponse = tradeService.placeMarketOrder(marketOrder); + assertThat(actualResponse).isEqualTo("f931ef31-b94e-4e86-bab6-5a48fdd3811a"); + } + + + } \ No newline at end of file diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/trade/BitmexBulkOrderTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/trade/BitmexBulkOrderTest.java deleted file mode 100644 index 7ae8eb0939e..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/trade/BitmexBulkOrderTest.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.knowm.xchange.bitmex.service.trade; - -import static org.knowm.xchange.bitmex.BitmexPrompt.PERPETUAL; -import static org.knowm.xchange.currency.CurrencyPair.XBT_USD; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import org.junit.Ignore; -import org.junit.Test; -import org.knowm.xchange.Exchange; -import org.knowm.xchange.ExchangeFactory; -import org.knowm.xchange.ExchangeSpecification; -import org.knowm.xchange.bitmex.BitmexExchange; -import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; -import org.knowm.xchange.bitmex.dto.trade.BitmexPlaceOrderParameters; -import org.knowm.xchange.bitmex.dto.trade.BitmexSide; -import org.knowm.xchange.bitmex.dto.trade.PlaceOrderCommand; -import org.knowm.xchange.bitmex.service.BitmexMarketDataService; -import org.knowm.xchange.bitmex.service.BitmexTradeService; -import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.utils.CertHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Nikita Belenkiy on 18/05/2018. - */ -public class BitmexBulkOrderTest { - private static final Logger logger = LoggerFactory.getLogger(BitmexBulkOrderTest.class); - - public static final String SYMBOL = XBT_USD.base.toString() + XBT_USD.counter.toString(); - - @Test - @Ignore - public void testOrderReplace() throws Exception { - CertHelper.trustAllCerts(); - BitmexExchange exchange = - (BitmexExchange) ExchangeFactory.INSTANCE.createExchange(BitmexExchange.class); - ExchangeSpecification defaultExchangeSpecification = exchange.getDefaultExchangeSpecification(); - - defaultExchangeSpecification.setExchangeSpecificParametersItem(Exchange.USE_SANDBOX, true); - - defaultExchangeSpecification.setApiKey("QW8Ao_gx38e-8KFvDkFn-Ym4"); - defaultExchangeSpecification.setSecretKey("tn7rpzvOXSKThZD0f-xXehtydt4OTHZVf42gCCyxPixiiVOb"); - - defaultExchangeSpecification.setShouldLoadRemoteMetaData(true); - defaultExchangeSpecification.setProxyHost("localhost"); - defaultExchangeSpecification.setProxyPort(9999); - exchange.applySpecification(defaultExchangeSpecification); - - BitmexMarketDataService marketDataService = - (BitmexMarketDataService) exchange.getMarketDataService(); - - OrderBook orderBook = marketDataService.getOrderBook(XBT_USD, PERPETUAL); - // OrderBook orderBook = marketDataService.getOrderBook(new CurrencyPair(Currency.ADA, - // Currency.BTC), BitmexPrompt.QUARTERLY); - // OrderBook orderBook = marketDataService.getOrderBook(new CurrencyPair(Currency.BTC, - // Currency.USD), BitmexPrompt.BIQUARTERLY); - - System.out.println("orderBook = " + orderBook); - - BitmexTradeService tradeService = (BitmexTradeService) exchange.getTradeService(); - String nosOrdId = System.currentTimeMillis() + ""; - BigDecimal originalOrderSize = new BigDecimal("30"); - // BigDecimal price = new BigDecimal("10000"); - BigDecimal price = orderBook.getBids().get(0).getLimitPrice().add(new BigDecimal("0.5")); - // LimitOrder limitOrder = - // new LimitOrder( - // Order.OrderType.ASK, - // originalOrderSize, - // XBT_USD, - // nosOrdId, - // new Date(), - // price); - - List commands = new ArrayList<>(); - commands.add( - new PlaceOrderCommand( - new BitmexPlaceOrderParameters.Builder(SYMBOL) - .setSide(BitmexSide.SELL) - .setOrderQuantity(originalOrderSize) - .setPrice(price) - .setClOrdId(nosOrdId) - .build())); - - List bitmexPrivateOrders = tradeService.placeOrderBulk(commands); - for (BitmexPrivateOrder bitmexPrivateOrder : bitmexPrivateOrders) {} - - Thread.sleep(5000); - - // BitmexPrivateOrder bitmexPrivateOrder = - // tradeService.replaceLimitOrder( - // "XBTUSD", - // originalOrderSize.divide(new BigDecimal("2")), - // null, - // orderId, - // // null, null, - // nosOrdId + "replace", - // nosOrdId); - // System.out.println("bitmexPrivateOrder = " + bitmexPrivateOrder); - - tradeService.cancelAllOrders(); - // System.out.println("cancelled = " + bitmexPrivateOrders.get(0)); - // service.getTicker(Currency.XBT.getSymbol()); - } -} diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-buy-order.json new file mode 100644 index 00000000000..89069462a5e --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-buy-order.json @@ -0,0 +1,19 @@ +{ + "account": 2273415, + "clOrdID": "new-limit-buy-order", + "cumQty": 0, + "currency": "USDT", + "leavesQty": 10000, + "ordStatus": "New", + "ordType": "Limit", + "orderID": "a125b16d-a1fb-485a-b88f-20f6e3a39314", + "orderQty": 10000, + "price": 10000.5, + "side": "Buy", + "symbol": "XBT_USDT", + "text": "Submitted via API.", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-12T17:27:51.774Z", + "transactTime": "2024-12-12T17:27:51.774Z", + "workingIndicator": true +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-sell-order.json new file mode 100644 index 00000000000..711c20b99eb --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-limit-sell-order.json @@ -0,0 +1,19 @@ +{ + "account": 2273415, + "clOrdID": "new-limit-sell-order", + "cumQty": 0, + "currency": "USDT", + "leavesQty": 10000, + "ordStatus": "New", + "ordType": "Limit", + "orderID": "2712af57-0b78-4cdc-a81e-8fc2811fe2e3", + "orderQty": 10000, + "price": 110000.5, + "side": "Sell", + "symbol": "XBT_USDT", + "text": "Submitted via API.", + "timeInForce": "GoodTillCancel", + "timestamp": "2024-12-12T17:24:56.236Z", + "transactTime": "2024-12-12T17:24:56.236Z", + "workingIndicator": true +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_new-marked-buy-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-marked-buy-order.json new file mode 100644 index 00000000000..2bcc0b44afa --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-marked-buy-order.json @@ -0,0 +1,19 @@ +{ + "account": 2273415, + "avgPx": 101709.0, + "clOrdID": "new-market-buy-order", + "cumQty": 10000, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Filled", + "ordType": "Market", + "orderID": "2b8a53f3-5e5d-4830-a152-f9f280d2c121", + "orderQty": 10000, + "side": "Buy", + "symbol": "XBT_USDT", + "text": "Submitted via API.", + "timeInForce": "ImmediateOrCancel", + "timestamp": "2024-12-12T17:20:27.860Z", + "transactTime": "2024-12-12T17:20:27.859Z", + "workingIndicator": false +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_new-market-sell-order.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-market-sell-order.json new file mode 100644 index 00000000000..6a250cbf164 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_new-market-sell-order.json @@ -0,0 +1,19 @@ +{ + "account": 2273415, + "avgPx": 99607.0, + "clOrdID": "new-market-sell-order", + "cumQty": 10000, + "currency": "USDT", + "leavesQty": 0, + "ordStatus": "Filled", + "ordType": "Market", + "orderID": "f931ef31-b94e-4e86-bab6-5a48fdd3811a", + "orderQty": 10000, + "side": "Sell", + "symbol": "XBT_USDT", + "text": "Submitted via API.", + "timeInForce": "ImmediateOrCancel", + "timestamp": "2024-12-12T17:31:43.392Z", + "transactTime": "2024-12-12T17:31:43.392Z", + "workingIndicator": false +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json index 69ac5bedea1..4ea9b53d97c 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_all-open-orders.json @@ -2,7 +2,7 @@ "id" : "96ae8b93-b4ab-4c35-a4f7-7a4f9f1f9e43", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%5D%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22open%22%3Atrue%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json index e263f3078fd..1fe73ca5f63 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json @@ -2,7 +2,7 @@ "id" : "75dbdfb2-6dc1-4563-9c05-09e7f2056889", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22orderID%22%3A%5B%5D%2C%22symbol%22%3A%22XBT_USDT%22%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22symbol%22%3A%22XBT_USDT%22%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-buy-order.json new file mode 100644 index 00000000000..c87d6d5b145 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-buy-order.json @@ -0,0 +1,20 @@ +{ + "id" : "12748124-a176-41e3-815d-4bda4e1070b1", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"symbol\":\"XBT_USDT\",\"side\":\"Buy\",\"orderQty\":10000,\"price\":10000.5,\"clOrdID\":\"new-limit-buy-order\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_new-limit-buy-order.json" + }, + "uuid" : "12748124-a176-41e3-815d-4bda4e1070b1", + "persistent" : true, + "insertionIndex" : 15 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-sell-order.json new file mode 100644 index 00000000000..036aa03cd25 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-limit-sell-order.json @@ -0,0 +1,20 @@ +{ + "id" : "bd8c8faf-45d0-4c62-a62f-540b5e38e33d", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"symbol\":\"XBT_USDT\",\"side\":\"Sell\",\"orderQty\":10000,\"price\":110000.5,\"clOrdID\":\"new-limit-sell-order\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_new-limit-sell-order.json" + }, + "uuid" : "bd8c8faf-45d0-4c62-a62f-540b5e38e33d", + "persistent" : true, + "insertionIndex" : 14 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-marked-buy-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-marked-buy-order.json new file mode 100644 index 00000000000..f77ec89b25e --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-marked-buy-order.json @@ -0,0 +1,20 @@ +{ + "id" : "41c9cd83-55ec-4848-88e7-4965f3bd85ca", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"symbol\":\"XBT_USDT\",\"side\":\"Buy\",\"orderQty\":10000,\"clOrdID\":\"new-market-buy-order\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_new-marked-buy-order.json" + }, + "uuid" : "41c9cd83-55ec-4848-88e7-4965f3bd85ca", + "persistent" : true, + "insertionIndex" : 13 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-market-sell-order.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-market-sell-order.json new file mode 100644 index 00000000000..3c138c6eb7d --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_new-market-sell-order.json @@ -0,0 +1,20 @@ +{ + "id" : "9346e4b4-ddac-48fa-8dca-76ff6b608e72", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"symbol\":\"XBT_USDT\",\"side\":\"Sell\",\"orderQty\":10000,\"clOrdID\":\"new-market-sell-order\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_order_new-market-sell-order.json" + }, + "uuid" : "9346e4b4-ddac-48fa-8dca-76ff6b608e72", + "persistent" : true, + "insertionIndex" : 16 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index f168eef645a..5e834b005d5 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -12,12 +12,31 @@ api-signature: {{sign}} Accept: application/json +### Create a new order +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +POST {{api_v1}}/order +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Content-Type: application/json +Accept: application/json + +{ + "symbol" :"XBT_USDT", + "side": "Buy", + "orderQty": "10000", + "price": "10000.5" +} + + ### Cancel order(s) < {% import {gen_sign} from 'sign.js' gen_sign(request); %} -#GET {{api_v1}}/order?filter={"orderID":"5d873440-48c6-48ed-86d9-e8e4259b0e7a","ordType":"Market"} DELETE {{api_v1}}/order api-key: {{api_key}} api-expires: {{timestamp}} @@ -38,16 +57,3 @@ api-expires: {{timestamp}} api-signature: {{sign}} Accept: application/json - -### - -# curl -X DELETE --header 'Content-Type: application/x-www-form-urlencoded' --header 'Accept: application/json' --header 'X-Requested-With: XMLHttpRequest' -d 'orderID=asdf' 'https://www.bitmex.com/api/v1/order' -DELETE https://www.bitmex.com/api/v1/order -Accept: application/json -X-Requested-With: XMLHttpRequest -Content-Type: application/x-www-form-urlencoded - -orderID = asdf - -### - From 1ceb5361af9257ca90bcce1018b5f0bd0ce4cf83 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 12 Dec 2024 23:37:30 +0100 Subject: [PATCH 21/32] [bitmex] Code cleanup --- .../knowm/xchange/bitmex/BitmexAdapters.java | 40 +++++++++++++------ .../dto/marketdata/BitmexPrivateOrder.java | 11 +---- .../bitmex/service/BitmexTradeService.java | 6 ++- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 9840b3dd11e..51299295354 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -52,6 +52,7 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; +import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrade; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; @@ -153,27 +154,42 @@ public LimitOrder toLimitOrder(BitmexPublicOrder order) { order.getId(), toDate(order.getUpdatedAt()), order.getPrice()); } - public Order toOrder(BitmexPrivateOrder bitmexPrivateOrder) { + public Order toOrder(BitmexPrivateOrder bitmexOrder) { Order.Builder builder; - switch (bitmexPrivateOrder.getOrderClass()) { + switch (bitmexOrder.getBitmexOrderType()) { + case STOP: + builder = new StopOrder.Builder(bitmexOrder.getOrderType(), bitmexOrder.getInstrument()) + .stopPrice(bitmexOrder.getOriginalPrice()); + break; case MARKET: - builder = new MarketOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()); + builder = new MarketOrder.Builder(bitmexOrder.getOrderType(), bitmexOrder.getInstrument()); break; case LIMIT: - builder = new LimitOrder.Builder(bitmexPrivateOrder.getOrderType(), bitmexPrivateOrder.getInstrument()).limitPrice(bitmexPrivateOrder.getOriginalPrice()); + builder = new LimitOrder.Builder(bitmexOrder.getOrderType(), bitmexOrder.getInstrument()).limitPrice(bitmexOrder.getOriginalPrice()); + break; + case STOP_LIMIT: + builder = new StopOrder.Builder(bitmexOrder.getOrderType(), bitmexOrder.getInstrument()) + .limitPrice(bitmexOrder.getOriginalPrice()) + .stopPrice(bitmexOrder.getAveragePrice()); break; + case PEGGED: + case MARKET_IF_TOUCHED: + case LIMIT_IF_TOUCHED: + case MARKET_WITH_LEFT_OVER_AS_LIMIT: + log.warn("Unknown order type: {}", bitmexOrder.getBitmexOrderType()); + return null; default: - throw new IllegalArgumentException("Can't map " + bitmexPrivateOrder.getOrderType()); + throw new IllegalArgumentException("Can't map " + bitmexOrder.getOrderType()); } return builder - .originalAmount(bitmexPrivateOrder.getOriginalAmount()) - .id(bitmexPrivateOrder.getId()) - .timestamp(toDate(bitmexPrivateOrder.getUpdatedAt())) - .cumulativeAmount(bitmexPrivateOrder.getCumulativeAmount()) - .averagePrice(bitmexPrivateOrder.getAveragePrice()) - .orderStatus(toOrderStatus(bitmexPrivateOrder.getOrderStatus())) - .userReference(bitmexPrivateOrder.getText()) + .originalAmount(bitmexOrder.getOriginalAmount()) + .id(bitmexOrder.getId()) + .timestamp(toDate(bitmexOrder.getUpdatedAt())) + .cumulativeAmount(bitmexOrder.getCumulativeAmount()) + .averagePrice(bitmexOrder.getAveragePrice()) + .orderStatus(toOrderStatus(bitmexOrder.getOrderStatus())) + .userReference(bitmexOrder.getText()) .build(); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java index 0cf41aa7593..60b28d627e4 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/marketdata/BitmexPrivateOrder.java @@ -12,6 +12,7 @@ import org.knowm.xchange.bitmex.BitmexAdapters; import org.knowm.xchange.bitmex.config.converter.StringToCurrencyConverter; import org.knowm.xchange.bitmex.config.converter.StringToOrderTypeConverter; +import org.knowm.xchange.bitmex.dto.trade.BitmexOrderType; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.Order.OrderType; import org.knowm.xchange.instrument.Instrument; @@ -38,7 +39,7 @@ public class BitmexPrivateOrder extends AbstractHttpResponseAware { private OrderStatus orderStatus; @JsonProperty("ordType") - private OrderClass orderClass; + private BitmexOrderType bitmexOrderType; @JsonProperty("orderID") private String id; @@ -101,12 +102,4 @@ public enum OrderStatus { REPLACED } - public static enum OrderClass { - @JsonProperty("Limit") - LIMIT, - - @JsonProperty("Market") - MARKET - } - } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index c6ea79b157d..a9bbe2c933a 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -69,6 +69,7 @@ public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeExceptio List limitOrders = getBitmexOrders(null, builder.build(), null, null, null).stream() .map(BitmexAdapters::toOrder) + .filter(Objects::nonNull) .map(LimitOrder.class::cast) .filter(params::accept) .collect(Collectors.toList()); @@ -153,7 +154,10 @@ public Collection getOrder(OrderQueryParams... orderQueryParams) throws I .build(); List privateOrders = getBitmexOrders(null, filterParam, null, null, null); - return privateOrders.stream().map(BitmexAdapters::toOrder).collect(Collectors.toList()); + return privateOrders.stream() + .map(BitmexAdapters::toOrder) + .filter(Objects::nonNull) + .collect(Collectors.toList()); } @Override From f905b331450626975e2c5090465d6d539e58b92f Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sat, 14 Dec 2024 01:21:00 +0100 Subject: [PATCH 22/32] [bitmex] Implement getting of user trades --- .../knowm/xchange/bitmex/BitmexAdapters.java | 24 +- .../xchange/bitmex/BitmexAuthenticated.java | 2 +- .../dto/trade/BitmexPrivateExecution.java | 224 ++++++------------ .../service/BitmexTradeHistoryParams.java | 47 ++-- .../bitmex/service/BitmexTradeService.java | 14 +- .../bitmex/service/BitmexTradeServiceRaw.java | 4 +- .../service/BitmexTradeServiceTest.java | 33 +++ .../api_v1_execution_tradehistory.json | 70 ++++++ .../__files/api_v1_wallet_assets.json | 25 ++ .../api_v1_execution_tradehistory.json | 15 ++ .../src/test/resources/rest/authorized.http | 13 + 11 files changed, 266 insertions(+), 205 deletions(-) create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_execution_tradehistory.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_execution_tradehistory.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 51299295354..4763842292b 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -404,23 +404,21 @@ public Instrument toInstrument(String bitmexSymbol) { return result; } - public UserTrade adoptUserTrade(BitmexPrivateExecution exec) { - Instrument instrument = toInstrument(exec.symbol); - // the "lastQty" parameter is in the USD currency for ???/USD pairs - OrderType orderType = convertType(exec.side); + public UserTrade toUserTrade(BitmexPrivateExecution exec) { + OrderType orderType = convertType(exec.getSide()); return orderType == null ? null : UserTrade.builder() - .id(exec.execID) - .orderId(exec.orderID) - .instrument(instrument) - .originalAmount(exec.lastQty) - .price(exec.lastPx) - .feeAmount(exec.execComm.divide(SATOSHIS_BY_BTC, MathContext.DECIMAL32)) - .feeCurrency(Currency.XBT) - .timestamp(exec.timestamp) + .id(exec.getExecutionId()) + .orderId(exec.getOrderId()) + .instrument(exec.getInstrument()) + .originalAmount(exec.getExecutedQuantity()) + .price(exec.getPrice()) + .feeAmount(exec.getFeeAmount()) + .feeCurrency(exec.getFeeCurrency()) + .timestamp(toDate(exec.getUpdatedAt())) .type(orderType) - .orderUserReference(exec.clOrdID) + .orderUserReference(exec.getClientOid()) .build(); } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java index 850843a014f..bbe32fd58bb 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java @@ -69,7 +69,7 @@ HttpResponseAwareList getTradeHistory( @HeaderParam("api-expires") SynchronizedValueFactory nonce, @HeaderParam("api-signature") ParamsDigest paramsDigest, @Nullable @QueryParam("symbol") String symbol, - @Nullable @QueryParam("filter") String filter, + @Nullable @QueryParam("filter") FilterParam filterParam, @Nullable @QueryParam("columns") String columns, @Nullable @QueryParam("count") Integer count, @Nullable @QueryParam("start") Long start, diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java index 878fd27fd23..87c040f3d47 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java @@ -1,246 +1,164 @@ package org.knowm.xchange.bitmex.dto.trade; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - +import java.time.ZonedDateTime; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.currency.Currency; +import org.knowm.xchange.instrument.Instrument; + +@Data +@Builder +@AllArgsConstructor public class BitmexPrivateExecution { @JsonProperty("execID") - public String execID; + private String executionId; @JsonProperty("orderID") - public String orderID; + private String orderId; @JsonProperty("clOrdID") - public String clOrdID; + private String clientOid; @JsonProperty("clOrdLinkID") - public String clOrdLinkID; + private String clOrdLinkID; @JsonProperty("account") - public long account; + private long account; - @JsonProperty("symbol") - public String symbol; + private Instrument instrument; + private BigDecimal executedQuantity; + private BigDecimal orderQuantity; @JsonProperty("side") - public String side; + private String side; - @JsonProperty("lastQty") - public BigDecimal lastQty; @JsonProperty("lastPx") - public BigDecimal lastPx; + private BigDecimal price; @JsonProperty("underlyingLastPx") - public BigDecimal underlyingLastPx; + private BigDecimal underlyingLastPx; @JsonProperty("lastMkt") - public String lastMkt; + private String lastMkt; @JsonProperty("lastLiquidityInd") - public String lastLiquidityInd; + private String lastLiquidityInd; @JsonProperty("simpleOrderQty") - public BigDecimal simpleOrderQty; - - @JsonProperty("orderQty") - public BigDecimal orderQty; - - @JsonProperty("price") - public BigDecimal price; + private BigDecimal simpleOrderQty; @JsonProperty("displayQty") - public BigDecimal displayQty; + private BigDecimal displayQty; @JsonProperty("stopPx") - public BigDecimal stopPx; + private BigDecimal stopPx; @JsonProperty("pegOffsetValue") - public BigDecimal pegOffsetValue; + private BigDecimal pegOffsetValue; @JsonProperty("pegPriceType") - public String pegPriceType; + private String pegPriceType; - @JsonProperty("currency") - public String currency; + private Currency feeCurrency; @JsonProperty("settlCurrency") - public String settlCurrency; + private String settlCurrency; @JsonProperty("execType") - public String execType; + private String execType; @JsonProperty("ordType") - public String ordType; + private String ordType; @JsonProperty("timeInForce") - public String timeInForce; + private String timeInForce; @JsonProperty("execInst") - public String execInst; + private String execInst; @JsonProperty("contingencyType") - public String contingencyType; + private String contingencyType; @JsonProperty("exDestination") - public String exDestination; + private String exDestination; @JsonProperty("ordStatus") - public String ordStatus; + private String ordStatus; @JsonProperty("triggered") - public String triggered; + private String triggered; @JsonProperty("workingIndicator") - public boolean workingIndicator; + private boolean workingIndicator; @JsonProperty("ordRejReason") - public String ordRejReason; + private String ordRejReason; @JsonProperty("simpleLeavesQty") - public BigDecimal simpleLeavesQty; + private BigDecimal simpleLeavesQty; @JsonProperty("leavesQty") - public BigDecimal leavesQty; + private BigDecimal leavesQty; @JsonProperty("simpleCumQty") - public BigDecimal simpleCumQty; + private BigDecimal simpleCumQty; @JsonProperty("cumQty") - public BigDecimal cumQty; + private BigDecimal cumQty; @JsonProperty("avgPx") - public BigDecimal avgPx; + private BigDecimal avgPx; @JsonProperty("commission") - public BigDecimal commission; + private BigDecimal commission; @JsonProperty("tradePublishIndicator") - public String tradePublishIndicator; + private String tradePublishIndicator; @JsonProperty("multiLegReportingType") - public String multiLegReportingType; + private String multiLegReportingType; @JsonProperty("text") - public String text; + private String text; @JsonProperty("trdMatchID") - public String trdMatchID; + private String trdMatchID; @JsonProperty("execCost") - public BigDecimal execCost; + private BigDecimal execCost; - @JsonProperty("execComm") - public BigDecimal execComm; + private BigDecimal feeAmount; @JsonProperty("homeNotional") - public BigDecimal homeNotional; + private BigDecimal homeNotional; @JsonProperty("foreignNotional") - public BigDecimal foreignNotional; + private BigDecimal foreignNotional; @JsonProperty("transactTime") - public Date transactTime; + private ZonedDateTime createdAt; @JsonProperty("timestamp") - public Date timestamp; - - @JsonIgnore private Map additionalProperties = new HashMap(); - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - - @Override - public String toString() { - return "BitmexPrivateExecution [" - + (execID != null ? "execID=" + execID + ", " : "") - + (orderID != null ? "orderID=" + orderID + ", " : "") - + (clOrdID != null ? "clOrdID=" + clOrdID + ", " : "") - + (clOrdLinkID != null ? "clOrdLinkID=" + clOrdLinkID + ", " : "") - + "account=" - + account - + ", " - + (symbol != null ? "symbol=" + symbol + ", " : "") - + (side != null ? "side=" + side + ", " : "") - + "lastQty=" - + lastQty - + ", lastPx=" - + lastPx - + ", " - + (underlyingLastPx != null ? "underlyingLastPx=" + underlyingLastPx + ", " : "") - + (lastMkt != null ? "lastMkt=" + lastMkt + ", " : "") - + (lastLiquidityInd != null ? "lastLiquidityInd=" + lastLiquidityInd + ", " : "") - + (simpleOrderQty != null ? "simpleOrderQty=" + simpleOrderQty + ", " : "") - + "orderQty=" - + orderQty - + ", price=" - + price - + ", " - + (displayQty != null ? "displayQty=" + displayQty + ", " : "") - + (stopPx != null ? "stopPx=" + stopPx + ", " : "") - + (pegOffsetValue != null ? "pegOffsetValue=" + pegOffsetValue + ", " : "") - + (pegPriceType != null ? "pegPriceType=" + pegPriceType + ", " : "") - + (currency != null ? "currency=" + currency + ", " : "") - + (settlCurrency != null ? "settlCurrency=" + settlCurrency + ", " : "") - + (execType != null ? "execType=" + execType + ", " : "") - + (ordType != null ? "ordType=" + ordType + ", " : "") - + (timeInForce != null ? "timeInForce=" + timeInForce + ", " : "") - + (execInst != null ? "execInst=" + execInst + ", " : "") - + (contingencyType != null ? "contingencyType=" + contingencyType + ", " : "") - + (exDestination != null ? "exDestination=" + exDestination + ", " : "") - + (ordStatus != null ? "ordStatus=" + ordStatus + ", " : "") - + (triggered != null ? "triggered=" + triggered + ", " : "") - + "workingIndicator=" - + workingIndicator - + ", " - + (ordRejReason != null ? "ordRejReason=" + ordRejReason + ", " : "") - + "simpleLeavesQty=" - + simpleLeavesQty - + ", leavesQty=" - + leavesQty - + ", simpleCumQty=" - + simpleCumQty - + ", cumQty=" - + cumQty - + ", avgPx=" - + avgPx - + ", commission=" - + commission - + ", " - + (tradePublishIndicator != null - ? "tradePublishIndicator=" + tradePublishIndicator + ", " - : "") - + (multiLegReportingType != null - ? "multiLegReportingType=" + multiLegReportingType + ", " - : "") - + (text != null ? "text=" + text + ", " : "") - + (trdMatchID != null ? "trdMatchID=" + trdMatchID + ", " : "") - + "execCost=" - + execCost - + ", execComm=" - + execComm - + ", homeNotional=" - + homeNotional - + ", foreignNotional=" - + foreignNotional - + ", " - + (transactTime != null ? "transactTime=" + transactTime + ", " : "") - + (timestamp != null ? "timestamp=" + timestamp + ", " : "") - + (additionalProperties != null ? "additionalProperties=" + additionalProperties : "") - + "]"; + private ZonedDateTime updatedAt; + + @JsonCreator + public BitmexPrivateExecution(@JsonProperty("symbol") String symbol, @JsonProperty("lastQty") BigDecimal executedQuantity, + @JsonProperty("orderQty") BigDecimal orderQuantity, @JsonProperty("currency") String feeCurrency, + @JsonProperty("execComm") BigDecimal feeAmount +) { + // scale values + this.instrument = BitmexAdapters.toInstrument(symbol); + this.executedQuantity = BitmexAdapters.scaleToLocalAmount(executedQuantity, instrument.getBase()); + this.orderQuantity = BitmexAdapters.scaleToLocalAmount(orderQuantity, instrument.getBase()); + + this.feeCurrency = BitmexAdapters.toCurrency(feeCurrency); + this.feeAmount = BitmexAdapters.scaleToLocalAmount(feeAmount, this.feeCurrency); } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeHistoryParams.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeHistoryParams.java index 0821af2d27a..9411e70fb41 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeHistoryParams.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeHistoryParams.java @@ -1,43 +1,24 @@ package org.knowm.xchange.bitmex.service; -import org.knowm.xchange.currency.Currency; -import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrency; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; import org.knowm.xchange.service.trade.params.TradeHistoryParamLimit; import org.knowm.xchange.service.trade.params.TradeHistoryParamOffset; +import org.knowm.xchange.service.trade.params.TradeHistoryParamOrderId; +@Data +@SuperBuilder +@NoArgsConstructor public class BitmexTradeHistoryParams - implements TradeHistoryParamCurrency, TradeHistoryParamLimit, TradeHistoryParamOffset { - private Currency currency; + implements TradeHistoryParamCurrencyPair, TradeHistoryParamLimit, TradeHistoryParamOffset, + TradeHistoryParamOrderId { + + private String orderId; + private CurrencyPair currencyPair; private Integer limit; private Long offset; - @Override - public Currency getCurrency() { - return this.currency; - } - - @Override - public void setCurrency(final Currency currency) { - this.currency = currency; - } - - @Override - public Integer getLimit() { - return this.limit; - } - - @Override - public void setLimit(final Integer limit) { - this.limit = limit; - } - - @Override - public Long getOffset() { - return this.offset; - } - - @Override - public void setOffset(final Long offset) { - this.offset = offset; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java index a9bbe2c933a..c53f4aac567 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeService.java @@ -29,10 +29,12 @@ import org.knowm.xchange.service.trade.params.CancelAllOrders; import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; import org.knowm.xchange.service.trade.params.CancelOrderParams; +import org.knowm.xchange.service.trade.params.CurrencyPairParam; import org.knowm.xchange.service.trade.params.InstrumentParam; import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; import org.knowm.xchange.service.trade.params.TradeHistoryParamLimit; import org.knowm.xchange.service.trade.params.TradeHistoryParamOffset; +import org.knowm.xchange.service.trade.params.TradeHistoryParamOrderId; import org.knowm.xchange.service.trade.params.TradeHistoryParams; import org.knowm.xchange.service.trade.params.TradeHistoryParamsSorted; import org.knowm.xchange.service.trade.params.TradeHistoryParamsTimeSpan; @@ -167,11 +169,17 @@ public TradeHistoryParams createTradeHistoryParams() { @Override public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException { + FilterParam.FilterParamBuilder filterParamBuilder = FilterParam.builder(); + + if (params instanceof TradeHistoryParamOrderId) { + filterParamBuilder.orderId(((TradeHistoryParamOrderId) params).getOrderId()); + } + String symbol = null; if (params instanceof TradeHistoryParamCurrencyPair) { symbol = BitmexAdapters.toString( - ((TradeHistoryParamCurrencyPair) params).getCurrencyPair()); + ((CurrencyPairParam) params).getCurrencyPair()); } Long start = null; if (params instanceof TradeHistoryParamOffset) { @@ -198,8 +206,8 @@ public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException == TradeHistoryParamsSorted.Order.desc; List userTrades = - getTradeHistory(symbol, null, null, count, start, reverse, startTime, endTime).stream() - .map(BitmexAdapters::adoptUserTrade) + getTradeHistory(symbol, filterParamBuilder.build(), null, count, start, reverse, startTime, endTime).stream() + .map(BitmexAdapters::toUserTrade) .filter(Objects::nonNull) .collect(Collectors.toList()); return new UserTrades(userTrades, TradeSortType.SortByTimestamp); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java index e6346102b31..baa6be7113b 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java @@ -219,7 +219,7 @@ public HttpResponseAwareList getExecutions( public HttpResponseAwareList getTradeHistory( String symbol, - String filter, + FilterParam filterParam, String columns, Integer count, Long start, @@ -234,7 +234,7 @@ public HttpResponseAwareList getTradeHistory( exchange.getNonceFactory(), signatureCreator, symbol, - filter, + filterParam, columns, count, start, diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java index 148dd378f22..222035173f4 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -9,6 +9,7 @@ import java.util.Date; import org.junit.jupiter.api.Test; import org.knowm.xchange.bitmex.BitmexExchangeWiremock; +import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.Order.OrderStatus; @@ -16,6 +17,8 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; +import org.knowm.xchange.dto.trade.UserTrade; +import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParamInstrument; @@ -247,6 +250,36 @@ void place_market_sell_order() throws IOException { assertThat(actualResponse).isEqualTo("f931ef31-b94e-4e86-bab6-5a48fdd3811a"); } + @Test + void trade_history() throws IOException { + UserTrades userTrades = + exchange + .getTradeService() + .getTradeHistory(BitmexTradeHistoryParams.builder() + .orderId("5f563ace-005c-49dd-8c44-83fdbdd2fe65") + .build()); + + assertThat(userTrades.getUserTrades()).hasSize(2); + + UserTrade expected = + new UserTrade( + OrderType.BID, + new BigDecimal("9"), + new CurrencyPair("TRUMP/USDT"), + new BigDecimal("2.15"), + Date.from(Instant.parse("2024-12-13T14:05:13.619Z")), + "00000000-006d-1000-0000-000f9656d02e", + "5f563ace-005c-49dd-8c44-83fdbdd2fe65", + new BigDecimal("0.017415"), + Currency.USDT, + "63476f42-04d6-494b-84ed-2e0ccb5edb38"); + + assertThat(userTrades.getUserTrades()) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } } \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_execution_tradehistory.json b/xchange-bitmex/src/test/resources/__files/api_v1_execution_tradehistory.json new file mode 100644 index 00000000000..64102e00c14 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_execution_tradehistory.json @@ -0,0 +1,70 @@ +[ + { + "execID": "00000000-006d-1000-0000-000f9656d02e", + "orderID": "5f563ace-005c-49dd-8c44-83fdbdd2fe65", + "clOrdID": "63476f42-04d6-494b-84ed-2e0ccb5edb38", + "account": 2273415, + "symbol": "TRUMP_USDT", + "side": "Buy", + "lastQty": 900000000, + "lastPx": 2.15, + "lastLiquidityInd": "RemovedLiquidity", + "orderQty": 1000000000, + "currency": "USDT", + "execType": "Trade", + "ordType": "Market", + "timeInForce": "ImmediateOrCancel", + "ordStatus": "PartiallyFilled", + "workingIndicator": true, + "leavesQty": 100000000, + "cumQty": 900000000, + "avgPx": 2.15, + "commission": 0.0009, + "brokerCommission": 0, + "feeType": "Taker", + "tradePublishIndicator": "PublishTrade", + "text": "Submission from www.bitmex.com", + "trdMatchID": "00000000-006d-1000-0000-000f9656d02d", + "execCost": 19350000, + "execComm": 17415, + "brokerExecComm": 0, + "homeNotional": 9, + "foreignNotional": 19.35, + "transactTime": "2024-12-13T14:05:13.619Z", + "timestamp": "2024-12-13T14:05:13.619Z" + }, + { + "execID": "00000000-006d-1000-0000-000f9656d031", + "orderID": "5f563ace-005c-49dd-8c44-83fdbdd2fe65", + "clOrdID": "63476f42-04d6-494b-84ed-2e0ccb5edb38", + "account": 2273415, + "symbol": "TRUMP_USDT", + "side": "Buy", + "lastQty": 100000000, + "lastPx": 2.257, + "lastLiquidityInd": "RemovedLiquidity", + "orderQty": 1000000000, + "currency": "USDT", + "execType": "Trade", + "ordType": "Market", + "timeInForce": "ImmediateOrCancel", + "ordStatus": "Filled", + "workingIndicator": false, + "leavesQty": 0, + "cumQty": 1000000000, + "avgPx": 2.1607, + "commission": 0.0009, + "brokerCommission": 0, + "feeType": "Taker", + "tradePublishIndicator": "PublishTrade", + "text": "Submission from www.bitmex.com", + "trdMatchID": "00000000-006d-1000-0000-000f9656d030", + "execCost": 2257000, + "execComm": 2031, + "brokerExecComm": 0, + "homeNotional": 1, + "foreignNotional": 2.257, + "transactTime": "2024-12-13T14:05:13.619Z", + "timestamp": "2024-12-13T14:05:13.619Z" + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json b/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json index 6410e167347..cee86cb9bf8 100644 --- a/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json +++ b/xchange-bitmex/src/test/resources/__files/api_v1_wallet_assets.json @@ -122,5 +122,30 @@ "maxFee": 5000000 } ] + }, + { + "asset": "TRUMP", + "currency": "TRUMp", + "majorCurrency": "TRUMP", + "name": "MAGA (Trump)", + "currencyType": "Crypto", + "scale": 8, + "enabled": true, + "isMarginCurrency": false, + "minDepositAmount": 100000000, + "minWithdrawalAmount": 100000000, + "maxWithdrawalAmount": 100000000000000, + "memoRequired": false, + "networks": [ + { + "asset": "eth", + "tokenAddress": "0x6aA56e1D98b3805921C170EB4B3fe7D4Fda6D89b", + "depositEnabled": true, + "withdrawalEnabled": true, + "withdrawalFee": 100000000, + "minFee": 100000000, + "maxFee": 100000000 + } + ] } ] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_execution_tradehistory.json b/xchange-bitmex/src/test/resources/mappings/api_v1_execution_tradehistory.json new file mode 100644 index 00000000000..8fb60234535 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_execution_tradehistory.json @@ -0,0 +1,15 @@ +{ + "id" : "5253999e-0235-4f52-ab9f-239354112a31", + "name" : "api_v1_execution_tradehistory", + "request" : { + "url" : "/api/v1/execution/tradeHistory?filter=%7B%22orderID%22%3A%5B%225f563ace-005c-49dd-8c44-83fdbdd2fe65%22%5D%7D&count=100&reverse=false", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_execution_tradehistory.json" + }, + "uuid" : "5253999e-0235-4f52-ab9f-239354112a31", + "persistent" : true, + "insertionIndex" : 17 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index 5e834b005d5..785dc6cb5b6 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -57,3 +57,16 @@ api-expires: {{timestamp}} api-signature: {{sign}} Accept: application/json +### Get all balance-affecting executions +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +GET {{api_v1}}/execution/tradeHistory?filter={"orderID":"5f563ace-005c-49dd-8c44-83fdbdd2fe65"} +#GET {{api_v1}}/execution/tradeHistory +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Accept: application/json + + From a7fab5e49088f6dc10f7d421bbe380866e380deb Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sat, 14 Dec 2024 15:26:44 +0100 Subject: [PATCH 23/32] [general] Fix error mapping --- .../bitmex/service/BitmexBaseService.java | 10 ++++++---- .../service/BitmexTradeServiceTest.java | 14 +++++++++++++ ...i_v1_order_error-insufficient-balance.json | 7 +++++++ ...i_v1_order_error-insufficient-balance.json | 20 +++++++++++++++++++ 4 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_order_error-insufficient-balance.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_order_error-insufficient-balance.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java index 4388bcce4e3..24678722425 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexBaseService.java @@ -2,6 +2,7 @@ import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Map; import org.knowm.xchange.bitmex.BitmexAuthenticated; import org.knowm.xchange.bitmex.BitmexException; @@ -50,13 +51,14 @@ public BitmexBaseService(BitmexExchange exchange) { protected ExchangeException handleError(Exception exception) { if (exception != null && exception.getMessage() != null) { - if (exception.getMessage().contains("Insufficient")) { + String message = exception.getMessage().toLowerCase(Locale.ROOT); + if (message.contains("insufficient")) { return new FundsExceededException(exception); - } else if (exception.getMessage().contains("Rate limit exceeded")) { + } else if (message.contains("rate limit exceeded")) { return new RateLimitExceededException(exception); - } else if (exception.getMessage().contains("Internal server error")) { + } else if (message.contains("internal server error")) { return new InternalServerException(exception); - } else if (exception.getMessage().contains("The system is currently overloaded")) { + } else if (message.contains("the system is currently overloaded")) { return new SystemOverloadException(exception); } else { return new ExchangeException(exception.getMessage(), exception); diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java index 222035173f4..2630e67ea65 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceTest.java @@ -1,6 +1,7 @@ package org.knowm.xchange.bitmex.service; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; import java.math.BigDecimal; @@ -19,6 +20,7 @@ import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.UserTrade; import org.knowm.xchange.dto.trade.UserTrades; +import org.knowm.xchange.exceptions.FundsExceededException; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParamInstrument; @@ -282,4 +284,16 @@ void trade_history() throws IOException { } + @Test + void place_order_not_enough_balance() { + MarketOrder marketOrder = + new MarketOrder.Builder(OrderType.BID, CurrencyPair.BTC_USDT) + .originalAmount(BigDecimal.valueOf(100)) + .build(); + + assertThatExceptionOfType(FundsExceededException.class) + .isThrownBy(() -> tradeService.placeMarketOrder(marketOrder)); + } + + } \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_order_error-insufficient-balance.json b/xchange-bitmex/src/test/resources/__files/api_v1_order_error-insufficient-balance.json new file mode 100644 index 00000000000..c44af82090e --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_order_error-insufficient-balance.json @@ -0,0 +1,7 @@ +{ + "error": { + "message": "Account has insufficient Available Balance, 88977688800000 USDt required", + "name": "CodedHTTPError", + "details": "19000" + } +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_error-insufficient-balance.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_error-insufficient-balance.json new file mode 100644 index 00000000000..9a6337a8905 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_error-insufficient-balance.json @@ -0,0 +1,20 @@ +{ + "id" : "9124f3cf-e519-4b83-9f1f-ec9d242aa490", + "name" : "api_v1_order", + "request" : { + "url" : "/api/v1/order", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"symbol\":\"XBT_USDT\",\"side\":\"Buy\",\"orderQty\":10000000000}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : true + } ] + }, + "response" : { + "status" : 400, + "bodyFileName" : "api_v1_order_error-insufficient-balance.json" + }, + "uuid" : "9124f3cf-e519-4b83-9f1f-ec9d242aa490", + "persistent" : true, + "insertionIndex" : 18 +} \ No newline at end of file From 957272e88f48557cdb1453d22313919f508d39b9 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sat, 14 Dec 2024 17:21:07 +0100 Subject: [PATCH 24/32] [bitmex] Fix getting of funding history --- .../knowm/xchange/bitmex/BitmexAdapters.java | 38 ++--- .../bitmex/dto/BitmexDecimalDeserializer.java | 20 --- .../dto/account/BitmexWalletTransaction.java | 139 +++++------------- .../dto/trade/BitmexPrivateExecution.java | 10 +- .../bitmex/service/BitmexAccountService.java | 5 +- .../service/BitmexAccountServiceRaw.java | 4 +- .../BitmexWalletTransactionJSONTest.java | 91 ------------ .../service/BitmexAccountServiceTest.java | 27 ++++ .../__files/api_v1_user_wallethistory.json | 41 ++++++ .../mappings/api_v1_user_wallethistory.json | 15 ++ .../account/example-wallet-transaction.json | 66 --------- .../src/test/resources/rest/authorized.http | 14 ++ 12 files changed, 157 insertions(+), 313 deletions(-) delete mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexDecimalDeserializer.java delete mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransactionJSONTest.java create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_user_wallethistory.json delete mode 100644 xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet-transaction.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index 4763842292b..c43b735fb4c 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -54,7 +54,6 @@ import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrade; -import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; @Slf4j @@ -348,19 +347,8 @@ public OrderStatus toOrderStatus(BitmexPrivateOrder.OrderStatus status) { } } - public String toString(Currency currency) { - // bitmex seems to use a lowercase 't' in XBT - // can test this here - https://testnet.bitmex.com/api/explorer/#!/User/User_getDepositAddress - // uppercase 'T' will return 'Unknown currency code' - if (currency.getCurrencyCode().equals("BTC") || currency.getCurrencyCode().equals("XBT")) { - return "XBt"; - } - - return currency.getCurrencyCode(); - } - public Currency toCurrency(String currencyCode) { - if (currencyCode.equalsIgnoreCase("XBt")) { + if ("xbt".equalsIgnoreCase(currencyCode)) { return Currency.BTC; } @@ -436,27 +424,30 @@ private OrderType convertType(String side) { public FundingRecord adaptFundingRecord(BitmexWalletTransaction walletTransaction) { return new FundingRecord( walletTransaction.getAddress(), - walletTransaction.getTransactTime(), - toCurrency(walletTransaction.getCurrency()), + toDate(walletTransaction.getUpdatedAt()), + walletTransaction.getCurrency(), walletTransaction.getAmount().abs(), - walletTransaction.getTransactID(), + walletTransaction.getTransactionId(), walletTransaction.getTx(), adaptFundingRecordtype(walletTransaction), - adaptFundingRecordStatus(walletTransaction.getTransactStatus()), + adaptFundingRecordStatus(walletTransaction.getTransactionStatus()), walletTransaction.getWalletBalance(), - walletTransaction.getFee(), + walletTransaction.getFeeAmount(), walletTransaction.getText()); } private FundingRecord.Type adaptFundingRecordtype( final BitmexWalletTransaction walletTransaction) { - String type = walletTransaction.getTransactType(); - if (type.equalsIgnoreCase("Deposit")) { + String type = walletTransaction.getTransactionType(); + if ("Deposit".equalsIgnoreCase(type)) { return FundingRecord.Type.DEPOSIT; - } else if (type.equalsIgnoreCase("Withdrawal")) { + } + if ("Withdrawal".equalsIgnoreCase(type)) { return FundingRecord.Type.WITHDRAWAL; - } else if (type.equalsIgnoreCase("RealisedPNL") || type.equalsIgnoreCase("UnrealisedPNL")) { + } + if ("RealisedPNL".equalsIgnoreCase(type) || "UnrealisedPNL".equalsIgnoreCase(type) + || "SpotTrade".equalsIgnoreCase(type)) { // 'RealisedPNL' will always have transactStatus = Completed whereas 'UnrealisedPNL' will // always be transactStatus = Pending if (walletTransaction.getAmount().compareTo(BigDecimal.ZERO) > 0) { @@ -466,7 +457,8 @@ private FundingRecord.Type adaptFundingRecordtype( } } - throw new ExchangeException("Unknown FundingRecord.Type"); + log.warn("Unknown FundingRecord.Type: {}", type); + return null; } private FundingRecord.Status adaptFundingRecordStatus(final String transactStatus) { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexDecimalDeserializer.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexDecimalDeserializer.java deleted file mode 100644 index 451d3721e17..00000000000 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexDecimalDeserializer.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.knowm.xchange.bitmex.dto; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.NumberDeserializers; -import java.io.IOException; -import java.math.BigDecimal; -import java.math.RoundingMode; - -public class BitmexDecimalDeserializer extends NumberDeserializers.BigDecimalDeserializer { - private static final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); - private static final int SCALE = 8; - - @Override - public BigDecimal deserialize(final JsonParser p, final DeserializationContext ctxt) - throws IOException { - final BigDecimal decimalAsInteger = super.deserialize(p, ctxt); - return decimalAsInteger.divide(SATOSHIS_BY_BTC, SCALE, RoundingMode.UNNECESSARY); - } -} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransaction.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransaction.java index 1aab269673a..6ad392cd94b 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransaction.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransaction.java @@ -1,58 +1,38 @@ package org.knowm.xchange.bitmex.dto.account; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.time.ZonedDateTime; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; import org.knowm.xchange.bitmex.AbstractHttpResponseAware; -import org.knowm.xchange.bitmex.dto.BitmexDecimalDeserializer; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "transactID", - "account", - "currency", - "transactType", - "amount", - "fee", - "transactStatus", - "address", - "tx", - "text", - "transactTime", - "walletBalance", - "marginBalance", - "timestamp" -}) +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.currency.Currency; + +@Data +@Builder +@AllArgsConstructor public final class BitmexWalletTransaction extends AbstractHttpResponseAware { @JsonProperty("transactID") - private String transactID; + private String transactionId; @JsonProperty("account") private Integer account; - @JsonProperty("currency") - private String currency; + private Currency currency; @JsonProperty("transactType") - private String transactType; + private String transactionType; - @JsonProperty("amount") - @JsonDeserialize(using = BitmexDecimalDeserializer.class) private BigDecimal amount; - @JsonProperty("fee") - @JsonDeserialize(using = BitmexDecimalDeserializer.class) - private BigDecimal fee; + private BigDecimal feeAmount; @JsonProperty("transactStatus") - private String transactStatus; + private String transactionStatus; @JsonProperty("address") private String address; @@ -63,79 +43,32 @@ public final class BitmexWalletTransaction extends AbstractHttpResponseAware { @JsonProperty("text") private String text; - @JsonProperty("transactTime") - private Date transactTime; - - @JsonProperty("walletBalance") - @JsonDeserialize(using = BitmexDecimalDeserializer.class) private BigDecimal walletBalance; - @JsonProperty("marginBalance") - @JsonDeserialize(using = BitmexDecimalDeserializer.class) private BigDecimal marginBalance; - @JsonProperty("timestamp") - private Date timestamp; - - @JsonIgnore private Map additionalProperties = new HashMap<>(); - - public String getTransactID() { - return transactID; - } - - public Integer getAccount() { - return account; - } - - public String getCurrency() { - return currency; - } - - public String getTransactType() { - return transactType; - } - - public BigDecimal getAmount() { - return amount; - } - - public BigDecimal getFee() { - return fee; - } - - public String getTransactStatus() { - return transactStatus; - } - - public String getAddress() { - return address; - } - - public String getTx() { - return tx; - } - - public String getText() { - return text; - } - - public Date getTransactTime() { - return transactTime; - } - - public BigDecimal getWalletBalance() { - return walletBalance; - } + @JsonProperty("transactTime") + private ZonedDateTime createdAt; - public BigDecimal getMarginBalance() { - return marginBalance; + @JsonProperty("timestamp") + private ZonedDateTime updatedAt; + + + @JsonCreator + public BitmexWalletTransaction( + @JsonProperty("currency") String currency, + @JsonProperty("amount") BigDecimal amount, + @JsonProperty("fee") BigDecimal feeAmount, + @JsonProperty("marginBalance") BigDecimal marginBalance, + @JsonProperty("walletBalance") BigDecimal walletBalance + ) { + // scale values + this.currency = BitmexAdapters.bitmexCodeToCurrency(currency); + this.amount = BitmexAdapters.scaleToLocalAmount(amount, this.currency); + this.marginBalance = BitmexAdapters.scaleToLocalAmount(marginBalance, this.currency); + this.walletBalance = BitmexAdapters.scaleToLocalAmount(walletBalance, this.currency); + this.feeAmount = BitmexAdapters.scaleToLocalAmount(feeAmount, this.currency); } - public Date getTimestamp() { - return timestamp; - } - public Map getAdditionalProperties() { - return additionalProperties; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java index 87c040f3d47..472b1836ea7 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java @@ -149,16 +149,18 @@ public class BitmexPrivateExecution { private ZonedDateTime updatedAt; @JsonCreator - public BitmexPrivateExecution(@JsonProperty("symbol") String symbol, @JsonProperty("lastQty") BigDecimal executedQuantity, - @JsonProperty("orderQty") BigDecimal orderQuantity, @JsonProperty("currency") String feeCurrency, + public BitmexPrivateExecution(@JsonProperty("symbol") String symbol, + @JsonProperty("lastQty") BigDecimal executedQuantity, + @JsonProperty("orderQty") BigDecimal orderQuantity, + @JsonProperty("currency") String feeCurrency, @JsonProperty("execComm") BigDecimal feeAmount -) { + ) { // scale values this.instrument = BitmexAdapters.toInstrument(symbol); this.executedQuantity = BitmexAdapters.scaleToLocalAmount(executedQuantity, instrument.getBase()); this.orderQuantity = BitmexAdapters.scaleToLocalAmount(orderQuantity, instrument.getBase()); - this.feeCurrency = BitmexAdapters.toCurrency(feeCurrency); + this.feeCurrency = BitmexAdapters.bitmexCodeToCurrency(feeCurrency); this.feeAmount = BitmexAdapters.scaleToLocalAmount(feeAmount, this.feeCurrency); } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java index 080e307d21b..485db504266 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountService.java @@ -12,7 +12,6 @@ import org.knowm.xchange.dto.account.AccountInfo; import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.dto.account.Wallet; -import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.service.account.AccountService; import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrency; import org.knowm.xchange.service.trade.params.TradeHistoryParamLimit; @@ -50,7 +49,7 @@ public String withdrawFunds(Currency currency, BigDecimal amount, String address @Override public String requestDepositAddress(Currency currency, String... args) throws IOException { - String currencyCode = BitmexAdapters.toString(currency); + String currencyCode = BitmexAdapters.toBitmexCode(currency); return requestDepositAddress(currencyCode); } @@ -63,8 +62,6 @@ public List getFundingHistory(TradeHistoryParams params) { if (params instanceof TradeHistoryParamCurrency) { currency = ((TradeHistoryParamCurrency) params).getCurrency(); - } else { - throw new ExchangeException("Currency must be supplied"); } if (params instanceof TradeHistoryParamLimit) { diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java index ca67cee30ac..4edd0edb753 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceRaw.java @@ -61,7 +61,7 @@ public List getBitmexWalletHistory( apiKey, exchange.getNonceFactory(), signatureCreator, - BitmexAdapters.toString(ccy), + BitmexAdapters.toBitmexCode(ccy), count, start)); } @@ -108,6 +108,6 @@ public String withdrawFunds(String currency, BigDecimal amount, String address) currency, amount, address)); - return transaction.getTransactID(); + return transaction.getTransactionId(); } } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransactionJSONTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransactionJSONTest.java deleted file mode 100644 index b3096b60d9b..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/account/BitmexWalletTransactionJSONTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.knowm.xchange.bitmex.dto.account; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.io.InputStream; -import org.junit.Test; - -/** Test BitstampTicker JSON parsing */ -public class BitmexWalletTransactionJSONTest { - - @Test - public void testUnmarshal() throws IOException { - - // Read in the JSON from the example resources - InputStream is = - BitmexWalletTransactionJSONTest.class.getResourceAsStream( - "/org/knowm/xchange/bitmex/dto/account/example-wallet-transaction.json"); - - ObjectMapper mapper = new ObjectMapper(); - BitmexWalletTransaction[] bitmexWalletTransactions = - mapper.readValue(is, BitmexWalletTransaction[].class); - - // Verify that the example data was unmarshalled correctly - assertThat(bitmexWalletTransactions[0].getTransactID()) - .isEqualTo("00000000-0000-0000-0000-000000000000"); - assertThat(bitmexWalletTransactions[0].getAccount()).isEqualTo(8556985); - assertThat(bitmexWalletTransactions[0].getCurrency()).isEqualTo("XBt"); - assertThat(bitmexWalletTransactions[0].getTransactType()).isEqualTo("UnrealisedPNL"); - assertThat(bitmexWalletTransactions[0].getAmount()).isEqualByComparingTo("-5.17400620"); - assertThat(bitmexWalletTransactions[0].getFee()).isEqualByComparingTo("0.0"); - assertThat(bitmexWalletTransactions[0].getTransactStatus()).isEqualTo("Pending"); - assertThat(bitmexWalletTransactions[0].getAddress()).isEqualTo("ETHUSD"); - assertThat(bitmexWalletTransactions[0].getTx()).isBlank(); - assertThat(bitmexWalletTransactions[0].getText()).isBlank(); - assertThat(bitmexWalletTransactions[0].getTransactTime()).isNull(); - assertThat(bitmexWalletTransactions[0].getWalletBalance()).isEqualByComparingTo("9.24493333"); - assertThat(bitmexWalletTransactions[0].getMarginBalance()).isEqualByComparingTo("4.07092713"); - assertThat(bitmexWalletTransactions[0].getTimestamp()).isNull(); - - assertThat(bitmexWalletTransactions[1].getTransactID()) - .isEqualTo("00000000-0000-0000-0000-000000000000"); - assertThat(bitmexWalletTransactions[1].getAccount()).isEqualTo(8556985); - assertThat(bitmexWalletTransactions[1].getCurrency()).isEqualTo("XBt"); - assertThat(bitmexWalletTransactions[1].getTransactType()).isEqualTo("RealisedPNL"); - assertThat(bitmexWalletTransactions[1].getAmount()).isEqualByComparingTo("0.06574801"); - assertThat(bitmexWalletTransactions[1].getFee()).isEqualByComparingTo("0"); - assertThat(bitmexWalletTransactions[1].getTransactStatus()).isEqualTo("Completed"); - assertThat(bitmexWalletTransactions[1].getAddress()).isEqualTo("ETHUSD"); - assertThat(bitmexWalletTransactions[1].getTx()).isBlank(); - assertThat(bitmexWalletTransactions[1].getText()).isBlank(); - assertThat(bitmexWalletTransactions[1].getTransactTime()).isEqualTo("2020-03-09T12:00:00.000Z"); - assertThat(bitmexWalletTransactions[1].getWalletBalance()).isEqualByComparingTo("9.24493333"); - assertThat(bitmexWalletTransactions[1].getMarginBalance()).isNull(); - assertThat(bitmexWalletTransactions[1].getTimestamp()).isEqualTo("2020-03-09T12:00:00.000Z"); - - assertThat(bitmexWalletTransactions[2].getTransactID()) - .isEqualTo("ff12a18b-7879-212a-41cb-688f9c3eff69"); - assertThat(bitmexWalletTransactions[2].getAccount()).isEqualTo(8556985); - assertThat(bitmexWalletTransactions[2].getCurrency()).isEqualTo("XBt"); - assertThat(bitmexWalletTransactions[2].getTransactType()).isEqualTo("Deposit"); - assertThat(bitmexWalletTransactions[2].getAmount()).isEqualByComparingTo("1.99960000"); - assertThat(bitmexWalletTransactions[2].getFee()).isNull(); - assertThat(bitmexWalletTransactions[2].getTransactStatus()).isEqualTo("Completed"); - assertThat(bitmexWalletTransactions[2].getAddress()).isBlank(); - assertThat(bitmexWalletTransactions[2].getTx()).isBlank(); - assertThat(bitmexWalletTransactions[2].getText()).isBlank(); - assertThat(bitmexWalletTransactions[2].getTransactTime()).isEqualTo("2020-03-05T11:09:46.352Z"); - assertThat(bitmexWalletTransactions[2].getWalletBalance()).isEqualByComparingTo("4.21321128"); - assertThat(bitmexWalletTransactions[2].getMarginBalance()).isNull(); - assertThat(bitmexWalletTransactions[2].getTimestamp()).isEqualTo("2020-03-05T11:09:46.352Z"); - - assertThat(bitmexWalletTransactions[3].getTransactID()) - .isEqualTo("de70230c-1f0d-3f9a-b0a2-48658afa3b63"); - assertThat(bitmexWalletTransactions[3].getAccount()).isEqualTo(8556985); - assertThat(bitmexWalletTransactions[3].getCurrency()).isEqualTo("XBt"); - assertThat(bitmexWalletTransactions[3].getTransactType()).isEqualTo("Withdrawal"); - assertThat(bitmexWalletTransactions[3].getAmount()).isEqualByComparingTo("-1.22279653"); - assertThat(bitmexWalletTransactions[3].getFee()).isEqualByComparingTo("0.00100000"); - assertThat(bitmexWalletTransactions[3].getTransactStatus()).isEqualTo("Completed"); - assertThat(bitmexWalletTransactions[3].getAddress()) - .isEqualTo("13g4J4JVWvMakcBAvfMHAAdt1PfDMF5rU8"); - assertThat(bitmexWalletTransactions[3].getTx()).isEqualTo("2BTEX1RxKBinepEXeHxLzujhPc5ZYqjoUJ"); - assertThat(bitmexWalletTransactions[3].getText()).isBlank(); - assertThat(bitmexWalletTransactions[3].getTransactTime()).isEqualTo("2020-02-11T09:27:57.267Z"); - assertThat(bitmexWalletTransactions[3].getWalletBalance()).isEqualByComparingTo("0.25968238"); - assertThat(bitmexWalletTransactions[3].getMarginBalance()).isNull(); - assertThat(bitmexWalletTransactions[3].getTimestamp()).isEqualTo("2020-02-11T11:19:16.151Z"); - } -} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java index 9c5f416ad31..49f1acb2ea5 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java @@ -6,13 +6,18 @@ import java.math.BigDecimal; import java.time.Instant; import java.util.Date; +import java.util.List; import org.junit.jupiter.api.Test; import org.knowm.xchange.bitmex.BitmexExchangeWiremock; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.account.AccountInfo; import org.knowm.xchange.dto.account.Balance; +import org.knowm.xchange.dto.account.FundingRecord; +import org.knowm.xchange.dto.account.FundingRecord.Status; +import org.knowm.xchange.dto.account.FundingRecord.Type; import org.knowm.xchange.dto.account.Wallet.WalletFeature; import org.knowm.xchange.service.account.AccountService; +import org.knowm.xchange.service.trade.params.DefaultTradeHistoryParamCurrency; class BitmexAccountServiceTest extends BitmexExchangeWiremock { @@ -36,5 +41,27 @@ void getAccountInfo() throws IOException { assertThat(ethBalance.getTimestamp()).isEqualTo(Date.from(Instant.parse("2024-12-09T09:54:20.367Z"))); } + @Test + void funding_history() throws IOException { + List actual = + accountService.getFundingHistory(new DefaultTradeHistoryParamCurrency(Currency.USDT)); + + FundingRecord expected = + new FundingRecord.Builder() + .setInternalId("00000000-0075-1000-0000-000042765f81") + .setDate(Date.from(Instant.parse("2024-12-09T00:15:38.647Z"))) + .setCurrency(Currency.USDT) + .setBalance(new BigDecimal("50")) + .setType(Type.DEPOSIT) + .setStatus(Status.COMPLETE) + .setAmount(new BigDecimal("49")) + .build(); + + assertThat(actual).hasSize(3); + assertThat(actual).first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } } diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json b/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json new file mode 100644 index 00000000000..92e16e007d4 --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json @@ -0,0 +1,41 @@ +[ + { + "transactID": "00000000-0075-1000-0000-000042765f81", + "account": 2273415, + "currency": "USDt", + "transactType": "Deposit", + "amount": 49000000, + "walletBalance": 50000000, + "transactStatus": "Completed", + "transactTime": "2024-12-09T00:15:38.647Z", + "timestamp": "2024-12-09T00:15:38.647Z" + }, + { + "transactID": "00000000-0075-1000-0000-00004667fb3a", + "account": 2273415, + "currency": "USDt", + "transactType": "SpotTrade", + "amount": 222790, + "walletBalance": 15015359, + "transactStatus": "Completed", + "address": "SOL_USDT", + "tx": "00000000-0075-1000-0000-00004667fb3a", + "orderID": "c77a48f6-8ab8-4c96-8eae-062846d2ee0f", + "transactTime": "2024-12-14T15:21:47.407Z", + "timestamp": "2024-12-14T15:21:47.407Z" + }, + { + "transactID": "00000000-0075-1000-0000-000042c14055", + "account": 2273415, + "currency": "USDt", + "transactType": "SpotTrade", + "amount": -3882841, + "walletBalance": 45117159, + "transactStatus": "Completed", + "address": "ETH_USDT", + "tx": "00000000-0075-1000-0000-000042c14055", + "orderID": "5d873440-48c6-48ed-86d9-e8e4259b0e7a", + "transactTime": "2024-12-09T09:54:20.367Z", + "timestamp": "2024-12-09T09:54:20.367Z" + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_user_wallethistory.json b/xchange-bitmex/src/test/resources/mappings/api_v1_user_wallethistory.json new file mode 100644 index 00000000000..320aa05a740 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_user_wallethistory.json @@ -0,0 +1,15 @@ +{ + "id" : "00ce4af4-c9dd-4dbf-a4b6-0c37317b6eae", + "name" : "api_v1_user_wallethistory", + "request" : { + "url" : "/api/v1/user/walletHistory?currency=USDt", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_user_wallethistory.json" + }, + "uuid" : "00ce4af4-c9dd-4dbf-a4b6-0c37317b6eae", + "persistent" : true, + "insertionIndex" : 19 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet-transaction.json b/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet-transaction.json deleted file mode 100644 index 27ed535b20d..00000000000 --- a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/account/example-wallet-transaction.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "transactID": "00000000-0000-0000-0000-000000000000", - "account": 8556985, - "currency": "XBt", - "transactType": "UnrealisedPNL", - "amount": -517400620, - "fee": 0, - "transactStatus": "Pending", - "address": "ETHUSD", - "tx": "", - "text": "", - "transactTime": null, - "walletBalance": 924493333, - "marginBalance": 407092713, - "timestamp": null - }, - { - "transactID": "00000000-0000-0000-0000-000000000000", - "account": 8556985, - "currency": "XBt", - "transactType": "RealisedPNL", - "amount": 6574801, - "fee": 0, - "transactStatus": "Completed", - "address": "ETHUSD", - "tx": "", - "text": "", - "transactTime": "2020-03-09T12:00:00.000Z", - "walletBalance": 924493333, - "marginBalance": null, - "timestamp": "2020-03-09T12:00:00.000Z" - }, - { - "transactID": "ff12a18b-7879-212a-41cb-688f9c3eff69", - "account": 8556985, - "currency": "XBt", - "transactType": "Deposit", - "amount": 199960000, - "fee": null, - "transactStatus": "Completed", - "address": "", - "tx": "", - "text": "", - "transactTime": "2020-03-05T11:09:46.352Z", - "walletBalance": 421321128, - "marginBalance": null, - "timestamp": "2020-03-05T11:09:46.352Z" - }, - { - "transactID": "de70230c-1f0d-3f9a-b0a2-48658afa3b63", - "account": 8556985, - "currency": "XBt", - "transactType": "Withdrawal", - "amount": -122279653, - "fee": 100000, - "transactStatus": "Completed", - "address": "13g4J4JVWvMakcBAvfMHAAdt1PfDMF5rU8", - "tx": "2BTEX1RxKBinepEXeHxLzujhPc5ZYqjoUJ", - "text": "", - "transactTime": "2020-02-11T09:27:57.267Z", - "walletBalance": 25968238, - "marginBalance": null, - "timestamp": "2020-02-11T11:19:16.151Z" - } -] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index 785dc6cb5b6..420ed42e3c5 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -57,6 +57,20 @@ api-expires: {{timestamp}} api-signature: {{sign}} Accept: application/json + +### Get your current wallet information +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +GET {{api_v1}}/user/walletHistory?currency=USDt +#GET {{api_v1}}/user/walletHistory?count=10000 +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Accept: application/json + + ### Get all balance-affecting executions < {% import {gen_sign} from 'sign.js' From aae9fac05689c880865fec0ee0e650c627ed4717 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sat, 14 Dec 2024 19:27:19 +0100 Subject: [PATCH 25/32] [bitmex] Fix getting of positions --- .../xchange/bitmex/BitmexAuthenticated.java | 10 +- .../InstrumentListToStringConverter.java | 23 + .../bitmex/dto/params/FilterParam.java | 7 +- .../bitmex/dto/trade/BitmexPosition.java | 600 +----------------- .../bitmex/service/BitmexTradeServiceRaw.java | 7 +- .../dto/trade/BitmexPositionJSONTest.java | 27 - .../service/BitmexTradeServiceRawTest.java | 49 ++ .../resources/__files/api_v1_position.json | 24 + .../api_v1_order_filtered-open-orders.json | 2 +- .../resources/mappings/api_v1_position.json | 15 + .../bitmex/dto/trade/example-position.json | 93 --- .../src/test/resources/rest/authorized.http | 12 + 12 files changed, 166 insertions(+), 703 deletions(-) create mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentListToStringConverter.java delete mode 100755 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/trade/BitmexPositionJSONTest.java create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRawTest.java create mode 100644 xchange-bitmex/src/test/resources/__files/api_v1_position.json create mode 100644 xchange-bitmex/src/test/resources/mappings/api_v1_position.json delete mode 100644 xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/trade/example-position.json diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java index bbe32fd58bb..65f182e6b19 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java @@ -321,21 +321,13 @@ BitmexPosition updateLeveragePosition( @FormParam("leverage") BigDecimal leverage) throws IOException, BitmexException; - @GET - @Path("position") - BitmexPositionList getPositions( - @HeaderParam("api-key") String apiKey, - @HeaderParam("api-expires") SynchronizedValueFactory nonce, - @HeaderParam("api-signature") ParamsDigest paramsDigest) - throws IOException, BitmexException; - @GET @Path("position") BitmexPositionList getPositions( @HeaderParam("api-key") String apiKey, @HeaderParam("api-expires") SynchronizedValueFactory nonce, @HeaderParam("api-signature") ParamsDigest paramsDigest, - @Nullable @QueryParam("filter") String filter) + @QueryParam("filter") FilterParam filterParam) throws IOException, BitmexException; @GET diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentListToStringConverter.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentListToStringConverter.java new file mode 100644 index 00000000000..4108a73286d --- /dev/null +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/config/converter/InstrumentListToStringConverter.java @@ -0,0 +1,23 @@ +package org.knowm.xchange.bitmex.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import java.util.List; +import java.util.stream.Collectors; +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.instrument.Instrument; + +/** + * Converts {@code Instrument} to String + */ +public class InstrumentListToStringConverter extends StdConverter, List> { + + @Override + public List convert(List value) { + if (value == null) { + return null; + } + return value.stream() + .map(BitmexAdapters::toString) + .collect(Collectors.toList()); + } +} diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java index b95c3fafd1c..b693996aaa7 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/params/FilterParam.java @@ -8,7 +8,7 @@ import lombok.Singular; import lombok.extern.jackson.Jacksonized; import org.knowm.xchange.bitmex.BitmexAdapters; -import org.knowm.xchange.bitmex.config.converter.InstrumentToStringConverter; +import org.knowm.xchange.bitmex.config.converter.InstrumentListToStringConverter; import org.knowm.xchange.instrument.Instrument; @Data @@ -20,9 +20,10 @@ public class FilterParam { @JsonProperty("orderID") private List orderIds; + @Singular @JsonProperty("symbol") - @JsonSerialize(converter = InstrumentToStringConverter.class) - private Instrument instrument; + @JsonSerialize(converter = InstrumentListToStringConverter.class) + private List instruments; @JsonProperty("open") private Boolean isOpen; diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java index 772e930b996..97a8d61a2e4 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java @@ -1,24 +1,39 @@ package org.knowm.xchange.bitmex.dto.trade; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; +import java.time.ZonedDateTime; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; import org.knowm.xchange.bitmex.AbstractHttpResponseAware; - +import org.knowm.xchange.bitmex.BitmexAdapters; +import org.knowm.xchange.bitmex.config.converter.StringToCurrencyConverter; +import org.knowm.xchange.currency.Currency; +import org.knowm.xchange.instrument.Instrument; + +@Data +@Builder +@AllArgsConstructor public class BitmexPosition extends AbstractHttpResponseAware { + @JsonProperty("account") private Integer account; - @JsonProperty("symbol") - private String symbol; + private Instrument instrument; @JsonProperty("currency") - private String currency; + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private String marginCurrency; @JsonProperty("underlying") private String underlying; @JsonProperty("quoteCurrency") - private String quoteCurrency; + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency quoteCurrency; @JsonProperty("commission") private BigDecimal commission; @@ -65,19 +80,15 @@ public class BitmexPosition extends AbstractHttpResponseAware { @JsonProperty("openingComm") private BigDecimal openingComm; - @JsonProperty("openOrderBuyQty") private BigDecimal openOrderBuyQty; - @JsonProperty("openOrderBuyCost") private BigDecimal openOrderBuyCost; @JsonProperty("openOrderBuyPremium") private BigDecimal openOrderBuyPremium; - @JsonProperty("openOrderSellQty") private BigDecimal openOrderSellQty; - @JsonProperty("openOrderSellCost") private BigDecimal openOrderSellCost; @JsonProperty("openOrderSellPremium") @@ -270,7 +281,7 @@ public class BitmexPosition extends AbstractHttpResponseAware { private BigDecimal bankruptPrice; @JsonProperty("timestamp") - private String timestamp; + private ZonedDateTime timestamp; @JsonProperty("lastPrice") private BigDecimal lastPrice; @@ -278,563 +289,20 @@ public class BitmexPosition extends AbstractHttpResponseAware { @JsonProperty("lastValue") private BigDecimal lastValue; - public Integer getAccount() { - return account; - } - - public String getSymbol() { - return symbol; - } - - public String getCurrency() { - return currency; - } - - public String getUnderlying() { - return underlying; - } - - public String getQuoteCurrency() { - return quoteCurrency; - } - - public BigDecimal getCommission() { - return commission; - } - - public BigDecimal getInitMarginReq() { - return initMarginReq; - } - - public BigDecimal getMaintMarginReq() { - return maintMarginReq; - } - - public BigDecimal getRiskLimit() { - return riskLimit; - } - - public BigDecimal getLeverage() { - return leverage; - } - - public Boolean getCrossMargin() { - return crossMargin; - } - - public BigDecimal getDeleveragePercentile() { - return deleveragePercentile; - } - - public BigDecimal getRebalancedPnl() { - return rebalancedPnl; - } - - public BigDecimal getPrevRealisedPnl() { - return prevRealisedPnl; - } - - public BigDecimal getPrevUnrealisedPnl() { - return prevUnrealisedPnl; - } - - public BigDecimal getPrevClosePrice() { - return prevClosePrice; - } - - public String getOpeningTimestamp() { - return openingTimestamp; - } - - public BigDecimal getOpeningQty() { - return openingQty; - } - - public BigDecimal getOpeningCost() { - return openingCost; - } - - public BigDecimal getOpeningComm() { - return openingComm; - } - - public BigDecimal getOpenOrderBuyQty() { - return openOrderBuyQty; - } - - public BigDecimal getOpenOrderBuyCost() { - return openOrderBuyCost; - } - - public BigDecimal getOpenOrderBuyPremium() { - return openOrderBuyPremium; - } - - public BigDecimal getOpenOrderSellQty() { - return openOrderSellQty; - } - - public BigDecimal getOpenOrderSellCost() { - return openOrderSellCost; - } - - public BigDecimal getOpenOrderSellPremium() { - return openOrderSellPremium; - } - - public BigDecimal getExecBuyQty() { - return execBuyQty; - } - - public BigDecimal getExecBuyCost() { - return execBuyCost; - } - - public BigDecimal getExecSellQty() { - return execSellQty; - } - - public BigDecimal getExecSellCost() { - return execSellCost; - } - - public BigDecimal getExecQty() { - return execQty; - } - - public BigDecimal getExecCost() { - return execCost; - } - - public BigDecimal getExecComm() { - return execComm; - } - - public String getCurrentTimestamp() { - return currentTimestamp; - } - - public BigDecimal getCurrentQty() { - return currentQty; - } - - public BigDecimal getCurrentCost() { - return currentCost; - } - - public BigDecimal getCurrentComm() { - return currentComm; - } - - public BigDecimal getRealisedCost() { - return realisedCost; - } - - public BigDecimal getUnrealisedCost() { - return unrealisedCost; - } - - public BigDecimal getGrossOpenCost() { - return grossOpenCost; - } - - public BigDecimal getGrossOpenPremium() { - return grossOpenPremium; - } - - public BigDecimal getGrossExecCost() { - return grossExecCost; - } - - public Boolean getOpen() { - return isOpen; - } - - public BigDecimal getMarkPrice() { - return markPrice; - } - - public BigDecimal getMarkValue() { - return markValue; - } - - public BigDecimal getRiskValue() { - return riskValue; - } - - public BigDecimal getHomeNotional() { - return homeNotional; - } - - public BigDecimal getForeignNotional() { - return foreignNotional; - } - - public String getPosState() { - return posState; - } - - public BigDecimal getPosCost() { - return posCost; - } - - public BigDecimal getPosCost2() { - return posCost2; - } - - public BigDecimal getPosCross() { - return posCross; - } - - public BigDecimal getPosInit() { - return posInit; - } - - public BigDecimal getPosComm() { - return posComm; - } - - public BigDecimal getPosLoss() { - return posLoss; - } - - public BigDecimal getPosMargin() { - return posMargin; - } - - public BigDecimal getPosMaint() { - return posMaint; - } - - public BigDecimal getPosAllowance() { - return posAllowance; - } - - public BigDecimal getTaxableMargin() { - return taxableMargin; - } - - public BigDecimal getInitMargin() { - return initMargin; - } - - public BigDecimal getMaintMargin() { - return maintMargin; - } - - public BigDecimal getSessionMargin() { - return sessionMargin; - } - - public BigDecimal getTargetExcessMargin() { - return targetExcessMargin; - } - - public BigDecimal getVarMargin() { - return varMargin; - } - - public BigDecimal getRealisedGrossPnl() { - return realisedGrossPnl; - } - - public BigDecimal getRealisedTax() { - return realisedTax; - } - - public BigDecimal getRealisedPnl() { - return realisedPnl; - } - - public BigDecimal getUnrealisedGrossPnl() { - return unrealisedGrossPnl; - } + @JsonCreator + public BitmexPosition(@JsonProperty("symbol") String symbol, + @JsonProperty("openOrderBuyQty") BigDecimal openOrderBuyQty, + @JsonProperty("openOrderBuyCost") BigDecimal openOrderBuyCost, + @JsonProperty("openOrderSellQty") BigDecimal openOrderSellQty, + @JsonProperty("openOrderSellCost") BigDecimal openOrderSellCost + ) { + // scale values + this.instrument = BitmexAdapters.toInstrument(symbol); - public BigDecimal getLongBankrupt() { - return longBankrupt; + this.openOrderBuyQty = BitmexAdapters.scaleToLocalAmount(openOrderBuyQty, instrument.getCounter()); + this.openOrderBuyCost = BitmexAdapters.scaleToLocalAmount(openOrderBuyCost, instrument.getCounter()); + this.openOrderSellQty = BitmexAdapters.scaleToLocalAmount(openOrderSellQty, instrument.getCounter()); + this.openOrderSellCost = BitmexAdapters.scaleToLocalAmount(openOrderSellCost, instrument.getCounter()); } - public BigDecimal getShortBankrupt() { - return shortBankrupt; - } - - public BigDecimal getTaxBase() { - return taxBase; - } - - public BigDecimal getIndicativeTaxRate() { - return indicativeTaxRate; - } - - public BigDecimal getIndicativeTax() { - return indicativeTax; - } - - public BigDecimal getUnrealisedTax() { - return unrealisedTax; - } - - public BigDecimal getUnrealisedPnl() { - return unrealisedPnl; - } - - public BigDecimal getUnrealisedPnlPcnt() { - return unrealisedPnlPcnt; - } - - public BigDecimal getUnrealisedRoePcnt() { - return unrealisedRoePcnt; - } - - public BigDecimal getSimpleQty() { - return simpleQty; - } - - public BigDecimal getSimpleCost() { - return simpleCost; - } - - public BigDecimal getSimpleValue() { - return simpleValue; - } - - public BigDecimal getSimplePnl() { - return simplePnl; - } - - public BigDecimal getSimplePnlPcnt() { - return simplePnlPcnt; - } - - public BigDecimal getAvgCostPrice() { - return avgCostPrice; - } - - public BigDecimal getAvgEntryPrice() { - return avgEntryPrice; - } - - public BigDecimal getBreakEvenPrice() { - return breakEvenPrice; - } - - public BigDecimal getMarginCallPrice() { - return marginCallPrice; - } - - public BigDecimal getLiquidationPrice() { - return liquidationPrice; - } - - public BigDecimal getBankruptPrice() { - return bankruptPrice; - } - - public String getTimestamp() { - return timestamp; - } - - public BigDecimal getLastPrice() { - return lastPrice; - } - - public BigDecimal getLastValue() { - return lastValue; - } - - @Override - public String toString() { - return "BitmexPosition{" - + "account=" - + account - + ", symbol='" - + symbol - + '\'' - + ", currency='" - + currency - + '\'' - + ", underlying='" - + underlying - + '\'' - + ", quoteCurrency='" - + quoteCurrency - + '\'' - + ", commission=" - + commission - + ", initMarginReq=" - + initMarginReq - + ", maintMarginReq=" - + maintMarginReq - + ", riskLimit=" - + riskLimit - + ", leverage=" - + leverage - + ", crossMargin=" - + crossMargin - + ", deleveragePercentile=" - + deleveragePercentile - + ", rebalancedPnl=" - + rebalancedPnl - + ", prevRealisedPnl=" - + prevRealisedPnl - + ", prevUnrealisedPnl=" - + prevUnrealisedPnl - + ", prevClosePrice=" - + prevClosePrice - + ", openingTimestamp='" - + openingTimestamp - + '\'' - + ", openingQty=" - + openingQty - + ", openingCost=" - + openingCost - + ", openingComm=" - + openingComm - + ", openOrderBuyQty=" - + openOrderBuyQty - + ", openOrderBuyCost=" - + openOrderBuyCost - + ", openOrderBuyPremium=" - + openOrderBuyPremium - + ", openOrderSellQty=" - + openOrderSellQty - + ", openOrderSellCost=" - + openOrderSellCost - + ", openOrderSellPremium=" - + openOrderSellPremium - + ", execBuyQty=" - + execBuyQty - + ", execBuyCost=" - + execBuyCost - + ", execSellQty=" - + execSellQty - + ", execSellCost=" - + execSellCost - + ", execQty=" - + execQty - + ", execCost=" - + execCost - + ", execComm=" - + execComm - + ", currentTimestamp='" - + currentTimestamp - + '\'' - + ", currentQty=" - + currentQty - + ", currentCost=" - + currentCost - + ", currentComm=" - + currentComm - + ", realisedCost=" - + realisedCost - + ", unrealisedCost=" - + unrealisedCost - + ", grossOpenCost=" - + grossOpenCost - + ", grossOpenPremium=" - + grossOpenPremium - + ", grossExecCost=" - + grossExecCost - + ", isOpen=" - + isOpen - + ", markPrice=" - + markPrice - + ", markValue=" - + markValue - + ", riskValue=" - + riskValue - + ", homeNotional=" - + homeNotional - + ", foreignNotional=" - + foreignNotional - + ", posState='" - + posState - + '\'' - + ", posCost=" - + posCost - + ", posCost2=" - + posCost2 - + ", posCross=" - + posCross - + ", posInit=" - + posInit - + ", posComm=" - + posComm - + ", posLoss=" - + posLoss - + ", posMargin=" - + posMargin - + ", posMaint=" - + posMaint - + ", posAllowance=" - + posAllowance - + ", taxableMargin=" - + taxableMargin - + ", initMargin=" - + initMargin - + ", maintMargin=" - + maintMargin - + ", sessionMargin=" - + sessionMargin - + ", targetExcessMargin=" - + targetExcessMargin - + ", varMargin=" - + varMargin - + ", realisedGrossPnl=" - + realisedGrossPnl - + ", realisedTax=" - + realisedTax - + ", realisedPnl=" - + realisedPnl - + ", unrealisedGrossPnl=" - + unrealisedGrossPnl - + ", longBankrupt=" - + longBankrupt - + ", shortBankrupt=" - + shortBankrupt - + ", taxBase=" - + taxBase - + ", indicativeTaxRate=" - + indicativeTaxRate - + ", indicativeTax=" - + indicativeTax - + ", unrealisedTax=" - + unrealisedTax - + ", unrealisedPnl=" - + unrealisedPnl - + ", unrealisedPnlPcnt=" - + unrealisedPnlPcnt - + ", unrealisedRoePcnt=" - + unrealisedRoePcnt - + ", simpleQty=" - + simpleQty - + ", simpleCost=" - + simpleCost - + ", simpleValue=" - + simpleValue - + ", simplePnl=" - + simplePnl - + ", simplePnlPcnt=" - + simplePnlPcnt - + ", avgCostPrice=" - + avgCostPrice - + ", avgEntryPrice=" - + avgEntryPrice - + ", breakEvenPrice=" - + breakEvenPrice - + ", marginCallPrice=" - + marginCallPrice - + ", liquidationPrice=" - + liquidationPrice - + ", bankruptPrice=" - + bankruptPrice - + ", timestamp='" - + timestamp - + '\'' - + ", lastPrice=" - + lastPrice - + ", lastValue=" - + lastValue - + '}'; - } } diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java index baa6be7113b..4477f73cc37 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java @@ -36,18 +36,17 @@ public class BitmexTradeServiceRaw extends BitmexBaseService { } public List getBitmexPositions() throws ExchangeException { - return updateRateLimit( - () -> bitmex.getPositions(apiKey, exchange.getNonceFactory(), signatureCreator)); + return getBitmexPositions(null); } - public List getBitmexPositions(String symbol) throws ExchangeException { + public List getBitmexPositions(FilterParam filterParam) throws ExchangeException { return updateRateLimit( () -> bitmex.getPositions( apiKey, exchange.getNonceFactory(), signatureCreator, - "{\"symbol\":\"" + symbol + "\"}")); + filterParam)); } /** diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/trade/BitmexPositionJSONTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/trade/BitmexPositionJSONTest.java deleted file mode 100755 index e67446e8e91..00000000000 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/dto/trade/BitmexPositionJSONTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.knowm.xchange.bitmex.dto.trade; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.io.InputStream; -import org.junit.Test; - -public class BitmexPositionJSONTest { - @Test - public void testUnmarshal() throws IOException { - - // Read in the JSON from the example resources - InputStream is = - BitmexTradesJSONTest.class.getResourceAsStream( - "/org/knowm/xchange/bitmex/dto/trade/example-position.json"); - - ObjectMapper mapper = new ObjectMapper(); - BitmexPosition position = mapper.readValue(is, BitmexPosition.class); - assertThat(position.getSymbol()).isEqualTo("string"); - assertThat(position.getAccount()).isEqualTo(0); - assertThat(position.getCurrency()).isEqualTo("string"); - assertThat(position.getUnderlying()).isEqualTo("string"); - assertThat(position.getQuoteCurrency()).isEqualTo("string"); - } -} diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRawTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRawTest.java new file mode 100644 index 00000000000..90938877eea --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRawTest.java @@ -0,0 +1,49 @@ +package org.knowm.xchange.bitmex.service; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.math.BigDecimal; +import java.time.ZonedDateTime; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.knowm.xchange.bitmex.BitmexExchangeWiremock; +import org.knowm.xchange.bitmex.dto.params.FilterParam; +import org.knowm.xchange.bitmex.dto.trade.BitmexPosition; +import org.knowm.xchange.currency.CurrencyPair; + +class BitmexTradeServiceRawTest extends BitmexExchangeWiremock { + + BitmexTradeServiceRaw bitmexTradeServiceRaw = (BitmexTradeServiceRaw) exchange.getTradeService(); + + + @Test + void positions() { + FilterParam filterParam = FilterParam.builder() + .instrument(CurrencyPair.ETH_BTC) + .instrument(new CurrencyPair("SOL/USDT")) + .build(); + + List positions = bitmexTradeServiceRaw.getBitmexPositions(filterParam); + + assertThat(positions).hasSize(2); + + BitmexPosition expected = BitmexPosition.builder() + .instrument(new CurrencyPair("SOL/USDT")) + .crossMargin(true) + .account(2273415) + .isOpen(true) + .openOrderBuyCost(new BigDecimal("0.436020")) + .openOrderBuyQty(new BigDecimal("2")) + .openOrderSellCost(new BigDecimal("0.665070")) + .openOrderSellQty(new BigDecimal("3")) + .timestamp(ZonedDateTime.parse("2024-12-14T17:25:58.097Z[UTC]")) + .build(); + + assertThat(positions) + .first() + .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) + .usingRecursiveComparison() + .isEqualTo(expected); + } + +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_position.json b/xchange-bitmex/src/test/resources/__files/api_v1_position.json new file mode 100644 index 00000000000..020d715b22c --- /dev/null +++ b/xchange-bitmex/src/test/resources/__files/api_v1_position.json @@ -0,0 +1,24 @@ +[ + { + "account": 2273415, + "symbol": "SOL_USDT", + "crossMargin": true, + "openOrderBuyQty": 2000000, + "openOrderBuyCost": 436020, + "openOrderSellQty": 3000000, + "openOrderSellCost": 665070, + "isOpen": true, + "timestamp": "2024-12-14T17:25:58.097Z" + }, + { + "account": 2273415, + "symbol": "ETH_XBT", + "crossMargin": true, + "openOrderBuyQty": 0, + "openOrderBuyCost": 0, + "openOrderSellQty": 0, + "openOrderSellCost": 0, + "isOpen": false, + "timestamp": "2024-12-14T00:04:37.668Z" + } +] \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json index 1fe73ca5f63..cc735017320 100644 --- a/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_order_filtered-open-orders.json @@ -2,7 +2,7 @@ "id" : "75dbdfb2-6dc1-4563-9c05-09e7f2056889", "name" : "api_v1_order", "request" : { - "url" : "/api/v1/order?filter=%7B%22symbol%22%3A%22XBT_USDT%22%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", + "url" : "/api/v1/order?filter=%7B%22symbol%22%3A%5B%22XBT_USDT%22%5D%2C%22open%22%3Atrue%7D&count=500&start=0&reverse=true", "method" : "GET" }, "response" : { diff --git a/xchange-bitmex/src/test/resources/mappings/api_v1_position.json b/xchange-bitmex/src/test/resources/mappings/api_v1_position.json new file mode 100644 index 00000000000..6c4023be583 --- /dev/null +++ b/xchange-bitmex/src/test/resources/mappings/api_v1_position.json @@ -0,0 +1,15 @@ +{ + "id" : "4f023cd0-79d3-4597-8f2c-53167cdbfd4c", + "name" : "api_v1_position", + "request" : { + "url" : "/api/v1/position?filter=%7B%22symbol%22%3A%5B%22ETH_XBT%22%2C%22SOL_USDT%22%5D%7D", + "method" : "GET" + }, + "response" : { + "status" : 200, + "bodyFileName" : "api_v1_position.json" + }, + "uuid" : "4f023cd0-79d3-4597-8f2c-53167cdbfd4c", + "persistent" : true, + "insertionIndex" : 20 +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/trade/example-position.json b/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/trade/example-position.json deleted file mode 100644 index f816c21416d..00000000000 --- a/xchange-bitmex/src/test/resources/org/knowm/xchange/bitmex/dto/trade/example-position.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "account": 0, - "symbol": "string", - "currency": "string", - "underlying": "string", - "quoteCurrency": "string", - "commission": 0, - "initMarginReq": 0, - "maintMarginReq": 0, - "riskLimit": 0, - "leverage": 0, - "crossMargin": true, - "deleveragePercentile": 0, - "rebalancedPnl": 0, - "prevRealisedPnl": 0, - "prevUnrealisedPnl": 0, - "prevClosePrice": 0, - "openingTimestamp": "2017-12-20T14:41:31.383Z", - "openingQty": 0, - "openingCost": 0, - "openingComm": 0, - "openOrderBuyQty": 0, - "openOrderBuyCost": 0, - "openOrderBuyPremium": 0, - "openOrderSellQty": 0, - "openOrderSellCost": 0, - "openOrderSellPremium": 0, - "execBuyQty": 0, - "execBuyCost": 0, - "execSellQty": 0, - "execSellCost": 0, - "execQty": 0, - "execCost": 0, - "execComm": 0, - "currentTimestamp": "2017-12-20T14:41:31.384Z", - "currentQty": 0, - "currentCost": 0, - "currentComm": 0, - "realisedCost": 0, - "unrealisedCost": 0, - "grossOpenCost": 0, - "grossOpenPremium": 0, - "grossExecCost": 0, - "isOpen": true, - "markPrice": 0, - "markValue": 0, - "riskValue": 0, - "homeNotional": 0, - "foreignNotional": 0, - "posState": "string", - "posCost": 0, - "posCost2": 0, - "posCross": 0, - "posInit": 0, - "posComm": 0, - "posLoss": 0, - "posMargin": 0, - "posMaint": 0, - "posAllowance": 0, - "taxableMargin": 0, - "initMargin": 0, - "maintMargin": 0, - "sessionMargin": 0, - "targetExcessMargin": 0, - "varMargin": 0, - "realisedGrossPnl": 0, - "realisedTax": 0, - "realisedPnl": 0, - "unrealisedGrossPnl": 0, - "longBankrupt": 0, - "shortBankrupt": 0, - "taxBase": 0, - "indicativeTaxRate": 0, - "indicativeTax": 0, - "unrealisedTax": 0, - "unrealisedPnl": 0, - "unrealisedPnlPcnt": 0, - "unrealisedRoePcnt": 0, - "simpleQty": 0, - "simpleCost": 0, - "simpleValue": 0, - "simplePnl": 0, - "simplePnlPcnt": 0, - "avgCostPrice": 0, - "avgEntryPrice": 0, - "breakEvenPrice": 0, - "marginCallPrice": 0, - "liquidationPrice": 0, - "bankruptPrice": 0, - "timestamp": "2017-12-20T14:41:31.388Z", - "lastPrice": 0, - "lastValue": 0 -} \ No newline at end of file diff --git a/xchange-bitmex/src/test/resources/rest/authorized.http b/xchange-bitmex/src/test/resources/rest/authorized.http index 420ed42e3c5..584fcd58065 100644 --- a/xchange-bitmex/src/test/resources/rest/authorized.http +++ b/xchange-bitmex/src/test/resources/rest/authorized.http @@ -84,3 +84,15 @@ api-signature: {{sign}} Accept: application/json +### Get your positions +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} +GET {{api_v1}}/position?filter={"symbol":["ETH_XBT","SOL_USDT"]} +api-key: {{api_key}} +api-expires: {{timestamp}} +api-signature: {{sign}} +Accept: application/json + + From a14ef5a155eebcb9fb5d1036b89d214bcfa88d32 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sun, 15 Dec 2024 22:44:15 +0100 Subject: [PATCH 26/32] [bitmex] Extend FundingRecord mapping --- .../knowm/xchange/bitmex/BitmexAdapters.java | 25 ++++++++--- .../xchange/bitmex/BitmexAdaptersTest.java | 21 ++++++++++ .../service/BitmexAccountServiceTest.java | 12 +++++- .../__files/api_v1_user_wallethistory.json | 41 +++++++++++++++++++ 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexAdaptersTest.java diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java index c43b735fb4c..6f0353cd961 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAdapters.java @@ -42,6 +42,7 @@ import org.knowm.xchange.dto.Order.OrderType; import org.knowm.xchange.dto.account.Balance; import org.knowm.xchange.dto.account.FundingRecord; +import org.knowm.xchange.dto.account.FundingRecord.Status; import org.knowm.xchange.dto.account.Wallet; import org.knowm.xchange.dto.marketdata.OrderBook; import org.knowm.xchange.dto.marketdata.Ticker; @@ -68,8 +69,6 @@ public class BitmexAdapters { private Map CURRENCY_TO_SCALE = new HashMap<>(); - private final BigDecimal SATOSHIS_BY_BTC = BigDecimal.valueOf(100_000_000L); - public void putSymbolMapping(String symbol, Instrument instrument) { SYMBOL_TO_INSTRUMENT.put(symbol, instrument); INSTRUMENT_TO_SYMBOL.put(instrument, symbol); @@ -429,14 +428,14 @@ public FundingRecord adaptFundingRecord(BitmexWalletTransaction walletTransactio walletTransaction.getAmount().abs(), walletTransaction.getTransactionId(), walletTransaction.getTx(), - adaptFundingRecordtype(walletTransaction), - adaptFundingRecordStatus(walletTransaction.getTransactionStatus()), + toFundingRecordtype(walletTransaction), + toFundingRecordStatus(walletTransaction.getTransactionStatus()), walletTransaction.getWalletBalance(), walletTransaction.getFeeAmount(), walletTransaction.getText()); } - private FundingRecord.Type adaptFundingRecordtype( + private FundingRecord.Type toFundingRecordtype( final BitmexWalletTransaction walletTransaction) { String type = walletTransaction.getTransactionType(); @@ -457,11 +456,25 @@ private FundingRecord.Type adaptFundingRecordtype( } } + if ("Transfer".equalsIgnoreCase(type)) { + if (walletTransaction.getAmount().compareTo(BigDecimal.ZERO) > 0) { + return FundingRecord.Type.INTERNAL_DEPOSIT; + } else if (walletTransaction.getAmount().compareTo(BigDecimal.ZERO) < 0) { + return FundingRecord.Type.INTERNAL_WITHDRAWAL; + } + } + log.warn("Unknown FundingRecord.Type: {}", type); return null; } - private FundingRecord.Status adaptFundingRecordStatus(final String transactStatus) { + public FundingRecord.Status toFundingRecordStatus(String transactStatus) { + if ("Confirmed".equalsIgnoreCase(transactStatus)) { + return Status.COMPLETE; + } + if ("Canceled".equalsIgnoreCase(transactStatus)) { + return Status.CANCELLED; + } return FundingRecord.Status.resolveStatus(transactStatus); } diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexAdaptersTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexAdaptersTest.java new file mode 100644 index 00000000000..3224c8c80e2 --- /dev/null +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/BitmexAdaptersTest.java @@ -0,0 +1,21 @@ +package org.knowm.xchange.bitmex; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; + +class BitmexAdaptersTest { + + @Test + void values_transactStatus() { + String[] exchangeValues = {"Completed", "Confirmed", "Pending", "Canceled"}; + + assertThat(exchangeValues) + .allSatisfy( + value -> { + assertThat(BitmexAdapters.toFundingRecordStatus(value)).isNotNull(); + }); + + } + +} \ No newline at end of file diff --git a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java index 49f1acb2ea5..eead9ef4a96 100644 --- a/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java +++ b/xchange-bitmex/src/test/java/org/knowm/xchange/bitmex/service/BitmexAccountServiceTest.java @@ -57,7 +57,17 @@ void funding_history() throws IOException { .setAmount(new BigDecimal("49")) .build(); - assertThat(actual).hasSize(3); + assertThat(actual).hasSize(6); + + assertThat(actual) + .allSatisfy( + fundingRecord -> { + assertThat(fundingRecord.getType()).isNotNull(); + assertThat(fundingRecord.getStatus()).isNotNull(); + assertThat(fundingRecord.getCurrency()).isEqualTo(Currency.USDT); + }); + + assertThat(actual).first() .usingComparatorForType(BigDecimal::compareTo, BigDecimal.class) .usingRecursiveComparison() diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json b/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json index 92e16e007d4..a5944abe080 100644 --- a/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json +++ b/xchange-bitmex/src/test/resources/__files/api_v1_user_wallethistory.json @@ -37,5 +37,46 @@ "orderID": "5d873440-48c6-48ed-86d9-e8e4259b0e7a", "transactTime": "2024-12-09T09:54:20.367Z", "timestamp": "2024-12-09T09:54:20.367Z" + }, + { + "transactID": "00000000-0075-1000-0000-0000471180f0", + "account": 2273415, + "currency": "USDt", + "transactType": "Transfer", + "amount": 10000000, + "walletBalance": 11954263, + "transactStatus": "Completed", + "address": "2275075", + "tx": "00000000-0075-1000-0000-0000471180ee", + "transactTime": "2024-12-15T18:50:52.041Z", + "timestamp": "2024-12-15T18:50:52.041Z" + }, + { + "transactID": "00000000-0075-1000-0000-000047117c50", + "account": 2273415, + "currency": "USDt", + "transactType": "Transfer", + "amount": -10000000, + "walletBalance": 1954263, + "transactStatus": "Completed", + "address": "2275075", + "tx": "00000000-0075-1000-0000-000047117c50", + "transactTime": "2024-12-15T18:50:39.291Z", + "timestamp": "2024-12-15T18:50:39.291Z" + }, + { + "transactID": "00000000-0075-1000-0000-0000471b7fa7", + "account": 2273415, + "currency": "USDt", + "network": "sol", + "transactType": "Withdrawal", + "amount": -16000000, + "walletBalance": 44954263, + "fee": 1000000, + "transactStatus": "Confirmed", + "address": "6vLyxJ9dBziamyaw2vDcs9n2NwQdW1uk3aooJwrEscnA", + "text": "test-withdrawal", + "transactTime": "2024-12-15T21:01:28.205Z", + "timestamp": "2024-12-15T21:01:41.603Z" } ] \ No newline at end of file From 15fbf8675fd10af50b239e475f3d50ed54af8497 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Sat, 28 Dec 2024 01:18:39 +0100 Subject: [PATCH 27/32] [bitmex] Add order state --- .../org/knowm/xchange/bitmex/dto/account/BitmexTicker.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java index d7082fa530c..1c2a07c0ff1 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/account/BitmexTicker.java @@ -351,6 +351,9 @@ public static enum State { @JsonProperty("Expired") EXPIRED, + @JsonProperty("Settled") + SETTLED, + @JsonProperty("Cleared") CLEARED, From b3b2f8ddbcc33832f5c0aa34eb4caa1c362c3d3a Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 9 Jan 2025 10:21:29 +0100 Subject: [PATCH 28/32] [bitmex] Fix fee currency for trade --- .../knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java index 472b1836ea7..66f8d8af36c 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPrivateExecution.java @@ -160,7 +160,8 @@ public BitmexPrivateExecution(@JsonProperty("symbol") String symbol, this.executedQuantity = BitmexAdapters.scaleToLocalAmount(executedQuantity, instrument.getBase()); this.orderQuantity = BitmexAdapters.scaleToLocalAmount(orderQuantity, instrument.getBase()); - this.feeCurrency = BitmexAdapters.bitmexCodeToCurrency(feeCurrency); + // fees are paid in quote currency + this.feeCurrency = instrument.getCounter(); this.feeAmount = BitmexAdapters.scaleToLocalAmount(feeAmount, this.feeCurrency); } } From a93db66232eca188361661b0a8aa8a5ba206bf12 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 9 Jan 2025 10:21:50 +0100 Subject: [PATCH 29/32] [bitmex] Remove unneeded mappings --- .../__files/api_v1_instrument_active.json | 14298 +--------------- 1 file changed, 209 insertions(+), 14089 deletions(-) diff --git a/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json b/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json index f55eba3ac4c..5440d033669 100644 --- a/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json +++ b/xchange-bitmex/src/test/resources/__files/api_v1_instrument_active.json @@ -1,14183 +1,303 @@ [ { - "symbol": "SOLUSD", - "rootSymbol": "SOL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-10-20T04:00:00.000Z", - "front": "2021-10-20T04:00:00.000Z", - "underlying": "SOL", - "quoteCurrency": "USD", - "underlyingSymbol": "SOL=", - "reference": "BMEX", - "referenceSymbol": ".BSOL", - "maxOrderQty": 1000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SOLBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".SOLUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000784, - "indicativeFundingRate": 0.000803, - "prevClosePrice": 236.11, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 8076205568, - "totalVolume": 8076207788, - "volume": 2220, - "volume24h": 269714, - "prevTotalTurnover": 30209311675002, - "totalTurnover": 30209362036153, - "turnover": 50361151, - "turnover24h": 6291965082, - "homeNotional24h": 26848.946461559557, - "foreignNotional24h": 6263894.675183851, - "prevPrice24h": 235.32, - "vwap": 233.29, - "highPrice": 238.15, - "lowPrice": 225.09, - "lastPrice": 226.59, - "lastPriceProtected": 226.55, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0371, - "bidPrice": 226.27, - "midPrice": 226.32, - "askPrice": 226.37, - "impactBidPrice": 226.16, - "impactMidPrice": 226.305, - "impactAskPrice": 226.45, - "hasLiquidity": true, - "openInterest": 837251, - "openValue": 18936943118, - "fairMethod": "FundingRate", - "fairBasisRate": 0.85848, - "fairBasis": 0.02, - "fairPrice": 226.18, - "markMethod": "FairPrice", - "markPrice": 226.18, - "indicativeSettlePrice": 226.16, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DOGEUSD", - "rootSymbol": "DOGE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-09-29T04:00:00.000Z", - "front": "2021-09-29T04:00:00.000Z", - "underlying": "DOGE", - "quoteCurrency": "USD", - "underlyingSymbol": "DOGE=", - "reference": "BMEX", - "referenceSymbol": ".BDOGE", - "maxOrderQty": 5000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.00001, - "multiplier": 100000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DOGEBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".DOGEUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000892, - "indicativeFundingRate": 0.000626, - "prevClosePrice": 0.45991, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1336370794, - "totalVolume": 1336371121, - "volume": 327, - "volume24h": 173720, - "prevTotalTurnover": 15070300532382, - "totalTurnover": 15070314733914, - "turnover": 14201532, - "turnover24h": 7837524106, - "homeNotional24h": 17272202.70430428, - "foreignNotional24h": 7793333.634734154, - "prevPrice24h": 0.45583, - "vwap": 0.45117, - "highPrice": 0.46921, - "lowPrice": 0.4285, - "lastPrice": 0.43381, - "lastPriceProtected": 0.43381, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0476, - "bidPrice": 0.43293, - "midPrice": 0.43309, - "askPrice": 0.43325, - "impactBidPrice": 0.43273, - "impactMidPrice": 0.43305, - "impactAskPrice": 0.43337, - "hasLiquidity": true, - "openInterest": 197673, - "openValue": 8561612976, - "fairMethod": "FundingRate", - "fairBasisRate": 0.97674, - "fairBasis": 0.00004, - "fairPrice": 0.43312, - "markMethod": "FairPrice", - "markPrice": 0.43312, - "indicativeSettlePrice": 0.43308, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DOGEUSDT", - "rootSymbol": "DOGE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "DOGE", - "underlying": "DOGE", - "quoteCurrency": "USDT", - "underlyingSymbol": "DOGET=", - "reference": "BMEX", - "referenceSymbol": ".BDOGET", - "maxOrderQty": 10000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DOGEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".DOGEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000194, - "indicativeFundingRate": 0.000244, - "prevClosePrice": 0.459568, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1920022438000, - "totalVolume": 1920027129000, - "volume": 4691000, - "volume24h": 1383034000, - "prevTotalTurnover": 2369694848430100, - "totalTurnover": 2369715275768100, - "turnover": 20427338000, - "turnover24h": 6287224085800, - "homeNotional24h": 13830340, - "foreignNotional24h": 6287224.0858, - "prevPrice24h": 0.45572, - "vwap": 0.4545966, - "highPrice": 0.46866, - "lowPrice": 0.42933000000000004, - "lastPrice": 0.43368, - "lastPriceProtected": 0.43368, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0484, - "bidPrice": 0.43359, - "midPrice": 0.433945, - "askPrice": 0.4343, - "impactBidPrice": 0.4334496, - "impactMidPrice": 0.433905, - "impactAskPrice": 0.4343626, - "hasLiquidity": true, - "openInterest": 540290000, - "openValue": 2340233717600, - "fairMethod": "FundingRate", - "fairBasisRate": 0.21243, - "fairBasis": 0.000009, - "fairPrice": 0.433144, - "markMethod": "FairPrice", - "markPrice": 0.433144, - "indicativeSettlePrice": 0.433135, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XRPUSDT", - "rootSymbol": "XRP", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "XRP", - "underlying": "XRP", - "quoteCurrency": "USDT", - "underlyingSymbol": "XRPT=", - "reference": "BMEX", - "referenceSymbol": ".BXRPT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XRPBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".XRPUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000114, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 2.53913, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 211798855000, - "totalVolume": 211805493000, - "volume": 6638000, - "volume24h": 1069298000, - "prevTotalTurnover": 1514119050778000, - "totalTurnover": 1514278179638000, - "turnover": 159128860000, - "turnover24h": 26908683851000, - "homeNotional24h": 10692980, - "foreignNotional24h": 26908683.851000004, - "prevPrice24h": 2.5166, - "vwap": 2.5164814, - "highPrice": 2.6537, - "lowPrice": 2.3569, - "lastPrice": 2.382, - "lastPriceProtected": 2.382, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0535, - "bidPrice": 2.3784, - "midPrice": 2.3794, - "askPrice": 2.3804, - "impactBidPrice": 2.378014, - "impactMidPrice": 2.38, - "impactAskPrice": 2.3820602, - "hasLiquidity": true, - "openInterest": 101220000, - "openValue": 2406535866000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.12483000000000001, - "fairBasis": 0.00003, - "fairPrice": 2.37753, - "markMethod": "FairPrice", - "markPrice": 2.37753, - "indicativeSettlePrice": 2.3775, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XRPUSD", - "rootSymbol": "XRP", - "state": "Open", - "typ": "FFWCSX", - "listing": "2020-02-04T12:00:00.000Z", - "front": "2020-02-04T12:00:00.000Z", - "underlying": "XRP", - "quoteCurrency": "USD", - "underlyingSymbol": "XRP=", - "reference": "BMEX", - "referenceSymbol": ".BXRP", - "maxOrderQty": 100000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 20000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XRPBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".XRPUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001135, - "indicativeFundingRate": 0.000979, - "prevClosePrice": 2.54035, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 22251296213, - "totalVolume": 22251296561, - "volume": 348, - "volume24h": 464683, - "prevTotalTurnover": 165395684464250, - "totalTurnover": 165395701125804, - "turnover": 16661554, - "turnover24h": 23290121682, - "homeNotional24h": 9255301.465772843, - "foreignNotional24h": 23196951.904276293, - "prevPrice24h": 2.5118, - "vwap": 2.50605, - "highPrice": 2.6505, - "lowPrice": 2.3545, - "lastPrice": 2.3831, - "lastPriceProtected": 2.3831, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0512, - "bidPrice": 2.3768, - "midPrice": 2.3785, - "askPrice": 2.3802, - "impactBidPrice": 2.3755, - "impactMidPrice": 2.3781, - "impactAskPrice": 2.38075, - "hasLiquidity": true, - "openInterest": 520314, - "openValue": 24763304202, - "fairMethod": "FundingRate", - "fairBasisRate": 1.2428249999999998, - "fairBasis": 0.0003, - "fairPrice": 2.37965, - "markMethod": "FairPrice", - "markPrice": 2.37965, - "indicativeSettlePrice": 2.37935, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00005, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "CATIUSDT", - "rootSymbol": "CATI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-23T04:00:00.000Z", - "front": "2024-09-23T04:00:00.000Z", - "positionCurrency": "CATI", - "underlying": "CATI", - "quoteCurrency": "USDT", - "underlyingSymbol": "CATIT=", - "reference": "BMEX", - "referenceSymbol": ".BCATIT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".CATIBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".CATIUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.587, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 143200, - "totalVolume": 143200, - "volume": 0, - "volume24h": 10, - "prevTotalTurnover": 79834201000, - "totalTurnover": 79834201000, - "turnover": 0, - "turnover24h": 5831000, - "homeNotional24h": 10, - "foreignNotional24h": 5.831, - "prevPrice24h": 0.6034, - "vwap": 0.5831, - "highPrice": 0.5831, - "lowPrice": 0.5831, - "lastPrice": 0.5831, - "lastPriceProtected": 0.5831, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0336, - "bidPrice": 0.5524, - "midPrice": 0.55375, - "askPrice": 0.5551, - "hasLiquidity": false, - "openInterest": 720, - "openValue": 397872000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.5526, - "markMethod": "FairPrice", - "markPrice": 0.5526, - "indicativeSettlePrice": 0.5526, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BCHUSD", - "rootSymbol": "BCH", - "state": "Open", - "typ": "FFWCSX", - "listing": "2020-06-16T04:00:00.000Z", - "front": "2020-06-16T04:00:00.000Z", - "underlying": "BCH", - "quoteCurrency": "USD", - "underlyingSymbol": "BCH=", - "reference": "BMEX", - "referenceSymbol": ".BBCH", - "maxOrderQty": 100000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.05, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BCHBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".BCHUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001175, - "indicativeFundingRate": 0.000717, - "prevClosePrice": 615.37, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1456592103, - "totalVolume": 1456592137, - "volume": 34, - "volume24h": 27079, - "prevTotalTurnover": 46443204141740, - "totalTurnover": 46443206181635, - "turnover": 2039895, - "turnover24h": 1650192915, - "homeNotional24h": 2690.55133910687, - "foreignNotional24h": 1639749.4502894913, - "prevPrice24h": 615.75, - "vwap": 609.41, - "highPrice": 625, - "lowPrice": 593.55, - "lastPrice": 598.95, - "lastPriceProtected": 598.95, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0273, - "bidPrice": 597.3, - "midPrice": 597.875, - "askPrice": 598.45, - "impactBidPrice": 597.18, - "impactMidPrice": 597.9, - "impactAskPrice": 598.65, - "hasLiquidity": true, - "openInterest": 70870, - "openValue": 4238876440, - "fairMethod": "FundingRate", - "fairBasisRate": 1.2866250000000001, - "fairBasis": 0.07, - "fairPrice": 598.12, - "markMethod": "FairPrice", - "markPrice": 598.12, - "indicativeSettlePrice": 598.05, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "HMSTRUSDT", - "rootSymbol": "HMSTR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-27T04:00:00.000Z", - "front": "2024-09-27T04:00:00.000Z", - "positionCurrency": "HMSTR", - "underlying": "HMSTR", - "quoteCurrency": "USDT", - "underlyingSymbol": "HMSTRT=", - "reference": "BMEX", - "referenceSymbol": ".BHMSTRT", - "maxOrderQty": 1000000000, - "maxPrice": 100, - "lotSize": 10, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".HMSTRBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".HMSTRUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.004338, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 18368750, - "totalVolume": 18368750, - "volume": 0, - "volume24h": 40, - "prevTotalTurnover": 72552381340, - "totalTurnover": 72552381340, - "turnover": 0, - "turnover24h": 177240, - "homeNotional24h": 40, - "foreignNotional24h": 0.17724, - "prevPrice24h": 0.004226, - "vwap": 0.004431, - "highPrice": 0.004431, - "lowPrice": 0.004431, - "lastPrice": 0.004431, - "lastPriceProtected": 0.004431, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.0485, - "bidPrice": 0.004074, - "midPrice": 0.0040875, - "askPrice": 0.004101, - "hasLiquidity": false, - "openInterest": 10, - "openValue": 40870, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.004087, - "markMethod": "FairPrice", - "markPrice": 0.004087, - "indicativeSettlePrice": 0.004087, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XUSDT", - "rootSymbol": "X", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-25T04:00:00.000Z", - "front": "2024-10-25T04:00:00.000Z", - "positionCurrency": "X", - "underlying": "X", - "quoteCurrency": "USDT", - "underlyingSymbol": "XT=", - "reference": "BMEX", - "referenceSymbol": ".BXT", - "maxOrderQty": 1000000000, - "maxPrice": 0.1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".XUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.00026187, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 699149000, - "totalVolume": 699149000, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 38367822560, - "totalTurnover": 38367822560, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 0.00020596, - "lastPrice": 0.00020596, - "lastPriceProtected": 0.00020596, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.0299, - "bidPrice": 0.00027007, - "midPrice": 0.000270435, - "askPrice": 0.0002708, - "hasLiquidity": false, - "openInterest": 2982000, - "openValue": 806839740, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.00027057, - "markMethod": "FairPrice", - "markPrice": 0.00027057, - "indicativeSettlePrice": 0.00027057, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SOLUSDT", - "rootSymbol": "SOL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "SOL", - "underlying": "SOL", - "quoteCurrency": "USDT", - "underlyingSymbol": "SOLT=", - "reference": "BMEX", - "referenceSymbol": ".BSOLT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SOLBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SOLUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000116, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 235.988, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 961521383000, - "totalVolume": 961522118000, - "volume": 735000, - "volume24h": 112067000, - "prevTotalTurnover": 4347382049844000, - "totalTurnover": 4347398758292000, - "turnover": 16708448000, - "turnover24h": 2604417538000, - "homeNotional24h": 11206.7, - "foreignNotional24h": 2604417.5380000006, - "prevPrice24h": 235.14, - "vwap": 232.39826, - "highPrice": 237.95, - "lowPrice": 225.72, - "lastPrice": 226.51, - "lastPriceProtected": 226.51, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0367, - "bidPrice": 226.39, - "midPrice": 226.465, - "askPrice": 226.54, - "impactBidPrice": 226.25835, - "impactMidPrice": 226.43, - "impactAskPrice": 226.60994, - "hasLiquidity": true, - "openInterest": 95345000, - "openValue": 2156761107000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.12702, - "fairBasis": 0.003, - "fairPrice": 226.206, - "markMethod": "FairPrice", - "markPrice": 226.206, - "indicativeSettlePrice": 226.203, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "APUUSDT", - "rootSymbol": "APU", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-11-15T04:00:00.000Z", - "front": "2024-11-15T04:00:00.000Z", - "positionCurrency": "APU", - "underlying": "APU", - "quoteCurrency": "USDT", - "underlyingSymbol": "APUT=", - "reference": "BMEX", - "referenceSymbol": ".BAPUT", - "maxOrderQty": 1000000000, - "maxPrice": 0.1, - "lotSize": 1000, - "tickSize": 0.0000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".APUBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".APUUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.0009579, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 20777000, - "totalVolume": 20777000, - "volume": 0, - "volume24h": 413000, - "prevTotalTurnover": 18093939200, - "totalTurnover": 18093939200, - "turnover": 0, - "turnover24h": 389346600, - "homeNotional24h": 413000, - "foreignNotional24h": 389.34659999999997, - "prevPrice24h": 0.0009028, - "vwap": 0.000942729, - "highPrice": 0.0010284, - "lowPrice": 0.0009052, - "lastPrice": 0.0009098, - "lastPriceProtected": 0.0009098, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.0078, - "bidPrice": 0.000842, - "midPrice": 0.00087715, - "askPrice": 0.0009123, - "impactBidPrice": 0.000011785, - "impactMidPrice": 0.00330815, - "impactAskPrice": 0.006604572, - "hasLiquidity": false, - "openInterest": 3463000, - "openValue": 3033241700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.0008759, - "markMethod": "FairPrice", - "markPrice": 0.0008759, - "indicativeSettlePrice": 0.0008759, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SWELLUSDT", - "rootSymbol": "SWELL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-11-15T04:00:00.000Z", - "front": "2024-11-15T04:00:00.000Z", - "positionCurrency": "SWELL", - "underlying": "SWELL", - "quoteCurrency": "USDT", - "underlyingSymbol": "SWELLT=", - "reference": "BMEX", - "referenceSymbol": ".BSWELLT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 100, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SWELLBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SWELLUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.0471, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 399000, - "totalVolume": 399000, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 15197423000, - "totalTurnover": 15197423000, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 0.04445, - "lastPrice": 0.04445, - "lastPriceProtected": 0.04445, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1417, - "bidPrice": 0.04317, - "midPrice": 0.04335, - "askPrice": 0.04353, - "impactBidPrice": 0.00536865, - "impactMidPrice": 0.11233, - "impactAskPrice": 0.21929596, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.04328, - "markMethod": "FairPrice", - "markPrice": 0.04328, - "indicativeSettlePrice": 0.04328, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "PNUTUSDT", - "rootSymbol": "PNUT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-11-11T12:00:00.000Z", - "front": "2024-11-11T12:00:00.000Z", - "positionCurrency": "PNUT", - "underlying": "PNUT", - "quoteCurrency": "USDT", - "underlyingSymbol": "PNUTT=", - "reference": "BMEX", - "referenceSymbol": ".BPNUTT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".PNUTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".PNUTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.44879, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 327990, - "totalVolume": 328110, - "volume": 120, - "volume24h": 5290, - "prevTotalTurnover": 536764205800, - "totalTurnover": 536917978600, - "turnover": 153772800, - "turnover24h": 7097568100, - "homeNotional24h": 5290, - "foreignNotional24h": 7097.5680999999995, - "prevPrice24h": 1.4425, - "vwap": 1.3416953, - "highPrice": 1.46673, - "lowPrice": 1.26011, - "lastPrice": 1.28144, - "lastPriceProtected": 1.28144, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1117, - "bidPrice": 1.2787, - "midPrice": 1.280745, - "askPrice": 1.28279, - "impactBidPrice": 0.0191461, - "impactMidPrice": 3.179365, - "impactAskPrice": 6.3395872, - "hasLiquidity": false, - "openInterest": 5340, - "openValue": 6817417800, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00001, - "fairPrice": 1.27667, - "markMethod": "FairPrice", - "markPrice": 1.27667, - "indicativeSettlePrice": 1.27666, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "1000000MOGUSDT", - "rootSymbol": "MOG", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-12-05T04:00:00.000Z", - "front": "2024-12-05T04:00:00.000Z", - "positionCurrency": "1000000MOG", - "underlying": "1000000MOG", - "quoteCurrency": "USDT", - "underlyingSymbol": "1000000MOGT=", - "reference": "BMEX", - "referenceSymbol": ".B1000000MOGT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".1000000MOGBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".1000000MOGUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 3.6871, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2433, - "totalVolume": 2433, - "volume": 0, - "volume24h": 26, - "prevTotalTurnover": 8168645200, - "totalTurnover": 8168645200, - "turnover": 0, - "turnover24h": 100000900, - "homeNotional24h": 26, - "foreignNotional24h": 100.0009, - "prevPrice24h": 3.7588, - "vwap": 3.846189, - "highPrice": 3.8474, - "lowPrice": 3.8439, - "lastPrice": 3.8474, - "lastPriceProtected": 3.8474, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0291, - "bidPrice": 3.6485, - "midPrice": 3.6632, - "askPrice": 3.6779, - "hasLiquidity": false, - "openInterest": 28, - "openValue": 102538800, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 3.6621, - "markMethod": "FairPrice", - "markPrice": 3.6621, - "indicativeSettlePrice": 3.6621, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BRETTUSDT", - "rootSymbol": "BRETT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-12-05T04:00:00.000Z", - "front": "2024-12-05T04:00:00.000Z", - "positionCurrency": "BRETT", - "underlying": "BRETT", - "quoteCurrency": "USDT", - "underlyingSymbol": "BRETTT=", - "reference": "BMEX", - "referenceSymbol": ".BBRETTT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BRETTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BRETTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.20801, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2930, - "totalVolume": 2930, - "volume": 0, - "volume24h": 470, - "prevTotalTurnover": 614356300, - "totalTurnover": 614356300, - "turnover": 0, - "turnover24h": 98192900, - "homeNotional24h": 470, - "foreignNotional24h": 98.1929, - "prevPrice24h": 0.20883, - "vwap": 0.2089211, - "highPrice": 0.20905, - "lowPrice": 0.20884, - "lastPrice": 0.20905, - "lastPriceProtected": 0.20905, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0403, - "bidPrice": 0.19578, - "midPrice": 0.201575, - "askPrice": 0.20737, - "hasLiquidity": false, - "openInterest": 2760, - "openValue": 539359200, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.19542, - "markMethod": "FairPrice", - "markPrice": 0.19542, - "indicativeSettlePrice": 0.19542, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BCHUSDT", - "rootSymbol": "BCH", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "BCH", - "underlying": "BCH", - "quoteCurrency": "USDT", - "underlyingSymbol": "BCHT=", - "reference": "BMEX", - "referenceSymbol": ".BBCHT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.05, - "multiplier": 10, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BCHBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BCHUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 615.024, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 182744950000, - "totalVolume": 182745101000, - "volume": 151000, - "volume24h": 116624000, - "prevTotalTurnover": 483189136315000, - "totalTurnover": 483190045763000, - "turnover": 909448000, - "turnover24h": 710144664000, - "homeNotional24h": 1166.2400000000002, - "foreignNotional24h": 710144.664, - "prevPrice24h": 614.9, - "vwap": 608.9182, - "highPrice": 625.45, - "lowPrice": 593.8, - "lastPrice": 599.05, - "lastPriceProtected": 599.05, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0258, - "bidPrice": 597.85, - "midPrice": 598.525, - "askPrice": 599.2, - "impactBidPrice": 597.4012, - "impactMidPrice": 598.3, - "impactAskPrice": 599.2138, - "hasLiquidity": true, - "openInterest": 80900000, - "openValue": 483867754000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.006, - "fairPrice": 598.106, - "markMethod": "FairPrice", - "markPrice": 598.106, - "indicativeSettlePrice": 598.1, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "PUFFERUSDT", - "rootSymbol": "PUFFER", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-15T12:00:00.000Z", - "front": "2024-10-15T12:00:00.000Z", - "positionCurrency": "PUFFER", - "underlying": "PUFFER", - "quoteCurrency": "USDT", - "underlyingSymbol": "PUFFERT=", - "reference": "BMEX", - "referenceSymbol": ".BPUFFERT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".PUFFERBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".PUFFERUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.84313, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 154980, - "totalVolume": 154980, - "volume": 0, - "volume24h": 2560, - "prevTotalTurnover": 78736309000, - "totalTurnover": 78736309000, - "turnover": 0, - "turnover24h": 2039203000, - "homeNotional24h": 2560, - "foreignNotional24h": 2039.203, - "prevPrice24h": 0.8644, - "vwap": 0.7965637, - "highPrice": 0.8174, - "lowPrice": 0.7618, - "lastPrice": 0.7636, - "lastPriceProtected": 0.7636, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.1166, - "bidPrice": 0.756, - "midPrice": 0.7783, - "askPrice": 0.8006, - "impactBidPrice": 0.010351, - "impactMidPrice": 2.2206, - "impactAskPrice": 4.4309371, - "hasLiquidity": false, - "openInterest": 3690, - "openValue": 2785802400, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00001, - "fairPrice": 0.75496, - "markMethod": "FairPrice", - "markPrice": 0.75496, - "indicativeSettlePrice": 0.75495, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MOODENGUSDT", - "rootSymbol": "MOODENG", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-04T04:00:00.000Z", - "front": "2024-10-04T04:00:00.000Z", - "positionCurrency": "MOODENG", - "underlying": "MOODENG", - "quoteCurrency": "USDT", - "underlyingSymbol": "MOODENGT=", - "reference": "BMEX", - "referenceSymbol": ".BMOODENGT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MOODENGBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MOODENGUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.49074, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1738570, - "totalVolume": 1738570, - "volume": 0, - "volume24h": 520, - "prevTotalTurnover": 437264254900, - "totalTurnover": 437264254900, - "turnover": 0, - "turnover24h": 236495900, - "homeNotional24h": 520, - "foreignNotional24h": 236.4959, - "prevPrice24h": 0.50636, - "vwap": 0.4547999, - "highPrice": 0.47641, - "lowPrice": 0.4329, - "lastPrice": 0.4329, - "lastPriceProtected": 0.4329, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1451, - "bidPrice": 0.43473, - "midPrice": 0.435465, - "askPrice": 0.4362, - "impactBidPrice": 0.0041274, - "impactMidPrice": 1.85457, - "impactAskPrice": 3.7050212, - "hasLiquidity": false, - "openInterest": 1550, - "openValue": 672731000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.43402, - "markMethod": "FairPrice", - "markPrice": 0.43402, - "indicativeSettlePrice": 0.43402, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BNBUSD", - "rootSymbol": "BNB", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-09-29T04:00:00.000Z", - "front": "2021-09-29T04:00:00.000Z", - "underlying": "BNB", - "quoteCurrency": "USD", - "underlyingSymbol": "BNB=", - "reference": "BMEX", - "referenceSymbol": ".BBNB", - "maxOrderQty": 1000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BNBBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".BNBUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00033, - "indicativeFundingRate": 0.000651, - "prevClosePrice": 738.63, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 184477014, - "totalVolume": 184477026, - "volume": 12, - "volume24h": 10829, - "prevTotalTurnover": 5950708330347, - "totalTurnover": 5950709193919, - "turnover": 863572, - "turnover24h": 790780625, - "homeNotional24h": 1077.7757775065706, - "foreignNotional24h": 787094.4012842386, - "prevPrice24h": 736.4, - "vwap": 730.25, - "highPrice": 744.72, - "lowPrice": 708.76, - "lastPrice": 719.26, - "lastPriceProtected": 719.26, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.022, - "bidPrice": 718.83, - "midPrice": 719.02, - "askPrice": 719.21, - "impactBidPrice": 718.57, - "impactMidPrice": 719.06, - "impactAskPrice": 719.55, - "hasLiquidity": true, - "openInterest": 76412, - "openValue": 5487298544, - "fairMethod": "FundingRate", - "fairBasisRate": 0.36135, - "fairBasis": 0.02, - "fairPrice": 718.12, - "markMethod": "FairPrice", - "markPrice": 718.12, - "indicativeSettlePrice": 718.1, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "EIGENUSDT", - "rootSymbol": "EIGEN", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-02T12:00:00.000Z", - "front": "2024-10-02T12:00:00.000Z", - "positionCurrency": "EIGEN", - "underlying": "EIGEN", - "quoteCurrency": "USDT", - "underlyingSymbol": "EIGENT=", - "reference": "BMEX", - "referenceSymbol": ".BEIGENT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".EIGENBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".EIGENUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 4.5895, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 20874, - "totalVolume": 20874, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 68747083500, - "totalTurnover": 68747083500, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 4.51, - "vwap": 4.51, - "highPrice": 4.51, - "lowPrice": 4.51, - "lastPrice": 4.51, - "lastPriceProtected": 4.51, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0633, - "bidPrice": 4.5828, - "midPrice": 4.63105, - "askPrice": 4.6793, - "hasLiquidity": false, - "openInterest": 845, - "openValue": 3867311500, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 4.5767, - "markMethod": "FairPrice", - "markPrice": 4.5767, - "indicativeSettlePrice": 4.5767, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BNBUSDT", - "rootSymbol": "BNB", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-12-15T04:00:00.000Z", - "front": "2021-12-15T04:00:00.000Z", - "positionCurrency": "BNB", - "underlying": "BNB", - "quoteCurrency": "USDT", - "underlyingSymbol": "BNBT=", - "reference": "BMEX", - "referenceSymbol": ".BBNBT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BNBBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BNBUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 738.249, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 3111538700, - "totalVolume": 3111538700, - "volume": 0, - "volume24h": 2870600, - "prevTotalTurnover": 108800684646700, - "totalTurnover": 108800684646700, - "turnover": 0, - "turnover24h": 207370029300, - "homeNotional24h": 287.06, - "foreignNotional24h": 207370.0293, - "prevPrice24h": 736.48, - "vwap": 722.3927, - "highPrice": 738.8, - "lowPrice": 709.96, - "lastPrice": 709.96, - "lastPriceProtected": 709.96, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0414, - "bidPrice": 717.86, - "midPrice": 718.93, - "askPrice": 720, - "impactBidPrice": 717.8526, - "impactMidPrice": 718.925, - "impactAskPrice": 720, - "hasLiquidity": true, - "openInterest": 3958100, - "openValue": 284283407920, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.007, - "fairPrice": 718.232, - "markMethod": "FairPrice", - "markPrice": 718.232, - "indicativeSettlePrice": 718.225, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SUNDOGUSDT", - "rootSymbol": "SUNDOG", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-08-23T04:00:00.000Z", - "front": "2024-08-23T04:00:00.000Z", - "positionCurrency": "SUNDOG", - "underlying": "SUNDOG", - "quoteCurrency": "USDT", - "underlyingSymbol": "SUNDOGT=", - "reference": "BMEX", - "referenceSymbol": ".BSUNDOGT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SUNDOGBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SUNDOGUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.18795, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 531830, - "totalVolume": 531830, - "volume": 0, - "volume24h": 50, - "prevTotalTurnover": 110244394100, - "totalTurnover": 110244394100, - "turnover": 0, - "turnover24h": 9231500, - "homeNotional24h": 50, - "foreignNotional24h": 9.2315, - "prevPrice24h": 0.19676, - "vwap": 0.18463, - "highPrice": 0.18463, - "lowPrice": 0.18463, - "lastPrice": 0.18463, - "lastPriceProtected": 0.18463, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0616, - "bidPrice": 0.17097, - "midPrice": 0.18057, - "askPrice": 0.19017, - "hasLiquidity": false, - "openInterest": 14190, - "openValue": 2399812800, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.16912, - "markMethod": "FairPrice", - "markPrice": 0.16912, - "indicativeSettlePrice": 0.16912, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SCRUSDT", - "rootSymbol": "SCR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-22T12:00:00.000Z", - "front": "2024-10-22T12:00:00.000Z", - "positionCurrency": "SCR", - "underlying": "SCR", - "quoteCurrency": "USDT", - "underlyingSymbol": "SCRT=", - "reference": "BMEX", - "referenceSymbol": ".BSCRT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SCRBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SCRUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.01882, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 17984, - "totalVolume": 17984, - "volume": 0, - "volume24h": 127, - "prevTotalTurnover": 15815565700, - "totalTurnover": 15815565700, - "turnover": 0, - "turnover24h": 131779600, - "homeNotional24h": 127, - "foreignNotional24h": 131.7796, - "prevPrice24h": 1.0314, - "vwap": 1.037635, - "highPrice": 1.0401, - "lowPrice": 1.037, - "lastPrice": 1.0401, - "lastPriceProtected": 1.0401, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.0084, - "bidPrice": 0.9492, - "midPrice": 0.95115, - "askPrice": 0.9531, - "hasLiquidity": false, - "openInterest": 254, - "openValue": 240825020, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00001, - "fairPrice": 0.94813, - "markMethod": "FairPrice", - "markPrice": 0.94813, - "indicativeSettlePrice": 0.94812, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "LINKUSD", - "rootSymbol": "LINK", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-10-20T04:00:00.000Z", - "front": "2021-10-20T04:00:00.000Z", - "underlying": "LINK", - "quoteCurrency": "USD", - "underlyingSymbol": "LINK=", - "reference": "BMEX", - "referenceSymbol": ".BLINK", - "maxOrderQty": 1000000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LINKBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".LINKUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000869, - "indicativeFundingRate": 0.000953, - "prevClosePrice": 26.613, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 702587919, - "totalVolume": 702588678, - "volume": 759, - "volume24h": 132863, - "prevTotalTurnover": 7127562257211, - "totalTurnover": 7127581194496, - "turnover": 18937285, - "turnover24h": 3497102855, - "homeNotional24h": 132269.34298550707, - "foreignNotional24h": 3481663.575309046, - "prevPrice24h": 25.952, - "vwap": 26.322, - "highPrice": 27.429, - "lowPrice": 24.875, - "lastPrice": 24.85, - "lastPriceProtected": 24.85, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0425, - "bidPrice": 24.818, - "midPrice": 24.8465, - "askPrice": 24.875, - "impactBidPrice": 24.802, - "impactMidPrice": 24.8395, - "impactAskPrice": 24.877, - "hasLiquidity": true, - "openInterest": 282807, - "openValue": 7015593249, - "fairMethod": "FundingRate", - "fairBasisRate": 0.9515549999999999, - "fairBasis": 0.002, - "fairPrice": 24.807, - "markMethod": "FairPrice", - "markPrice": 24.807, - "indicativeSettlePrice": 24.805, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "LINKUSDT", - "rootSymbol": "LINK", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-10-03T04:00:00.000Z", - "front": "2023-10-03T04:00:00.000Z", - "positionCurrency": "LINK", - "underlying": "LINK", - "quoteCurrency": "USDT", - "underlyingSymbol": "LINKT=", - "reference": "BMEX", - "referenceSymbol": ".BLINKT", - "maxOrderQty": 1000000000, - "maxPrice": 100000, - "lotSize": 1000, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LINKBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".LINKUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00056, - "indicativeFundingRate": 0.00048, - "prevClosePrice": 26.5989, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 9278628000, - "totalVolume": 9278992000, - "volume": 364000, - "volume24h": 70439000, - "prevTotalTurnover": 142875556256800, - "totalTurnover": 142884651439800, - "turnover": 9095183000, - "turnover24h": 1849865400000, - "homeNotional24h": 70439, - "foreignNotional24h": 1849865.4, - "prevPrice24h": 25.873, - "vwap": 26.26195, - "highPrice": 27.416, - "lowPrice": 24.887, - "lastPrice": 24.894, - "lastPriceProtected": 24.894, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0378, - "bidPrice": 24.79, - "midPrice": 24.8245, - "askPrice": 24.859, - "impactBidPrice": 24.78128, - "impactMidPrice": 24.8215, - "impactAskPrice": 24.861885, - "hasLiquidity": true, - "openInterest": 19499000, - "openValue": 483783839300, - "fairMethod": "FundingRate", - "fairBasisRate": 0.6132, - "fairBasis": 0.0014, - "fairPrice": 24.8107, - "markMethod": "FairPrice", - "markPrice": 24.8107, - "indicativeSettlePrice": 24.8093, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ACTUSDT", - "rootSymbol": "ACT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-11-11T12:00:00.000Z", - "front": "2024-11-11T12:00:00.000Z", - "positionCurrency": "ACT", - "underlying": "ACT", - "quoteCurrency": "USDT", - "underlyingSymbol": "ACTT=", - "reference": "BMEX", - "referenceSymbol": ".BACTT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ACTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ACTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.60983, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 414180, - "totalVolume": 414180, - "volume": 0, - "volume24h": 2510, - "prevTotalTurnover": 278663508400, - "totalTurnover": 278663508400, - "turnover": 0, - "turnover24h": 1385674500, - "homeNotional24h": 2510, - "foreignNotional24h": 1385.6744999999999, - "prevPrice24h": 0.63981, - "vwap": 0.5520616, - "highPrice": 0.565, - "lowPrice": 0.53247, - "lastPrice": 0.53416, - "lastPriceProtected": 0.53416, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.1651, - "bidPrice": 0.53552, - "midPrice": 0.54382, - "askPrice": 0.55212, - "impactBidPrice": 0.0504735, - "impactMidPrice": 1.07507, - "impactAskPrice": 2.0996749, - "hasLiquidity": false, - "openInterest": 2190, - "openValue": 1171934700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00001, - "fairPrice": 0.53513, - "markMethod": "FairPrice", - "markPrice": 0.53513, - "indicativeSettlePrice": 0.53512, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "FLOKIUSDT", - "rootSymbol": "FLOKI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-16T12:00:00.000Z", - "front": "2024-09-16T12:00:00.000Z", - "positionCurrency": "FLOKI", - "underlying": "FLOKI", - "quoteCurrency": "USDT", - "underlyingSymbol": "FLOKIT=", - "reference": "BMEX", - "referenceSymbol": ".BFLOKIT", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 10000, - "tickSize": 0.00000001, - "multiplier": 100000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".FLOKIBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".FLOKIUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.00025539, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 31995060000, - "totalVolume": 32004620000, - "volume": 9560000, - "volume24h": 829180000, - "prevTotalTurnover": 591876117280, - "totalTurnover": 592122426800, - "turnover": 246309520, - "turnover24h": 21692142430, - "homeNotional24h": 82918000, - "foreignNotional24h": 21692.14243, - "prevPrice24h": 0.0002532, - "vwap": 0.00026161, - "highPrice": 0.00027464, - "lowPrice": 0.00025173, - "lastPrice": 0.00025685, - "lastPriceProtected": 0.00025685, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0144, - "bidPrice": 0.00025502, - "midPrice": 0.000255965, - "askPrice": 0.00025691, - "impactBidPrice": 0.000011023, - "impactMidPrice": 0.00014955, - "impactAskPrice": 0.000288085, - "hasLiquidity": false, - "openInterest": 260040000, - "openValue": 6623998920, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.00025473, - "markMethod": "FairPrice", - "markPrice": 0.00025473, - "indicativeSettlePrice": 0.00025473, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "CATUSDT", - "rootSymbol": "CAT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-16T12:00:00.000Z", - "front": "2024-09-16T12:00:00.000Z", - "positionCurrency": "CAT", - "underlying": "CAT", - "quoteCurrency": "USDT", - "underlyingSymbol": "CATT=", - "reference": "BMEX", - "referenceSymbol": ".BCATT", - "maxOrderQty": 1000000000, - "maxPrice": 0.1, - "lotSize": 10000, - "tickSize": 0.000000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".CATBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".CATUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.000054252, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2626810000, - "totalVolume": 2626810000, - "volume": 0, - "volume24h": 3700000, - "prevTotalTurnover": 85988188750, - "totalTurnover": 85988188750, - "turnover": 0, - "turnover24h": 197105160, - "homeNotional24h": 3700000, - "foreignNotional24h": 197.10516, - "prevPrice24h": 0.000050114, - "vwap": 0.0000532717, - "highPrice": 0.000056137, - "lowPrice": 0.00005098, - "lastPrice": 0.00005098, - "lastPriceProtected": 0.00005098, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0173, - "bidPrice": 0.000049446, - "midPrice": 0.000049605, - "askPrice": 0.000049764, - "impactBidPrice": 0.0000461035, - "impactMidPrice": 0.0000493655, - "impactAskPrice": 0.000052628, - "hasLiquidity": false, - "openInterest": 71430000, - "openValue": 3538499340, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.000000001, - "fairPrice": 0.000049538, - "markMethod": "FairPrice", - "markPrice": 0.000049538, - "indicativeSettlePrice": 0.000049537, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "GRASSUSDT", - "rootSymbol": "GRASS", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-29T04:00:00.000Z", - "front": "2024-10-29T04:00:00.000Z", - "positionCurrency": "GRASS", - "underlying": "GRASS", - "quoteCurrency": "USDT", - "underlyingSymbol": "GRASST=", - "reference": "BMEX", - "referenceSymbol": ".BGRASST", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".GRASSBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".GRASSUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 2.9823, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 190968, - "totalVolume": 190968, - "volume": 0, - "volume24h": 111, - "prevTotalTurnover": 477434690100, - "totalTurnover": 477434690100, - "turnover": 0, - "turnover24h": 312526100, - "homeNotional24h": 111, - "foreignNotional24h": 312.5261, - "prevPrice24h": 2.9268, - "vwap": 2.815551, - "highPrice": 2.8236, - "lowPrice": 2.7111, - "lastPrice": 2.7111, - "lastPriceProtected": 2.7111, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0737, - "bidPrice": 2.7051, - "midPrice": 2.71385, - "askPrice": 2.7226, - "impactBidPrice": 0.173042, - "impactMidPrice": 5.2754, - "impactAskPrice": 10.377778, - "hasLiquidity": false, - "openInterest": 138, - "openValue": 374518200, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 2.7139, - "markMethod": "FairPrice", - "markPrice": 2.7139, - "indicativeSettlePrice": 2.7139, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DOGSUSDT", - "rootSymbol": "DOGS", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-08-27T04:00:00.000Z", - "front": "2024-08-27T04:00:00.000Z", - "positionCurrency": "DOGS", - "underlying": "DOGS", - "quoteCurrency": "USDT", - "underlyingSymbol": "DOGST=", - "reference": "BMEX", - "referenceSymbol": ".BDOGST", - "maxOrderQty": 1000000000, - "maxPrice": 10, - "lotSize": 1000, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DOGSBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".DOGSUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.00085, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 258181000, - "totalVolume": 258181000, - "volume": 0, - "volume24h": 2943000, - "prevTotalTurnover": 214748544000, - "totalTurnover": 214748544000, - "turnover": 0, - "turnover24h": 2509051000, - "homeNotional24h": 2943000, - "foreignNotional24h": 2509.0509999999995, - "prevPrice24h": 0.000896, - "vwap": 0.00085255, - "highPrice": 0.000868, - "lowPrice": 0.00083, - "lastPrice": 0.000833, - "lastPriceProtected": 0.000833, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0703, - "bidPrice": 0.000853, - "midPrice": 0.0008555, - "askPrice": 0.000858, - "hasLiquidity": false, - "openInterest": 4511000, - "openValue": 3856905000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.000855, - "markMethod": "FairPrice", - "markPrice": 0.000855, - "indicativeSettlePrice": 0.000855, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "GOATUSDT", - "rootSymbol": "GOAT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-18T12:00:00.000Z", - "front": "2024-10-18T12:00:00.000Z", - "positionCurrency": "GOAT", - "underlying": "GOAT", - "quoteCurrency": "USDT", - "underlyingSymbol": "GOATT=", - "reference": "BMEX", - "referenceSymbol": ".BGOATT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".GOATBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".GOATUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.75219, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1680240, - "totalVolume": 1680240, - "volume": 0, - "volume24h": 8120, - "prevTotalTurnover": 1292332474600, - "totalTurnover": 1292332474600, - "turnover": 0, - "turnover24h": 5880414600, - "homeNotional24h": 8120, - "foreignNotional24h": 5880.4146, - "prevPrice24h": 0.73687, - "vwap": 0.7241891, - "highPrice": 0.7575, - "lowPrice": 0.6851, - "lastPrice": 0.6851, - "lastPriceProtected": 0.6851, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0703, - "bidPrice": 0.67782, - "midPrice": 0.68732, - "askPrice": 0.69682, - "impactBidPrice": 0.0673805, - "impactMidPrice": 1.11052, - "impactAskPrice": 2.1536632, - "hasLiquidity": false, - "openInterest": 17520, - "openValue": 11892576000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00001, - "fairPrice": 0.6788, - "markMethod": "FairPrice", - "markPrice": 0.6788, - "indicativeSettlePrice": 0.67879, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "CHILLGUYUSDT", - "rootSymbol": "CHILLGUY", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-11-22T04:00:00.000Z", - "front": "2024-11-22T04:00:00.000Z", - "positionCurrency": "CHILLGUY", - "underlying": "CHILLGUY", - "quoteCurrency": "USDT", - "underlyingSymbol": "CHILLGUYT=", - "reference": "BMEX", - "referenceSymbol": ".BCHILLGUYT", - "maxOrderQty": 1000000000, - "maxPrice": 100, - "lotSize": 10, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".CHILLGUYBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".CHILLGUYUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.000439, - "prevClosePrice": 0.44261, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 297070, - "totalVolume": 297070, - "volume": 0, - "volume24h": 640, - "prevTotalTurnover": 132495131280, - "totalTurnover": 132495131280, - "turnover": 0, - "turnover24h": 261514300, - "homeNotional24h": 640, - "foreignNotional24h": 261.5143, - "prevPrice24h": 0.475202, - "vwap": 0.4086162, - "highPrice": 0.442, - "lowPrice": 0.389829, - "lastPrice": 0.389829, - "lastPriceProtected": 0.389829, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0787, - "bidPrice": 0.388839, - "midPrice": 0.4049925, - "askPrice": 0.421146, - "impactBidPrice": 0.0418492, - "impactMidPrice": 0.3486415, - "impactAskPrice": 0.6554343, - "hasLiquidity": false, - "openInterest": 29310, - "openValue": 11431310340, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.000004, - "fairPrice": 0.390014, - "markMethod": "FairPrice", - "markPrice": 0.390014, - "indicativeSettlePrice": 0.39001, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MAJORUSDT", - "rootSymbol": "MAJOR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-11-29T04:00:00.000Z", - "front": "2024-11-29T04:00:00.000Z", - "positionCurrency": "MAJOR", - "underlying": "MAJOR", - "quoteCurrency": "USDT", - "underlyingSymbol": "MAJORT=", - "reference": "BMEX", - "referenceSymbol": ".BMAJORT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MAJORBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MAJORUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.1366, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 8743, - "totalVolume": 8743, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 10123796900, - "totalTurnover": 10123796900, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 1.0863, - "lastPrice": 1.0863, - "lastPriceProtected": 1.0863, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0101, - "bidPrice": 1.0985, - "midPrice": 1.1248, - "askPrice": 1.1511, - "impactBidPrice": 0.943469, - "impactMidPrice": 1.1422, - "impactAskPrice": 1.340993, - "hasLiquidity": false, - "openInterest": 1822, - "openValue": 1997458600, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 1.0963, - "markMethod": "FairPrice", - "markPrice": 1.0963, - "indicativeSettlePrice": 1.0963, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DBRUSDT", - "rootSymbol": "DBR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-10-17T12:00:00.000Z", - "front": "2024-10-17T12:00:00.000Z", - "positionCurrency": "DBR", - "underlying": "DBR", - "quoteCurrency": "USDT", - "underlyingSymbol": "DBRT=", - "reference": "BMEX", - "referenceSymbol": ".BDBRT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 100, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DBRBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".DBRUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.02895, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 273700, - "totalVolume": 273700, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 6804893000, - "totalTurnover": 6804893000, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 0.02886, - "lastPrice": 0.02886, - "lastPriceProtected": 0.02886, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0781, - "bidPrice": 0.02809, - "midPrice": 0.028125, - "askPrice": 0.02816, - "impactBidPrice": 0.0075622, - "impactMidPrice": 0.075785, - "impactAskPrice": 0.14401681, - "hasLiquidity": false, - "openInterest": 9700, - "openValue": 272279000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.02807, - "markMethod": "FairPrice", - "markPrice": 0.02807, - "indicativeSettlePrice": 0.02807, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DOTUSDT", - "rootSymbol": "DOT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-01-12T04:00:00.000Z", - "front": "2022-01-12T04:00:00.000Z", - "positionCurrency": "DOT", - "underlying": "DOT", - "quoteCurrency": "USDT", - "underlyingSymbol": "DOTT=", - "reference": "BMEX", - "referenceSymbol": ".BDOTT", - "maxOrderQty": 1000000000, - "maxPrice": 100000, - "lotSize": 1000, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DOTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".DOTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 10.4569, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 11229485000, - "totalVolume": 11229577000, - "volume": 92000, - "volume24h": 35535000, - "prevTotalTurnover": 96651110363000, - "totalTurnover": 96651998071000, - "turnover": 887708000, - "turnover24h": 357112361000, - "homeNotional24h": 35535, - "foreignNotional24h": 357112.36100000003, - "prevPrice24h": 10.286, - "vwap": 10.049596, - "highPrice": 10.552, - "lowPrice": 9.478, - "lastPrice": 9.649, - "lastPriceProtected": 9.649, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0619, - "bidPrice": 9.559, - "midPrice": 9.574, - "askPrice": 9.589, - "impactBidPrice": 9.554993, - "impactMidPrice": 9.574, - "impactAskPrice": 9.593326, - "hasLiquidity": true, - "openInterest": 52559000, - "openValue": 502353666100, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.0001, - "fairPrice": 9.5579, - "markMethod": "FairPrice", - "markPrice": 9.5579, - "indicativeSettlePrice": 9.5578, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "APEUSDT", - "rootSymbol": "APE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-03-22T04:00:00.000Z", - "front": "2022-03-22T04:00:00.000Z", - "positionCurrency": "APE", - "underlying": "APE", - "quoteCurrency": "USDT", - "underlyingSymbol": "APET=", - "reference": "BMEX", - "referenceSymbol": ".BAPET", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".APEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".APEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.8389, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 109087617000, - "totalVolume": 109087617000, - "volume": 0, - "volume24h": 71011000, - "prevTotalTurnover": 358703540914000, - "totalTurnover": 358703540914000, - "turnover": 0, - "turnover24h": 124246775100, - "homeNotional24h": 71011, - "foreignNotional24h": 124246.77510000001, - "prevPrice24h": 1.837, - "vwap": 1.749684, - "highPrice": 1.8728, - "lowPrice": 1.6739, - "lastPrice": 1.686, - "lastPriceProtected": 1.686, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0685, - "bidPrice": 1.6698, - "midPrice": 1.67465, - "askPrice": 1.6795, - "impactBidPrice": 1.669629, - "impactMidPrice": 1.67455, - "impactAskPrice": 1.6795, - "hasLiquidity": true, - "openInterest": 93985000, - "openValue": 157030138000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 1.6708, - "markMethod": "FairPrice", - "markPrice": 1.6708, - "indicativeSettlePrice": 1.6708, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SHIBUSDT", - "rootSymbol": "SHIB", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-08-30T04:00:00.000Z", - "front": "2023-08-30T04:00:00.000Z", - "positionCurrency": "SHIB", - "underlying": "SHIB", - "quoteCurrency": "USDT", - "underlyingSymbol": "SHIBT=", - "reference": "BMEX", - "referenceSymbol": ".BSHIBT", - "maxOrderQty": 100000000000, - "maxPrice": 0.1, - "lotSize": 10000, - "tickSize": 0.000000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SHIBBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SHIBUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000932, - "indicativeFundingRate": 0.000542, - "prevClosePrice": 0.000032133, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 723120530000, - "totalVolume": 723129110000, - "volume": 8580000, - "volume24h": 4652270000, - "prevTotalTurnover": 15439201961230, - "totalTurnover": 15439459652950, - "turnover": 257691720, - "turnover24h": 145486253380, - "homeNotional24h": 4652270000, - "foreignNotional24h": 145486.25338000004, - "prevPrice24h": 0.000031643, - "vwap": 0.0000312722, - "highPrice": 0.000032484, - "lowPrice": 0.000029525, - "lastPrice": 0.00002997, - "lastPriceProtected": 0.00002997, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0519, - "bidPrice": 0.000029929, - "midPrice": 0.0000299615, - "askPrice": 0.000029994, - "impactBidPrice": 0.0000290549, - "impactMidPrice": 0.0000299365, - "impactAskPrice": 0.0000308189, - "hasLiquidity": false, - "openInterest": 26702270000, - "openValue": 801014695460, - "fairMethod": "FundingRate", - "fairBasisRate": 1.02054, - "fairBasis": 0.000000003, - "fairPrice": 0.000029998, - "markMethod": "FairPrice", - "markPrice": 0.000029998, - "indicativeSettlePrice": 0.000029995, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SUIUSD", - "rootSymbol": "SUI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-05-03T12:00:00.000Z", - "front": "2023-05-03T12:00:00.000Z", - "underlying": "SUI", - "quoteCurrency": "USD", - "underlyingSymbol": "SUI=", - "reference": "BMEX", - "referenceSymbol": ".BSUI", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SUIBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".SUIUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000995, - "indicativeFundingRate": 0.001178, - "prevClosePrice": 4.205, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2089956222, - "totalVolume": 2089961960, - "volume": 5738, - "volume24h": 1041328, - "prevTotalTurnover": 1995498341770, - "totalTurnover": 1995521121276, - "turnover": 22779506, - "turnover24h": 4314849463, - "homeNotional24h": 1034969.5738355647, - "foreignNotional24h": 4288792.957279538, - "prevPrice24h": 4.179, - "vwap": 4.144, - "highPrice": 4.275, - "lowPrice": 3.958, - "lastPrice": 3.958, - "lastPriceProtected": 3.958, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0529, - "bidPrice": 3.954, - "midPrice": 3.956, - "askPrice": 3.958, - "impactBidPrice": 3.954, - "impactMidPrice": 3.958, - "impactAskPrice": 3.962, - "hasLiquidity": true, - "openInterest": 1114007, - "openValue": 4404783678, - "fairMethod": "FundingRate", - "fairBasisRate": 1.089525, - "fairBasis": 0, - "fairPrice": 3.954, - "markMethod": "FairPrice", - "markPrice": 3.954, - "indicativeSettlePrice": 3.954, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "NEARUSDT", - "rootSymbol": "NEAR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-07T04:00:00.000Z", - "front": "2023-11-07T04:00:00.000Z", - "positionCurrency": "NEAR", - "underlying": "NEAR", - "quoteCurrency": "USDT", - "underlyingSymbol": "NEART=", - "reference": "BMEX", - "referenceSymbol": ".BNEART", - "maxOrderQty": 1000000000, - "maxPrice": 100000, - "lotSize": 1000, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".NEARBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".NEARUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 7.604, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 4262666000, - "totalVolume": 4262801000, - "volume": 135000, - "volume24h": 20545000, - "prevTotalTurnover": 22300188819000, - "totalTurnover": 22301164379000, - "turnover": 975560000, - "turnover24h": 153065099000, - "homeNotional24h": 20545, - "foreignNotional24h": 153065.09900000002, - "prevPrice24h": 7.506, - "vwap": 7.450237, - "highPrice": 7.873, - "lowPrice": 7.131, - "lastPrice": 7.193, - "lastPriceProtected": 7.193, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0417, - "bidPrice": 7.176, - "midPrice": 7.1945, - "askPrice": 7.213, - "impactBidPrice": 0.068627, - "impactMidPrice": 3.7205, - "impactAskPrice": 7.373342, - "hasLiquidity": false, - "openInterest": 58013000, - "openValue": 415663145000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 7.165, - "markMethod": "FairPrice", - "markPrice": 7.165, - "indicativeSettlePrice": 7.165, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "POLUSDT", - "rootSymbol": "POL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-05T04:00:00.000Z", - "front": "2024-09-05T04:00:00.000Z", - "positionCurrency": "POL", - "underlying": "POL", - "quoteCurrency": "USDT", - "underlyingSymbol": "POLT=", - "reference": "BMEX", - "referenceSymbol": ".BPOLT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".POLBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".POLUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001019, - "indicativeFundingRate": 0.001207, - "prevClosePrice": 0.6936, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 619390000, - "totalVolume": 619400000, - "volume": 10000, - "volume24h": 8039000, - "prevTotalTurnover": 3077467068000, - "totalTurnover": 3077531198000, - "turnover": 64130000, - "turnover24h": 54975467000, - "homeNotional24h": 80390, - "foreignNotional24h": 54975.467000000026, - "prevPrice24h": 0.6907, - "vwap": 0.6838596, - "highPrice": 0.7044, - "lowPrice": 0.6352, - "lastPrice": 0.638, - "lastPriceProtected": 0.638, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0763, - "bidPrice": 0.6366, - "midPrice": 0.63705, - "askPrice": 0.6375, - "impactBidPrice": 0.595102, - "impactMidPrice": 0.7325, - "impactAskPrice": 0.8699345, - "hasLiquidity": false, - "openInterest": 23480000, - "openValue": 149731960000, - "fairMethod": "FundingRate", - "fairBasisRate": 1.115805, - "fairBasis": 0.0001, - "fairPrice": 0.6377, - "markMethod": "FairPrice", - "markPrice": 0.6377, - "indicativeSettlePrice": 0.6376, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "TRXUSDT", - "rootSymbol": "TRX", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-07T04:00:00.000Z", - "front": "2023-11-07T04:00:00.000Z", - "positionCurrency": "TRX", - "underlying": "TRX", - "quoteCurrency": "USDT", - "underlyingSymbol": "TRXT=", - "reference": "BMEX", - "referenceSymbol": ".BTRXT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 100000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".TRXBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".TRXUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.313513, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 184460000, - "totalVolume": 184460000, - "volume": 0, - "volume24h": 1788000, - "prevTotalTurnover": 2715447723000, - "totalTurnover": 2715447723000, - "turnover": 0, - "turnover24h": 56047779000, - "homeNotional24h": 178800, - "foreignNotional24h": 56047.778999999995, - "prevPrice24h": 0.30953, - "vwap": 0.31346633, - "highPrice": 0.32172, - "lowPrice": 0.29219, - "lastPrice": 0.2992, - "lastPriceProtected": 0.2992, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0334, - "bidPrice": 0.29794, - "midPrice": 0.298345, - "askPrice": 0.29875, - "impactBidPrice": 0.27978185, - "impactMidPrice": 0.299355, - "impactAskPrice": 0.31893666, - "hasLiquidity": false, - "openInterest": 3844000, - "openValue": 114462019200, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.000003, - "fairPrice": 0.297768, - "markMethod": "FairPrice", - "markPrice": 0.297768, - "indicativeSettlePrice": 0.297765, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SUIUSDT", - "rootSymbol": "SUI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-05-03T12:00:00.000Z", - "front": "2023-05-03T12:00:00.000Z", - "positionCurrency": "SUI", - "underlying": "SUI", - "quoteCurrency": "USDT", - "underlyingSymbol": "SUIT=", - "reference": "BMEX", - "referenceSymbol": ".BSUIT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 100, - "tickSize": 0.0001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SUIBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SUIUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 4.2032, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 176676003300, - "totalVolume": 176680909800, - "volume": 4906500, - "volume24h": 363987800, - "prevTotalTurnover": 228227839652700, - "totalTurnover": 228247292913890, - "turnover": 19453261190, - "turnover24h": 1506584501860, - "homeNotional24h": 363987.79999999993, - "foreignNotional24h": 1506584.5018599993, - "prevPrice24h": 4.1692, - "vwap": 4.13912, - "highPrice": 4.2741, - "lowPrice": 3.9569, - "lastPrice": 3.9596, - "lastPriceProtected": 3.9596, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0503, - "bidPrice": 3.9577, - "midPrice": 3.9604, - "askPrice": 3.9631, - "impactBidPrice": 3.95478, - "impactMidPrice": 3.95995, - "impactAskPrice": 3.96519, - "hasLiquidity": true, - "openInterest": 136484100, - "openValue": 539685428220, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 3.9542, - "markMethod": "FairPrice", - "markPrice": 3.9542, - "indicativeSettlePrice": 3.9542, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SHIBUSD", - "rootSymbol": "SHIB", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-08-30T04:00:00.000Z", - "front": "2023-08-30T04:00:00.000Z", - "underlying": "SHIB", - "quoteCurrency": "USD", - "underlyingSymbol": "SHIB=", - "reference": "BMEX", - "referenceSymbol": ".BSHIB", - "maxOrderQty": 50000000, - "maxPrice": 0.1, - "lotSize": 1, - "tickSize": 0.000000001, - "multiplier": 1000000000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SHIBBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".SHIBUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001235, - "indicativeFundingRate": 0.001337, - "prevClosePrice": 0.00003215, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1988229, - "totalVolume": 1988229, - "volume": 0, - "volume24h": 3238, - "prevTotalTurnover": 35879776068, - "totalTurnover": 35879776068, - "turnover": 0, - "turnover24h": 99916949, - "homeNotional24h": 3212799285.485344, - "foreignNotional24h": 99153.69996399146, - "prevPrice24h": 0.000031461, - "vwap": 0.000030858, - "highPrice": 0.000032571, - "lowPrice": 0.000029746, - "lastPrice": 0.00003016, - "lastPriceProtected": 0.00003016, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0414, - "bidPrice": 0.000030014, - "midPrice": 0.000030152, - "askPrice": 0.00003029, - "impactBidPrice": 0.000029384, - "impactMidPrice": 0.000029899, - "impactAskPrice": 0.000030414, - "hasLiquidity": false, - "openInterest": 25867, - "openValue": 775854798, - "fairMethod": "FundingRate", - "fairBasisRate": 1.352325, - "fairBasis": 0.000000004, - "fairPrice": 0.000029994, - "markMethod": "FairPrice", - "markPrice": 0.000029994, - "indicativeSettlePrice": 0.00002999, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "TIAUSDT", - "rootSymbol": "TIA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-01T04:00:00.000Z", - "front": "2023-11-01T04:00:00.000Z", - "positionCurrency": "TIA", - "underlying": "TIA", - "quoteCurrency": "USDT", - "underlyingSymbol": "TIAT=", - "reference": "BMEX", - "referenceSymbol": ".BTIAT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".TIABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".TIAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000924, - "indicativeFundingRate": 0.000479, - "prevClosePrice": 8.2976, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1674016, - "totalVolume": 1674016, - "volume": 0, - "volume24h": 2937, - "prevTotalTurnover": 11967013795600, - "totalTurnover": 11967013795600, - "turnover": 0, - "turnover24h": 22996775500, - "homeNotional24h": 2937, - "foreignNotional24h": 22996.775500000003, - "prevPrice24h": 8.2855, - "vwap": 7.830023, - "highPrice": 8.4118, - "lowPrice": 7.5107, - "lastPrice": 7.7877, - "lastPriceProtected": 7.7877, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0601, - "bidPrice": 7.6989, - "midPrice": 7.70605, - "askPrice": 7.7132, - "impactBidPrice": 6.758808, - "impactMidPrice": 7.69315, - "impactAskPrice": 8.627536, - "hasLiquidity": false, - "openInterest": 16055, - "openValue": 123795288500, - "fairMethod": "FundingRate", - "fairBasisRate": 1.0117800000000001, - "fairBasis": 0.0007, - "fairPrice": 7.7107, - "markMethod": "FairPrice", - "markPrice": 7.7107, - "indicativeSettlePrice": 7.71, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "EOSUSD", - "rootSymbol": "EOS", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-10-20T04:00:00.000Z", - "front": "2021-10-20T04:00:00.000Z", - "underlying": "EOS", - "quoteCurrency": "USD", - "underlyingSymbol": "EOS=", - "reference": "BMEX", - "referenceSymbol": ".BEOS", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".EOSBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".EOSUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000646, - "indicativeFundingRate": 0.000973, - "prevClosePrice": 1.3153, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 40717685, - "totalVolume": 40717685, - "volume": 0, - "volume24h": 27502, - "prevTotalTurnover": 612091438293, - "totalTurnover": 612091438293, - "turnover": 0, - "turnover24h": 335713645, - "homeNotional24h": 272500.1822004705, - "foreignNotional24h": 332643.2408540754, - "prevPrice24h": 1.2897, - "vwap": 1.2208, - "highPrice": 1.3229, - "lowPrice": 1.1876, - "lastPrice": 1.1876, - "lastPriceProtected": 1.1876, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.09, - "bidPrice": 1.1974, - "midPrice": 1.2017, - "askPrice": 1.206, - "impactBidPrice": 1.191, - "impactMidPrice": 1.2005, - "impactAskPrice": 1.21, - "hasLiquidity": false, - "openInterest": 58213, - "openValue": 699778473, - "fairMethod": "FundingRate", - "fairBasisRate": 0.7073699999999999, - "fairBasis": 0.0001, - "fairPrice": 1.2021, - "markMethod": "FairPrice", - "markPrice": 1.2021, - "indicativeSettlePrice": 1.202, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ADAUSD", - "rootSymbol": "ADA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-09-29T04:00:00.000Z", - "front": "2021-09-29T04:00:00.000Z", - "underlying": "ADA", - "quoteCurrency": "USD", - "underlyingSymbol": "ADA=", - "reference": "BMEX", - "referenceSymbol": ".BADA", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ADABON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".ADAUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000971, - "indicativeFundingRate": 0.000946, - "prevClosePrice": 1.2078, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2201371962, - "totalVolume": 2201372867, - "volume": 905, - "volume24h": 478422, - "prevTotalTurnover": 11027274417039, - "totalTurnover": 11027284608190, - "turnover": 10191151, - "turnover24h": 5565302456, - "homeNotional24h": 4760024.484522109, - "foreignNotional24h": 5537884.720979494, - "prevPrice24h": 1.21, - "vwap": 1.1633, - "highPrice": 1.221, - "lowPrice": 1.1077, - "lastPrice": 1.1206, - "lastPriceProtected": 1.1206, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0739, - "bidPrice": 1.1187, - "midPrice": 1.1195, - "askPrice": 1.1203, - "impactBidPrice": 1.1184, - "impactMidPrice": 1.11955, - "impactAskPrice": 1.1207, - "hasLiquidity": true, - "openInterest": 510936, - "openValue": 5721972264, - "fairMethod": "FundingRate", - "fairBasisRate": 1.063245, - "fairBasis": 0.0001, - "fairPrice": 1.1199, - "markMethod": "FairPrice", - "markPrice": 1.1199, - "indicativeSettlePrice": 1.1198, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ARBUSD", - "rootSymbol": "ARB", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-03-23T17:00:00.000Z", - "front": "2023-03-23T17:00:00.000Z", - "underlying": "ARB", - "quoteCurrency": "USD", - "underlyingSymbol": "ARB=", - "reference": "BMEX", - "referenceSymbol": ".BARB", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ARBBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".ARBUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000633, - "indicativeFundingRate": 0.000567, - "prevClosePrice": 1.153, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 181968998, - "totalVolume": 181969942, - "volume": 944, - "volume24h": 336516, - "prevTotalTurnover": 210798852682, - "totalTurnover": 210799864892, - "turnover": 1012210, - "turnover24h": 373612122, - "homeNotional24h": 334484.76560712274, - "foreignNotional24h": 371420.3780335065, - "prevPrice24h": 1.148, - "vwap": 1.111, - "highPrice": 1.167, - "lowPrice": 1.054, - "lastPrice": 1.07, - "lastPriceProtected": 1.07, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0679, - "bidPrice": 1.069, - "midPrice": 1.07, - "askPrice": 1.071, - "impactBidPrice": 1.068, - "impactMidPrice": 1.0705, - "impactAskPrice": 1.073, - "hasLiquidity": true, - "openInterest": 1209098, - "openValue": 1292525762, - "fairMethod": "FundingRate", - "fairBasisRate": 0.693135, - "fairBasis": 0, - "fairPrice": 1.069, - "markMethod": "FairPrice", - "markPrice": 1.069, - "indicativeSettlePrice": 1.069, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "NEARUSD", - "rootSymbol": "NEAR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-05-05T04:00:00.000Z", - "front": "2022-05-05T04:00:00.000Z", - "underlying": "NEAR", - "quoteCurrency": "USD", - "underlyingSymbol": "NEAR=", - "reference": "BMEX", - "referenceSymbol": ".BNEAR", - "maxOrderQty": 500000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".NEARBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".NEARUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.000223, - "prevClosePrice": 7.608, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 23765085, - "totalVolume": 23765166, - "volume": 81, - "volume24h": 9733, - "prevTotalTurnover": 899012228760, - "totalTurnover": 899018082120, - "turnover": 5853360, - "turnover24h": 726250310, - "homeNotional24h": 96746.18719406956, - "foreignNotional24h": 721993.6093116297, - "prevPrice24h": 7.563, - "vwap": 7.4618, - "highPrice": 7.867, - "lowPrice": 7.128, - "lastPrice": 7.2, - "lastPriceProtected": 7.2, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.048, - "bidPrice": 7.178, - "midPrice": 7.183, - "askPrice": 7.188, - "impactBidPrice": 7.173, - "impactMidPrice": 7.1825, - "impactAskPrice": 7.1922, - "hasLiquidity": true, - "openInterest": 27639, - "openValue": 1980057960, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 7.164, - "markMethod": "FairPrice", - "markPrice": 7.164, - "indicativeSettlePrice": 7.164, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DOTUSD", - "rootSymbol": "DOT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-09-29T04:00:00.000Z", - "front": "2021-09-29T04:00:00.000Z", - "underlying": "DOT", - "quoteCurrency": "USD", - "underlyingSymbol": "DOT=", - "reference": "BMEX", - "referenceSymbol": ".BDOT", - "maxOrderQty": 1000000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DOTBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".DOTUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000924, - "indicativeFundingRate": 0.000506, - "prevClosePrice": 10.462, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 545208113, - "totalVolume": 545209169, - "volume": 1056, - "volume24h": 217555, - "prevTotalTurnover": 4155664324371, - "totalTurnover": 4155674477243, - "turnover": 10152872, - "turnover24h": 2214968357, - "homeNotional24h": 216480.93547870664, - "foreignNotional24h": 2204376.2352793477, - "prevPrice24h": 10.428, - "vwap": 10.182, - "highPrice": 10.571, - "lowPrice": 9.434, - "lastPrice": 9.577, - "lastPriceProtected": 9.577, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0816, - "bidPrice": 9.57, - "midPrice": 9.5715, - "askPrice": 9.573, - "impactBidPrice": 9.563, - "impactMidPrice": 9.5715, - "impactAskPrice": 9.58, - "hasLiquidity": true, - "openInterest": 274623, - "openValue": 2624572011, - "fairMethod": "FundingRate", - "fairBasisRate": 1.0117800000000001, - "fairBasis": 0.001, - "fairPrice": 9.557, - "markMethod": "FairPrice", - "markPrice": 9.557, - "indicativeSettlePrice": 9.556, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ARBUSDT", - "rootSymbol": "ARB", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-03-23T17:00:00.000Z", - "front": "2023-03-23T17:00:00.000Z", - "positionCurrency": "ARB", - "underlying": "ARB", - "quoteCurrency": "USDT", - "underlyingSymbol": "ARBT=", - "reference": "BMEX", - "referenceSymbol": ".BARBT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 100, - "tickSize": 0.0001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ARBBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ARBUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000339, - "indicativeFundingRate": 0.000373, - "prevClosePrice": 1.15244, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 31722170900, - "totalVolume": 31722470900, - "volume": 300000, - "volume24h": 218997700, - "prevTotalTurnover": 39121775458720, - "totalTurnover": 39122100358720, - "turnover": 324900000, - "turnover24h": 243698878120, - "homeNotional24h": 218997.7, - "foreignNotional24h": 243698.87812, - "prevPrice24h": 1.1469, - "vwap": 1.1128, - "highPrice": 1.1652, - "lowPrice": 1.0579, - "lastPrice": 1.0828, - "lastPriceProtected": 1.0828, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0601, - "bidPrice": 1.0695, - "midPrice": 1.0707, - "askPrice": 1.0719, - "impactBidPrice": 1.06861, - "impactMidPrice": 1.0706, - "impactAskPrice": 1.07263, - "hasLiquidity": true, - "openInterest": 62946800, - "openValue": 67329156216, - "fairMethod": "FundingRate", - "fairBasisRate": 0.371205, - "fairBasis": 0.00004, - "fairPrice": 1.06962, - "markMethod": "FairPrice", - "markPrice": 1.06962, - "indicativeSettlePrice": 1.06958, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ADAUSDT", - "rootSymbol": "ADA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-12-15T04:00:00.000Z", - "front": "2021-12-15T04:00:00.000Z", - "positionCurrency": "ADA", - "underlying": "ADA", - "quoteCurrency": "USDT", - "underlyingSymbol": "ADAT=", - "reference": "BMEX", - "referenceSymbol": ".BADAT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.03, - "maintMargin": 0.015, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ADABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ADAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.20714, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 43254683000, - "totalVolume": 43254883000, - "volume": 200000, - "volume24h": 34761000, - "prevTotalTurnover": 230822801634000, - "totalTurnover": 230825050995000, - "turnover": 2249361000, - "turnover24h": 402154324000, - "homeNotional24h": 347610, - "foreignNotional24h": 402154.324, - "prevPrice24h": 1.2122, - "vwap": 1.1569125, - "highPrice": 1.2206, - "lowPrice": 1.1106, - "lastPrice": 1.1215, - "lastPriceProtected": 1.1215, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0748, - "bidPrice": 1.1215, - "midPrice": 1.12225, - "askPrice": 1.123, - "impactBidPrice": 1.1201375, - "impactMidPrice": 1.1216, - "impactAskPrice": 1.1230796, - "hasLiquidity": true, - "openInterest": 55031000, - "openValue": 616330690700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00001, - "fairPrice": 1.11997, - "markMethod": "FairPrice", - "markPrice": 1.11997, - "indicativeSettlePrice": 1.11996, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "100BONKUSDT", - "rootSymbol": "BONK", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-21T04:00:00.000Z", - "front": "2023-11-21T04:00:00.000Z", - "positionCurrency": "100BONK", - "underlying": "100BONK", - "quoteCurrency": "USDT", - "underlyingSymbol": "100BONKT=", - "reference": "BMEX", - "referenceSymbol": ".B100BONKT", - "maxOrderQty": 1000000000, - "maxPrice": 10, - "lotSize": 1000, - "tickSize": 0.0000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".100BONKBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".100BONKUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.0045726, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1059433000, - "totalVolume": 1059433000, - "volume": 0, - "volume24h": 1087000, - "prevTotalTurnover": 2527625831800, - "totalTurnover": 2527625831800, - "turnover": 0, - "turnover24h": 4883178800, - "homeNotional24h": 1087000, - "foreignNotional24h": 4883.1788, - "prevPrice24h": 0.0045632, - "vwap": 0.004492346, - "highPrice": 0.0045602, - "lowPrice": 0.0042964, - "lastPrice": 0.0042964, - "lastPriceProtected": 0.0042964, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0585, - "bidPrice": 0.0042978, - "midPrice": 0.00431875, - "askPrice": 0.0043397, - "impactBidPrice": 0.000030112, - "impactMidPrice": 0.0072858, - "impactAskPrice": 0.014541507, - "hasLiquidity": false, - "openInterest": 8841000, - "openValue": 38090564400, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.0043084, - "markMethod": "FairPrice", - "markPrice": 0.0043084, - "indicativeSettlePrice": 0.0043084, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "WUSDT", - "rootSymbol": "W", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-03T13:00:00.000Z", - "front": "2024-04-03T13:00:00.000Z", - "positionCurrency": "W", - "underlying": "W", - "quoteCurrency": "USDT", - "underlyingSymbol": "WT=", - "reference": "BMEX", - "referenceSymbol": ".BWT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".WBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".WUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.3815, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1233566, - "totalVolume": 1233566, - "volume": 0, - "volume24h": 264, - "prevTotalTurnover": 533614095300, - "totalTurnover": 533614095300, - "turnover": 0, - "turnover24h": 94967400, - "homeNotional24h": 264, - "foreignNotional24h": 94.9674, - "prevPrice24h": 0.3932, - "vwap": 0.359726, - "highPrice": 0.364, - "lowPrice": 0.3492, - "lastPrice": 0.3492, - "lastPriceProtected": 0.3492, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1119, - "bidPrice": 0.3533, - "midPrice": 0.35645, - "askPrice": 0.3596, - "hasLiquidity": false, - "openInterest": 24841, - "openValue": 8766388900, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.3529, - "markMethod": "FairPrice", - "markPrice": 0.3529, - "indicativeSettlePrice": 0.3529, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "NOTUSDT", - "rootSymbol": "NOT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-05-17T04:00:00.000Z", - "front": "2024-05-17T04:00:00.000Z", - "positionCurrency": "NOT", - "underlying": "NOT", - "quoteCurrency": "USDT", - "underlyingSymbol": "NOTT=", - "reference": "BMEX", - "referenceSymbol": ".BNOTT", - "maxOrderQty": 1000000000, - "maxPrice": 10, - "lotSize": 1000, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".NOTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".NOTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.00975, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 147619000, - "totalVolume": 147619000, - "volume": 0, - "volume24h": 1030000, - "prevTotalTurnover": 1705310202000, - "totalTurnover": 1705310202000, - "turnover": 0, - "turnover24h": 10129592000, - "homeNotional24h": 1030000, - "foreignNotional24h": 10129.592, - "prevPrice24h": 0.009759, - "vwap": 0.009834556, - "highPrice": 0.009959, - "lowPrice": 0.009316, - "lastPrice": 0.009316, - "lastPriceProtected": 0.009316, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.074, - "bidPrice": 0.009214, - "midPrice": 0.0092435, - "askPrice": 0.009273, - "hasLiquidity": false, - "openInterest": 172000, - "openValue": 1587560000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.00923, - "markMethod": "FairPrice", - "markPrice": 0.00923, - "indicativeSettlePrice": 0.00923, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ONDOUSDT", - "rootSymbol": "ONDO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-19T04:00:00.000Z", - "front": "2024-01-19T04:00:00.000Z", - "positionCurrency": "ONDO", - "underlying": "ONDO", - "quoteCurrency": "USDT", - "underlyingSymbol": "ONDOT=", - "reference": "BMEX", - "referenceSymbol": ".BONDOT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ONDOBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ONDOUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.69572, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 3680300, - "totalVolume": 3680300, - "volume": 0, - "volume24h": 290, - "prevTotalTurnover": 2000528789100, - "totalTurnover": 2000528789100, - "turnover": 0, - "turnover24h": 459985700, - "homeNotional24h": 290, - "foreignNotional24h": 459.9857, - "prevPrice24h": 1.6228, - "vwap": 1.5861576, - "highPrice": 1.62, - "lowPrice": 1.51907, - "lastPrice": 1.51907, - "lastPriceProtected": 1.51907, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0639, - "bidPrice": 1.44671, - "midPrice": 1.50166, - "askPrice": 1.55661, - "hasLiquidity": false, - "openInterest": 14930, - "openValue": 23238097100, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00002, - "fairPrice": 1.55647, - "markMethod": "FairPrice", - "markPrice": 1.55647, - "indicativeSettlePrice": 1.55645, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XAIUSDT", - "rootSymbol": "XAI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-09T12:00:00.000Z", - "front": "2024-01-09T12:00:00.000Z", - "positionCurrency": "XAI", - "underlying": "XAI", - "quoteCurrency": "USDT", - "underlyingSymbol": "XAIT=", - "reference": "BMEX", - "referenceSymbol": ".BXAIT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XAIBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".XAIUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.3974, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1806970, - "totalVolume": 1806970, - "volume": 0, - "volume24h": 6910, - "prevTotalTurnover": 1241915767000, - "totalTurnover": 1241915767000, - "turnover": 0, - "turnover24h": 2633966000, - "homeNotional24h": 6910, - "foreignNotional24h": 2633.966, - "prevPrice24h": 0.417, - "vwap": 0.3811818, - "highPrice": 0.4011, - "lowPrice": 0.3685, - "lastPrice": 0.3734, - "lastPriceProtected": 0.3734, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.1046, - "bidPrice": 0.371, - "midPrice": 0.37145, - "askPrice": 0.3719, - "hasLiquidity": false, - "openInterest": 9400, - "openValue": 3480820000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.3703, - "markMethod": "FairPrice", - "markPrice": 0.3703, - "indicativeSettlePrice": 0.3703, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BLASTUSDT", - "rootSymbol": "BLAST", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-06-27T04:00:00.000Z", - "front": "2024-06-27T04:00:00.000Z", - "positionCurrency": "BLAST", - "underlying": "BLAST", - "quoteCurrency": "USDT", - "underlyingSymbol": "BLASTT=", - "reference": "BMEX", - "referenceSymbol": ".BBLASTT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 100, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BLASTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BLASTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.013609, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2141800, - "totalVolume": 2141800, - "volume": 0, - "volume24h": 1100, - "prevTotalTurnover": 40065316300, - "totalTurnover": 40065316300, - "turnover": 0, - "turnover24h": 13640300, - "homeNotional24h": 1100, - "foreignNotional24h": 13.6403, - "prevPrice24h": 0.0139, - "vwap": 0.01240028, - "highPrice": 0.012521, - "lowPrice": 0.012295, - "lastPrice": 0.012295, - "lastPriceProtected": 0.012295, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1155, - "bidPrice": 0.012325, - "midPrice": 0.0123625, - "askPrice": 0.0124, - "impactBidPrice": 0.01161948, - "impactMidPrice": 0.01244, - "impactAskPrice": 0.01326113, - "hasLiquidity": false, - "openInterest": 196200, - "openValue": 2429348400, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.012382, - "markMethod": "FairPrice", - "markPrice": 0.012382, - "indicativeSettlePrice": 0.012382, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "PEPEUSD", - "rootSymbol": "PEPE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-05-03T04:00:00.000Z", - "front": "2023-05-03T04:00:00.000Z", - "underlying": "PEPE", - "quoteCurrency": "USD", - "underlyingSymbol": "PEPE=", - "reference": "BMEX", - "referenceSymbol": ".BPEPE", - "maxOrderQty": 500000, - "maxPrice": 0.1, - "lotSize": 1, - "tickSize": 0.000000001, - "multiplier": 1000000000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".PEPEBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".PEPEUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000528, - "indicativeFundingRate": 0.000369, - "prevClosePrice": 0.000025195, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 581541828, - "totalVolume": 581541876, - "volume": 48, - "volume24h": 115213, - "prevTotalTurnover": 1181416120431, - "totalTurnover": 1181417334601, - "turnover": 1214170, - "turnover24h": 3040715905, - "homeNotional24h": 114805970065.66728, - "foreignNotional24h": 3030071.099034252, - "prevPrice24h": 0.000024985, - "vwap": 0.000026393, - "highPrice": 0.000027521, - "lowPrice": 0.000024656, - "lastPrice": 0.000025097, - "lastPriceProtected": 0.000025097, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0045, - "bidPrice": 0.00002507, - "midPrice": 0.0000250995, - "askPrice": 0.000025129, - "impactBidPrice": 0.000025065, - "impactMidPrice": 0.0000250985, - "impactAskPrice": 0.000025132, - "hasLiquidity": true, - "openInterest": 192131, - "openValue": 4808462537, - "fairMethod": "FundingRate", - "fairBasisRate": 0.57816, - "fairBasis": 0.000000001, - "fairPrice": 0.000025027, - "markMethod": "FairPrice", - "markPrice": 0.000025027, - "indicativeSettlePrice": 0.000025026, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MEMEUSDT", - "rootSymbol": "MEME", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-03T12:00:00.000Z", - "front": "2023-11-03T12:00:00.000Z", - "positionCurrency": "MEME", - "underlying": "MEME", - "quoteCurrency": "USDT", - "underlyingSymbol": "MEMET=", - "reference": "BMEX", - "referenceSymbol": ".BMEMET", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 100, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MEMEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MEMEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.01763, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 89090100, - "totalVolume": 89090100, - "volume": 0, - "volume24h": 407200, - "prevTotalTurnover": 2261391283000, - "totalTurnover": 2261391283000, - "turnover": 0, - "turnover24h": 7041600000, - "homeNotional24h": 407200, - "foreignNotional24h": 7041.600000000001, - "prevPrice24h": 0.0175, - "vwap": 0.01729274, - "highPrice": 0.01843, - "lowPrice": 0.01663, - "lastPrice": 0.01663, - "lastPriceProtected": 0.01663, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0822, - "bidPrice": 0.01671, - "midPrice": 0.016785, - "askPrice": 0.01686, - "hasLiquidity": false, - "openInterest": 1782500, - "openValue": 29732100000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.01668, - "markMethod": "FairPrice", - "markPrice": 0.01668, - "indicativeSettlePrice": 0.01668, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XRDUSDT", - "rootSymbol": "XRD", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-22T12:00:00.000Z", - "front": "2024-01-22T12:00:00.000Z", - "positionCurrency": "XRD", - "underlying": "XRD", - "quoteCurrency": "USDT", - "underlyingSymbol": "XRDT=", - "reference": "BMEX", - "referenceSymbol": ".BXRDT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 100, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XRDBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".XRDUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": -0.000041, - "prevClosePrice": 0.03675, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 57941200, - "totalVolume": 57941200, - "volume": 0, - "volume24h": 500, - "prevTotalTurnover": 1998736196000, - "totalTurnover": 1998736196000, - "turnover": 0, - "turnover24h": 16225000, - "homeNotional24h": 500, - "foreignNotional24h": 16.225, - "prevPrice24h": 0.03742, - "vwap": 0.03245, - "highPrice": 0.03449, - "lowPrice": 0.02939, - "lastPrice": 0.02939, - "lastPriceProtected": 0.03449, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.2146, - "bidPrice": 0.02722, - "midPrice": 0.028745, - "askPrice": 0.03027, - "impactBidPrice": 0.01811146, - "impactMidPrice": 0.027525, - "impactAskPrice": 0.03694507, - "hasLiquidity": false, - "openInterest": 966500, - "openValue": 35779830000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.03702, - "markMethod": "FairPrice", - "markPrice": 0.03702, - "indicativeSettlePrice": 0.03702, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "WOOUSDT", - "rootSymbol": "WOO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-12-14T04:00:00.000Z", - "front": "2023-12-14T04:00:00.000Z", - "positionCurrency": "WOO", - "underlying": "WOO", - "quoteCurrency": "USDT", - "underlyingSymbol": "WOOT=", - "reference": "BMEX", - "referenceSymbol": ".BWOOT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".WOOBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".WOOUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.3375, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 3898860, - "totalVolume": 3898860, - "volume": 0, - "volume24h": 2680, - "prevTotalTurnover": 1359792628000, - "totalTurnover": 1359792628000, - "turnover": 0, - "turnover24h": 849944000, - "homeNotional24h": 2680, - "foreignNotional24h": 849.944, - "prevPrice24h": 0.3359, - "vwap": 0.3171434, - "highPrice": 0.3408, - "lowPrice": 0.3147, - "lastPrice": 0.3147, - "lastPriceProtected": 0.3147, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0631, - "bidPrice": 0.3164, - "midPrice": 0.3169, - "askPrice": 0.3174, - "hasLiquidity": false, - "openInterest": 10520, - "openValue": 3323268000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.3159, - "markMethod": "FairPrice", - "markPrice": 0.3159, - "indicativeSettlePrice": 0.3159, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MEWUSDT", - "rootSymbol": "MEW", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-04T04:00:00.000Z", - "front": "2024-04-04T04:00:00.000Z", - "positionCurrency": "MEW", - "underlying": "MEW", - "quoteCurrency": "USDT", - "underlyingSymbol": "MEWT=", - "reference": "BMEX", - "referenceSymbol": ".BMEWT", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MEWBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MEWUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.009817, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 61346000, - "totalVolume": 61346000, - "volume": 0, - "volume24h": 2000, - "prevTotalTurnover": 404552569000, - "totalTurnover": 404552569000, - "turnover": 0, - "turnover24h": 18637000, - "homeNotional24h": 2000, - "foreignNotional24h": 18.637, - "prevPrice24h": 0.009915, - "vwap": 0.0093185, - "highPrice": 0.009354, - "lowPrice": 0.009283, - "lastPrice": 0.009283, - "lastPriceProtected": 0.009283, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0637, - "bidPrice": 0.009099, - "midPrice": 0.0091065, - "askPrice": 0.009114, - "hasLiquidity": false, - "openInterest": 230000, - "openValue": 2089090000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.009083, - "markMethod": "FairPrice", - "markPrice": 0.009083, - "indicativeSettlePrice": 0.009083, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ZROUSDT", - "rootSymbol": "ZRO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-06-21T04:00:00.000Z", - "front": "2024-06-21T04:00:00.000Z", - "positionCurrency": "ZRO", - "underlying": "ZRO", - "quoteCurrency": "USDT", - "underlyingSymbol": "ZROT=", - "reference": "BMEX", - "referenceSymbol": ".BZROT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ZROBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ZROUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 6.5574, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 97473, - "totalVolume": 97473, - "volume": 0, - "volume24h": 64, - "prevTotalTurnover": 394220688500, - "totalTurnover": 394220688500, - "turnover": 0, - "turnover24h": 407683800, - "homeNotional24h": 64, - "foreignNotional24h": 407.6838, - "prevPrice24h": 6.6386, - "vwap": 6.37006, - "highPrice": 6.5816, - "lowPrice": 6.0926, - "lastPrice": 6.1264, - "lastPriceProtected": 6.1264, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0772, - "bidPrice": 6.2161, - "midPrice": 6.25655, - "askPrice": 6.297, - "impactBidPrice": 0.279292, - "impactMidPrice": 11.4093, - "impactAskPrice": 22.539346, - "hasLiquidity": false, - "openInterest": 1674, - "openValue": 10390852800, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.0001, - "fairPrice": 6.2072, - "markMethod": "FairPrice", - "markPrice": 6.2072, - "indicativeSettlePrice": 6.2071, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "JUPUSDT", - "rootSymbol": "JUP", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-02-01T04:00:00.000Z", - "front": "2024-02-01T04:00:00.000Z", - "positionCurrency": "JUP", - "underlying": "JUP", - "quoteCurrency": "USDT", - "underlyingSymbol": "JUPT=", - "reference": "BMEX", - "referenceSymbol": ".BJUPT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".JUPBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".JUPUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00112, - "indicativeFundingRate": 0.000793, - "prevClosePrice": 1.3244, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2248040, - "totalVolume": 2248040, - "volume": 0, - "volume24h": 8300, - "prevTotalTurnover": 1954924224000, - "totalTurnover": 1954924224000, - "turnover": 0, - "turnover24h": 10806103000, - "homeNotional24h": 8300, - "foreignNotional24h": 10806.103000000001, - "prevPrice24h": 1.3169, - "vwap": 1.3019402, - "highPrice": 1.3384, - "lowPrice": 1.2165, - "lastPrice": 1.2288, - "lastPriceProtected": 1.2288, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0669, - "bidPrice": 1.2193, - "midPrice": 1.22175, - "askPrice": 1.2242, - "impactBidPrice": 1.2127582, - "impactMidPrice": 1.22245, - "impactAskPrice": 1.2321684, - "hasLiquidity": true, - "openInterest": 52270, - "openValue": 63832124000, - "fairMethod": "FundingRate", - "fairBasisRate": 1.2264, - "fairBasis": 0.0001, - "fairPrice": 1.2212, - "markMethod": "FairPrice", - "markPrice": 1.2212, - "indicativeSettlePrice": 1.2211, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "AEVOUSDT", - "rootSymbol": "AEVO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-03-13T12:00:00.000Z", - "front": "2024-03-13T12:00:00.000Z", - "positionCurrency": "AEVO", - "underlying": "AEVO", - "quoteCurrency": "USDT", - "underlyingSymbol": "AEVOT=", - "reference": "BMEX", - "referenceSymbol": ".BAEVOT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".AEVOBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".AEVOUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.5962, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 829560, - "totalVolume": 829560, - "volume": 0, - "volume24h": 12739, - "prevTotalTurnover": 653412967400, - "totalTurnover": 653412967400, - "turnover": 0, - "turnover24h": 7240079400, - "homeNotional24h": 12739, - "foreignNotional24h": 7240.079399999999, - "prevPrice24h": 0.6336, - "vwap": 0.568341, - "highPrice": 0.6008, - "lowPrice": 0.5519, - "lastPrice": 0.5654, - "lastPriceProtected": 0.5654, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.1076, - "bidPrice": 0.5592, - "midPrice": 0.56545, - "askPrice": 0.5717, - "hasLiquidity": false, - "openInterest": 28836, - "openValue": 16047234000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.5565, - "markMethod": "FairPrice", - "markPrice": 0.5565, - "indicativeSettlePrice": 0.5565, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "PYTHUSDT", - "rootSymbol": "PYTH", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-20T14:15:00.000Z", - "front": "2023-11-20T14:15:00.000Z", - "positionCurrency": "PYTH", - "underlying": "PYTH", - "quoteCurrency": "USDT", - "underlyingSymbol": "PYTHT=", - "reference": "BMEX", - "referenceSymbol": ".BPYTHT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".PYTHBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".PYTHUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.5094, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 7749140, - "totalVolume": 7749240, - "volume": 100, - "volume24h": 5940, - "prevTotalTurnover": 3489370408000, - "totalTurnover": 3489417938000, - "turnover": 47530000, - "turnover24h": 2848925000, - "homeNotional24h": 5940, - "foreignNotional24h": 2848.9249999999997, - "prevPrice24h": 0.5364, - "vwap": 0.4796171, - "highPrice": 0.5001, - "lowPrice": 0.4649, - "lastPrice": 0.4753, - "lastPriceProtected": 0.4753, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.1139, - "bidPrice": 0.4704, - "midPrice": 0.47055, - "askPrice": 0.4707, - "impactBidPrice": 0.4678032, - "impactMidPrice": 0.46975, - "impactAskPrice": 0.4717418, - "hasLiquidity": true, - "openInterest": 54640, - "openValue": 25662222400, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.46966, - "markMethod": "FairPrice", - "markPrice": 0.46966, - "indicativeSettlePrice": 0.46966, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ENAUSDT", - "rootSymbol": "ENA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-02T12:00:00.000Z", - "front": "2024-04-02T12:00:00.000Z", - "positionCurrency": "ENA", - "underlying": "ENA", - "quoteCurrency": "USDT", - "underlyingSymbol": "ENAT=", - "reference": "BMEX", - "referenceSymbol": ".BENAT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ENABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ENAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": -0.000825, - "indicativeFundingRate": -0.000325, - "prevClosePrice": 1.0084, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 15913430, - "totalVolume": 15913430, - "volume": 0, - "volume24h": 3200, - "prevTotalTurnover": 7108399624000, - "totalTurnover": 7108399624000, - "turnover": 0, - "turnover24h": 3255079000, - "homeNotional24h": 3200, - "foreignNotional24h": 3255.0789999999993, - "prevPrice24h": 0.9955, - "vwap": 1.0172122, - "highPrice": 1.0337, - "lowPrice": 0.9567, - "lastPrice": 0.9704, - "lastPriceProtected": 0.9704, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0252, - "bidPrice": 0.9607, - "midPrice": 0.96495, - "askPrice": 0.9692, - "impactBidPrice": 0.0253042, - "impactMidPrice": 0.49835, - "impactAskPrice": 0.9714, - "hasLiquidity": false, - "openInterest": 140400, - "openValue": 134713800000, - "fairMethod": "FundingRate", - "fairBasisRate": -0.903375, - "fairBasis": -0.0001, - "fairPrice": 0.9595, - "markMethod": "FairPrice", - "markPrice": 0.9595, - "indicativeSettlePrice": 0.9596, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BOMEUSDT", - "rootSymbol": "BOME", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-03-18T04:00:00.000Z", - "front": "2024-03-18T04:00:00.000Z", - "positionCurrency": "BOME", - "underlying": "BOME", - "quoteCurrency": "USDT", - "underlyingSymbol": "BOMET=", - "reference": "BMEX", - "referenceSymbol": ".BBOMET", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BOMEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BOMEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.010383, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 45016210, - "totalVolume": 45016210, - "volume": 0, - "volume24h": 19440, - "prevTotalTurnover": 441995269180, - "totalTurnover": 441995269180, - "turnover": 0, - "turnover24h": 202728880, - "homeNotional24h": 19440, - "foreignNotional24h": 202.72888, - "prevPrice24h": 0.01065, - "vwap": 0.0104285, - "highPrice": 0.010864, - "lowPrice": 0.01001, - "lastPrice": 0.01001, - "lastPriceProtected": 0.01001, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0982, - "bidPrice": 0.009681, - "midPrice": 0.0099615, - "askPrice": 0.010242, - "hasLiquidity": false, - "openInterest": 392150, - "openValue": 3791306200, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.009668, - "markMethod": "FairPrice", - "markPrice": 0.009668, - "indicativeSettlePrice": 0.009668, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "STRKUSDT", - "rootSymbol": "STRK", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-02-21T04:00:00.000Z", - "front": "2024-02-21T04:00:00.000Z", - "positionCurrency": "STRK", - "underlying": "STRK", - "quoteCurrency": "USDT", - "underlyingSymbol": "STRKT=", - "reference": "BMEX", - "referenceSymbol": ".BSTRKT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".STRKBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".STRKUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.7568, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 461409, - "totalVolume": 461409, - "volume": 0, - "volume24h": 98, - "prevTotalTurnover": 422356909300, - "totalTurnover": 422356909300, - "turnover": 0, - "turnover24h": 71608000, - "homeNotional24h": 98, - "foreignNotional24h": 71.60799999999999, - "prevPrice24h": 0.7557, - "vwap": 0.730694, - "highPrice": 0.7421, - "lowPrice": 0.7052, - "lastPrice": 0.7052, - "lastPriceProtected": 0.7052, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0668, - "bidPrice": 0.7033, - "midPrice": 0.7092, - "askPrice": 0.7151, - "impactBidPrice": 0.019949, - "impactMidPrice": 1.24305, - "impactAskPrice": 2.466177, - "hasLiquidity": false, - "openInterest": 7571, - "openValue": 5311813600, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.7016, - "markMethod": "FairPrice", - "markPrice": 0.7016, - "indicativeSettlePrice": 0.7016, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "PIXELUSDT", - "rootSymbol": "PIXEL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-02-19T12:00:00.000Z", - "front": "2024-02-19T12:00:00.000Z", - "positionCurrency": "PIXEL", - "underlying": "PIXEL", - "quoteCurrency": "USDT", - "underlyingSymbol": "PIXELT=", - "reference": "BMEX", - "referenceSymbol": ".BPIXELT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".PIXELBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".PIXELUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.2784, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2450220, - "totalVolume": 2450220, - "volume": 0, - "volume24h": 16040, - "prevTotalTurnover": 867710327000, - "totalTurnover": 867710327000, - "turnover": 0, - "turnover24h": 4310531000, - "homeNotional24h": 16040, - "foreignNotional24h": 4310.531, - "prevPrice24h": 0.2808, - "vwap": 0.2687364, - "highPrice": 0.2813, - "lowPrice": 0.2557, - "lastPrice": 0.2566, - "lastPriceProtected": 0.2566, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0862, - "bidPrice": 0.2582, - "midPrice": 0.2586, - "askPrice": 0.259, - "hasLiquidity": false, - "openInterest": 13990, - "openValue": 3616415000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.2585, - "markMethod": "FairPrice", - "markPrice": 0.2585, - "indicativeSettlePrice": 0.2585, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BANANAUSDT", - "rootSymbol": "BANANA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-08-16T04:00:00.000Z", - "front": "2024-08-16T04:00:00.000Z", - "positionCurrency": "BANANA", - "underlying": "BANANA", - "quoteCurrency": "USDT", - "underlyingSymbol": "BANANAT=", - "reference": "BMEX", - "referenceSymbol": ".BBANANAT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BANANABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BANANAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 58.65, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 21130000, - "totalVolume": 21130000, - "volume": 0, - "volume24h": 346000, - "prevTotalTurnover": 119288550000, - "totalTurnover": 119288550000, - "turnover": 0, - "turnover24h": 1956861000, - "homeNotional24h": 34.599999999999994, - "foreignNotional24h": 1956.8609999999999, - "prevPrice24h": 58.26, - "vwap": 56.55668, - "highPrice": 57, - "lowPrice": 55.95, - "lastPrice": 56.11, - "lastPriceProtected": 56.11, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0369, - "bidPrice": 56.01, - "midPrice": 57.76, - "askPrice": 59.51, - "hasLiquidity": false, - "openInterest": 145000, - "openValue": 810993700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.0006, - "fairPrice": 55.9306, - "markMethod": "FairPrice", - "markPrice": 55.9306, - "indicativeSettlePrice": 55.93, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SAGAUSDT", - "rootSymbol": "SAGA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-10T12:00:00.000Z", - "front": "2024-04-10T12:00:00.000Z", - "positionCurrency": "SAGA", - "underlying": "SAGA", - "quoteCurrency": "USDT", - "underlyingSymbol": "SAGAT=", - "reference": "BMEX", - "referenceSymbol": ".BSAGAT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SAGABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SAGAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 2.6921, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 147831, - "totalVolume": 147831, - "volume": 0, - "volume24h": 100, - "prevTotalTurnover": 352809547800, - "totalTurnover": 352809547800, - "turnover": 0, - "turnover24h": 261462600, - "homeNotional24h": 100, - "foreignNotional24h": 261.4626, - "prevPrice24h": 2.695, - "vwap": 2.614627, - "highPrice": 2.8221, - "lowPrice": 2.5412, - "lastPrice": 2.5412, - "lastPriceProtected": 2.5412, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1269, - "bidPrice": 2.4701, - "midPrice": 2.4929, - "askPrice": 2.5157, - "hasLiquidity": false, - "openInterest": 2108, - "openValue": 5201700800, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 2.4676, - "markMethod": "FairPrice", - "markPrice": 2.4676, - "indicativeSettlePrice": 2.4676, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DYMUSDT", - "rootSymbol": "DYM", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-02-07T04:00:00.000Z", - "front": "2024-02-07T04:00:00.000Z", - "positionCurrency": "DYM", - "underlying": "DYM", - "quoteCurrency": "USDT", - "underlyingSymbol": "DYMT=", - "reference": "BMEX", - "referenceSymbol": ".BDYMT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DYMBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".DYMUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.002006, - "indicativeFundingRate": 0.001524, - "prevClosePrice": 2.5393, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 394978, - "totalVolume": 394978, - "volume": 0, - "volume24h": 768, - "prevTotalTurnover": 1305159556600, - "totalTurnover": 1305159556600, - "turnover": 0, - "turnover24h": 1880080100, - "homeNotional24h": 768, - "foreignNotional24h": 1880.0800999999997, - "prevPrice24h": 2.5354, - "vwap": 2.448022, - "highPrice": 2.4906, - "lowPrice": 2.3534, - "lastPrice": 2.3543, - "lastPriceProtected": 2.3543, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0714, - "bidPrice": 2.3458, - "midPrice": 2.34995, - "askPrice": 2.3541, - "impactBidPrice": 0.09512, - "impactMidPrice": 5.58555, - "impactAskPrice": 11.076034, - "hasLiquidity": false, - "openInterest": 5369, - "openValue": 12614465500, - "fairMethod": "FundingRate", - "fairBasisRate": 2.19657, - "fairBasis": 0.0005, - "fairPrice": 2.3495, - "markMethod": "FairPrice", - "markPrice": 2.3495, - "indicativeSettlePrice": 2.349, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "IOUSDT", - "rootSymbol": "IO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-06-12T04:00:00.000Z", - "front": "2024-06-12T04:00:00.000Z", - "positionCurrency": "IO", - "underlying": "IO", - "quoteCurrency": "USDT", - "underlyingSymbol": "IOT=", - "reference": "BMEX", - "referenceSymbol": ".BIOT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".IOBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".IOUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 3.5583, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 103228, - "totalVolume": 103228, - "volume": 0, - "volume24h": 191, - "prevTotalTurnover": 214025945400, - "totalTurnover": 214025945400, - "turnover": 0, - "turnover24h": 636036700, - "homeNotional24h": 191, - "foreignNotional24h": 636.0367, - "prevPrice24h": 3.7237, - "vwap": 3.330036, - "highPrice": 3.4481, - "lowPrice": 3.2717, - "lastPrice": 3.2781, - "lastPriceProtected": 3.2781, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1197, - "bidPrice": 3.2945, - "midPrice": 3.2978, - "askPrice": 3.3011, - "hasLiquidity": false, - "openInterest": 547, - "openValue": 1799411200, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 3.2896, - "markMethod": "FairPrice", - "markPrice": 3.2896, - "indicativeSettlePrice": 3.2896, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MYROUSDT", - "rootSymbol": "MYRO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-23T04:00:00.000Z", - "front": "2024-01-23T04:00:00.000Z", - "positionCurrency": "MYRO", - "underlying": "MYRO", - "quoteCurrency": "USDT", - "underlyingSymbol": "MYROT=", - "reference": "BMEX", - "referenceSymbol": ".BMYROT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MYROBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MYROUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.13294, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 5859870, - "totalVolume": 5859870, - "volume": 0, - "volume24h": 160, - "prevTotalTurnover": 843256713600, - "totalTurnover": 843256713600, - "turnover": 0, - "turnover24h": 20453600, - "homeNotional24h": 160, - "foreignNotional24h": 20.453599999999998, - "prevPrice24h": 0.13838, - "vwap": 0.127835, - "highPrice": 0.12871, - "lowPrice": 0.12693, - "lastPrice": 0.12699, - "lastPriceProtected": 0.12699, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0907, - "bidPrice": 0.11958, - "midPrice": 0.1199, - "askPrice": 0.12022, - "hasLiquidity": false, - "openInterest": 36380, - "openValue": 4345591000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.11945, - "markMethod": "FairPrice", - "markPrice": 0.11945, - "indicativeSettlePrice": 0.11945, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "WLDUSDT", - "rootSymbol": "WLD", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-02-22T04:00:00.000Z", - "front": "2024-02-22T04:00:00.000Z", - "positionCurrency": "WLD", - "underlying": "WLD", - "quoteCurrency": "USDT", - "underlyingSymbol": "WLDT=", - "reference": "BMEX", - "referenceSymbol": ".BWLDT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".WLDBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".WLDUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000704, - "indicativeFundingRate": 0.000444, - "prevClosePrice": 3.71, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1649456, - "totalVolume": 1650406, - "volume": 950, - "volume24h": 21527, - "prevTotalTurnover": 5033974425000, - "totalTurnover": 5037267713000, - "turnover": 3293288000, - "turnover24h": 77873904000, - "homeNotional24h": 21527, - "foreignNotional24h": 77873.904, - "prevPrice24h": 3.679, - "vwap": 3.6175, - "highPrice": 3.722, - "lowPrice": 3.382, - "lastPrice": 3.419, - "lastPriceProtected": 3.419, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0707, - "bidPrice": 3.423, - "midPrice": 3.428, - "askPrice": 3.433, - "impactBidPrice": 0.27999, - "impactMidPrice": 1.8825, - "impactAskPrice": 3.485459, - "hasLiquidity": false, - "openInterest": 20009, - "openValue": 68530825000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.77088, - "fairBasis": 0, - "fairPrice": 3.425, - "markMethod": "FairPrice", - "markPrice": 3.425, - "indicativeSettlePrice": 3.425, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ZKUSDT", - "rootSymbol": "ZK", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-06-17T12:00:00.000Z", - "front": "2024-06-17T12:00:00.000Z", - "positionCurrency": "ZK", - "underlying": "ZK", - "quoteCurrency": "USDT", - "underlyingSymbol": "ZKT=", - "reference": "BMEX", - "referenceSymbol": ".BZKT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ZKBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ZKUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.2494, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1794530, - "totalVolume": 1794630, - "volume": 100, - "volume24h": 17510, - "prevTotalTurnover": 271911761000, - "totalTurnover": 271934961000, - "turnover": 23200000, - "turnover24h": 4214002000, - "homeNotional24h": 17510, - "foreignNotional24h": 4214.002, - "prevPrice24h": 0.2484, - "vwap": 0.2406627, - "highPrice": 0.2535, - "lowPrice": 0.225, - "lastPrice": 0.232, - "lastPriceProtected": 0.232, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.066, - "bidPrice": 0.2292, - "midPrice": 0.22965, - "askPrice": 0.2301, - "impactBidPrice": 0.227927, - "impactMidPrice": 0.22955, - "impactAskPrice": 0.2312167, - "hasLiquidity": true, - "openInterest": 41180, - "openValue": 9459046000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.2297, - "markMethod": "FairPrice", - "markPrice": 0.2297, - "indicativeSettlePrice": 0.2297, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "WIFUSDT", - "rootSymbol": "WIF", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-17T04:00:00.000Z", - "front": "2024-01-17T04:00:00.000Z", - "positionCurrency": "WIF", - "underlying": "WIF", - "quoteCurrency": "USDT", - "underlyingSymbol": "WIFT=", - "reference": "BMEX", - "referenceSymbol": ".BWIFT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".WIFBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".WIFUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 3.7509, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 4118238, - "totalVolume": 4118238, - "volume": 0, - "volume24h": 4506, - "prevTotalTurnover": 8031684503900, - "totalTurnover": 8031684503900, - "turnover": 0, - "turnover24h": 16209208900, - "homeNotional24h": 4506, - "foreignNotional24h": 16209.2089, - "prevPrice24h": 3.7225, - "vwap": 3.597251, - "highPrice": 3.7539, - "lowPrice": 3.4132, - "lastPrice": 3.4169, - "lastPriceProtected": 3.4169, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0769, - "bidPrice": 3.3773, - "midPrice": 3.38325, - "askPrice": 3.3892, - "impactBidPrice": 3.323418, - "impactMidPrice": 4.7949, - "impactAskPrice": 6.266474, - "hasLiquidity": false, - "openInterest": 12027, - "openValue": 40678922100, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 3.3823, - "markMethod": "FairPrice", - "markPrice": 3.3823, - "indicativeSettlePrice": 3.3823, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MEMEMEXTUSDT", - "rootSymbol": "BASKET", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-07-04T04:00:00.000Z", - "front": "2024-07-04T04:00:00.000Z", - "positionCurrency": "MEMEMEXT", - "underlying": "MEMEMEXT", - "quoteCurrency": "USDT", - "underlyingSymbol": "MEMEMEXT=", - "reference": "BMEX", - "referenceSymbol": ".BMEMEMEXT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MEMEMEXTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MEMEMEXTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 250.06019, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 20336000, - "totalVolume": 20336000, - "volume": 0, - "volume24h": 122000, - "prevTotalTurnover": 260519411000, - "totalTurnover": 260519411000, - "turnover": 0, - "turnover24h": 3079301000, - "homeNotional24h": 12.2, - "foreignNotional24h": 3079.3010000000004, - "prevPrice24h": 252.55, - "vwap": 252.40173, - "highPrice": 254.84, - "lowPrice": 250.64, - "lastPrice": 254.2, - "lastPriceProtected": 254.2, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0065, - "bidPrice": 237.69, - "midPrice": 243.595, - "askPrice": 249.5, - "impactBidPrice": 232.07062, - "impactMidPrice": 254.13, - "impactAskPrice": 276.19365, - "hasLiquidity": false, - "openInterest": 749000, - "openValue": 17785906047, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.00242, - "fairPrice": 237.46203, - "markMethod": "FairPrice", - "markPrice": 237.46203, - "indicativeSettlePrice": 237.45961, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XAUTUSD", - "rootSymbol": "XAUT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-18T04:00:00.000Z", - "front": "2024-04-18T04:00:00.000Z", - "underlying": "XAUT", - "quoteCurrency": "USD", - "underlyingSymbol": "XAUT=", - "reference": "BMEX", - "referenceSymbol": ".BXAUT", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.1, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 2500000000, - "riskStep": 2500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XAUTBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".XAUTUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 2634.4, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1123, - "totalVolume": 1123, - "volume": 0, - "volume24h": 2, - "prevTotalTurnover": 269149580, - "totalTurnover": 269149580, - "turnover": 0, - "turnover24h": 531050, - "homeNotional24h": 0.19841972859015697, - "foreignNotional24h": 526.8536890715611, - "prevPrice24h": 2655, - "vwap": 2655.25, - "highPrice": 2655.5, - "lowPrice": 2655, - "lastPrice": 2655.5, - "lastPriceProtected": 2655.5, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.0002, - "bidPrice": 2661.9, - "midPrice": 2830.9, - "askPrice": 2999.9, - "impactBidPrice": 1888.1, - "impactMidPrice": 3066.25, - "impactAskPrice": 4244.44, - "hasLiquidity": false, - "openInterest": 12, - "openValue": 3192240, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 2660.2, - "markMethod": "FairPrice", - "markPrice": 2660.2, - "indicativeSettlePrice": 2660.2, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.1, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "INJUSDT", - "rootSymbol": "INJ", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-01T04:00:00.000Z", - "front": "2023-11-01T04:00:00.000Z", - "positionCurrency": "INJ", - "underlying": "INJ", - "quoteCurrency": "USDT", - "underlyingSymbol": "INJT=", - "reference": "BMEX", - "referenceSymbol": ".BINJT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".INJBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".INJUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 32.7434, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 176432, - "totalVolume": 176432, - "volume": 0, - "volume24h": 83, - "prevTotalTurnover": 4713745638500, - "totalTurnover": 4713745638500, - "turnover": 0, - "turnover24h": 2677257500, - "homeNotional24h": 83, - "foreignNotional24h": 2677.2574999999997, - "prevPrice24h": 33.1724, - "vwap": 32.256115, - "highPrice": 33.3438, - "lowPrice": 31.1845, - "lastPrice": 31.1845, - "lastPriceProtected": 31.1845, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0599, - "bidPrice": 30.5779, - "midPrice": 30.6176, - "askPrice": 30.6573, - "impactBidPrice": 29.141663, - "impactMidPrice": 36.46905, - "impactAskPrice": 43.796444, - "hasLiquidity": false, - "openInterest": 575, - "openValue": 17569240000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.0003, - "fairPrice": 30.5552, - "markMethod": "FairPrice", - "markPrice": 30.5552, - "indicativeSettlePrice": 30.5549, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "TNSRUSDT", - "rootSymbol": "TNSR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-10T12:00:00.000Z", - "front": "2024-04-10T12:00:00.000Z", - "positionCurrency": "TNSR", - "underlying": "TNSR", - "quoteCurrency": "USDT", - "underlyingSymbol": "TNSRT=", - "reference": "BMEX", - "referenceSymbol": ".BTNSRT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".TNSRBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".TNSRUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.7927, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1451838, - "totalVolume": 1451838, - "volume": 0, - "volume24h": 263, - "prevTotalTurnover": 895646817700, - "totalTurnover": 895646817700, - "turnover": 0, - "turnover24h": 194210000, - "homeNotional24h": 263, - "foreignNotional24h": 194.20999999999998, - "prevPrice24h": 0.8261, - "vwap": 0.738442, - "highPrice": 0.765, - "lowPrice": 0.7259, - "lastPrice": 0.7259, - "lastPriceProtected": 0.7259, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1213, - "bidPrice": 0.7317, - "midPrice": 0.7321, - "askPrice": 0.7325, - "impactBidPrice": 0.708402, - "impactMidPrice": 0.73595, - "impactAskPrice": 0.763585, - "hasLiquidity": false, - "openInterest": 5210, - "openValue": 3811115000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.7315, - "markMethod": "FairPrice", - "markPrice": 0.7315, - "indicativeSettlePrice": 0.7315, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "PEPEUSDT", - "rootSymbol": "PEPE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-05-03T04:00:00.000Z", - "front": "2023-05-03T04:00:00.000Z", - "positionCurrency": "PEPE", - "underlying": "PEPE", - "quoteCurrency": "USDT", - "underlyingSymbol": "PEPET=", - "reference": "BMEX", - "referenceSymbol": ".BPEPET", - "maxOrderQty": 100000000000, - "maxPrice": 0.1, - "lotSize": 10000, - "tickSize": 0.000000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.04, - "maintMargin": 0.02, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".PEPEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".PEPEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.000025182, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 106791955050000, - "totalVolume": 106792125990000, - "volume": 170940000, - "volume24h": 80199340000, - "prevTotalTurnover": 290195404859080, - "totalTurnover": 290199727932490, - "turnover": 4323073410, - "turnover24h": 2106931853270, - "homeNotional24h": 80199340000, - "foreignNotional24h": 2106931.8532699994, - "prevPrice24h": 0.000025001, - "vwap": 0.0000262713, - "highPrice": 0.000027508, - "lowPrice": 0.000024666, - "lastPrice": 0.000025049, - "lastPriceProtected": 0.00002507, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0019, - "bidPrice": 0.000025052, - "midPrice": 0.0000250855, - "askPrice": 0.000025119, - "impactBidPrice": 0.000025045, - "impactMidPrice": 0.000025082, - "impactAskPrice": 0.0000251195, - "hasLiquidity": true, - "openInterest": 44893860000, - "openValue": 1123738209660, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.000025031, - "markMethod": "FairPrice", - "markPrice": 0.000025031, - "indicativeSettlePrice": 0.000025031, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.930Z", - "minTick": 0.000000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "OPUSD", - "rootSymbol": "OP", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-16T04:00:00.000Z", - "front": "2024-01-16T04:00:00.000Z", - "underlying": "OP", - "quoteCurrency": "USD", - "underlyingSymbol": "OP=", - "reference": "BMEX", - "referenceSymbol": ".BOP", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".OPBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".OPUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000506, - "indicativeFundingRate": 0.000206, - "prevClosePrice": 2.6618, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 163783, - "totalVolume": 163783, - "volume": 0, - "volume24h": 102, - "prevTotalTurnover": 3349913583, - "totalTurnover": 3349913583, - "turnover": 0, - "turnover24h": 2620271, - "homeNotional24h": 1010.8163079661531, - "foreignNotional24h": 2597.1064580168945, - "prevPrice24h": 2.7007, - "vwap": 2.569, - "highPrice": 2.6439, - "lowPrice": 2.4935, - "lastPrice": 2.5248, - "lastPriceProtected": 2.5248, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0651, - "bidPrice": 2.4757, - "midPrice": 2.48415, - "askPrice": 2.4926, - "impactBidPrice": 1.9389, - "impactMidPrice": 2.4235, - "impactAskPrice": 2.9081, - "hasLiquidity": false, - "openInterest": 6684, - "openValue": 165208428, - "fairMethod": "FundingRate", - "fairBasisRate": 0.5540700000000001, - "fairBasis": 0.0001, - "fairPrice": 2.4717, - "markMethod": "FairPrice", - "markPrice": 2.4717, - "indicativeSettlePrice": 2.4716, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "AVAXUSDT", - "rootSymbol": "AVAX", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-02-23T04:00:00.000Z", - "front": "2022-02-23T04:00:00.000Z", - "positionCurrency": "AVAX", - "underlying": "AVAX", - "quoteCurrency": "USDT", - "underlyingSymbol": "AVAXT=", - "reference": "BMEX", - "referenceSymbol": ".BAVAXT", - "maxOrderQty": 1000000000, - "maxPrice": 100000, - "lotSize": 1000, - "tickSize": 0.001, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".AVAXBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".AVAXUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000706, - "indicativeFundingRate": 0.000638, - "prevClosePrice": 51.4465, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 60490059000, - "totalVolume": 60490340000, - "volume": 281000, - "volume24h": 88648000, - "prevTotalTurnover": 170346692178400, - "totalTurnover": 170348100554000, - "turnover": 1408375600, - "turnover24h": 457602333800, - "homeNotional24h": 8864.8, - "foreignNotional24h": 457602.3338, - "prevPrice24h": 51.169, - "vwap": 51.62016, - "highPrice": 54.308, - "lowPrice": 49.583, - "lastPrice": 50.027, - "lastPriceProtected": 50.027, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0223, - "bidPrice": 49.639, - "midPrice": 49.71, - "askPrice": 49.781, - "impactBidPrice": 49.63224, - "impactMidPrice": 49.7135, - "impactAskPrice": 49.79515, - "hasLiquidity": true, - "openInterest": 170589000, - "openValue": 848274273180, - "fairMethod": "FundingRate", - "fairBasisRate": 0.77307, - "fairBasis": 0.0036, - "fairPrice": 49.7262, - "markMethod": "FairPrice", - "markPrice": 49.7262, - "indicativeSettlePrice": 49.7226, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "TONUSD", - "rootSymbol": "TON", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-23T04:00:00.000Z", - "front": "2024-04-23T04:00:00.000Z", - "underlying": "TON", - "quoteCurrency": "USD", - "underlyingSymbol": "TON=", - "reference": "BMEX", - "referenceSymbol": ".BTON", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".TONBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".TONUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00129, - "indicativeFundingRate": 0.000921, - "prevClosePrice": 6.7357, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 120273, - "totalVolume": 120273, - "volume": 0, - "volume24h": 218, - "prevTotalTurnover": 7460422228, - "totalTurnover": 7460422228, - "turnover": 0, - "turnover24h": 14132933, - "homeNotional24h": 2153.885468780344, - "foreignNotional24h": 13964.84297258556, - "prevPrice24h": 6.6787, - "vwap": 6.4831, - "highPrice": 6.8089, - "lowPrice": 5.7733, - "lastPrice": 6.5, - "lastPriceProtected": 6.5, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0268, - "bidPrice": 6.4283, - "midPrice": 6.4515, - "askPrice": 6.4747, - "impactBidPrice": 0.9684, - "impactMidPrice": 5.3086, - "impactAskPrice": 9.6488, - "hasLiquidity": false, - "openInterest": 1746, - "openValue": 112552398, - "fairMethod": "FundingRate", - "fairBasisRate": 1.41255, - "fairBasis": 0.0008, - "fairPrice": 6.4463, - "markMethod": "FairPrice", - "markPrice": 6.4463, - "indicativeSettlePrice": 6.4455, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "LDOUSD", - "rootSymbol": "LDO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-11T04:00:00.000Z", - "front": "2024-01-11T04:00:00.000Z", - "underlying": "LDO", - "quoteCurrency": "USD", - "underlyingSymbol": "LDO=", - "reference": "BMEX", - "referenceSymbol": ".BLDO", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LDOBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".LDOUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001011, - "indicativeFundingRate": 0.000761, - "prevClosePrice": 2.1483, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 162066, - "totalVolume": 162066, - "volume": 0, - "volume24h": 68, - "prevTotalTurnover": 2765365908, - "totalTurnover": 2765365908, - "turnover": 0, - "turnover24h": 1421196, - "homeNotional24h": 678.099483468881, - "foreignNotional24h": 1417.2600632278206, - "prevPrice24h": 2.1947, - "vwap": 2.09, - "highPrice": 2.1472, - "lowPrice": 2.013, - "lastPrice": 2.013, - "lastPriceProtected": 2.013, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0828, - "bidPrice": 2.0028, - "midPrice": 2.0142, - "askPrice": 2.0256, - "impactBidPrice": 1.1925, - "impactMidPrice": 1.8193, - "impactAskPrice": 2.4461, - "hasLiquidity": false, - "openInterest": 6268, - "openValue": 126450632, - "fairMethod": "FundingRate", - "fairBasisRate": 1.107045, - "fairBasis": 0.0002, - "fairPrice": 2.0174, - "markMethod": "FairPrice", - "markPrice": 2.0174, - "indicativeSettlePrice": 2.0172, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "TONUSDT", - "rootSymbol": "TON", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-08-19T04:00:00.000Z", - "front": "2024-08-19T04:00:00.000Z", - "positionCurrency": "TON", - "underlying": "TON", - "quoteCurrency": "USDT", - "underlyingSymbol": "TONT=", - "reference": "BMEX", - "referenceSymbol": ".BTONT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".TONBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".TONUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 6.7323, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 53944, - "totalVolume": 53944, - "volume": 0, - "volume24h": 2577, - "prevTotalTurnover": 304899078900, - "totalTurnover": 304899078900, - "turnover": 0, - "turnover24h": 17367115500, - "homeNotional24h": 2577, - "foreignNotional24h": 17367.1155, - "prevPrice24h": 6.7251, - "vwap": 6.739277, - "highPrice": 6.9004, - "lowPrice": 6.688, - "lastPrice": 6.694, - "lastPriceProtected": 6.694, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0218, - "bidPrice": 6.4411, - "midPrice": 6.45435, - "askPrice": 6.4676, - "impactBidPrice": 0.995492, - "impactMidPrice": 9.8125, - "impactAskPrice": 18.629576, - "hasLiquidity": false, - "openInterest": 3289, - "openValue": 21203196300, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0.0001, - "fairPrice": 6.4467, - "markMethod": "FairPrice", - "markPrice": 6.4467, - "indicativeSettlePrice": 6.4466, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "AAVEUSDT", - "rootSymbol": "AAVE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-04T12:00:00.000Z", - "front": "2024-09-04T12:00:00.000Z", - "positionCurrency": "AAVE", - "underlying": "AAVE", - "quoteCurrency": "USDT", - "underlyingSymbol": "AAVET=", - "reference": "BMEX", - "referenceSymbol": ".BAAVET", - "maxOrderQty": 1000000000, - "maxPrice": 100000, - "lotSize": 1000, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".AAVEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".AAVEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001404, - "indicativeFundingRate": 0.000904, - "prevClosePrice": 282.213, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 21503000, - "totalVolume": 21503000, - "volume": 0, - "volume24h": 304000, - "prevTotalTurnover": 360593535000, - "totalTurnover": 360593535000, - "turnover": 0, - "turnover24h": 8323411000, - "homeNotional24h": 30.4, - "foreignNotional24h": 8323.411, - "prevPrice24h": 280, - "vwap": 273.79642, - "highPrice": 279.49, - "lowPrice": 256.89, - "lastPrice": 256.89, - "lastPriceProtected": 257.396, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0933, - "bidPrice": 233.87, - "midPrice": 249.79, - "askPrice": 265.71, - "impactBidPrice": 272.44, - "impactMidPrice": 320.54, - "impactAskPrice": 368.64985, - "hasLiquidity": false, - "openInterest": 1133000, - "openValue": 30099957800, - "fairMethod": "FundingRate", - "fairBasisRate": 1.5373800000000002, - "fairBasis": 0.038, - "fairPrice": 265.666, - "markMethod": "FairPrice", - "markPrice": 265.666, - "indicativeSettlePrice": 265.628, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "OPUSDT", - "rootSymbol": "OP", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-16T04:00:00.000Z", - "front": "2024-01-16T04:00:00.000Z", - "positionCurrency": "OP", - "underlying": "OP", - "quoteCurrency": "USDT", - "underlyingSymbol": "OPT=", - "reference": "BMEX", - "referenceSymbol": ".BOPT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".OPBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".OPUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 2.6604, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 396382, - "totalVolume": 396382, - "volume": 0, - "volume24h": 937, - "prevTotalTurnover": 914028158700, - "totalTurnover": 914028158700, - "turnover": 0, - "turnover24h": 2414310500, - "homeNotional24h": 937, - "foreignNotional24h": 2414.3105, - "prevPrice24h": 2.6622, - "vwap": 2.576639, - "highPrice": 2.6534, - "lowPrice": 2.4883, - "lastPrice": 2.4954, - "lastPriceProtected": 2.4954, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0627, - "bidPrice": 2.476, - "midPrice": 2.5018, - "askPrice": 2.5276, - "hasLiquidity": false, - "openInterest": 5308, - "openValue": 13121906800, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 2.4721, - "markMethod": "FairPrice", - "markPrice": 2.4721, - "indicativeSettlePrice": 2.4721, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "AAVEUSD", - "rootSymbol": "AAVE", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-09-04T12:00:00.000Z", - "front": "2024-09-04T12:00:00.000Z", - "underlying": "AAVE", - "quoteCurrency": "USD", - "underlyingSymbol": "AAVE=", - "reference": "BMEX", - "referenceSymbol": ".BAAVE", - "maxOrderQty": 500000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".AAVEBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".AAVEUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001056, - "indicativeFundingRate": 0.001111, - "prevClosePrice": 282.36, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 112578, - "totalVolume": 112578, - "volume": 0, - "volume24h": 38, - "prevTotalTurnover": 1784559862, - "totalTurnover": 1784559862, - "turnover": 0, - "turnover24h": 1014282, - "homeNotional24h": 3.79381950611705, - "foreignNotional24h": 1012.6187681325515, - "prevPrice24h": 271.74, - "vwap": 266.92, - "highPrice": 281.14, - "lowPrice": 256.08, - "lastPrice": 274.35, - "lastPriceProtected": 274.35, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": 0.0096, - "bidPrice": 248.57, - "midPrice": 257.94, - "askPrice": 267.31, - "impactBidPrice": 184.04, - "impactMidPrice": 325.185, - "impactAskPrice": 466.33, - "hasLiquidity": false, - "openInterest": 3462, - "openValue": 91954182, - "fairMethod": "FundingRate", - "fairBasisRate": 1.15632, - "fairBasis": 0.03, - "fairPrice": 265.61, - "markMethod": "FairPrice", - "markPrice": 265.61, - "indicativeSettlePrice": 265.58, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "AXSUSD", - "rootSymbol": "AXS", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-10-20T04:00:00.000Z", - "front": "2021-10-20T04:00:00.000Z", - "underlying": "AXS", - "quoteCurrency": "USD", - "underlyingSymbol": "AXS=", - "reference": "BMEX", - "referenceSymbol": ".BAXS", - "maxOrderQty": 1000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".AXSBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".AXSUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000259, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 9.2, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 473804334, - "totalVolume": 473805680, - "volume": 1346, - "volume24h": 436215, - "prevTotalTurnover": 814335355515, - "totalTurnover": 814336526409, - "turnover": 1170894, - "turnover24h": 393202373, - "homeNotional24h": 43335.759699004884, - "foreignNotional24h": 390668.66688704776, - "prevPrice24h": 9.13, - "vwap": 9.02, - "highPrice": 9.53, - "lowPrice": 8.49, - "lastPrice": 8.68, - "lastPriceProtected": 8.68, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0534, - "bidPrice": 8.56, - "midPrice": 8.57, - "askPrice": 8.58, - "impactBidPrice": 8.55, - "impactMidPrice": 8.58, - "impactAskPrice": 8.61, - "hasLiquidity": true, - "openInterest": 1069558, - "openValue": 915541648, - "fairMethod": "FundingRate", - "fairBasisRate": 0.283605, - "fairBasis": 0, - "fairPrice": 8.56, - "markMethod": "FairPrice", - "markPrice": 8.56, - "indicativeSettlePrice": 8.56, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "LDOUSDT", - "rootSymbol": "LDO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-11T04:00:00.000Z", - "front": "2024-01-11T04:00:00.000Z", - "positionCurrency": "LDO", - "underlying": "LDO", - "quoteCurrency": "USDT", - "underlyingSymbol": "LDOT=", - "reference": "BMEX", - "referenceSymbol": ".BLDOT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LDOBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".LDOUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 2.1472, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 545522, - "totalVolume": 545552, - "volume": 30, - "volume24h": 722, - "prevTotalTurnover": 980347370700, - "totalTurnover": 980408630700, - "turnover": 61260000, - "turnover24h": 1479489700, - "homeNotional24h": 722, - "foreignNotional24h": 1479.4896999999999, - "prevPrice24h": 2.1039, - "vwap": 2.049155, - "highPrice": 2.1188, - "lowPrice": 2.0074, - "lastPrice": 2.0263, - "lastPriceProtected": 2.0263, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0369, - "bidPrice": 2.0205, - "midPrice": 2.02305, - "askPrice": 2.0256, - "impactBidPrice": 0.178896, - "impactMidPrice": 2.0289, - "impactAskPrice": 3.878926, - "hasLiquidity": false, - "openInterest": 2224, - "openValue": 4486920000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 2.0175, - "markMethod": "FairPrice", - "markPrice": 2.0175, - "indicativeSettlePrice": 2.0175, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "APTUSD", - "rootSymbol": "APT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-10-20T04:00:00.000Z", - "front": "2022-10-20T04:00:00.000Z", - "underlying": "APT", - "quoteCurrency": "USD", - "underlyingSymbol": "APT=", - "reference": "BMEX", - "referenceSymbol": ".BAPT", - "maxOrderQty": 1000000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".APTBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".APTUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.000193, - "prevClosePrice": 14.288, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 163434711, - "totalVolume": 163434938, - "volume": 227, - "volume24h": 28959, - "prevTotalTurnover": 1286073159306, - "totalTurnover": 1286076208370, - "turnover": 3049064, - "turnover24h": 403299848, - "homeNotional24h": 28785.680724288766, - "foreignNotional24h": 400919.9915287746, - "prevPrice24h": 14.244, - "vwap": 13.927, - "highPrice": 14.589, - "lowPrice": 13.369, - "lastPrice": 13.432, - "lastPriceProtected": 13.432, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.057, - "bidPrice": 13.405, - "midPrice": 13.429, - "askPrice": 13.453, - "impactBidPrice": 13.369, - "impactMidPrice": 13.4165, - "impactAskPrice": 13.464, - "hasLiquidity": true, - "openInterest": 65706, - "openValue": 873561270, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 13.295, - "markMethod": "FairPrice", - "markPrice": 13.295, - "indicativeSettlePrice": 13.295, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "WLDUSD", - "rootSymbol": "WLD", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-07-25T04:00:00.000Z", - "front": "2023-07-25T04:00:00.000Z", - "underlying": "WLD", - "quoteCurrency": "USD", - "underlyingSymbol": "WLD=", - "reference": "BMEX", - "referenceSymbol": ".BWLD", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".WLDBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".WLDUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000943, - "indicativeFundingRate": 0.000684, - "prevClosePrice": 3.7114, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 28569196, - "totalVolume": 28569282, - "volume": 86, - "volume24h": 22154, - "prevTotalTurnover": 624298754140, - "totalTurnover": 624301731100, - "turnover": 2976960, - "turnover24h": 789090200, - "homeNotional24h": 219775.72835390622, - "foreignNotional24h": 782896.483466111, - "prevPrice24h": 3.7, - "vwap": 3.5619, - "highPrice": 3.823, - "lowPrice": 3.381, - "lastPrice": 3.426, - "lastPriceProtected": 3.426, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0741, - "bidPrice": 3.425, - "midPrice": 3.427, - "askPrice": 3.429, - "impactBidPrice": 3.4217, - "impactMidPrice": 3.4275, - "impactAskPrice": 3.4341, - "hasLiquidity": true, - "openInterest": 41431, - "openValue": 1419053181, - "fairMethod": "FundingRate", - "fairBasisRate": 1.032585, - "fairBasis": 0.0003, - "fairPrice": 3.4251, - "markMethod": "FairPrice", - "markPrice": 3.4251, - "indicativeSettlePrice": 3.4248, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "AVAXUSD", - "rootSymbol": "AVAX", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-09-29T04:00:00.000Z", - "front": "2021-09-29T04:00:00.000Z", - "underlying": "AVAX", - "quoteCurrency": "USD", - "underlyingSymbol": "AVAX=", - "reference": "BMEX", - "referenceSymbol": ".BAVAX", - "maxOrderQty": 500000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".AVAXBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".AVAXUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000878, - "indicativeFundingRate": 0.000605, - "prevClosePrice": 51.473, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 117789668, - "totalVolume": 117789923, - "volume": 255, - "volume24h": 41253, - "prevTotalTurnover": 3376776835766, - "totalTurnover": 3376789591912, - "turnover": 12756146, - "turnover24h": 2135905131, - "homeNotional24h": 40960.56856219455, - "foreignNotional24h": 2121191.0489819204, - "prevPrice24h": 51.178, - "vwap": 51.777, - "highPrice": 54.549, - "lowPrice": 49.664, - "lastPrice": 49.819, - "lastPriceProtected": 49.819, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0266, - "bidPrice": 49.809, - "midPrice": 49.8335, - "askPrice": 49.858, - "impactBidPrice": 49.748, - "impactMidPrice": 49.8065, - "impactAskPrice": 49.865, - "hasLiquidity": true, - "openInterest": 49333, - "openValue": 2452738094, - "fairMethod": "FundingRate", - "fairBasisRate": 0.96141, - "fairBasis": 0.004, - "fairPrice": 49.718, - "markMethod": "FairPrice", - "markPrice": 49.718, - "indicativeSettlePrice": 49.714, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "FTMUSD", - "rootSymbol": "FTM", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-12-07T04:00:00.000Z", - "front": "2023-12-07T04:00:00.000Z", - "underlying": "FTM", - "quoteCurrency": "USD", - "underlyingSymbol": "FTM=", - "reference": "BMEX", - "referenceSymbol": ".BFTM", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".FTMBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".FTMUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000931, - "indicativeFundingRate": 0.000898, - "prevClosePrice": 1.3123, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1203136, - "totalVolume": 1203137, - "volume": 1, - "volume24h": 463, - "prevTotalTurnover": 7199666950, - "totalTurnover": 7199679370, - "turnover": 12420, - "turnover24h": 5962379, - "homeNotional24h": 4604.8327422149105, - "foreignNotional24h": 5930.823058240413, - "prevPrice24h": 1.3021, - "vwap": 1.2878, - "highPrice": 1.3634, - "lowPrice": 1.2296, - "lastPrice": 1.242, - "lastPriceProtected": 1.242, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0462, - "bidPrice": 1.237, - "midPrice": 1.24615, - "askPrice": 1.2553, - "impactBidPrice": 1.1039, - "impactMidPrice": 1.5274, - "impactAskPrice": 1.9509, - "hasLiquidity": false, - "openInterest": 10802, - "openValue": 133426304, - "fairMethod": "FundingRate", - "fairBasisRate": 1.019445, - "fairBasis": 0.0001, - "fairPrice": 1.2352, - "markMethod": "FairPrice", - "markPrice": 1.2352, - "indicativeSettlePrice": 1.2351, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "SEIUSDT", - "rootSymbol": "SEI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-08-15T13:00:00.000Z", - "front": "2023-08-15T13:00:00.000Z", - "positionCurrency": "SEI", - "underlying": "SEI", - "quoteCurrency": "USDT", - "underlyingSymbol": "SEIT=", - "reference": "BMEX", - "referenceSymbol": ".BSEIT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".SEIBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".SEIUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000688, - "indicativeFundingRate": 0.000178, - "prevClosePrice": 0.6782, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 64354790, - "totalVolume": 64354790, - "volume": 0, - "volume24h": 72870, - "prevTotalTurnover": 23257515491000, - "totalTurnover": 23257515491000, - "turnover": 0, - "turnover24h": 46709077000, - "homeNotional24h": 72870, - "foreignNotional24h": 46709.077000000005, - "prevPrice24h": 0.6658, - "vwap": 0.6409919, - "highPrice": 0.695, - "lowPrice": 0.6173, - "lastPrice": 0.6402, - "lastPriceProtected": 0.6402, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0384, - "bidPrice": 0.6329, - "midPrice": 0.63375, - "askPrice": 0.6346, - "impactBidPrice": 0.0770204, - "impactMidPrice": 0.7434, - "impactAskPrice": 1.4097822, - "hasLiquidity": false, - "openInterest": 370210, - "openValue": 235120371000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.75336, - "fairBasis": 0, - "fairPrice": 0.6351, - "markMethod": "FairPrice", - "markPrice": 0.6351, - "indicativeSettlePrice": 0.6351, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MANTAUSDT", - "rootSymbol": "MANTA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-01-18T12:00:00.000Z", - "front": "2024-01-18T12:00:00.000Z", - "positionCurrency": "MANTA", - "underlying": "MANTA", - "quoteCurrency": "USDT", - "underlyingSymbol": "MANTAT=", - "reference": "BMEX", - "referenceSymbol": ".BMANTAT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MANTABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".MANTAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.2692, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 622166, - "totalVolume": 622166, - "volume": 0, - "volume24h": 14, - "prevTotalTurnover": 1410655792500, - "totalTurnover": 1410655792500, - "turnover": 0, - "turnover24h": 16803500, - "homeNotional24h": 14, - "foreignNotional24h": 16.8035, - "prevPrice24h": 1.2916, - "vwap": 1.20025, - "highPrice": 1.2049, - "lowPrice": 1.1956, - "lastPrice": 1.1956, - "lastPriceProtected": 1.1956, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0743, - "bidPrice": 1.1691, - "midPrice": 1.17955, - "askPrice": 1.19, - "hasLiquidity": false, - "openInterest": 1539, - "openValue": 1796474700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 1.1673, - "markMethod": "FairPrice", - "markPrice": 1.1673, - "indicativeSettlePrice": 1.1673, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ATHUSD", - "rootSymbol": "ATH", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-08-15T04:00:00.000Z", - "front": "2024-08-15T04:00:00.000Z", - "underlying": "ATH", - "quoteCurrency": "USD", - "underlyingSymbol": "ATH=", - "reference": "BMEX", - "referenceSymbol": ".BATH", - "maxOrderQty": 500000, - "maxPrice": 10, - "lotSize": 1, - "tickSize": 0.00001, - "multiplier": 100000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ATHBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".ATHUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.08092, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 23461, - "totalVolume": 23461, - "volume": 0, - "volume24h": 96, - "prevTotalTurnover": 139461644, - "totalTurnover": 139461644, - "turnover": 0, - "turnover24h": 804963, - "homeNotional24h": 9558.593682868895, - "foreignNotional24h": 801.5253694872338, - "prevPrice24h": 0.08221, - "vwap": 0.08386, - "highPrice": 0.08561, - "lowPrice": 0.07958, - "lastPrice": 0.07958, - "lastPriceProtected": 0.07958, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.032, - "bidPrice": 0.08047, - "midPrice": 0.0808, - "askPrice": 0.08113, - "impactBidPrice": 0.00494, - "impactMidPrice": 0.081795, - "impactAskPrice": 0.15865, - "hasLiquidity": false, - "openInterest": 858, - "openValue": 6924918, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.08071, - "markMethod": "FairPrice", - "markPrice": 0.08071, - "indicativeSettlePrice": 0.08071, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "FILUSDT", - "rootSymbol": "FIL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-09-15T04:00:00.000Z", - "front": "2023-09-15T04:00:00.000Z", - "positionCurrency": "FIL", - "underlying": "FIL", - "quoteCurrency": "USDT", - "underlyingSymbol": "FILT=", - "reference": "BMEX", - "referenceSymbol": ".BFILT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".FILBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".FILUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000909, - "indicativeFundingRate": 0.00069, - "prevClosePrice": 7.731, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2509646, - "totalVolume": 2509652, - "volume": 6, - "volume24h": 57703, - "prevTotalTurnover": 16596312025900, - "totalTurnover": 16596354702100, - "turnover": 42676200, - "turnover24h": 424381899400, - "homeNotional24h": 57703, - "foreignNotional24h": 424381.8994000001, - "prevPrice24h": 7.59, - "vwap": 7.354591, - "highPrice": 7.9, - "lowPrice": 7.0574, - "lastPrice": 7.1127, - "lastPriceProtected": 7.1127, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0629, - "bidPrice": 7.0971, - "midPrice": 7.10295, - "askPrice": 7.1088, - "impactBidPrice": 7.092101, - "impactMidPrice": 7.10485, - "impactAskPrice": 7.117635, - "hasLiquidity": true, - "openInterest": 15225, - "openValue": 108184282500, - "fairMethod": "FundingRate", - "fairBasisRate": 0.995355, - "fairBasis": 0.0007, - "fairPrice": 7.1057, - "markMethod": "FairPrice", - "markPrice": 7.1057, - "indicativeSettlePrice": 7.105, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BIGTIMEUSDT", - "rootSymbol": "BIGTIME", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-10-13T04:00:00.000Z", - "front": "2023-10-13T04:00:00.000Z", - "positionCurrency": "BIGTIME", - "underlying": "BIGTIME", - "quoteCurrency": "USDT", - "underlyingSymbol": "BIGTIMET=", - "reference": "BMEX", - "referenceSymbol": ".BBIGTIMET", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 10, - "tickSize": 0.00001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BIGTIMEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BIGTIMEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.222, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 19046700, - "totalVolume": 19046700, - "volume": 0, - "volume24h": 11510, - "prevTotalTurnover": 4563590489900, - "totalTurnover": 4563590489900, - "turnover": 0, - "turnover24h": 2398728600, - "homeNotional24h": 11510, - "foreignNotional24h": 2398.7286, - "prevPrice24h": 0.2199, - "vwap": 0.2084039, - "highPrice": 0.2226, - "lowPrice": 0.1986, - "lastPrice": 0.204, - "lastPriceProtected": 0.204, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0723, - "bidPrice": 0.1996, - "midPrice": 0.20014, - "askPrice": 0.20068, - "impactBidPrice": 0.0678349, - "impactMidPrice": 0.164505, - "impactAskPrice": 0.2611822, - "hasLiquidity": false, - "openInterest": 64250, - "openValue": 12805025000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.1993, - "markMethod": "FairPrice", - "markPrice": 0.1993, - "indicativeSettlePrice": 0.1993, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "MERLUSD", - "rootSymbol": "MERL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-04-19T12:00:00.000Z", - "front": "2024-04-19T12:00:00.000Z", - "underlying": "MERL", - "quoteCurrency": "USD", - "underlyingSymbol": "MERL=", - "reference": "BMEX", - "referenceSymbol": ".BMERL", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".MERLBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".MERLUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.4426, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 387977, - "totalVolume": 387980, - "volume": 3, - "volume24h": 331, - "prevTotalTurnover": 1341480409, - "totalTurnover": 1341492622, - "turnover": 12213, - "turnover24h": 1441126, - "homeNotional24h": 3298.727837248961, - "foreignNotional24h": 1436.522593249438, - "prevPrice24h": 0.4445, - "vwap": 0.4355, - "highPrice": 0.4515, - "lowPrice": 0.398, - "lastPrice": 0.4071, - "lastPriceProtected": 0.4071, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0841, - "bidPrice": 0.4054, - "midPrice": 0.40575, - "askPrice": 0.4061, - "impactBidPrice": 0.0559, - "impactMidPrice": 0.3636, - "impactAskPrice": 0.6713, - "hasLiquidity": false, - "openInterest": 2834, - "openValue": 11477700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.405, - "markMethod": "FairPrice", - "markPrice": 0.405, - "indicativeSettlePrice": 0.405, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "NEIROUSDT", - "rootSymbol": "NEIRO", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-08-13T04:00:00.000Z", - "front": "2024-08-13T04:00:00.000Z", - "positionCurrency": "NEIRO", - "underlying": "NEIRO", - "quoteCurrency": "USDT", - "underlyingSymbol": "NEIROT=", - "reference": "BMEX", - "referenceSymbol": ".BNEIROT", - "maxOrderQty": 1000000000, - "maxPrice": 10, - "lotSize": 1000, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".NEIROBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".NEIROUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.0063, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 27942000, - "totalVolume": 27942000, - "volume": 0, - "volume24h": 34000, - "prevTotalTurnover": 132123248000, - "totalTurnover": 132123248000, - "turnover": 0, - "turnover24h": 210926000, - "homeNotional24h": 34000, - "foreignNotional24h": 210.926, - "prevPrice24h": 0.00645, - "vwap": 0.006203707, - "highPrice": 0.00628, - "lowPrice": 0.00563, - "lastPrice": 0.00563, - "lastPriceProtected": 0.00563, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.1338, - "bidPrice": 0.00575, - "midPrice": 0.005775, - "askPrice": 0.0058, - "impactBidPrice": 0.000169017, - "impactMidPrice": 0.0032155, - "impactAskPrice": 0.006262666, - "hasLiquidity": false, - "openInterest": 110000, - "openValue": 632500000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.00575, - "markMethod": "FairPrice", - "markPrice": 0.00575, - "indicativeSettlePrice": 0.00575, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "100SATSUSD", - "rootSymbol": "SATS", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-16T04:00:00.000Z", - "front": "2023-11-16T04:00:00.000Z", - "underlying": "100SATS", - "quoteCurrency": "USD", - "underlyingSymbol": "100SATS=", - "reference": "BMEX", - "referenceSymbol": ".B100SATS", - "maxOrderQty": 1000000, - "maxPrice": 1, - "lotSize": 1, - "tickSize": 0.00000001, - "multiplier": 100000000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 100000000, - "riskStep": 100000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".100SATSBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".100SATSUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001731, - "indicativeFundingRate": 0.001569, - "prevClosePrice": 0.00003088, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 540887, - "totalVolume": 540887, - "volume": 0, - "volume24h": 5790, - "prevTotalTurnover": 1837666925, - "totalTurnover": 1837666925, - "turnover": 0, - "turnover24h": 17881046, - "homeNotional24h": 577321721.9676169, - "foreignNotional24h": 17829.327227736667, - "prevPrice24h": 0.00003039, - "vwap": 0.00003089, - "highPrice": 0.00003128, - "lowPrice": 0.00002879, - "lastPrice": 0.0000289, - "lastPriceProtected": 0.0000289, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0487, - "bidPrice": 0.000029, - "midPrice": 0.000029125, - "askPrice": 0.00002925, - "impactBidPrice": 0.00000172, - "impactMidPrice": 0.00002491, - "impactAskPrice": 0.0000481, - "hasLiquidity": false, - "openInterest": 10177, - "openValue": 29604893, - "fairMethod": "FundingRate", - "fairBasisRate": 1.8954449999999998, - "fairBasis": 0.00000001, - "fairPrice": 0.00002909, - "markMethod": "FairPrice", - "markPrice": 0.00002909, - "indicativeSettlePrice": 0.00002908, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "USDTUSDC", - "rootSymbol": "USDT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-03-12T04:00:00.000Z", - "front": "2023-03-12T04:00:00.000Z", - "underlying": "USDT", - "quoteCurrency": "USDC", - "underlyingSymbol": "USDTUSDC=", - "reference": "BMEX", - "referenceSymbol": ".BUSDTUSDC", - "maxOrderQty": 100000000, - "maxPrice": 1000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".USDTBON8H", - "fundingQuoteSymbol": ".USDCBON8H", - "fundingPremiumSymbol": ".USDTUSDCPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00018, - "indicativeFundingRate": 0.00018, - "prevClosePrice": 1.001, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 5241171, - "totalVolume": 5241171, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 51855572181, - "totalTurnover": 51855572181, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 1, - "lastPrice": 1, - "lastPriceProtected": 1, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0809, - "bidPrice": 0.95, - "midPrice": 1.005, - "askPrice": 1.06, - "impactBidPrice": 0.7397, - "impactMidPrice": 0.9173, - "impactAskPrice": 1.0949, - "hasLiquidity": false, - "openInterest": 135, - "openValue": 1350000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.19710000000000003, - "fairBasis": 0, - "fairPrice": 1, - "markMethod": "FairPrice", - "markPrice": 1, - "indicativeSettlePrice": 1, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.00006, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ORDIUSD", - "rootSymbol": "ORDI", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-11-13T04:00:00.000Z", - "front": "2023-11-13T04:00:00.000Z", - "underlying": "ORDI", - "quoteCurrency": "USD", - "underlyingSymbol": "ORDI=", - "reference": "BMEX", - "referenceSymbol": ".BORDI", - "maxOrderQty": 1000000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 100000000, - "riskStep": 100000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ORDIBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".ORDIUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00133, - "indicativeFundingRate": 0.000966, - "prevClosePrice": 48.225, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 129739, - "totalVolume": 129810, - "volume": 71, - "volume24h": 3776, - "prevTotalTurnover": 6869639811, - "totalTurnover": 6872861530, - "turnover": 3221719, - "turnover24h": 178851641, - "homeNotional24h": 3756.951123106833, - "foreignNotional24h": 177966.98358631815, - "prevPrice24h": 47.821, - "vwap": 47.366, - "highPrice": 48.84, - "lowPrice": 44.69, - "lastPrice": 45.324, - "lastPriceProtected": 45.324, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0522, - "bidPrice": 44.943, - "midPrice": 45.0455, - "askPrice": 45.148, - "impactBidPrice": 40.032, - "impactMidPrice": 50.579, - "impactAskPrice": 61.126, - "hasLiquidity": false, - "openInterest": 1605, - "openValue": 72271545, - "fairMethod": "FundingRate", - "fairBasisRate": 1.45635, - "fairBasis": 0.006, - "fairPrice": 45.029, - "markMethod": "FairPrice", - "markPrice": 45.029, - "indicativeSettlePrice": 45.023, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "DYDXUSD", - "rootSymbol": "DYDX", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-12-05T04:00:00.000Z", - "front": "2023-12-05T04:00:00.000Z", - "underlying": "DYDX", - "quoteCurrency": "USD", - "underlyingSymbol": "DYDX=", - "reference": "BMEX", - "referenceSymbol": ".BDYDX", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".DYDXBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".DYDXUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001448, - "indicativeFundingRate": 0.00133, - "prevClosePrice": 2.479, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 122717, - "totalVolume": 122717, - "volume": 0, - "volume24h": 600, - "prevTotalTurnover": 2951630137, - "totalTurnover": 2951630137, - "turnover": 0, - "turnover24h": 14995658, - "homeNotional24h": 5969.599507207139, - "foreignNotional24h": 14920.747216327924, - "prevPrice24h": 2.4291, - "vwap": 2.4993, - "highPrice": 2.6497, - "lowPrice": 2.3234, - "lastPrice": 2.3731, - "lastPriceProtected": 2.3731, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0231, - "bidPrice": 2.3243, - "midPrice": 2.333, - "askPrice": 2.3417, - "impactBidPrice": 0.8393, - "impactMidPrice": 1.814, - "impactAskPrice": 2.7887, - "hasLiquidity": false, - "openInterest": 2383, - "openValue": 55516751, - "fairMethod": "FundingRate", - "fairBasisRate": 1.58556, - "fairBasis": 0.0003, - "fairPrice": 2.3297, - "markMethod": "FairPrice", - "markPrice": 2.3297, - "indicativeSettlePrice": 2.3294, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BLURUSD", - "rootSymbol": "BLUR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-02-16T04:00:00.000Z", - "front": "2023-02-16T04:00:00.000Z", - "underlying": "BLUR", - "quoteCurrency": "USD", - "underlyingSymbol": "BLUR=", - "reference": "BMEX", - "referenceSymbol": ".BBLUR", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BLURBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".BLURUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.4055, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 55470916, - "totalVolume": 55470916, - "volume": 0, - "volume24h": 851, - "prevTotalTurnover": 300703376854, - "totalTurnover": 300703376854, - "turnover": 0, - "turnover24h": 3391099, - "homeNotional24h": 8459.142884424824, - "foreignNotional24h": 3371.266436279169, - "prevPrice24h": 0.4, - "vwap": 0.3986, - "highPrice": 0.41, - "lowPrice": 0.3733, - "lastPrice": 0.3733, - "lastPriceProtected": 0.3733, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0783, - "bidPrice": 0.373, - "midPrice": 0.385, - "askPrice": 0.397, - "impactBidPrice": 0.0045, - "impactMidPrice": 0.31955, - "impactAskPrice": 0.6346, - "hasLiquidity": false, - "openInterest": 40556, - "openValue": 151071100, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.3725, - "markMethod": "FairPrice", - "markPrice": 0.3725, - "indicativeSettlePrice": 0.3725, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "FILUSD", - "rootSymbol": "FIL", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-09-15T04:00:00.000Z", - "front": "2023-09-15T04:00:00.000Z", - "underlying": "FIL", - "quoteCurrency": "USD", - "underlyingSymbol": "FIL=", - "reference": "BMEX", - "referenceSymbol": ".BFIL", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".FILBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".FILUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001811, - "indicativeFundingRate": 0.00153, - "prevClosePrice": 7.735, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1921156, - "totalVolume": 1921156, - "volume": 0, - "volume24h": 20285, - "prevTotalTurnover": 93557707960, - "totalTurnover": 93557707960, - "turnover": 0, - "turnover24h": 1515337221, - "homeNotional24h": 201126.15740584536, - "foreignNotional24h": 1502600.6278671029, - "prevPrice24h": 7.6976, - "vwap": 7.4703, - "highPrice": 7.9048, - "lowPrice": 7.0477, - "lastPrice": 7.1898, - "lastPriceProtected": 7.1898, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0646, - "bidPrice": 7.1033, - "midPrice": 7.1104, - "askPrice": 7.1175, - "impactBidPrice": 7.1029, - "impactMidPrice": 7.1114, - "impactAskPrice": 7.1199, - "hasLiquidity": true, - "openInterest": 145529, - "openValue": 10340272037, - "fairMethod": "FundingRate", - "fairBasisRate": 1.983045, - "fairBasis": 0.0013, - "fairPrice": 7.1053, - "markMethod": "FairPrice", - "markPrice": 7.1053, - "indicativeSettlePrice": 7.104, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BLURUSDT", - "rootSymbol": "BLUR", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-02-16T04:00:00.000Z", - "front": "2023-02-16T04:00:00.000Z", - "positionCurrency": "BLUR", - "underlying": "BLUR", - "quoteCurrency": "USDT", - "underlyingSymbol": "BLURT=", - "reference": "BMEX", - "referenceSymbol": ".BBLURT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BLURBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BLURUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000173, - "indicativeFundingRate": 0.000107, - "prevClosePrice": 0.40531, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 12019188000, - "totalVolume": 12019188000, - "volume": 0, - "volume24h": 4328000, - "prevTotalTurnover": 4015671870800, - "totalTurnover": 4015671870800, - "turnover": 0, - "turnover24h": 1712940600, - "homeNotional24h": 4328, - "foreignNotional24h": 1712.9405999999997, - "prevPrice24h": 0.4018, - "vwap": 0.395782, - "highPrice": 0.4115, - "lowPrice": 0.3709, - "lastPrice": 0.3713, - "lastPriceProtected": 0.3713, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0759, - "bidPrice": 0.3731, - "midPrice": 0.37375, - "askPrice": 0.3744, - "impactBidPrice": 0.016563, - "impactMidPrice": 0.7071, - "impactAskPrice": 1.397706, - "hasLiquidity": false, - "openInterest": 43314000, - "openValue": 16138796400, - "fairMethod": "FundingRate", - "fairBasisRate": 0.189435, - "fairBasis": 0.00001, - "fairPrice": 0.3726, - "markMethod": "FairPrice", - "markPrice": 0.3726, - "indicativeSettlePrice": 0.37259, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "POPCATUSDT", - "rootSymbol": "POPCAT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-07-24T04:00:00.000Z", - "front": "2024-07-24T04:00:00.000Z", - "positionCurrency": "POPCAT", - "underlying": "POPCAT", - "quoteCurrency": "USDT", - "underlyingSymbol": "POPCATT=", - "reference": "BMEX", - "referenceSymbol": ".BPOPCATT", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".POPCATBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".POPCATUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 1.5102, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 99390, - "totalVolume": 99390, - "volume": 0, - "volume24h": 590, - "prevTotalTurnover": 128350873000, - "totalTurnover": 128350873000, - "turnover": 0, - "turnover24h": 877449000, - "homeNotional24h": 590, - "foreignNotional24h": 877.4490000000001, - "prevPrice24h": 1.58, - "vwap": 1.4872018, - "highPrice": 1.7896, - "lowPrice": 1.4013, - "lastPrice": 1.4013, - "lastPriceProtected": 1.4013, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1131, - "bidPrice": 1.3643, - "midPrice": 1.47715, - "askPrice": 1.59, - "impactBidPrice": 0.0490201, - "impactMidPrice": 1.301, - "impactAskPrice": 2.553064, - "hasLiquidity": false, - "openInterest": 4670, - "openValue": 6362408000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 1.3624, - "markMethod": "FairPrice", - "markPrice": 1.3624, - "indicativeSettlePrice": 1.3624, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "GMTUSD", - "rootSymbol": "GMT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-04-11T04:00:00.000Z", - "front": "2022-04-11T04:00:00.000Z", - "underlying": "GMT", - "quoteCurrency": "USD", - "underlyingSymbol": "GMT=", - "reference": "BMEX", - "referenceSymbol": ".BGMT", - "maxOrderQty": 500000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 10000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".GMTBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".GMTUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001384, - "indicativeFundingRate": 0.00128, - "prevClosePrice": 0.2384, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 68914050, - "totalVolume": 68914279, - "volume": 229, - "volume24h": 12841, - "prevTotalTurnover": 643446485162, - "totalTurnover": 643446991252, - "turnover": 506090, - "turnover24h": 30394112, - "homeNotional24h": 128114.66610666244, - "foreignNotional24h": 30326.686262217725, - "prevPrice24h": 0.2354, - "vwap": 0.2368, - "highPrice": 0.2453, - "lowPrice": 0.221, - "lastPrice": 0.221, - "lastPriceProtected": 0.221, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0612, - "bidPrice": 0.2182, - "midPrice": 0.21925, - "askPrice": 0.2203, - "impactBidPrice": 0.2098, - "impactMidPrice": 0.218, - "impactAskPrice": 0.2262, - "hasLiquidity": false, - "openInterest": 92535, - "openValue": 203299395, - "fairMethod": "FundingRate", - "fairBasisRate": 1.51548, - "fairBasis": 0, - "fairPrice": 0.2197, - "markMethod": "FairPrice", - "markPrice": 0.2197, - "indicativeSettlePrice": 0.2197, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "GMEUSDT", - "rootSymbol": "GME", - "state": "Open", - "typ": "FFWCSX", - "listing": "2024-06-03T12:00:00.000Z", - "front": "2024-06-03T12:00:00.000Z", - "positionCurrency": "GME", - "underlying": "GME", - "quoteCurrency": "USDT", - "underlyingSymbol": "GMET=", - "reference": "BMEX", - "referenceSymbol": ".BGMET", - "maxOrderQty": 1000000000, - "maxPrice": 10, - "lotSize": 1000, - "tickSize": 0.000001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.1, - "maintMargin": 0.05, - "riskLimit": 20000000000, - "riskStep": 20000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".GMEBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".GMEUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.00609, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 23493000, - "totalVolume": 23493000, - "volume": 0, - "volume24h": 17000, - "prevTotalTurnover": 129172476000, - "totalTurnover": 129172476000, - "turnover": 0, - "turnover24h": 116309000, - "homeNotional24h": 17000, - "foreignNotional24h": 116.309, - "prevPrice24h": 0.00661, - "vwap": 0.006841707, - "highPrice": 0.00705, - "lowPrice": 0.00627, - "lastPrice": 0.00672, - "lastPriceProtected": 0.00672, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0166, - "bidPrice": 0.0066, - "midPrice": 0.00666, - "askPrice": 0.00672, - "hasLiquidity": false, - "openInterest": 259000, - "openValue": 1655010000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.00639, - "markMethod": "FairPrice", - "markPrice": 0.00639, - "indicativeSettlePrice": 0.00639, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "LUNAUSDT", - "rootSymbol": "LUNA", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-06-02T04:00:00.000Z", - "front": "2022-06-02T04:00:00.000Z", - "positionCurrency": "LUNA", - "underlying": "LUNA", - "quoteCurrency": "USDT", - "underlyingSymbol": "LUNAT=", - "reference": "BMEX", - "referenceSymbol": ".BLUNAT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.0001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.125, - "maintMargin": 0.0625, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LUNABON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".LUNAUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 0.7132, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 11805045000, - "totalVolume": 11806045000, - "volume": 1000000, - "volume24h": 13186000, - "prevTotalTurnover": 12454923272300, - "totalTurnover": 12455497524100, - "turnover": 574251800, - "turnover24h": 8740628800, - "homeNotional24h": 13186, - "foreignNotional24h": 8740.628800000002, - "prevPrice24h": 0.7004, - "vwap": 0.662873, - "highPrice": 0.7203, - "lowPrice": 0.4985, - "lastPrice": 0.5627, - "lastPriceProtected": 0.6236, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1966, - "bidPrice": 0.5861, - "midPrice": 0.61475, - "askPrice": 0.6434, - "impactBidPrice": 0.154188, - "impactMidPrice": 1.50605, - "impactAskPrice": 2.857945, - "hasLiquidity": false, - "openInterest": 30708000, - "openValue": 19766739600, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.6437, - "markMethod": "FairPrice", - "markPrice": 0.6437, - "indicativeSettlePrice": 0.6437, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BMEXUSD", - "rootSymbol": "BMEX", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-11-11T04:00:00.000Z", - "front": "2022-11-11T04:00:00.000Z", - "underlying": "BMEX", - "quoteCurrency": "USD", - "underlyingSymbol": "BMEX=", - "reference": "BMEX", - "referenceSymbol": ".BBMEX", - "maxOrderQty": 1000000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.2, - "maintMargin": 0.05, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BMEXBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".BMEXUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.001341, - "indicativeFundingRate": 0.000841, - "prevClosePrice": 0.151, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 357678416, - "totalVolume": 357678416, - "volume": 0, - "volume24h": 6820, - "prevTotalTurnover": 195007944876, - "totalTurnover": 195007944876, - "turnover": 0, - "turnover24h": 1040659, - "homeNotional24h": 6802.947156946328, - "foreignNotional24h": 1038.060414296225, - "prevPrice24h": 0.15, - "vwap": 0.153, - "highPrice": 0.16, - "lowPrice": 0.139, - "lastPrice": 0.153, - "lastPriceProtected": 0.153, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.02, - "bidPrice": 0.151, - "midPrice": 0.1515, - "askPrice": 0.152, - "impactBidPrice": 0.138, - "impactMidPrice": 0.163, - "impactAskPrice": 0.188, - "hasLiquidity": false, - "openInterest": 1212549, - "openValue": 184307448, - "fairMethod": "FundingRate", - "fairBasisRate": 1.468395, - "fairBasis": 0, - "fairPrice": 0.152, - "markMethod": "FairPrice", - "markPrice": 0.152, - "indicativeSettlePrice": 0.152, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "BMEXUSDT", - "rootSymbol": "BMEX", - "state": "Open", - "typ": "FFWCSX", - "listing": "2022-11-11T04:00:00.000Z", - "front": "2022-11-11T04:00:00.000Z", - "positionCurrency": "BMEX", - "underlying": "BMEX", - "quoteCurrency": "USDT", - "underlyingSymbol": "BMEXT=", - "reference": "BMEX", - "referenceSymbol": ".BBMEXT", - "maxOrderQty": 1000000000, - "maxPrice": 100000, - "lotSize": 1000, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.2, - "maintMargin": 0.05, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".BMEXBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".BMEXUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.002065, - "prevClosePrice": 0.1504, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 89806707000, - "totalVolume": 89806707000, - "volume": 0, - "volume24h": 7052000, - "prevTotalTurnover": 47734165727000, - "totalTurnover": 47734165727000, - "turnover": 0, - "turnover24h": 1110430000, - "homeNotional24h": 7052, - "foreignNotional24h": 1110.4299999999998, - "prevPrice24h": 0.152, - "vwap": 0.157464, - "highPrice": 0.16, - "lowPrice": 0.151, - "lastPrice": 0.16, - "lastPriceProtected": 0.16, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": 0.0526, - "bidPrice": 0.16, - "midPrice": 0.1605, - "askPrice": 0.161, - "impactBidPrice": 0.16, - "impactMidPrice": 0.1975, - "impactAskPrice": 0.235212, - "hasLiquidity": false, - "openInterest": 455897000, - "openValue": 69341933700, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 0.1521, - "markMethod": "FairPrice", - "markPrice": 0.1521, - "indicativeSettlePrice": 0.1521, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "CYBERUSDT", - "rootSymbol": "CYBER", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-08-15T13:00:00.000Z", - "front": "2023-08-15T13:00:00.000Z", - "positionCurrency": "CYBER", - "underlying": "CYBER", - "quoteCurrency": "USDT", - "underlyingSymbol": "CYBERT=", - "reference": "BMEX", - "referenceSymbol": ".BCYBERT", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.25, - "maintMargin": 0.125, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".CYBERBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".CYBERUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.0001, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 5.3362, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 13205784, - "totalVolume": 13205870, - "volume": 86, - "volume24h": 14834, - "prevTotalTurnover": 100833436918400, - "totalTurnover": 100833862675200, - "turnover": 425756800, - "turnover24h": 75155232200, - "homeNotional24h": 14834, - "foreignNotional24h": 75155.23220000001, - "prevPrice24h": 5.3679, - "vwap": 5.066418, - "highPrice": 5.4078, - "lowPrice": 4.8065, - "lastPrice": 4.9116, - "lastPriceProtected": 4.9116, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.085, - "bidPrice": 4.9004, - "midPrice": 4.9103, - "askPrice": 4.9202, - "impactBidPrice": 4.883934, - "impactMidPrice": 10.196, - "impactAskPrice": 15.508116, - "hasLiquidity": false, - "openInterest": 2341, - "openValue": 11465281600, - "fairMethod": "FundingRate", - "fairBasisRate": 0.1095, - "fairBasis": 0, - "fairPrice": 4.8976, - "markMethod": "FairPrice", - "markPrice": 4.8976, - "indicativeSettlePrice": 4.8976, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ADAZ24", - "rootSymbol": "ADA", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-09-10T04:00:00.000Z", - "front": "2024-09-10T04:00:00.000Z", - "expiry": "2024-12-27T12:00:00.000Z", - "settle": "2024-12-27T12:00:00.000Z", - "listedSettle": "2024-12-27T12:00:00.000Z", - "positionCurrency": "ADA", - "underlying": "ADA", - "quoteCurrency": "XBT", - "underlyingSymbol": "ADAXBT=", - "reference": "BMEX", - "referenceSymbol": ".BADAXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 0.00001203, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 76476000, - "totalVolume": 76476000, - "volume": 0, - "volume24h": 581000, - "prevTotalTurnover": 566953650, - "totalTurnover": 566953650, - "turnover": 0, - "turnover24h": 6796940, - "homeNotional24h": 5810, - "foreignNotional24h": 0.0679694, - "prevPrice24h": 0.00001233, - "vwap": 0.0000117, - "highPrice": 0.00001233, - "lowPrice": 0.00001132, - "lastPrice": 0.00001133, - "lastPriceProtected": 0.00001133, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0574, - "bidPrice": 0.00001136, - "midPrice": 0.000011415, - "askPrice": 0.00001147, - "impactBidPrice": 0.000010984, - "impactMidPrice": 0.000011345, - "impactAskPrice": 0.000011715, - "hasLiquidity": false, - "openInterest": 16022000, - "openValue": 181529260, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": -0.11, - "fairBasis": -0.00000006, - "fairPrice": 0.00001133, - "markMethod": "FairPrice", - "markPrice": 0.00001133, - "indicativeSettlePrice": 0.00001139, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "XRPZ24", - "rootSymbol": "XRP", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-09-10T04:00:00.000Z", - "front": "2024-09-10T04:00:00.000Z", - "expiry": "2024-12-27T12:00:00.000Z", - "settle": "2024-12-27T12:00:00.000Z", - "listedSettle": "2024-12-27T12:00:00.000Z", - "positionCurrency": "XRP", - "underlying": "XRP", - "quoteCurrency": "XBT", - "underlyingSymbol": "XRPXBT=", - "reference": "BMEX", - "referenceSymbol": ".BXRPXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 0.00002547, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 477571000, - "totalVolume": 477571000, - "volume": 0, - "volume24h": 425000, - "prevTotalTurnover": 5871360240, - "totalTurnover": 5871360240, - "turnover": 0, - "turnover24h": 10591330, - "homeNotional24h": 4250, - "foreignNotional24h": 0.1059133, - "prevPrice24h": 0.00002579, - "vwap": 0.000024922, - "highPrice": 0.00002634, - "lowPrice": 0.00002407, - "lastPrice": 0.00002424, - "lastPriceProtected": 0.00002424, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0586, - "bidPrice": 0.00002417, - "midPrice": 0.00002425, - "askPrice": 0.00002433, - "impactBidPrice": 0.000023529, - "impactMidPrice": 0.000024265, - "impactAskPrice": 0.000025002, - "hasLiquidity": false, - "openInterest": 130635000, - "openValue": 3158754300, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "fairBasis": 0, - "fairPrice": 0.00002418, - "markMethod": "FairPrice", - "markPrice": 0.00002418, - "indicativeSettlePrice": 0.00002418, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "P_SBFPARDONF25", - "rootSymbol": "SBFPARDON", - "state": "Open", - "typ": "FFICSX", - "listing": "2023-11-10T03:00:00.000Z", - "front": "2023-11-10T03:00:00.000Z", - "expiry": "2025-01-31T12:00:00.000Z", - "settle": "2025-01-31T12:00:00.000Z", - "listedSettle": "2025-01-31T12:00:00.000Z", - "underlying": "USDT", - "quoteCurrency": "XXX", - "reference": "BMEX", - "maxOrderQty": 10000000, - "maxPrice": 100, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 0, - "taxed": true, - "deleverage": true, - "makerFee": -0.0005, - "takerFee": 0.002, - "settlementFee": 0, - "prevClosePrice": 25, - "limitDownPrice": 0, - "limitUpPrice": 100, - "prevTotalVolume": 3613, - "totalVolume": 3613, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 1107910600, - "totalTurnover": 1107910600, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 0.1, - "lastPrice": 0.1, - "lastPriceProtected": 0.1, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.9989, - "bidPrice": 0.1, - "midPrice": 44.55, - "askPrice": 89, - "hasLiquidity": false, - "openInterest": 91, - "openValue": 22750000, - "fairBasisRate": 0, - "markMethod": "LastPrice", - "markPrice": 25, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "HYPEUSDTZ25", - "rootSymbol": "HYPE", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-12-02T09:00:00.000Z", - "front": "2024-12-02T09:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "HYPE", - "underlying": "HYPE", - "quoteCurrency": "USDT", - "underlyingSymbol": "HYPET=", - "reference": "BMEX", - "referenceSymbol": ".BHYPET30M", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1000, - "tickSize": 0.001, - "multiplier": 1000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.5, - "maintMargin": 0.25, - "riskLimit": 50000000000, - "riskStep": 50000000000, - "limit": 0.2, - "taxed": true, - "deleverage": true, - "makerFee": -0.000175, - "takerFee": 0.0025, - "settlementFee": 0, - "prevClosePrice": 11.966, - "limitDownPrice": 11.201, - "limitUpPrice": 16.801, - "prevTotalVolume": 9000, - "totalVolume": 9000, - "volume": 0, - "volume24h": 2000, - "prevTotalTurnover": 107346000, - "totalTurnover": 107346000, - "turnover": 0, - "turnover24h": 27988000, - "homeNotional24h": 2, - "foreignNotional24h": 27.988, - "prevPrice24h": 11.966, - "vwap": 13.994, - "highPrice": 14.001, - "lowPrice": 13.987, - "lastPrice": 14.001, - "lastPriceProtected": 14.001, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.1701, - "bidPrice": 13.003, - "midPrice": 15.153, - "askPrice": 17.303, - "hasLiquidity": false, - "openInterest": 4000, - "openValue": 56004000, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "LastPrice", - "markPrice": 14.001, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "USUALUSDTZ25", - "rootSymbol": "USUAL", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-11-21T09:00:00.000Z", - "front": "2024-11-21T09:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "USUAL", - "underlying": "USUAL", - "quoteCurrency": "USDT", - "underlyingSymbol": "USUALT=", - "reference": "BMEX", - "referenceSymbol": ".BUSUALT30M", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 10, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.5, - "maintMargin": 0.25, - "riskLimit": 50000000000, - "riskStep": 50000000000, - "limit": 0.2, - "taxed": true, - "deleverage": true, - "makerFee": -0.000175, - "takerFee": 0.0025, - "settlementFee": 0, - "prevClosePrice": 0.27, - "limitDownPrice": 0.3686, - "limitUpPrice": 0.553, - "prevTotalVolume": 550, - "totalVolume": 550, - "volume": 0, - "volume24h": 30, - "prevTotalTurnover": 137097000, - "totalTurnover": 137097000, - "turnover": 0, - "turnover24h": 11648000, - "homeNotional24h": 30, - "foreignNotional24h": 11.648, - "prevPrice24h": 0.27, - "vwap": 0.3882667, - "highPrice": 0.4608, - "lowPrice": 0.32, - "lastPrice": 0.4608, - "lastPriceProtected": 0.4608, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.7067, - "bidPrice": 0.0001, - "midPrice": 0.28685, - "askPrice": 0.5736, - "hasLiquidity": false, - "openInterest": 30, - "openValue": 13824000, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "LastPrice", - "markPrice": 0.4608, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "MEUSDTZ25", - "rootSymbol": "ME", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-11-21T09:00:00.000Z", - "front": "2024-11-21T09:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "ME", - "underlying": "ME", - "quoteCurrency": "USDT", - "underlyingSymbol": "MET=", - "reference": "BMEX", - "referenceSymbol": ".BMET30M", - "maxOrderQty": 1000000000, - "maxPrice": 10000, - "lotSize": 1, - "tickSize": 0.0001, - "multiplier": 1000000, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.5, - "maintMargin": 0.25, - "riskLimit": 50000000000, - "riskStep": 50000000000, - "limit": 0.2, - "taxed": true, - "deleverage": true, - "makerFee": -0.000175, - "takerFee": 0.0025, - "settlementFee": 0, - "prevClosePrice": 2.42, - "limitDownPrice": 1.936, - "limitUpPrice": 2.904, - "prevTotalVolume": 1, - "totalVolume": 1, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 2420000, - "totalTurnover": 2420000, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 2.42, - "lastPrice": 2.42, - "lastPriceProtected": 2.42, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": 0.0041, - "bidPrice": 2.41, - "midPrice": 2.415, - "askPrice": 2.42, - "hasLiquidity": false, - "openInterest": 1, - "openValue": 2420000, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "LastPrice", - "markPrice": 2.42, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "P_POWELLK26", - "rootSymbol": "POWELL", - "state": "Open", - "typ": "FFICSX", - "listing": "2024-08-09T04:00:00.000Z", - "front": "2024-08-09T04:00:00.000Z", - "expiry": "2026-05-29T12:00:00.000Z", - "settle": "2026-05-29T12:00:00.000Z", - "listedSettle": "2026-05-29T12:00:00.000Z", - "underlying": "USDT", - "quoteCurrency": "XXX", - "reference": "BMEX", - "maxOrderQty": 10000000, - "maxPrice": 100, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 0, - "taxed": true, - "deleverage": true, - "makerFee": -0.0005, - "takerFee": 0.002, - "settlementFee": 0, - "prevClosePrice": 50, - "limitDownPrice": 0, - "limitUpPrice": 100, - "prevTotalVolume": 51, - "totalVolume": 51, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 13790300, - "totalTurnover": 13790300, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 1.25, - "lastPrice": 1.25, - "lastPriceProtected": 1.25, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.975, - "bidPrice": 1, - "midPrice": 49.995, - "askPrice": 98.99, - "hasLiquidity": false, - "openInterest": 10, - "openValue": 5000000, - "fairBasisRate": 0, - "markMethod": "LastPrice", - "markPrice": 50, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "P_FTXZ26", - "rootSymbol": "FTX", - "state": "Open", - "typ": "FFICSX", - "listing": "2023-09-13T03:00:00.000Z", - "front": "2023-09-13T03:00:00.000Z", - "expiry": "2026-12-25T12:00:00.000Z", - "settle": "2026-12-25T12:00:00.000Z", - "listedSettle": "2026-12-25T12:00:00.000Z", - "underlying": "USDT", - "quoteCurrency": "XXX", - "reference": "BMEX", - "maxOrderQty": 10000000, - "maxPrice": 100, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 10000, - "settlCurrency": "USDt", - "underlyingToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 0, - "taxed": true, - "deleverage": true, - "makerFee": -0.0005, - "takerFee": 0.002, - "settlementFee": 0, - "prevClosePrice": 21, - "limitDownPrice": 0, - "limitUpPrice": 100, - "prevTotalVolume": 1751, - "totalVolume": 1751, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 906024800, - "totalTurnover": 906024800, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 66, - "lastPrice": 66, - "lastPriceProtected": 66, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.3333, - "bidPrice": 22.02, - "midPrice": 60.5, - "askPrice": 98.98, - "hasLiquidity": false, - "openInterest": 676, - "openValue": 141960000, - "fairBasisRate": 0, - "markMethod": "LastPrice", - "markPrice": 21, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "BMEX_USDT", - "rootSymbol": "BMEX", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-11-11T00:00:00.000Z", - "underlying": "BMEX", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 100000, - "lotSize": 1000000, - "tickSize": 0.0001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.1504, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 174985124000000, - "totalVolume": 174985124000000, - "volume": 0, - "volume24h": 215444000000, - "prevTotalTurnover": 75366540894600, - "totalTurnover": 75366540894600, - "turnover": 0, - "turnover24h": 32728971300, - "homeNotional24h": 215444, - "foreignNotional24h": 32728.9713, - "prevPrice24h": 0.1506, - "vwap": 0.15191405330387478, - "highPrice": 0.1538, - "lowPrice": 0.1501, - "lastPrice": 0.1521, - "lastPriceProtected": 0.1521, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": 0.01, - "bidPrice": 0.1521, - "midPrice": 0.15215, - "askPrice": 0.1522, - "impactBidPrice": 0.151161, - "impactMidPrice": 0.15235, - "impactAskPrice": 0.153611, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.1521, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "TRX_USDT", - "rootSymbol": "TRX", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-09-06T07:00:00.000Z", - "underlying": "TRX", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 10000000000000, - "maxPrice": 10000, - "lotSize": 100000000, - "tickSize": 0.00001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.31621, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 37919500000000, - "totalVolume": 37919500000000, - "volume": 0, - "volume24h": 5300000000, - "prevTotalTurnover": 2344268853000, - "totalTurnover": 2344268853000, - "turnover": 0, - "turnover24h": 1613295000, - "homeNotional24h": 5300, - "foreignNotional24h": 1613.295, - "prevPrice24h": 0.31621, - "vwap": 0.3043952830188679, - "highPrice": 0.30876, - "lowPrice": 0.30274, - "lastPrice": 0.30287, - "lastPriceProtected": 0.30287, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0422, - "bidPrice": 0.29216, - "midPrice": 0.297315, - "askPrice": 0.30247, - "impactBidPrice": 0.18291651, - "impactMidPrice": 0.38745, - "impactAskPrice": 0.59198685, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.30287, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "capped": false - }, - { - "symbol": "ATOM_USDT", - "rootSymbol": "ATOM", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-03-20T04:00:00.000Z", - "underlying": "ATOM", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 10000000000, - "maxPrice": 100000, - "lotSize": 100000, - "tickSize": 0.001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 10.279, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 22855600000, - "totalVolume": 22855600000, - "volume": 0, - "volume24h": 1900000, - "prevTotalTurnover": 142263006500, - "totalTurnover": 142263006500, - "turnover": 0, - "turnover24h": 19501600, - "homeNotional24h": 1.9, - "foreignNotional24h": 19.5016, - "prevPrice24h": 10.279, - "vwap": 10.264, - "highPrice": 10.264, - "lowPrice": 10.264, - "lastPrice": 10.264, - "lastPriceProtected": 10.264, - "lastTickDirection": "MinusTick", - "lastChangePcnt": 0.0602, - "bidPrice": 9.284, - "midPrice": 9.2925, - "askPrice": 9.301, - "impactBidPrice": 9.28401, - "impactMidPrice": 9.2925, - "impactAskPrice": 9.301, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 10.264, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "capped": false - }, - { - "symbol": "AXS_USDT", - "rootSymbol": "AXS", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-05-17T04:00:00.000Z", - "underlying": "AXS", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 1000000, - "lotSize": 1000000, - "tickSize": 0.001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 9.088, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 150044626000000, - "totalVolume": 150044626000000, - "volume": 0, - "volume24h": 255000000, - "prevTotalTurnover": 22862970564950, - "totalTurnover": 22862970564950, - "turnover": 0, - "turnover24h": 23453950, - "homeNotional24h": 2.55, - "foreignNotional24h": 23.45395, - "prevPrice24h": 9.088, - "vwap": 9.197627450980391, - "highPrice": 9.459, - "lowPrice": 8.684, - "lastPrice": 8.684, - "lastPriceProtected": 8.684, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0445, - "bidPrice": 8.549, - "midPrice": 8.556, - "askPrice": 8.563, - "impactBidPrice": 8.5471, - "impactMidPrice": 8.5555, - "impactAskPrice": 8.5641, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 8.684, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "capped": false - }, - { - "symbol": "STLS_USDT", - "rootSymbol": "STLS", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-12-09T07:00:00.000Z", - "underlying": "STLS", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 100000000000000, - "maxPrice": 100, - "lotSize": 100000000, - "tickSize": 0.0001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.4, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 3590700000000, - "totalVolume": 3721400000000, - "volume": 130700000000, - "volume24h": 3707400000000, - "prevTotalTurnover": 4120791100, - "totalTurnover": 4239753500, - "turnover": 118962400, - "turnover24h": 4226183100, - "homeNotional24h": 37074, - "foreignNotional24h": 4226.183099999999, - "prevPrice24h": 0.4, - "vwap": 0.11399317850784917, - "highPrice": 1.2147, - "lowPrice": 0.0286, - "lastPrice": 0.0972, - "lastPriceProtected": 0.0972, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.757, - "bidPrice": 0.096, - "midPrice": 0.09705, - "askPrice": 0.0981, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.0972, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "GOAT_USDT", - "rootSymbol": "GOAT", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-10-23T04:00:00.000Z", - "underlying": "GOAT", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 100000000000000, - "maxPrice": 100, - "lotSize": 100000000, - "tickSize": 0.00001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.74725, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1153700000000, - "totalVolume": 1153700000000, - "volume": 0, - "volume24h": 100000000, - "prevTotalTurnover": 8483905870, - "totalTurnover": 8483905870, - "turnover": 0, - "turnover24h": 720860, - "homeNotional24h": 1, - "foreignNotional24h": 0.72086, - "prevPrice24h": 0.74725, - "vwap": 0.72086, - "highPrice": 0.72086, - "lowPrice": 0.72086, - "lastPrice": 0.72086, - "lastPriceProtected": 0.72086, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0714, - "bidPrice": 0.71064, - "midPrice": 0.923335, - "askPrice": 1.13603, - "impactBidPrice": 0.696385, - "impactMidPrice": 0.783535, - "impactAskPrice": 0.870693, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.72086, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "capped": false - }, - { - "symbol": "LINK_USDT", - "rootSymbol": "LINK", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-05-17T04:00:00.000Z", - "underlying": "LINK", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 100000, - "lotSize": 10000000, - "tickSize": 0.001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 26.25, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 423946760000000, - "totalVolume": 423946760000000, - "volume": 0, - "volume24h": 11460000000, - "prevTotalTurnover": 32780333067700, - "totalTurnover": 32780333067700, - "turnover": 0, - "turnover24h": 3002703300, - "homeNotional24h": 114.60000000000001, - "foreignNotional24h": 3002.7033, - "prevPrice24h": 25.461, - "vwap": 26.20159947643979, - "highPrice": 27.091, - "lowPrice": 25, - "lastPrice": 25, - "lastPriceProtected": 25, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0181, - "bidPrice": 24.727, - "midPrice": 24.8135, - "askPrice": 24.9, - "impactBidPrice": 24.72701, - "impactMidPrice": 24.8135, - "impactAskPrice": 24.90001, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 25, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "capped": false - }, - { - "symbol": "XRP_USDT", - "rootSymbol": "XRP", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-03-20T04:00:00.000Z", - "underlying": "XRP", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 10000, - "lotSize": 1000000, - "tickSize": 0.0001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 2.5016, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1583680000000, - "totalVolume": 1583680000000, - "volume": 0, - "volume24h": 15980000000, - "prevTotalTurnover": 1268810599200, - "totalTurnover": 1268810599200, - "turnover": 0, - "turnover24h": 40129608400, - "homeNotional24h": 15980, - "foreignNotional24h": 40129.6084, - "prevPrice24h": 2.5016, - "vwap": 2.5112395744680853, - "highPrice": 2.6034, - "lowPrice": 2.3636, - "lastPrice": 2.3993, - "lastPriceProtected": 2.3993, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0409, - "bidPrice": 2.3718, - "midPrice": 2.3799, - "askPrice": 2.388, - "impactBidPrice": 2.371801, - "impactMidPrice": 2.3802, - "impactAskPrice": 2.388664, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 2.3993, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "APE_USDT", - "rootSymbol": "APE", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-05-17T04:00:00.000Z", - "underlying": "APE", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 10000000000000, - "maxPrice": 100000, - "lotSize": 10000000, - "tickSize": 0.001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 1.888, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 554470430000000, - "totalVolume": 554470430000000, - "volume": 0, - "volume24h": 50540000000, - "prevTotalTurnover": 33916169291700, - "totalTurnover": 33916169291700, - "turnover": 0, - "turnover24h": 894098300, - "homeNotional24h": 505.4, - "foreignNotional24h": 894.0983, - "prevPrice24h": 1.888, - "vwap": 1.7690904234269886, - "highPrice": 1.804, - "lowPrice": 1.735, - "lastPrice": 1.735, - "lastPriceProtected": 1.735, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.081, - "bidPrice": 1.669, - "midPrice": 1.671, - "askPrice": 1.673, - "impactBidPrice": 1.66793, - "impactMidPrice": 1.6705, - "impactAskPrice": 1.6734, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 1.735, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "capped": false - }, - { - "symbol": "UNI_USDT", - "rootSymbol": "UNI", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-05-17T04:00:00.000Z", - "underlying": "UNI", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 100000, - "lotSize": 10000000, - "tickSize": 0.001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 18.758, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 721908860000000, - "totalVolume": 721908860000000, - "volume": 0, - "volume24h": 12000000000, - "prevTotalTurnover": 45037023135100, - "totalTurnover": 45037023135100, - "turnover": 0, - "turnover24h": 2251424400, - "homeNotional24h": 120, - "foreignNotional24h": 2251.4244, - "prevPrice24h": 18.059, - "vwap": 18.76187, - "highPrice": 19.011, - "lowPrice": 18.389, - "lastPrice": 18.389, - "lastPriceProtected": 18.389, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0051, - "bidPrice": 17.194, - "midPrice": 17.207, - "askPrice": 17.22, - "impactBidPrice": 17.19401, - "impactMidPrice": 17.207, - "impactAskPrice": 17.22001, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 18.389, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "capped": false - }, - { - "symbol": "BONK_USDT", - "rootSymbol": "BONK", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-03-12T04:00:00.000Z", - "underlying": "BONK", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 100000000000000, - "maxPrice": 0.01, - "lotSize": 100000, - "tickSize": 0.000000001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.000048403, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 12038568278600000, - "totalVolume": 12038568278600000, - "volume": 0, - "volume24h": 5822557400000, - "prevTotalTurnover": 2993719469719, - "totalTurnover": 2993719469719, - "turnover": 0, - "turnover24h": 2599926137, - "homeNotional24h": 58225574, - "foreignNotional24h": 2599.926137, - "prevPrice24h": 0.000048403, - "vwap": 0.00004465264931523045, - "highPrice": 0.000046225, - "lowPrice": 0.000043351, - "lastPrice": 0.000043351, - "lastPriceProtected": 0.000043351, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.1044, - "bidPrice": 0.000043063, - "midPrice": 0.000043089, - "askPrice": 0.000043115, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.000043351, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.000000001, - "capped": false - }, - { - "symbol": "TRUMP_USDT", - "rootSymbol": "TRUMP", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-08-20T04:00:00.000Z", - "underlying": "TRUMP", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 10000000000, - "maxPrice": 100000, - "lotSize": 100000000, - "tickSize": 0.001, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 2.87, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 491900000000, - "totalVolume": 491900000000, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 18245447000, - "totalTurnover": 18245447000, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 2.87, - "lastPrice": 2.87, - "lastPriceProtected": 2.87, - "lastTickDirection": "PlusTick", - "lastChangePcnt": 0.2059, - "bidPrice": 1.745, - "midPrice": 2.1215, - "askPrice": 2.498, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 2.87, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "capped": false - }, - { - "symbol": "SOL_USDT", - "rootSymbol": "SOL", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-09-27T07:00:00.000Z", - "underlying": "SOL", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 1000000, - "lotSize": 1000000, - "tickSize": 0.01, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 235.05, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 160352563000000, - "totalVolume": 160352563000000, - "volume": 0, - "volume24h": 3973000000, - "prevTotalTurnover": 9336377567800, - "totalTurnover": 9336377567800, - "turnover": 0, - "turnover24h": 905178200, - "homeNotional24h": 3.973, - "foreignNotional24h": 905.1782000000001, - "prevPrice24h": 235.05, - "vwap": 227.83241882708282, - "highPrice": 235.79, - "lowPrice": 225.51, - "lastPrice": 226.55, - "lastPriceProtected": 226.55, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0494, - "bidPrice": 226.11, - "midPrice": 226.26, - "askPrice": 226.41, - "impactBidPrice": 226.111, - "impactMidPrice": 226.26, - "impactAskPrice": 226.411, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 226.55, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "POL_USDT", - "rootSymbol": "POL", - "state": "Open", - "typ": "IFXXXP", - "listing": "2024-09-09T04:00:00.000Z", - "underlying": "POL", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 100000000000000, - "maxPrice": 10000, - "lotSize": 1000000000, - "tickSize": 0.0001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.6965, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 373267000000000, - "totalVolume": 373267000000000, - "volume": 0, - "volume24h": 1967000000000, - "prevTotalTurnover": 176203162500, - "totalTurnover": 176203162500, - "turnover": 0, - "turnover24h": 1310816100, - "homeNotional24h": 1967, - "foreignNotional24h": 1310.8161, - "prevPrice24h": 0.6965, - "vwap": 0.6664037112353839, - "highPrice": 0.7018, - "lowPrice": 0.65, - "lastPrice": 0.6527, - "lastPriceProtected": 0.6527, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0629, - "bidPrice": 0.6367, - "midPrice": 0.63735, - "askPrice": 0.638, - "impactBidPrice": 0.636229, - "impactMidPrice": 0.6371, - "impactAskPrice": 0.638068, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.6527, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "capped": false - }, - { - "symbol": "XBTETH", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2023-08-01T04:00:00.000Z", - "front": "2023-08-01T04:00:00.000Z", - "positionCurrency": "ETH", - "underlying": "XBT", - "quoteCurrency": "ETH", - "underlyingSymbol": "XBTETH=", - "reference": "BMEX", - "referenceSymbol": ".BXBTETH", - "maxOrderQty": 10000000, - "maxPrice": 100000, - "lotSize": 1, - "tickSize": 0.001, - "multiplier": -1000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XBTBON8H", - "fundingQuoteSymbol": ".ETHBON8H", - "fundingPremiumSymbol": ".XBTETHPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0, - "indicativeFundingRate": 0, - "prevClosePrice": 25.0988, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 838883, - "totalVolume": 838883, - "volume": 0, - "volume24h": 3760, - "prevTotalTurnover": 37878342721, - "totalTurnover": 37878342721, - "turnover": 0, - "turnover24h": 148983017, - "homeNotional24h": 1.4898301700000003, - "foreignNotional24h": 37.599999999999994, - "prevPrice24h": 25, - "vwap": 25.2379, - "highPrice": 25.516, - "lowPrice": 25, - "lastPrice": 25.325, - "lastPriceProtected": 25.325, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": 0.0111, - "bidPrice": 25.378, - "midPrice": 25.4205, - "askPrice": 25.463, - "impactBidPrice": 25.3781, - "impactMidPrice": 25.4325, - "impactAskPrice": 25.4874, - "hasLiquidity": true, - "openInterest": 216105, - "openValue": 8488820505, - "fairMethod": "FundingRate", - "fairBasisRate": 0, - "fairBasis": 0, - "fairPrice": 25.4577, - "markMethod": "FairPrice", - "markPrice": 25.4577, - "indicativeSettlePrice": 25.4577, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0003, - "capped": false - }, - { - "symbol": "XBTUSDT", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "XBT", - "underlying": "XBT", - "quoteCurrency": "USDT", - "underlyingSymbol": "XBTT=", - "reference": "BMEX", - "referenceSymbol": ".BXBTT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.1, - "multiplier": 1, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XBTBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".XBTUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00024, - "indicativeFundingRate": 0.000238, - "prevClosePrice": 99705.51, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 1044615208600, - "totalVolume": 1044616421400, - "volume": 1212800, - "volume24h": 294642200, - "prevTotalTurnover": 38842198136488240, - "totalTurnover": 38842317733296920, - "turnover": 119596808680, - "turnover24h": 29362092108410, - "homeNotional24h": 294.6422000000001, - "foreignNotional24h": 29362092.108410005, - "prevPrice24h": 99304.4, - "vwap": 99653.39, - "highPrice": 101483.5, - "lowPrice": 98312.8, - "lastPrice": 98409.7, - "lastPriceProtected": 98409.7, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.009, - "bidPrice": 98406.5, - "midPrice": 98413.3, - "askPrice": 98420.1, - "impactBidPrice": 98376.35, - "impactMidPrice": 98398.25, - "impactAskPrice": 98420.23, - "hasLiquidity": true, - "openInterest": 141930200, - "openValue": 13958954391368, - "fairMethod": "FundingRate", - "fairBasisRate": 0.26280000000000003, - "fairBasis": 2.41, - "fairPrice": 98350.84, - "markMethod": "FairPrice", - "markPrice": 98350.84, - "indicativeSettlePrice": 98348.43, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XBTUSD", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2016-05-13T12:00:00.000Z", - "front": "2016-05-13T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.1, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 20000000000, - "riskStep": 15000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XBTBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".XBTUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.00017, - "indicativeFundingRate": 0.000161, - "prevClosePrice": 99754.43, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 3878801967489, - "totalVolume": 3878803737189, - "volume": 1769700, - "volume24h": 488458700, - "prevTotalTurnover": 37678305826089141, - "totalTurnover": 37678307621909841, - "turnover": 1795820700, - "turnover24h": 489914016711, - "homeNotional24h": 4899.140167110001, - "foreignNotional24h": 488458700, - "prevPrice24h": 99345, - "vwap": 99703.8795, - "highPrice": 101525.90000000001, - "lowPrice": 98312.3, - "lastPrice": 98417.9, - "lastPriceProtected": 98419.3847, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0093, - "bidPrice": 98431.2, - "midPrice": 98437.2, - "askPrice": 98443.2, - "impactBidPrice": 98419.3847, - "impactMidPrice": 98431.45, - "impactAskPrice": 98443.6066, - "hasLiquidity": true, - "openInterest": 433340600, - "openValue": 440664056140, - "fairMethod": "FundingRate", - "fairBasisRate": 0.18615, - "fairBasis": 1.71, - "fairPrice": 98337.78, - "markMethod": "FairPrice", - "markPrice": 98337.78, - "indicativeSettlePrice": 98336.07, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XBTEUR", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-06-16T04:00:00.000Z", - "front": "2021-06-16T04:00:00.000Z", - "positionCurrency": "EUR", - "underlying": "XBT", - "quoteCurrency": "EUR", - "underlyingSymbol": "XBTEUR=", - "reference": "BMEX", - "referenceSymbol": ".BXBTEUR", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".XBTBON8H", - "fundingQuoteSymbol": ".EURBON8H", - "fundingPremiumSymbol": ".XBTEURPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000135, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 94337.66, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2830151000, - "totalVolume": 2830151000, - "volume": 0, - "volume24h": 2072000, - "prevTotalTurnover": 8466972901070, - "totalTurnover": 8466972901070, - "turnover": 0, - "turnover24h": 2207416143, - "homeNotional24h": 22.07416143, - "foreignNotional24h": 2072000, - "prevPrice24h": 93881, - "vwap": 93865.8657, - "highPrice": 95917.5, - "lowPrice": 92863, - "lastPrice": 93120.5, - "lastPriceProtected": 93120.5, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0093, - "bidPrice": 92919, - "midPrice": 92938.25, - "askPrice": 92957.5, - "impactBidPrice": 92867.7563, - "impactMidPrice": 92941, - "impactAskPrice": 93014.6033, - "hasLiquidity": true, - "openInterest": 1822800, - "openValue": 1960457856, - "fairMethod": "FundingRate", - "fairBasisRate": 0.147825, - "fairBasis": 1.28, - "fairPrice": 92978.16, - "markMethod": "FairPrice", - "markPrice": 92978.16, - "indicativeSettlePrice": 92976.88, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XBTZ24", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-03-12T04:00:00.000Z", - "front": "2024-03-12T04:00:00.000Z", - "expiry": "2024-12-27T12:00:00.000Z", - "settle": "2024-12-27T12:00:00.000Z", - "listedSettle": "2024-12-27T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 100689.13, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 623622900, - "totalVolume": 623622900, - "volume": 0, - "volume24h": 1311900, - "prevTotalTurnover": 839633818053, - "totalTurnover": 839633818053, - "turnover": 0, - "turnover24h": 1310641630, - "homeNotional24h": 13.106416299999998, - "foreignNotional24h": 1311900, - "prevPrice24h": 99706, - "vwap": 100097.0942, - "highPrice": 102370.5, - "lowPrice": 99129, - "lastPrice": 99491, - "lastPriceProtected": 99491, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0022, - "bidPrice": 99199, - "midPrice": 99261.5, - "askPrice": 99324, - "impactBidPrice": 99199.4604, - "impactMidPrice": 99263.75, - "impactAskPrice": 99328.5391, - "hasLiquidity": true, - "openInterest": 27016400, - "openValue": 27217942344, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.19, - "fairBasis": 923.14, - "fairPrice": 99259.21, - "markMethod": "FairPrice", - "markPrice": 99259.21, - "indicativeSettlePrice": 98336.07, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTUSDTZ24", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-09-10T04:00:00.000Z", - "front": "2024-09-10T04:00:00.000Z", - "expiry": "2024-12-27T12:00:00.000Z", - "settle": "2024-12-27T12:00:00.000Z", - "listedSettle": "2024-12-27T12:00:00.000Z", - "positionCurrency": "XBT", - "underlying": "XBT", - "quoteCurrency": "USDT", - "underlyingSymbol": "XBTT=", - "reference": "BMEX", - "referenceSymbol": ".BXBTT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.5, - "multiplier": 1, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 101003.07, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 20762000, - "totalVolume": 20762000, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 1625881096500, - "totalTurnover": 1625881096500, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "prevPrice24h": 98915, - "lastPrice": 98915, - "lastPriceProtected": 98915, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0438, - "bidPrice": 97750.5, - "midPrice": 102875.25, - "askPrice": 108000, - "impactBidPrice": 97554.216, - "impactMidPrice": 102830.25, - "impactAskPrice": 108106.584, - "hasLiquidity": false, - "openInterest": 10248000, - "openValue": 1020324083520, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.25, - "fairBasis": 1214.81, - "fairPrice": 99563.24, - "markMethod": "FairPrice", - "markPrice": 99563.24, - "indicativeSettlePrice": 98348.43, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTF25", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-11-26T04:00:00.000Z", - "front": "2024-11-26T04:00:00.000Z", - "expiry": "2025-01-31T12:00:00.000Z", - "settle": "2025-01-31T12:00:00.000Z", - "listedSettle": "2025-01-31T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 102115.75, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 6428400, - "totalVolume": 6428400, - "volume": 0, - "volume24h": 116600, - "prevTotalTurnover": 6280260146, - "totalTurnover": 6280260146, - "turnover": 0, - "turnover24h": 114585113, - "homeNotional24h": 1.1458511299999998, - "foreignNotional24h": 116600, - "prevPrice24h": 101516.5, - "vwap": 101759.4204, - "highPrice": 103773.5, - "lowPrice": 100715, - "lastPrice": 100921, - "lastPriceProtected": 100921, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.0059, - "bidPrice": 100575, - "midPrice": 100615.5, - "askPrice": 100656, - "impactBidPrice": 100431.857, - "impactMidPrice": 100622.5, - "impactAskPrice": 100813.5655, - "hasLiquidity": true, - "openInterest": 123400, - "openValue": 122637388, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.16, - "fairBasis": 2286.1, - "fairPrice": 100622.17, - "markMethod": "FairPrice", - "markPrice": 100622.17, - "indicativeSettlePrice": 98336.07, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTH25", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-06-11T04:00:00.000Z", - "front": "2024-06-11T04:00:00.000Z", - "expiry": "2025-03-28T12:00:00.000Z", - "settle": "2025-03-28T12:00:00.000Z", - "listedSettle": "2025-03-28T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 104263.88, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 253016600, - "totalVolume": 253023800, - "volume": 7200, - "volume24h": 1415700, - "prevTotalTurnover": 338353987932, - "totalTurnover": 338360997690, - "turnover": 7009758, - "turnover24h": 1360553226, - "homeNotional24h": 13.605532260000002, - "foreignNotional24h": 1415700, - "prevPrice24h": 103715, - "vwap": 104053.9416, - "highPrice": 106067, - "lowPrice": 102410.5, - "lastPrice": 102630, - "lastPriceProtected": 102630, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0105, - "bidPrice": 102500.5, - "midPrice": 102555.75, - "askPrice": 102611, - "impactBidPrice": 102449.5692, - "impactMidPrice": 102614.25, - "impactAskPrice": 102779.1482, - "hasLiquidity": true, - "openInterest": 36689300, - "openValue": 35812425730, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.14, - "fairBasis": 4112.54, - "fairPrice": 102448.61, - "markMethod": "FairPrice", - "markPrice": 102448.61, - "indicativeSettlePrice": 98336.07, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTM25", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-09-10T04:00:00.000Z", - "front": "2024-09-10T04:00:00.000Z", - "expiry": "2025-06-27T12:00:00.000Z", - "settle": "2025-06-27T12:00:00.000Z", - "listedSettle": "2025-06-27T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 107445.09, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 171420800, - "totalVolume": 171421100, - "volume": 300, - "volume24h": 1607300, - "prevTotalTurnover": 207296664176, - "totalTurnover": 207296947526, - "turnover": 283350, - "turnover24h": 1495009675, - "homeNotional24h": 14.95009675, - "foreignNotional24h": 1607300, - "prevPrice24h": 106849, - "vwap": 107511.8532, - "highPrice": 109395, - "lowPrice": 105541, - "lastPrice": 105876.5, - "lastPriceProtected": 105876.5, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0091, - "bidPrice": 105510, - "midPrice": 105637.25, - "askPrice": 105764.5, - "impactBidPrice": 105391.8469, - "impactMidPrice": 105653, - "impactAskPrice": 105914.2518, - "hasLiquidity": true, - "openInterest": 35986200, - "openValue": 33987526452, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.14, - "fairBasis": 7544.87, - "fairPrice": 105880.94, - "markMethod": "FairPrice", - "markPrice": 105880.94, - "indicativeSettlePrice": 98336.07, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTU25", - "rootSymbol": "XBT", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-11-18T04:00:00.000Z", - "front": "2024-11-18T04:00:00.000Z", - "expiry": "2025-09-26T12:00:00.000Z", - "settle": "2025-09-26T12:00:00.000Z", - "listedSettle": "2025-09-26T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 110926.93, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 13358200, - "totalVolume": 13358200, - "volume": 0, - "volume24h": 548800, - "prevTotalTurnover": 12399260878, - "totalTurnover": 12399260878, - "turnover": 0, - "turnover24h": 496005211, - "homeNotional24h": 4.9600521099999995, - "foreignNotional24h": 548800, - "prevPrice24h": 110500, - "vwap": 110645.172, - "highPrice": 113605, - "lowPrice": 108902.5, - "lastPrice": 109619, - "lastPriceProtected": 109619, - "lastTickDirection": "ZeroPlusTick", - "lastChangePcnt": -0.008, - "bidPrice": 109237, - "midPrice": 109446, - "askPrice": 109655, - "impactBidPrice": 109067.9057, - "impactMidPrice": 109465, - "impactAskPrice": 109862.3425, - "hasLiquidity": false, - "openInterest": 2901100, - "openValue": 2653926280, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.14, - "fairBasis": 10977.21, - "fairPrice": 109313.28, - "markMethod": "FairPrice", - "markPrice": 109313.28, - "indicativeSettlePrice": 98336.07, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBT_USDT", - "rootSymbol": "XBT", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-05-17T04:00:00.000Z", - "underlying": "XBT", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 10000000000, - "maxPrice": 1000000, - "lotSize": 10000, - "tickSize": 0.5, - "multiplier": 1, - "underlyingToPositionMultiplier": 100000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 99746, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2676564600000, - "totalVolume": 2676564600000, - "volume": 0, - "volume24h": 599250000, - "prevTotalTurnover": 688146200464350, - "totalTurnover": 688146200464350, - "turnover": 0, - "turnover24h": 596687122550, - "homeNotional24h": 5.9925, - "foreignNotional24h": 596687.1225500001, - "prevPrice24h": 99160.5, - "vwap": 99572.31915727993, - "highPrice": 101243, - "lowPrice": 98355.5, - "lastPrice": 98690.5, - "lastPriceProtected": 98690.5, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0022, - "bidPrice": 98355.5, - "midPrice": 98380.5, - "askPrice": 98405.5, - "impactBidPrice": 98363.5, - "impactMidPrice": 98386.25, - "impactAskPrice": 98409, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 98690.5, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.5, - "capped": false - }, - { - "symbol": "ETHUSDT", - "rootSymbol": "ETH", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "ETH", - "underlying": "ETH", - "quoteCurrency": "USDT", - "underlyingSymbol": "ETHT=", - "reference": "BMEX", - "referenceSymbol": ".BETHT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.01, - "multiplier": 10, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ETHBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".ETHUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000207, - "indicativeFundingRate": 0.000311, - "prevClosePrice": 3971.964, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 564933477000, - "totalVolume": 564933963000, - "volume": 486000, - "volume24h": 140212000, - "prevTotalTurnover": 12157113156972801, - "totalTurnover": 12157131991096401, - "turnover": 18834123600, - "turnover24h": 5534739065600, - "homeNotional24h": 1402.1199999999994, - "foreignNotional24h": 5534739.065599999, - "prevPrice24h": 3962.2, - "vwap": 3947.4076, - "highPrice": 4020.29, - "lowPrice": 3853.79, - "lastPrice": 3865.71, - "lastPriceProtected": 3865.71, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0244, - "bidPrice": 3864.36, - "midPrice": 3865.43, - "askPrice": 3866.5, - "impactBidPrice": 3863.0884, - "impactMidPrice": 3864.795, - "impactAskPrice": 3866.5085, - "hasLiquidity": true, - "openInterest": 166340000, - "openValue": 6422239357400, - "fairMethod": "FundingRate", - "fairBasisRate": 0.22666499999999998, - "fairBasis": 0.082, - "fairPrice": 3860.911, - "markMethod": "FairPrice", - "markPrice": 3860.911, - "indicativeSettlePrice": 3860.829, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ETHUSD", - "rootSymbol": "ETH", - "state": "Open", - "typ": "FFWCSX", - "listing": "2018-08-01T12:00:00.000Z", - "front": "2018-08-01T12:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "USD", - "underlyingSymbol": "ETH=", - "reference": "BMEX", - "referenceSymbol": ".BETH", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 10000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".ETHBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".ETHUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000545, - "indicativeFundingRate": 0.000639, - "prevClosePrice": 3973.88, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 184186871882, - "totalVolume": 184186872349, - "volume": 467, - "volume24h": 137438, - "prevTotalTurnover": 4161842633113597, - "totalTurnover": 4161842814104182, - "turnover": 180990585, - "turnover24h": 54268845864, - "homeNotional24h": 13673.26519617959, - "foreignNotional24h": 53993346.931936204, - "prevPrice24h": 3962.5, - "vwap": 3948.61, - "highPrice": 4021.9, - "lowPrice": 3855.74, - "lastPrice": 3866.03, - "lastPriceProtected": 3866.03, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0243, - "bidPrice": 3864.19, - "midPrice": 3864.66, - "askPrice": 3865.13, - "impactBidPrice": 3864.19, - "impactMidPrice": 3864.665, - "impactAskPrice": 3865.14, - "hasLiquidity": true, - "openInterest": 238332, - "openValue": 92006400276, - "fairMethod": "FundingRate", - "fairBasisRate": 0.596775, - "fairBasis": 0.21, - "fairPrice": 3860.43, - "markMethod": "FairPrice", - "markPrice": 3860.43, - "indicativeSettlePrice": 3860.22, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "ETHUSDZ24", - "rootSymbol": "ETH", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-09-10T04:00:00.000Z", - "front": "2024-09-10T04:00:00.000Z", - "expiry": "2024-12-27T12:00:00.000Z", - "settle": "2024-12-27T12:00:00.000Z", - "listedSettle": "2024-12-27T12:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "USD", - "underlyingSymbol": "ETH=", - "reference": "BMEX", - "referenceSymbol": ".BETH30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.05, - "multiplier": 100, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 4102.14, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 150342, - "totalVolume": 150348, - "volume": 6, - "volume24h": 1404, - "prevTotalTurnover": 49600217790, - "totalTurnover": 49602609330, - "turnover": 2391540, - "turnover24h": 570000865, - "homeNotional24h": 139.58913597800776, - "foreignNotional24h": 566747.43462168, - "prevPrice24h": 4088.9, - "vwap": 4059.84, - "highPrice": 4141.45, - "lowPrice": 3961.7, - "lastPrice": 3985.9, - "lastPriceProtected": 3985.9, - "lastTickDirection": "ZeroMinusTick", - "lastChangePcnt": -0.0252, - "bidPrice": 3974.35, - "midPrice": 3977.2, - "askPrice": 3980.05, - "impactBidPrice": 3965.04, - "impactMidPrice": 3975.775, - "impactAskPrice": 3986.55, - "hasLiquidity": true, - "openInterest": 25605, - "openValue": 10172226375, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.59, - "fairBasis": 112.53, - "fairPrice": 3972.75, - "markMethod": "FairPrice", - "markPrice": 3972.75, - "indicativeSettlePrice": 3860.22, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "ETHZ24", - "rootSymbol": "ETH", - "state": "Open", - "typ": "FFCCSX", - "listing": "2024-09-10T04:00:00.000Z", - "front": "2024-09-10T04:00:00.000Z", - "expiry": "2024-12-27T12:00:00.000Z", - "settle": "2024-12-27T12:00:00.000Z", - "listedSettle": "2024-12-27T12:00:00.000Z", - "positionCurrency": "ETH", - "underlying": "ETH", - "quoteCurrency": "XBT", - "underlyingSymbol": "ETHXBT=", - "reference": "BMEX", - "referenceSymbol": ".BETHXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "prevClosePrice": 0.0403, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 618323000, - "totalVolume": 618323000, - "volume": 0, - "volume24h": 2562000, - "prevTotalTurnover": 23513541460, - "totalTurnover": 23513541460, - "turnover": 0, - "turnover24h": 102550380, - "homeNotional24h": 25.620000000000008, - "foreignNotional24h": 1.0255037999999999, - "prevPrice24h": 0.04043, - "vwap": 0.040028, - "highPrice": 0.04047, - "lowPrice": 0.03941, - "lastPrice": 0.03981, - "lastPriceProtected": 0.03981, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0097, - "bidPrice": 0.0397, - "midPrice": 0.03971, - "askPrice": 0.03972, - "impactBidPrice": 0.039701, - "impactMidPrice": 0.039725, - "impactAskPrice": 0.039757, - "hasLiquidity": true, - "openInterest": 186283000, - "openValue": 7397297930, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0.23, - "fairBasis": 0.00045, - "fairPrice": 0.03971, - "markMethod": "FairPrice", - "markPrice": 0.03971, - "indicativeSettlePrice": 0.03926, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.00001, - "capped": false - }, - { - "symbol": "ETH_USDT", - "rootSymbol": "ETH", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-05-17T04:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 1000000000000, - "maxPrice": 1000000, - "lotSize": 1000000, - "tickSize": 0.05, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 4017.3, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 72233628000000, - "totalVolume": 72233628000000, - "volume": 0, - "volume24h": 3350000000, - "prevTotalTurnover": 115928984434000, - "totalTurnover": 115928984434000, - "turnover": 0, - "turnover24h": 13351253150, - "homeNotional24h": 3.3499999999999996, - "foreignNotional24h": 13351.253149999997, - "prevPrice24h": 4017.3, - "vwap": 3985.448701492537, - "highPrice": 3992, - "lowPrice": 3868.75, - "lastPrice": 3882.45, - "lastPriceProtected": 3882.45, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0336, - "bidPrice": 3859.7, - "midPrice": 3861.275, - "askPrice": 3862.85, - "impactBidPrice": 3859.71, - "impactMidPrice": 3861.275, - "impactAskPrice": 3862.85, - "hasLiquidity": true, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 3882.45, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.05, - "capped": false - }, - { - "symbol": "ETH_XBT", - "rootSymbol": "ETH", - "state": "Open", - "typ": "IFXXXP", - "listing": "2022-10-18T06:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "XBT", - "reference": "BMEX", - "maxOrderQty": 100000000000, - "maxPrice": 10, - "lotSize": 1000000, - "tickSize": 0.0000001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000000, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "prevClosePrice": 0.0399, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 4970017000000, - "totalVolume": 4970017000000, - "volume": 0, - "volume24h": 753000000, - "prevTotalTurnover": 30308569397, - "totalTurnover": 30308569397, - "turnover": 0, - "turnover24h": 3001975, - "homeNotional24h": 0.753, - "foreignNotional24h": 0.030019749999999994, - "prevPrice24h": 0.0399, - "vwap": 0.03986687, - "highPrice": 0.0399183, - "lowPrice": 0.0398, - "lastPrice": 0.0399183, - "lastPriceProtected": 0.0399183, - "lastTickDirection": "PlusTick", - "lastChangePcnt": -0.0062, - "bidPrice": 0.0377506, - "midPrice": 0.0385601, - "askPrice": 0.0393696, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "markPrice": 0.0399183, - "instantPnl": false, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.0000001, - "capped": false - }, - { - "symbol": "LTCUSDT", - "rootSymbol": "LTC", - "state": "Open", - "typ": "FFWCSX", - "listing": "2021-11-10T04:00:00.000Z", - "front": "2021-11-10T04:00:00.000Z", - "positionCurrency": "LTC", - "underlying": "LTC", - "quoteCurrency": "USDT", - "underlyingSymbol": "LTCT=", - "reference": "BMEX", - "referenceSymbol": ".BLTCT", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.01, - "multiplier": 100, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 10000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LTCBON8H", - "fundingQuoteSymbol": ".USDTBON8H", - "fundingPremiumSymbol": ".LTCUSDTPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000148, - "indicativeFundingRate": 0.0001, - "prevClosePrice": 132.737, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 227539419000, - "totalVolume": 227539485000, - "volume": 66000, - "volume24h": 152860000, - "prevTotalTurnover": 1876648673192000, - "totalTurnover": 1876649495288000, - "turnover": 822096000, - "turnover24h": 1971503534000, - "homeNotional24h": 15286, - "foreignNotional24h": 1971503.5340000007, - "prevPrice24h": 133.81, - "vwap": 128.97446, - "highPrice": 136.09, - "lowPrice": 122.82, - "lastPrice": 124.56, - "lastPriceProtected": 124.56, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0691, - "bidPrice": 123.52, - "midPrice": 123.665, - "askPrice": 123.81, - "impactBidPrice": 123.49193, - "impactMidPrice": 123.65, - "impactAskPrice": 123.81695, - "hasLiquidity": true, - "openInterest": 54063000, - "openValue": 667407735000, - "fairMethod": "FundingRate", - "fairBasisRate": 0.16205999999999998, - "fairBasis": 0.002, - "fairPrice": 123.45, - "markMethod": "FairPrice", - "markPrice": 123.45, - "indicativeSettlePrice": 123.448, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.001, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "LTCUSD", - "rootSymbol": "LTC", - "state": "Open", - "typ": "FFWCSX", - "listing": "2020-07-30T04:00:00.000Z", - "front": "2020-07-30T04:00:00.000Z", - "underlying": "LTC", - "quoteCurrency": "USD", - "underlyingSymbol": "LTC=", - "reference": "BMEX", - "referenceSymbol": ".BLTC", - "maxOrderQty": 100000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.01, - "multiplier": 200, - "settlCurrency": "XBt", - "quoteToSettleMultiplier": 1017, - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.01, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "fundingBaseSymbol": ".LTCBON8H", - "fundingQuoteSymbol": ".USDBON8H", - "fundingPremiumSymbol": ".LTCUSDPI8H", - "fundingTimestamp": "2024-12-09T12:00:00.000Z", - "fundingInterval": "2000-01-01T08:00:00.000Z", - "fundingRate": 0.000983, - "indicativeFundingRate": 0.00127, - "prevClosePrice": 132.81, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 2006493033, - "totalVolume": 2006493182, - "volume": 149, - "volume24h": 155260, - "prevTotalTurnover": 37908265557990, - "totalTurnover": 37908269262524, - "turnover": 3704534, - "turnover24h": 4074354164, - "homeNotional24h": 30913.538194047414, - "foreignNotional24h": 4056596.2475786526, - "prevPrice24h": 132.75, - "vwap": 131.215, - "highPrice": 136.1, - "lowPrice": 122.73, - "lastPrice": 123.42, - "lastPriceProtected": 123.42, - "lastTickDirection": "MinusTick", - "lastChangePcnt": -0.0703, - "bidPrice": 123.37, - "midPrice": 123.445, - "askPrice": 123.52, - "impactBidPrice": 123.34, - "impactMidPrice": 123.44, - "impactAskPrice": 123.54, - "hasLiquidity": true, - "openInterest": 356744, - "openValue": 8808009360, - "fairMethod": "FundingRate", - "fairBasisRate": 1.076385, - "fairBasis": 0.01, - "fairPrice": 123.45, - "markMethod": "FairPrice", - "markPrice": 123.45, - "indicativeSettlePrice": 123.44, - "instantPnl": true, - "timestamp": "2024-12-09T11:11:10.769Z", - "minTick": 0.005, - "fundingBaseRate": 0.0003, - "fundingQuoteRate": 0.0006, - "capped": false - }, - { - "symbol": "XRPH25", - "rootSymbol": "XRP", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2024-12-10T04:00:00.000Z", - "front": "2024-12-10T04:00:00.000Z", - "expiry": "2025-03-28T12:00:00.000Z", - "settle": "2025-03-28T12:00:00.000Z", - "listedSettle": "2025-03-28T12:00:00.000Z", - "positionCurrency": "XRP", - "underlying": "XRP", - "quoteCurrency": "XBT", - "underlyingSymbol": "XRPXBT=", - "reference": "BMEX", - "referenceSymbol": ".BXRPXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "ADAH25", - "rootSymbol": "ADA", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2024-12-10T04:00:00.000Z", - "front": "2024-12-10T04:00:00.000Z", - "expiry": "2025-03-28T12:00:00.000Z", - "settle": "2025-03-28T12:00:00.000Z", - "listedSettle": "2025-03-28T12:00:00.000Z", - "positionCurrency": "ADA", - "underlying": "ADA", - "quoteCurrency": "XBT", - "underlyingSymbol": "ADAXBT=", - "reference": "BMEX", - "referenceSymbol": ".BADAXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "ADAM25", - "rootSymbol": "ADA", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-11T04:00:00.000Z", - "front": "2025-03-11T04:00:00.000Z", - "expiry": "2025-06-27T12:00:00.000Z", - "settle": "2025-06-27T12:00:00.000Z", - "listedSettle": "2025-06-27T12:00:00.000Z", - "positionCurrency": "ADA", - "underlying": "ADA", - "quoteCurrency": "XBT", - "underlyingSymbol": "ADAXBT=", - "reference": "BMEX", - "referenceSymbol": ".BADAXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "XRPM25", - "rootSymbol": "XRP", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-11T04:00:00.000Z", - "front": "2025-03-11T04:00:00.000Z", - "expiry": "2025-06-27T12:00:00.000Z", - "settle": "2025-06-27T12:00:00.000Z", - "listedSettle": "2025-06-27T12:00:00.000Z", - "positionCurrency": "XRP", - "underlying": "XRP", - "quoteCurrency": "XBT", - "underlyingSymbol": "XRPXBT=", - "reference": "BMEX", - "referenceSymbol": ".BXRPXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "XRPU25", - "rootSymbol": "XRP", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-06-10T04:00:00.000Z", - "front": "2025-06-10T04:00:00.000Z", - "expiry": "2025-09-26T12:00:00.000Z", - "settle": "2025-09-26T12:00:00.000Z", - "listedSettle": "2025-09-26T12:00:00.000Z", - "positionCurrency": "XRP", - "underlying": "XRP", - "quoteCurrency": "XBT", - "underlyingSymbol": "XRPXBT=", - "reference": "BMEX", - "referenceSymbol": ".BXRPXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "ADAU25", - "rootSymbol": "ADA", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-06-10T04:00:00.000Z", - "front": "2025-06-10T04:00:00.000Z", - "expiry": "2025-09-26T12:00:00.000Z", - "settle": "2025-09-26T12:00:00.000Z", - "listedSettle": "2025-09-26T12:00:00.000Z", - "positionCurrency": "ADA", - "underlying": "ADA", - "quoteCurrency": "XBT", - "underlyingSymbol": "ADAXBT=", - "reference": "BMEX", - "referenceSymbol": ".BADAXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "XRPZ25", - "rootSymbol": "XRP", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-09-09T04:00:00.000Z", - "front": "2025-09-09T04:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "XRP", - "underlying": "XRP", - "quoteCurrency": "XBT", - "underlyingSymbol": "XRPXBT=", - "reference": "BMEX", - "referenceSymbol": ".BXRPXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "ADAZ25", - "rootSymbol": "ADA", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-09-09T04:00:00.000Z", - "front": "2025-09-09T04:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "ADA", - "underlying": "ADA", - "quoteCurrency": "XBT", - "underlyingSymbol": "ADAXBT=", - "reference": "BMEX", - "referenceSymbol": ".BADAXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1, - "lotSize": 1000, - "tickSize": 0.00000001, - "multiplier": 1000000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.05, - "maintMargin": 0.025, - "riskLimit": 5000000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "USDC_USDT", - "rootSymbol": "USDT", - "state": "Unlisted", - "typ": "IFXXXP", - "listing": "2200-02-01T00:00:00.000Z", - "underlying": "USDC", - "quoteCurrency": "USDT", - "reference": "BMEX", - "maxOrderQty": 100000000000000, - "maxPrice": 100, - "lotSize": 1, - "tickSize": 0.00001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:11:08.009Z", - "minTick": 0.00001, - "capped": false - }, - { - "symbol": "XBTG25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2024-12-24T04:00:00.000Z", - "front": "2024-12-24T04:00:00.000Z", - "expiry": "2025-02-28T12:00:00.000Z", - "settle": "2025-02-28T12:00:00.000Z", - "listedSettle": "2025-02-28T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTUSDTH25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2024-12-10T04:00:00.000Z", - "front": "2024-12-10T04:00:00.000Z", - "expiry": "2025-03-28T12:00:00.000Z", - "settle": "2025-03-28T12:00:00.000Z", - "listedSettle": "2025-03-28T12:00:00.000Z", - "positionCurrency": "XBT", - "underlying": "XBT", - "quoteCurrency": "USDT", - "underlyingSymbol": "XBTT=", - "reference": "BMEX", - "referenceSymbol": ".BXBTT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.5, - "multiplier": 1, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTJ25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-02-25T04:00:00.000Z", - "front": "2025-02-25T04:00:00.000Z", - "expiry": "2025-04-25T12:00:00.000Z", - "settle": "2025-04-25T12:00:00.000Z", - "listedSettle": "2025-04-25T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTK25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-25T04:00:00.000Z", - "front": "2025-03-25T04:00:00.000Z", - "expiry": "2025-05-30T12:00:00.000Z", - "settle": "2025-05-30T12:00:00.000Z", - "listedSettle": "2025-05-30T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTUSDTM25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-11T04:00:00.000Z", - "front": "2025-03-11T04:00:00.000Z", - "expiry": "2025-06-27T12:00:00.000Z", - "settle": "2025-06-27T12:00:00.000Z", - "listedSettle": "2025-06-27T12:00:00.000Z", - "positionCurrency": "XBT", - "underlying": "XBT", - "quoteCurrency": "USDT", - "underlyingSymbol": "XBTT=", - "reference": "BMEX", - "referenceSymbol": ".BXBTT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.5, - "multiplier": 1, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTN25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-05-27T04:00:00.000Z", - "front": "2025-05-27T04:00:00.000Z", - "expiry": "2025-07-25T12:00:00.000Z", - "settle": "2025-07-25T12:00:00.000Z", - "listedSettle": "2025-07-25T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTQ25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-06-24T04:00:00.000Z", - "front": "2025-06-24T04:00:00.000Z", - "expiry": "2025-08-29T12:00:00.000Z", - "settle": "2025-08-29T12:00:00.000Z", - "listedSettle": "2025-08-29T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTUSDTU25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-06-10T04:00:00.000Z", - "front": "2025-06-10T04:00:00.000Z", - "expiry": "2025-09-26T12:00:00.000Z", - "settle": "2025-09-26T12:00:00.000Z", - "listedSettle": "2025-09-26T12:00:00.000Z", - "positionCurrency": "XBT", - "underlying": "XBT", - "quoteCurrency": "USDT", - "underlyingSymbol": "XBTT=", - "reference": "BMEX", - "referenceSymbol": ".BXBTT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.5, - "multiplier": 1, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTV25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-08-26T04:00:00.000Z", - "front": "2025-08-26T04:00:00.000Z", - "expiry": "2025-10-31T12:00:00.000Z", - "settle": "2025-10-31T12:00:00.000Z", - "listedSettle": "2025-10-31T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTX25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-09-23T04:00:00.000Z", - "front": "2025-09-23T04:00:00.000Z", - "expiry": "2025-11-28T12:00:00.000Z", - "settle": "2025-11-28T12:00:00.000Z", - "listedSettle": "2025-11-28T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTUSDTZ25", + "symbol": "XBT_USDT", "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-09-09T04:00:00.000Z", - "front": "2025-09-09T04:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "XBT", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", "underlying": "XBT", "quoteCurrency": "USDT", - "underlyingSymbol": "XBTT=", - "reference": "BMEX", - "referenceSymbol": ".BXBTT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000000, - "lotSize": 1000, - "tickSize": 0.5, - "multiplier": 1, - "settlCurrency": "USDt", - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 1000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 1000000000000, - "riskStep": 1000000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "XBTZ25", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-11T04:00:00.000Z", - "front": "2025-03-11T04:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "USD", - "underlying": "XBT", - "quoteCurrency": "USD", - "underlyingSymbol": "XBT=", - "reference": "BMEX", - "referenceSymbol": ".BXBT30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 100, - "tickSize": 0.5, - "multiplier": -100000000, - "settlCurrency": "XBt", - "underlyingToSettleMultiplier": -100000000, - "isQuanto": false, - "isInverse": true, - "initMargin": 0.01, - "maintMargin": 0.005, - "riskLimit": 7500000000, - "riskStep": 7500000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "USDC_XBT", - "rootSymbol": "XBT", - "state": "Unlisted", - "typ": "IFXXXP", - "listing": "2200-02-01T00:00:00.000Z", - "underlying": "USDC", - "quoteCurrency": "XBT", - "reference": "BMEX", - "maxOrderQty": 100000000000000, - "maxPrice": 1, - "lotSize": 1, - "tickSize": 0.00000001, - "multiplier": 1, - "underlyingToPositionMultiplier": 1000000, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 1, - "maintMargin": 1, - "taxed": true, - "deleverage": false, - "makerFee": 0.001, - "takerFee": 0.001, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "markMethod": "LastPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:11:08.009Z", - "minTick": 0.00000001, - "capped": false - }, - { - "symbol": "ETHUSDH25", - "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2024-12-10T04:00:00.000Z", - "front": "2024-12-10T04:00:00.000Z", - "expiry": "2025-03-28T12:00:00.000Z", - "settle": "2025-03-28T12:00:00.000Z", - "listedSettle": "2025-03-28T12:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "USD", - "underlyingSymbol": "ETH=", - "reference": "BMEX", - "referenceSymbol": ".BETH30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.05, - "multiplier": 100, - "settlCurrency": "XBt", - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, - "capped": false - }, - { - "symbol": "ETHH25", - "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2024-12-10T04:00:00.000Z", - "front": "2024-12-10T04:00:00.000Z", - "expiry": "2025-03-28T12:00:00.000Z", - "settle": "2025-03-28T12:00:00.000Z", - "listedSettle": "2025-03-28T12:00:00.000Z", - "positionCurrency": "ETH", - "underlying": "ETH", - "quoteCurrency": "XBT", - "underlyingSymbol": "ETHXBT=", - "reference": "BMEX", - "referenceSymbol": ".BETHXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 100000000, - "isQuanto": false, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00001, - "capped": false - }, - { - "symbol": "ETHM25", - "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-11T04:00:00.000Z", - "front": "2025-03-11T04:00:00.000Z", - "expiry": "2025-06-27T12:00:00.000Z", - "settle": "2025-06-27T12:00:00.000Z", - "listedSettle": "2025-06-27T12:00:00.000Z", - "positionCurrency": "ETH", - "underlying": "ETH", - "quoteCurrency": "XBT", - "underlyingSymbol": "ETHXBT=", "reference": "BMEX", - "referenceSymbol": ".BETHXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 100000000, + "maxOrderQty": 10000000000, + "maxPrice": 1000000, + "lotSize": 10000, + "tickSize": 0.5, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, "isQuanto": false, "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, + "initMargin": 1, + "maintMargin": 1, "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, "settlementFee": 0, + "prevClosePrice": 99746, "limitDownPrice": null, "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, + "prevTotalVolume": 2676564600000, + "totalVolume": 2676564600000, "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, + "volume24h": 599250000, + "prevTotalTurnover": 688146200464350, + "totalTurnover": 688146200464350, "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, + "turnover24h": 596687122550, + "homeNotional24h": 5.9925, + "foreignNotional24h": 596687.1225500001, + "prevPrice24h": 99160.5, + "vwap": 99572.31915727993, + "highPrice": 101243, + "lowPrice": 98355.5, + "lastPrice": 98690.5, + "lastPriceProtected": 98690.5, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0022, + "bidPrice": 98355.5, + "midPrice": 98380.5, + "askPrice": 98405.5, + "impactBidPrice": 98363.5, + "impactMidPrice": 98386.25, + "impactAskPrice": 98409, + "hasLiquidity": true, "openInterest": 0, "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", + "markMethod": "LastPrice", + "markPrice": 98690.5, "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00001, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.5, "capped": false }, { - "symbol": "ETHUSDM25", + "symbol": "ETH_USDT", "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-03-11T04:00:00.000Z", - "front": "2025-03-11T04:00:00.000Z", - "expiry": "2025-06-27T12:00:00.000Z", - "settle": "2025-06-27T12:00:00.000Z", - "listedSettle": "2025-06-27T12:00:00.000Z", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-05-17T04:00:00.000Z", "underlying": "ETH", - "quoteCurrency": "USD", - "underlyingSymbol": "ETH=", + "quoteCurrency": "USDT", "reference": "BMEX", - "referenceSymbol": ".BETH30M", - "maxOrderQty": 10000000, + "maxOrderQty": 1000000000000, "maxPrice": 1000000, - "lotSize": 1, + "lotSize": 1000000, "tickSize": 0.05, - "multiplier": 100, - "settlCurrency": "XBt", - "isQuanto": true, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, + "initMargin": 1, + "maintMargin": 1, "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, "settlementFee": 0, + "prevClosePrice": 4017.3, "limitDownPrice": null, "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, + "prevTotalVolume": 72233628000000, + "totalVolume": 72233628000000, "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, + "volume24h": 3350000000, + "prevTotalTurnover": 115928984434000, + "totalTurnover": 115928984434000, "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, + "turnover24h": 13351253150, + "homeNotional24h": 3.3499999999999996, + "foreignNotional24h": 13351.253149999997, + "prevPrice24h": 4017.3, + "vwap": 3985.448701492537, + "highPrice": 3992, + "lowPrice": 3868.75, + "lastPrice": 3882.45, + "lastPriceProtected": 3882.45, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0336, + "bidPrice": 3859.7, + "midPrice": 3861.275, + "askPrice": 3862.85, + "impactBidPrice": 3859.71, + "impactMidPrice": 3861.275, + "impactAskPrice": 3862.85, + "hasLiquidity": true, "openInterest": 0, "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", + "markMethod": "LastPrice", + "markPrice": 3882.45, "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.05, "capped": false }, { - "symbol": "ETHU25", + "symbol": "ETH_XBT", "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-06-10T04:00:00.000Z", - "front": "2025-06-10T04:00:00.000Z", - "expiry": "2025-09-26T12:00:00.000Z", - "settle": "2025-09-26T12:00:00.000Z", - "listedSettle": "2025-09-26T12:00:00.000Z", - "positionCurrency": "ETH", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-10-18T06:00:00.000Z", "underlying": "ETH", "quoteCurrency": "XBT", - "underlyingSymbol": "ETHXBT=", "reference": "BMEX", - "referenceSymbol": ".BETHXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100000, + "maxOrderQty": 100000000000, + "maxPrice": 10, + "lotSize": 1000000, + "tickSize": 0.0000001, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, "quoteToSettleMultiplier": 100000000, "isQuanto": false, "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, - "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, - "settlementFee": 0, - "limitDownPrice": null, - "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, - "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, - "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, - "openInterest": 0, - "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", - "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00001, - "capped": false - }, - { - "symbol": "ETHUSDU25", - "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-06-10T04:00:00.000Z", - "front": "2025-06-10T04:00:00.000Z", - "expiry": "2025-09-26T12:00:00.000Z", - "settle": "2025-09-26T12:00:00.000Z", - "listedSettle": "2025-09-26T12:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "USD", - "underlyingSymbol": "ETH=", - "reference": "BMEX", - "referenceSymbol": ".BETH30M", - "maxOrderQty": 10000000, - "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.05, - "multiplier": 100, - "settlCurrency": "XBt", - "isQuanto": true, - "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, + "initMargin": 1, + "maintMargin": 1, "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, "settlementFee": 0, + "prevClosePrice": 0.0399, "limitDownPrice": null, "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, + "prevTotalVolume": 4970017000000, + "totalVolume": 4970017000000, "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, + "volume24h": 753000000, + "prevTotalTurnover": 30308569397, + "totalTurnover": 30308569397, "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, + "turnover24h": 3001975, + "homeNotional24h": 0.753, + "foreignNotional24h": 0.030019749999999994, + "prevPrice24h": 0.0399, + "vwap": 0.03986687, + "highPrice": 0.0399183, + "lowPrice": 0.0398, + "lastPrice": 0.0399183, + "lastPriceProtected": 0.0399183, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0062, + "bidPrice": 0.0377506, + "midPrice": 0.0385601, + "askPrice": 0.0393696, "hasLiquidity": false, "openInterest": 0, "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", + "markMethod": "LastPrice", + "markPrice": 0.0399183, "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.01, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.0000001, "capped": false }, { - "symbol": "ETHUSDZ25", - "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-09-09T04:00:00.000Z", - "front": "2025-09-09T04:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "underlying": "ETH", - "quoteCurrency": "USD", - "underlyingSymbol": "ETH=", + "symbol": "SOL_USDT", + "rootSymbol": "SOL", + "state": "Open", + "typ": "IFXXXP", + "listing": "2022-09-27T07:00:00.000Z", + "underlying": "SOL", + "quoteCurrency": "USDT", "reference": "BMEX", - "referenceSymbol": ".BETH30M", - "maxOrderQty": 10000000, + "maxOrderQty": 1000000000000, "maxPrice": 1000000, - "lotSize": 1, - "tickSize": 0.05, - "multiplier": 100, - "settlCurrency": "XBt", - "isQuanto": true, + "lotSize": 1000000, + "tickSize": 0.01, + "multiplier": 1, + "underlyingToPositionMultiplier": 1000000000, + "quoteToSettleMultiplier": 1000000, + "isQuanto": false, "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, + "initMargin": 1, + "maintMargin": 1, "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, "settlementFee": 0, + "prevClosePrice": 235.05, "limitDownPrice": null, "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, + "prevTotalVolume": 160352563000000, + "totalVolume": 160352563000000, "volume": 0, - "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, + "volume24h": 3973000000, + "prevTotalTurnover": 9336377567800, + "totalTurnover": 9336377567800, "turnover": 0, - "turnover24h": 0, - "homeNotional24h": 0, - "foreignNotional24h": 0, - "hasLiquidity": false, + "turnover24h": 905178200, + "homeNotional24h": 3.973, + "foreignNotional24h": 905.1782000000001, + "prevPrice24h": 235.05, + "vwap": 227.83241882708282, + "highPrice": 235.79, + "lowPrice": 225.51, + "lastPrice": 226.55, + "lastPriceProtected": 226.55, + "lastTickDirection": "PlusTick", + "lastChangePcnt": -0.0494, + "bidPrice": 226.11, + "midPrice": 226.26, + "askPrice": 226.41, + "impactBidPrice": 226.111, + "impactMidPrice": 226.26, + "impactAskPrice": 226.411, + "hasLiquidity": true, "openInterest": 0, "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", + "markMethod": "LastPrice", + "markPrice": 226.55, "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", + "timestamp": "2024-12-09T11:11:10.769Z", "minTick": 0.01, "capped": false }, { - "symbol": "ETHZ25", - "rootSymbol": "ETH", - "state": "Unlisted", - "typ": "FFCCSX", - "listing": "2025-09-09T04:00:00.000Z", - "front": "2025-09-09T04:00:00.000Z", - "expiry": "2025-12-26T12:00:00.000Z", - "settle": "2025-12-26T12:00:00.000Z", - "listedSettle": "2025-12-26T12:00:00.000Z", - "positionCurrency": "ETH", - "underlying": "ETH", - "quoteCurrency": "XBT", - "underlyingSymbol": "ETHXBT=", + "symbol": "TRUMP_USDT", + "rootSymbol": "TRUMP", + "state": "Open", + "typ": "IFXXXP", + "listing": "2024-08-20T04:00:00.000Z", + "underlying": "TRUMP", + "quoteCurrency": "USDT", "reference": "BMEX", - "referenceSymbol": ".BETHXBT30M", - "maxOrderQty": 1000000000, - "maxPrice": 1000, - "lotSize": 1000, - "tickSize": 0.00001, - "multiplier": 1000, - "settlCurrency": "XBt", - "underlyingToPositionMultiplier": 100000, - "quoteToSettleMultiplier": 100000000, + "maxOrderQty": 10000000000, + "maxPrice": 100000, + "lotSize": 100000000, + "tickSize": 0.001, + "multiplier": 1, + "underlyingToPositionMultiplier": 100000000, + "quoteToSettleMultiplier": 1000000, "isQuanto": false, "isInverse": false, - "initMargin": 0.02, - "maintMargin": 0.007, - "riskLimit": 5000000000, - "riskStep": 5000000000, + "initMargin": 1, + "maintMargin": 1, "taxed": true, - "deleverage": true, - "makerFee": 0.0005, - "takerFee": 0.0005, + "deleverage": false, + "makerFee": 0.001, + "takerFee": 0.001, "settlementFee": 0, + "prevClosePrice": 2.87, "limitDownPrice": null, "limitUpPrice": null, - "prevTotalVolume": 0, - "totalVolume": 0, + "prevTotalVolume": 491900000000, + "totalVolume": 491900000000, "volume": 0, "volume24h": 0, - "prevTotalTurnover": 0, - "totalTurnover": 0, + "prevTotalTurnover": 18245447000, + "totalTurnover": 18245447000, "turnover": 0, "turnover24h": 0, "homeNotional24h": 0, "foreignNotional24h": 0, + "prevPrice24h": 2.87, + "lastPrice": 2.87, + "lastPriceProtected": 2.87, + "lastTickDirection": "PlusTick", + "lastChangePcnt": 0.2059, + "bidPrice": 1.745, + "midPrice": 2.1215, + "askPrice": 2.498, "hasLiquidity": false, "openInterest": 0, "openValue": 0, - "fairMethod": "ImpactMidPrice", - "fairBasisRate": 0, - "markMethod": "FairPrice", + "markMethod": "LastPrice", + "markPrice": 2.87, "instantPnl": false, - "timestamp": "2024-12-09T11:10:15.533Z", - "minTick": 0.00001, + "timestamp": "2024-12-09T11:11:10.769Z", + "minTick": 0.001, "capped": false } ] \ No newline at end of file From 68e524610e3b851343a11cf6680996fb9cb94de1 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 9 Jan 2025 10:26:12 +0100 Subject: [PATCH 30/32] [bitmex] Code cleanup --- .../knowm/xchange/bitmex/dto/BitmexResult.java | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexResult.java diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexResult.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexResult.java deleted file mode 100644 index a64e08ecf60..00000000000 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/BitmexResult.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.knowm.xchange.bitmex.dto; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * @author Raphael Voellmy - */ -public class BitmexResult { - - /** - * Constructor - * - * @param result - * @param error - */ - @JsonCreator - public BitmexResult() {} -} From 396aa8bc5dd88ac2d529c1401ea1e6adecee66e7 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 9 Jan 2025 10:26:42 +0100 Subject: [PATCH 31/32] [bitmex] Fix javadoc warnings --- .../xchange/bitmex/BitmexAuthenticated.java | 58 +------------------ .../trade/BitmexReplaceOrderParameters.java | 5 +- .../bitmex/dto/trade/ReplaceOrderCommand.java | 3 +- .../bitmex/service/BitmexTradeServiceRaw.java | 9 ++- 4 files changed, 10 insertions(+), 65 deletions(-) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java index 65f182e6b19..21cf9fd9601 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/BitmexAuthenticated.java @@ -85,9 +85,7 @@ HttpResponseAwareList getTradeHistory( * @param symbol Instrument symbol. Send a bare series (e.g. XBU) to get data for the nearest * expiring contract in that series. You can also send a timeframe, e.g. XBU:monthly. * Timeframes are daily, weekly, monthly, quarterly, and biquarterly. - * @param filter Generic table filter. Send JSON key/value pairs, such as {"key": "value"}. You - * can key on individual fields, and do more advanced querying on timestamps. See the - * Timestamp Docs for more details. + * @param filterParam Generic table filter * @param columns Generic table filter. Send JSON key/value pairs, such as {"key": "value"}. You * can key on individual fields, and do more advanced querying on timestamps. See the * Timestamp Docs for more details. @@ -116,56 +114,6 @@ BitmexPrivateOrderList getOrders( @Nullable @QueryParam("endTime") Date endTime) throws IOException, BitmexException; - /** - * @param apiKey - * @param nonce - * @param paramsDigest - * @param symbol Instrument symbol. e.g. {@code XBTUSD}. - * @param side Optional Order side. Valid options: {@code Buy}, {@code Sell}. Defaults to {@code - * Buy} unless {@code orderQty} or {@code simpleOrderQty} is negative. - * @param orderQuantity Optional Order quantity in units of the instrument (i.e. contracts). - * @param simpleOrderQuantity Optional Order quantity in units of the underlying instrument (i.e. - * Bitcoin). - * @param displayQuantity Optional quantity to display in the book. Use {@code 0} for a fully - * hidden order. - * @param price Optional limit price for {@code Limit}, {@code StopLimit}, and {@code - * LimitIfTouched} orders. - * @param stopPrice Optional trigger price for {@code Stop}, {@code StopLimit}, {@code - * MarketIfTouched}, and {@code LimitIfTouched} orders. Use a price below the current price - * for stop-sell orders and buy-if-touched orders. Use {@code execInst} of {@code MarkPrice} - * or {@code LastPrice} to define the current price used for triggering. - * @param orderType Optional Order type. Valid options: {@code Market}, {@code Limit}, {@code - * Stop}, {@code StopLimit}, {@code MarketIfTouched}, {@code LimitIfTouched}, {@code - * MarketWithLeftOverAsLimit}, {@code Pegged}. Defaults to {@code Limit} when {@code price} is - * specified. Defaults to {@code Stop} when {@code stopPx} is specified. Defaults to {@code - * StopLimit} when {@code price} and {@code stopPx} are specified. - * @param clOrdID Optional Client Order ID. This {@code clOrdID} will come back on the order and - * any related executions. - * @param executionInstructions Optional execution instructions. Valid options: {@code - * ParticipateDoNotInitiate}, {@code AllOrNone}, {@code MarkPrice}, {@code IndexPrice}, {@code - * LastPrice}, {@code Close}, {@code ReduceOnly}, {@code Fixed}. {@code AllOrNone} instruction - * requires {@code displayQty} to be {@code 0}. {@code MarkPrice}, {@code IndexPrice} or - * {@code LastPrice} instruction valid for {@code Stop}, {@code StopLimit}, {@code - * MarketIfTouched}, and {@code LimitIfTouched} orders. - * @param clOrdLinkID Optional Client Order Link ID for contingent orders. - * @param contingencyType Optional contingency type for use with clOrdLinkID. Valid options: - * {@code OneCancelsTheOther}, {@code OneTriggersTheOther}, {@code - * OneUpdatesTheOtherAbsolute}, {@code OneUpdatesTheOtherProportional}. - * @param pegPriceType Optional peg price type. Valid options: {@code LastPeg}, {@code - * MidPricePeg}, {@code MarketPeg}, {@code PrimaryPeg}, {@code TrailingStopPeg}. - * @param pegOffsetValue Optional trailing offset from the current price for {@code Stop}, {@code - * StopLimit}, {@code MarketIfTouched}, and {@code LimitIfTouched} orders; use a negative - * offset for stop-sell orders and buy-if-touched orders. Optional offset from the peg price - * for {@code Pegged} orders. - * @param timeInForce Optional Time in force. Valid options: {@code Day}, {@code GoodTillCancel}, - * {@code ImmediateOrCancel}, {@code FillOrKill}. Defaults to {@code GoodTillCancel} for - * {@code Limit}, {@code StopLimit}, {@code LimitIfTouched}, and {@code - * MarketWithLeftOverAsLimit} orders. - * @param text Optional order annotation. e.g. {@code Take profit}. - * @return {@link BitmexPrivateOrder} contains the result of the call. - * @throws IOException - * @throws BitmexException - */ @POST @Path("order") @Consumes(MediaType.APPLICATION_JSON) @@ -182,7 +130,7 @@ BitmexPrivateOrder placeOrder( * @param nonce * @param paramsDigest * @param orderId Order ID - * @param origClOrdID Client Order ID. See {@link Bitmex#placeOrder}. + * @param origClOrdID Client Order ID. See {@link BitmexAuthenticated#placeOrder}. * @param clOrdID Optional new Client Order ID, requires {@code origClOrdID}. * @param simpleOrderQty Optional order quantity in units of the underlying instrument (i.e. * Bitcoin). @@ -253,7 +201,7 @@ BitmexPrivateOrderList replaceOrderBulk( * @param nonce * @param paramsDigest * @param orderID Order ID(s). - * @param clOrdID Client Order ID(s). See {@link Bitmex#placeOrder}. + * @param clOrdID Client Order ID(s). See {@link BitmexAuthenticated#placeOrder}. * @return {@link BitmexPrivateOrderList} contains the results of the call. * @throws IOException * @throws BitmexException diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexReplaceOrderParameters.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexReplaceOrderParameters.java index a1790281ff0..a190c6099ea 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexReplaceOrderParameters.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexReplaceOrderParameters.java @@ -3,9 +3,8 @@ import java.math.BigDecimal; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.knowm.xchange.bitmex.Bitmex; -/** See {@link Bitmex#replaceOrder} */ +/** See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#replaceOrder} */ @SuppressWarnings({"unused", "WeakerAccess"}) public class BitmexReplaceOrderParameters { @@ -101,7 +100,7 @@ public String getText() { return text; } - /** See {@link Bitmex#replaceOrder} */ + /** See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#replaceOrder} */ public static class Builder { @Nullable private String orderId; diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/ReplaceOrderCommand.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/ReplaceOrderCommand.java index b3b80c1ab25..adb486655f9 100644 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/ReplaceOrderCommand.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/ReplaceOrderCommand.java @@ -4,7 +4,6 @@ import java.math.BigDecimal; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.knowm.xchange.bitmex.Bitmex; public class ReplaceOrderCommand { @@ -52,7 +51,7 @@ public class ReplaceOrderCommand { @JsonProperty("text") public final String text; - /** See {@link Bitmex#replaceOrder}. */ + /** See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#replaceOrder}. */ public ReplaceOrderCommand(@Nonnull final BitmexReplaceOrderParameters parameters) { this.orderId = parameters.getOrderId(); this.origClOrdID = parameters.getOrigClOrdId(); diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java index 4477f73cc37..2cbf8fb948e 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/service/BitmexTradeServiceRaw.java @@ -7,7 +7,6 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.knowm.xchange.bitmex.Bitmex; import org.knowm.xchange.bitmex.BitmexExchange; import org.knowm.xchange.bitmex.HttpResponseAwareList; import org.knowm.xchange.bitmex.dto.marketdata.BitmexPrivateOrder; @@ -50,7 +49,7 @@ public List getBitmexPositions(FilterParam filterParam) throws E } /** - * See {@link Bitmex#getOrders} + * See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#getOrders} * * @return List of {@link BitmexPrivateOrder}s. */ @@ -89,7 +88,7 @@ public List getBitmexOrders( } /** - * See {@link Bitmex#getOrders} + * See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#getOrders} * * @return List of {@link BitmexPrivateOrder}s. */ @@ -98,7 +97,7 @@ public List getBitmexOrders() throws ExchangeException { } /** - * See {@link Bitmex#placeOrder} + * See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#placeOrder} * * @return {@link BitmexPrivateOrder} contains the results of the call. */ @@ -115,7 +114,7 @@ public BitmexPrivateOrder placeOrder(@Nonnull final BitmexPlaceOrderParameters p } /** - * See {@link Bitmex#replaceOrder} + * See {@link org.knowm.xchange.bitmex.BitmexAuthenticated#replaceOrder} * * @return {@link BitmexPrivateOrder} contains the results of the call. */ From 581e1fb0a9d731ffa68d2a3caef555b9871b5090 Mon Sep 17 00:00:00 2001 From: Dmitri Karpovich Date: Thu, 9 Jan 2025 16:12:31 +0100 Subject: [PATCH 32/32] [bitmex] Fix deserialization --- .../java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java index 97a8d61a2e4..ac13ac275de 100755 --- a/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java +++ b/xchange-bitmex/src/main/java/org/knowm/xchange/bitmex/dto/trade/BitmexPosition.java @@ -26,7 +26,7 @@ public class BitmexPosition extends AbstractHttpResponseAware { @JsonProperty("currency") @JsonDeserialize(converter = StringToCurrencyConverter.class) - private String marginCurrency; + private Currency marginCurrency; @JsonProperty("underlying") private String underlying;