From e6c82f5a4e155eecb2341fa35abe9ccb4dcb143f Mon Sep 17 00:00:00 2001 From: Victor Lee Date: Tue, 19 Nov 2024 11:48:36 -0800 Subject: [PATCH] added ExchangeMarket.IsDelistingCandidate - nullable `bool` as most exchanges dont provide this info - added parsing for KuCoin - renamed KuCoin variable name --- .../API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs | 33 +++++++++++++++++-- src/ExchangeSharp/Model/ExchangeMarket.cs | 5 ++- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs b/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs index 477d1667..05de375f 100644 --- a/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs @@ -165,7 +165,33 @@ protected internal override async Task< > OnGetMarketSymbolsMetadataAsync() { List markets = new List(); - // [{"symbol":"REQ-ETH","quoteMaxSize":"99999999","enableTrading":true,"priceIncrement":"0.0000001","baseMaxSize":"1000000","baseCurrency":"REQ","quoteCurrency":"ETH","market":"ETH","quoteIncrement":"0.0000001","baseMinSize":"1","quoteMinSize":"0.00001","name":"REQ-ETH","baseIncrement":"0.0001"}, ... ] + /* [ { + "symbol": "XWG-USDT", + "name": "XWG-USDT", + "baseCurrency": "XWG", + "quoteCurrency": "USDT", + "feeCurrency": "USDT", + "market": "USDS", + "baseMinSize": "10", + "quoteMinSize": "0.1", + "baseMaxSize": "10000000000", + "quoteMaxSize": "99999999", + "baseIncrement": "0.0001", + "quoteIncrement": "0.0000001", + "priceIncrement": "0.0000001", + "priceLimitRate": "0.1", + "minFunds": "0.1", + "isMarginEnabled": false, + "enableTrading": true, + "st": true, + "callauctionIsEnabled": false, + "callauctionPriceFloor": null, + "callauctionPriceCeiling": null, + "callauctionFirstStageStartTime": null, + "callauctionSecondStageStartTime": null, + "callauctionThirdStageStartTime": null, + "tradingStartTime": 1650531600000 + }, ... ] */ JToken marketSymbolTokens = await MakeJsonRequestAsync("/symbols"); foreach (JToken marketSymbolToken in marketSymbolTokens) { @@ -187,6 +213,7 @@ protected internal override async Task< ].ConvertInvariant(), PriceStepSize = marketSymbolToken["priceIncrement"].ConvertInvariant(), IsActive = marketSymbolToken["enableTrading"].ConvertInvariant(), + IsDelistingCandidate = marketSymbolToken["st"].ConvertInvariant(), }; markets.Add(market); } @@ -821,7 +848,7 @@ params string[] marketSymbols var deltaBook = new ExchangeOrderBook { IsFromSnapshot = false, - ExchangeName = ExchangeName.Kucoin, + ExchangeName = ExchangeName.KuCoin, SequenceId = parsedTime, MarketSymbol = symbol.ToString(), LastUpdatedUtc = lastUpdatedDateTime, @@ -1089,6 +1116,6 @@ private string GetWebsocketBulletToken() public partial class ExchangeName { - public const string Kucoin = "KuCoin"; + public const string KuCoin = "KuCoin"; } } diff --git a/src/ExchangeSharp/Model/ExchangeMarket.cs b/src/ExchangeSharp/Model/ExchangeMarket.cs index 0801e7d7..64fce69f 100644 --- a/src/ExchangeSharp/Model/ExchangeMarket.cs +++ b/src/ExchangeSharp/Model/ExchangeMarket.cs @@ -27,9 +27,12 @@ public class ExchangeMarket /// Second aternate market symbol public string AltMarketSymbol2 { get; set; } - /// A value indicating whether the market is active. + /// Whether the market is active. public bool? IsActive { get; set; } + /// Whether the market is about to be delisted. Only KuCoin provides this. + public bool? IsDelistingCandidate { get; set; } + /// In a pair like ZRX/BTC, BTC is the quote currency. public string QuoteCurrency { get; set; }