ccxt 4.4.46__py2.py3-none-any.whl → 4.4.47__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +1 -0
  3. ccxt/abstract/binancecoinm.py +1 -0
  4. ccxt/abstract/binanceus.py +1 -0
  5. ccxt/abstract/binanceusdm.py +1 -0
  6. ccxt/abstract/bybit.py +1 -0
  7. ccxt/ace.py +58 -0
  8. ccxt/alpaca.py +80 -0
  9. ccxt/ascendex.py +95 -2
  10. ccxt/async_support/__init__.py +1 -1
  11. ccxt/async_support/ace.py +58 -0
  12. ccxt/async_support/alpaca.py +80 -0
  13. ccxt/async_support/ascendex.py +95 -2
  14. ccxt/async_support/base/exchange.py +1 -1
  15. ccxt/async_support/bigone.py +113 -4
  16. ccxt/async_support/binance.py +3 -4
  17. ccxt/async_support/binanceus.py +10 -0
  18. ccxt/async_support/bingx.py +1 -2
  19. ccxt/async_support/bit2c.py +56 -0
  20. ccxt/async_support/bitbank.py +58 -0
  21. ccxt/async_support/bitbns.py +60 -0
  22. ccxt/async_support/bitfinex.py +2 -3
  23. ccxt/async_support/bitfinex1.py +8 -0
  24. ccxt/async_support/bitflyer.py +71 -0
  25. ccxt/async_support/bitget.py +1 -2
  26. ccxt/async_support/bithumb.py +54 -0
  27. ccxt/async_support/bitmex.py +1 -2
  28. ccxt/async_support/bitopro.py +74 -0
  29. ccxt/async_support/bitrue.py +97 -17
  30. ccxt/async_support/bitso.py +59 -0
  31. ccxt/async_support/bitteam.py +73 -0
  32. ccxt/async_support/bitvavo.py +70 -2
  33. ccxt/async_support/bl3p.py +42 -0
  34. ccxt/async_support/blockchaincom.py +66 -2
  35. ccxt/async_support/blofin.py +87 -1
  36. ccxt/async_support/btcalpha.py +73 -0
  37. ccxt/async_support/btcbox.py +58 -0
  38. ccxt/async_support/btcmarkets.py +73 -0
  39. ccxt/async_support/btcturk.py +61 -0
  40. ccxt/async_support/bybit.py +7 -3
  41. ccxt/async_support/cex.py +57 -0
  42. ccxt/async_support/coinbase.py +1 -1
  43. ccxt/async_support/coinbaseexchange.py +76 -0
  44. ccxt/async_support/coinex.py +1 -2
  45. ccxt/async_support/delta.py +1 -2
  46. ccxt/async_support/gate.py +3 -3
  47. ccxt/async_support/hashkey.py +1 -2
  48. ccxt/async_support/hollaex.py +1 -1
  49. ccxt/async_support/htx.py +2 -4
  50. ccxt/async_support/hyperliquid.py +4 -4
  51. ccxt/async_support/krakenfutures.py +2 -0
  52. ccxt/async_support/lbank.py +1 -2
  53. ccxt/async_support/okx.py +13 -9
  54. ccxt/async_support/oxfun.py +1 -2
  55. ccxt/async_support/whitebit.py +2 -2
  56. ccxt/async_support/woo.py +1 -2
  57. ccxt/async_support/woofipro.py +1 -2
  58. ccxt/base/errors.py +6 -0
  59. ccxt/base/exchange.py +16 -14
  60. ccxt/bigone.py +113 -4
  61. ccxt/binance.py +3 -4
  62. ccxt/binanceus.py +10 -0
  63. ccxt/bingx.py +1 -2
  64. ccxt/bit2c.py +56 -0
  65. ccxt/bitbank.py +58 -0
  66. ccxt/bitbns.py +60 -0
  67. ccxt/bitfinex.py +2 -3
  68. ccxt/bitfinex1.py +8 -0
  69. ccxt/bitflyer.py +71 -0
  70. ccxt/bitget.py +1 -2
  71. ccxt/bithumb.py +54 -0
  72. ccxt/bitmex.py +1 -2
  73. ccxt/bitopro.py +74 -0
  74. ccxt/bitrue.py +97 -17
  75. ccxt/bitso.py +59 -0
  76. ccxt/bitteam.py +73 -0
  77. ccxt/bitvavo.py +70 -2
  78. ccxt/bl3p.py +42 -0
  79. ccxt/blockchaincom.py +66 -2
  80. ccxt/blofin.py +87 -1
  81. ccxt/btcalpha.py +73 -0
  82. ccxt/btcbox.py +58 -0
  83. ccxt/btcmarkets.py +73 -0
  84. ccxt/btcturk.py +61 -0
  85. ccxt/bybit.py +7 -3
  86. ccxt/cex.py +57 -0
  87. ccxt/coinbase.py +1 -1
  88. ccxt/coinbaseexchange.py +76 -0
  89. ccxt/coinex.py +1 -2
  90. ccxt/delta.py +1 -2
  91. ccxt/gate.py +3 -3
  92. ccxt/hashkey.py +1 -2
  93. ccxt/hollaex.py +1 -1
  94. ccxt/htx.py +2 -4
  95. ccxt/hyperliquid.py +4 -4
  96. ccxt/krakenfutures.py +2 -0
  97. ccxt/lbank.py +1 -2
  98. ccxt/okx.py +13 -9
  99. ccxt/oxfun.py +1 -2
  100. ccxt/pro/__init__.py +1 -1
  101. ccxt/pro/bingx.py +3 -5
  102. ccxt/pro/bitget.py +2 -4
  103. ccxt/pro/xt.py +1 -1
  104. ccxt/test/tests_async.py +2 -0
  105. ccxt/test/tests_sync.py +2 -0
  106. ccxt/whitebit.py +2 -2
  107. ccxt/woo.py +1 -2
  108. ccxt/woofipro.py +1 -2
  109. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/METADATA +4 -5
  110. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/RECORD +113 -113
  111. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/LICENSE.txt +0 -0
  112. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/WHEEL +0 -0
  113. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/top_level.txt +0 -0
@@ -251,6 +251,93 @@ class blofin(Exchange, ImplicitAPI):
251
251
  'secret': True,
252
252
  'password': True,
253
253
  },
254
+ 'features': {
255
+ 'default': {
256
+ 'sandbox': False,
257
+ 'createOrder': {
258
+ 'timeInForce': {
259
+ 'IOC': True,
260
+ 'FOK': True,
261
+ 'PO': True,
262
+ 'GTD': False,
263
+ },
264
+ 'leverage': False,
265
+ 'marketBuyRequiresPrice': False,
266
+ 'marketBuyByCost': False,
267
+ 'selfTradePrevention': False,
268
+ 'trailing': False,
269
+ 'iceberg': False,
270
+ },
271
+ 'createOrders': {
272
+ 'max': 10,
273
+ },
274
+ 'fetchMyTrades': {
275
+ 'marginMode': False,
276
+ 'limit': 100,
277
+ 'daysBack': 100000,
278
+ 'untilDays': 100000,
279
+ },
280
+ 'fetchOrder': None,
281
+ 'fetchOpenOrders': {
282
+ 'marginMode': False,
283
+ 'limit': 100,
284
+ 'trigger': True,
285
+ 'trailing': False,
286
+ },
287
+ 'fetchOrders': None,
288
+ 'fetchClosedOrders': {
289
+ 'marginMode': False,
290
+ 'limit': 1000,
291
+ 'daysBack': 100000,
292
+ 'daysBackCanceled': 1,
293
+ 'untilDays': 100000,
294
+ 'trigger': True,
295
+ 'trailing': False,
296
+ },
297
+ 'fetchOHLCV': {
298
+ 'max': 1440,
299
+ },
300
+ },
301
+ 'spot': {
302
+ 'extends': 'default',
303
+ 'createOrder': {
304
+ 'marginMode': False,
305
+ 'triggerPrice': False,
306
+ 'triggerPriceType': None,
307
+ 'triggerDirection': False,
308
+ 'stopLossPrice': False,
309
+ 'takeProfitPrice': False,
310
+ 'attachedStopLossTakeProfit': None,
311
+ 'hedged': False,
312
+ },
313
+ },
314
+ 'forDerivatives': {
315
+ 'extends': 'default',
316
+ 'createOrder': {
317
+ 'marginMode': True,
318
+ 'triggerPrice': False, # todo
319
+ 'triggerPriceType': None,
320
+ 'triggerDirection': False,
321
+ 'stopLossPrice': True,
322
+ 'takeProfitPrice': True,
323
+ 'attachedStopLossTakeProfit': {
324
+ 'triggerPriceType': None,
325
+ 'limit': True,
326
+ },
327
+ 'hedged': True,
328
+ },
329
+ },
330
+ 'swap': {
331
+ 'linear': {
332
+ 'extends': 'forDerivatives',
333
+ },
334
+ 'inverse': None,
335
+ },
336
+ 'future': {
337
+ 'linear': None,
338
+ 'inverse': None,
339
+ },
340
+ },
254
341
  'exceptions': {
255
342
  'exact': {
256
343
  '400': BadRequest, # Body can not be empty
@@ -322,7 +409,6 @@ class blofin(Exchange, ImplicitAPI):
322
409
  'earn': 'earn',
323
410
  'spot': 'spot',
324
411
  },
325
- 'sandboxMode': False,
326
412
  'defaultNetwork': 'ERC20',
327
413
  'defaultNetworks': {
328
414
  'ETH': 'ERC20',
@@ -150,6 +150,79 @@ class btcalpha(Exchange, ImplicitAPI):
150
150
  'commonCurrencies': {
151
151
  'CBC': 'Cashbery',
152
152
  },
153
+ 'features': {
154
+ 'spot': {
155
+ 'sandbox': False,
156
+ 'createOrder': {
157
+ 'marginMode': False,
158
+ 'triggerPrice': False,
159
+ 'triggerPriceType': None,
160
+ 'triggerDirection': False,
161
+ 'stopLossPrice': False,
162
+ 'takeProfitPrice': False,
163
+ 'attachedStopLossTakeProfit': None,
164
+ 'timeInForce': {
165
+ 'IOC': False,
166
+ 'FOK': False,
167
+ 'PO': False,
168
+ 'GTD': False,
169
+ },
170
+ 'hedged': False,
171
+ 'leverage': False,
172
+ 'marketBuyRequiresPrice': False,
173
+ 'marketBuyByCost': False,
174
+ 'selfTradePrevention': False,
175
+ 'trailing': False,
176
+ 'iceberg': False,
177
+ },
178
+ 'createOrders': None,
179
+ 'fetchMyTrades': {
180
+ 'marginMode': False,
181
+ 'limit': 100,
182
+ 'daysBack': None,
183
+ 'untilDays': None,
184
+ },
185
+ 'fetchOrder': {
186
+ 'marginMode': False,
187
+ 'trigger': False,
188
+ 'trailing': False,
189
+ },
190
+ 'fetchOpenOrders': {
191
+ 'marginMode': False,
192
+ 'limit': 2000,
193
+ 'trigger': False,
194
+ 'trailing': False,
195
+ },
196
+ 'fetchOrders': {
197
+ 'marginMode': False,
198
+ 'limit': 2000,
199
+ 'daysBack': None,
200
+ 'untilDays': None,
201
+ 'trigger': False,
202
+ 'trailing': False,
203
+ },
204
+ 'fetchClosedOrders': {
205
+ 'marginMode': False,
206
+ 'limit': 2000,
207
+ 'daysBack': None,
208
+ 'daysBackCanceled': None,
209
+ 'untilDays': None,
210
+ 'trigger': False,
211
+ 'trailing': False,
212
+ },
213
+ 'fetchOHLCV': {
214
+ 'max': 720,
215
+ },
216
+ },
217
+ 'swap': {
218
+ 'linear': None,
219
+ 'inverse': None,
220
+ },
221
+ 'future': {
222
+ 'linear': None,
223
+ 'inverse': None,
224
+ },
225
+ },
153
226
  'precisionMode': TICK_SIZE,
154
227
  'exceptions': {
155
228
  'exact': {},
@@ -116,6 +116,64 @@ class btcbox(Exchange, ImplicitAPI):
116
116
  ],
117
117
  },
118
118
  },
119
+ 'features': {
120
+ 'spot': {
121
+ 'sandbox': False,
122
+ 'createOrder': {
123
+ 'marginMode': False,
124
+ 'triggerPrice': False,
125
+ 'triggerPriceType': None,
126
+ 'triggerDirection': False,
127
+ 'stopLossPrice': False,
128
+ 'takeProfitPrice': False,
129
+ 'attachedStopLossTakeProfit': None,
130
+ 'timeInForce': {
131
+ 'IOC': False,
132
+ 'FOK': False,
133
+ 'PO': False,
134
+ 'GTD': False,
135
+ },
136
+ 'hedged': False,
137
+ 'leverage': False,
138
+ 'marketBuyRequiresPrice': False,
139
+ 'marketBuyByCost': False,
140
+ 'selfTradePrevention': False,
141
+ 'trailing': False,
142
+ 'iceberg': False,
143
+ },
144
+ 'createOrders': None,
145
+ 'fetchMyTrades': None,
146
+ 'fetchOrder': {
147
+ 'marginMode': False,
148
+ 'trigger': False,
149
+ 'trailing': False,
150
+ },
151
+ 'fetchOpenOrders': {
152
+ 'marginMode': False,
153
+ 'limit': 100,
154
+ 'trigger': False,
155
+ 'trailing': False,
156
+ },
157
+ 'fetchOrders': {
158
+ 'marginMode': False,
159
+ 'limit': 100,
160
+ 'daysBack': None,
161
+ 'untilDays': None,
162
+ 'trigger': False,
163
+ 'trailing': False,
164
+ },
165
+ 'fetchClosedOrders': None,
166
+ 'fetchOHLCV': None,
167
+ },
168
+ 'swap': {
169
+ 'linear': None,
170
+ 'inverse': None,
171
+ },
172
+ 'future': {
173
+ 'linear': None,
174
+ 'inverse': None,
175
+ },
176
+ },
119
177
  'precisionMode': TICK_SIZE,
120
178
  'exceptions': {
121
179
  '104': AuthenticationError,
@@ -159,6 +159,79 @@ class btcmarkets(Exchange, ImplicitAPI):
159
159
  '1h': '1h',
160
160
  '1d': '1d',
161
161
  },
162
+ 'features': {
163
+ 'spot': {
164
+ 'sandbox': False,
165
+ 'createOrder': {
166
+ 'marginMode': False,
167
+ 'triggerPrice': True, # todo: check
168
+ 'triggerPriceType': None,
169
+ 'triggerDirection': False,
170
+ 'stopLossPrice': False,
171
+ 'takeProfitPrice': False,
172
+ 'attachedStopLossTakeProfit': None,
173
+ 'timeInForce': {
174
+ 'IOC': True,
175
+ 'FOK': True,
176
+ 'PO': True,
177
+ 'GTD': False,
178
+ },
179
+ 'hedged': False,
180
+ 'leverage': False,
181
+ 'marketBuyRequiresPrice': False,
182
+ 'marketBuyByCost': False,
183
+ 'selfTradePrevention': True, # todo: check
184
+ 'trailing': False,
185
+ 'iceberg': False,
186
+ },
187
+ 'createOrders': None,
188
+ 'fetchMyTrades': {
189
+ 'marginMode': False,
190
+ 'limit': 100,
191
+ 'daysBack': 100000,
192
+ 'untilDays': 100000,
193
+ },
194
+ 'fetchOrder': {
195
+ 'marginMode': False,
196
+ 'trigger': False,
197
+ 'trailing': False,
198
+ },
199
+ 'fetchOpenOrders': {
200
+ 'marginMode': False,
201
+ 'limit': 100,
202
+ 'trigger': False,
203
+ 'trailing': False,
204
+ },
205
+ 'fetchOrders': {
206
+ 'marginMode': False,
207
+ 'limit': 100,
208
+ 'daysBack': 100000,
209
+ 'untilDays': 100000,
210
+ 'trigger': False,
211
+ 'trailing': False,
212
+ },
213
+ 'fetchClosedOrders': {
214
+ 'marginMode': False,
215
+ 'limit': 100,
216
+ 'daysBack': 100000,
217
+ 'daysBackCanceled': 1,
218
+ 'untilDays': 100000,
219
+ 'trigger': False,
220
+ 'trailing': False,
221
+ },
222
+ 'fetchOHLCV': {
223
+ 'limit': 1000,
224
+ },
225
+ },
226
+ 'swap': {
227
+ 'linear': None,
228
+ 'inverse': None,
229
+ },
230
+ 'future': {
231
+ 'linear': None,
232
+ 'inverse': None,
233
+ },
234
+ },
162
235
  'precisionMode': TICK_SIZE,
163
236
  'exceptions': {
164
237
  'exact': {
@@ -136,6 +136,67 @@ class btcturk(Exchange, ImplicitAPI):
136
136
  },
137
137
  },
138
138
  },
139
+ 'features': {
140
+ 'spot': {
141
+ 'sandbox': False,
142
+ 'createOrder': {
143
+ 'marginMode': False,
144
+ 'triggerPrice': True,
145
+ 'triggerPriceType': None,
146
+ 'triggerDirection': False,
147
+ 'stopLossPrice': False,
148
+ 'takeProfitPrice': False,
149
+ 'attachedStopLossTakeProfit': None,
150
+ 'timeInForce': {
151
+ 'IOC': False,
152
+ 'FOK': False,
153
+ 'PO': False,
154
+ 'GTD': False,
155
+ },
156
+ 'hedged': False,
157
+ 'leverage': False,
158
+ 'marketBuyRequiresPrice': False,
159
+ 'marketBuyByCost': False,
160
+ 'selfTradePrevention': False,
161
+ 'trailing': False,
162
+ 'iceberg': False,
163
+ },
164
+ 'createOrders': None,
165
+ 'fetchMyTrades': {
166
+ 'marginMode': False,
167
+ 'limit': 100,
168
+ 'daysBack': 100000,
169
+ 'untilDays': 30,
170
+ },
171
+ 'fetchOrder': None,
172
+ 'fetchOpenOrders': {
173
+ 'marginMode': False,
174
+ 'limit': None,
175
+ 'trigger': False,
176
+ 'trailing': False,
177
+ },
178
+ 'fetchOrders': {
179
+ 'marginMode': False,
180
+ 'limit': 1000,
181
+ 'daysBack': 100000,
182
+ 'untilDays': 30,
183
+ 'trigger': False,
184
+ 'trailing': False,
185
+ },
186
+ 'fetchClosedOrders': None,
187
+ 'fetchOHLCV': {
188
+ 'limit': None,
189
+ },
190
+ },
191
+ 'swap': {
192
+ 'linear': None,
193
+ 'inverse': None,
194
+ },
195
+ 'future': {
196
+ 'linear': None,
197
+ 'inverse': None,
198
+ },
199
+ },
139
200
  'fees': {
140
201
  'trading': {
141
202
  'maker': self.parse_number('0.0005'),
@@ -356,6 +356,7 @@ class bybit(Exchange, ImplicitAPI):
356
356
  'v5/account/contract-transaction-log': 1,
357
357
  'v5/account/smp-group': 1,
358
358
  'v5/account/mmp-state': 5,
359
+ 'v5/account/withdrawal': 5,
359
360
  # asset
360
361
  'v5/asset/exchange/query-coin-list': 0.5, # 100/s => cost = 50 / 100 = 0.5
361
362
  'v5/asset/exchange/convert-result-query': 0.5, # 100/s => cost = 50 / 100 = 0.5
@@ -2700,8 +2701,7 @@ class bybit(Exchange, ImplicitAPI):
2700
2701
  timestamp = self.safe_integer(response, 'time')
2701
2702
  for i in range(0, len(tickerList)):
2702
2703
  tickerList[i]['timestamp'] = timestamp # will be removed inside the parser
2703
- result = self.parse_funding_rates(tickerList)
2704
- return self.filter_by_array(result, 'symbol', symbols)
2704
+ return self.parse_funding_rates(tickerList, symbols)
2705
2705
 
2706
2706
  async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
2707
2707
  """
@@ -3210,7 +3210,11 @@ class bybit(Exchange, ImplicitAPI):
3210
3210
  if (loan is not None) and (interest is not None):
3211
3211
  account['debt'] = Precise.string_add(loan, interest)
3212
3212
  account['total'] = self.safe_string(coinEntry, 'walletBalance')
3213
- account['free'] = self.safe_string_2(coinEntry, 'availableToWithdraw', 'free')
3213
+ free = self.safe_string_2(coinEntry, 'availableToWithdraw', 'free')
3214
+ if free is not None:
3215
+ account['free'] = free
3216
+ else:
3217
+ account['used'] = self.safe_string(coinEntry, 'locked')
3214
3218
  # account['used'] = self.safe_string(coinEntry, 'locked')
3215
3219
  currencyId = self.safe_string(coinEntry, 'coin')
3216
3220
  code = self.safe_currency_code(currencyId)
ccxt/async_support/cex.py CHANGED
@@ -119,6 +119,63 @@ class cex(Exchange, ImplicitAPI):
119
119
  },
120
120
  },
121
121
  },
122
+ 'features': {
123
+ 'spot': {
124
+ 'sandbox': False,
125
+ 'createOrder': {
126
+ 'marginMode': False,
127
+ 'triggerPrice': True,
128
+ 'triggerPriceType': None,
129
+ 'triggerDirection': False,
130
+ 'stopLossPrice': False, # todo
131
+ 'takeProfitPrice': False, # todo
132
+ 'attachedStopLossTakeProfit': None,
133
+ 'timeInForce': {
134
+ 'IOC': True,
135
+ 'FOK': True,
136
+ 'PO': False, # todo check
137
+ 'GTD': True,
138
+ },
139
+ 'hedged': False,
140
+ 'leverage': False,
141
+ 'marketBuyRequiresPrice': False,
142
+ 'marketBuyByCost': True, # todo check
143
+ 'selfTradePrevention': False,
144
+ 'trailing': False,
145
+ 'iceberg': False,
146
+ },
147
+ 'createOrders': None,
148
+ 'fetchMyTrades': None,
149
+ 'fetchOrder': None,
150
+ 'fetchOpenOrders': {
151
+ 'marginMode': False,
152
+ 'limit': 1000,
153
+ 'trigger': False,
154
+ 'trailing': False,
155
+ },
156
+ 'fetchOrders': None,
157
+ 'fetchClosedOrders': {
158
+ 'marginMode': False,
159
+ 'limit': 1000,
160
+ 'daysBack': 100000,
161
+ 'daysBackCanceled': 1,
162
+ 'untilDays': 100000,
163
+ 'trigger': False,
164
+ 'trailing': False,
165
+ },
166
+ 'fetchOHLCV': {
167
+ 'limit': 1000,
168
+ },
169
+ },
170
+ 'swap': {
171
+ 'linear': None,
172
+ 'inverse': None,
173
+ },
174
+ 'future': {
175
+ 'linear': None,
176
+ 'inverse': None,
177
+ },
178
+ },
122
179
  'precisionMode': TICK_SIZE,
123
180
  'exceptions': {
124
181
  'exact': {},
@@ -2383,7 +2383,7 @@ class coinbase(Exchange, ImplicitAPI):
2383
2383
  request, params = await self.prepare_account_request_with_currency_code(code, limit, params)
2384
2384
  # for pagination use parameter 'starting_after'
2385
2385
  # the value for the next page can be obtained from the result of the previous call in the 'pagination' field
2386
- # eg: instance.last_json_response.pagination.next_starting_after
2386
+ # eg: instance.last_http_response -> pagination.next_starting_after
2387
2387
  response = await self.v2PrivateGetAccountsAccountIdTransactions(self.extend(request, params))
2388
2388
  ledger = self.parse_ledger(response['data'], currency, since, limit)
2389
2389
  length = len(ledger)
@@ -225,6 +225,82 @@ class coinbaseexchange(Exchange, ImplicitAPI):
225
225
  },
226
226
  },
227
227
  },
228
+ 'features': {
229
+ 'default': {
230
+ 'sandbox': True,
231
+ 'createOrder': {
232
+ 'marginMode': True,
233
+ 'triggerPrice': True,
234
+ 'triggerPriceType': None,
235
+ 'triggerDirection': False,
236
+ 'stopLossPrice': False, # todo
237
+ 'takeProfitPrice': False, # todo
238
+ 'attachedStopLossTakeProfit': None,
239
+ 'timeInForce': {
240
+ 'IOC': True,
241
+ 'FOK': True,
242
+ 'PO': True,
243
+ 'GTD': True,
244
+ },
245
+ 'hedged': False,
246
+ 'trailing': False,
247
+ 'leverage': False,
248
+ 'marketBuyByCost': False,
249
+ 'marketBuyRequiresPrice': False,
250
+ 'selfTradePrevention': False,
251
+ 'iceberg': True, # todo: implement
252
+ },
253
+ 'createOrders': None,
254
+ 'fetchMyTrades': {
255
+ 'marginMode': False,
256
+ 'limit': 100,
257
+ 'daysBack': 100000,
258
+ 'untilDays': 100000,
259
+ },
260
+ 'fetchOrder': {
261
+ 'marginMode': False,
262
+ 'trigger': False,
263
+ 'trailing': False,
264
+ },
265
+ 'fetchOpenOrders': {
266
+ 'marginMode': False,
267
+ 'limit': 100,
268
+ 'trigger': False,
269
+ 'trailing': False,
270
+ },
271
+ 'fetchOrders': {
272
+ 'marginMode': False,
273
+ 'limit': 100,
274
+ 'daysBack': 100000,
275
+ 'untilDays': 100000,
276
+ 'trigger': False,
277
+ 'trailing': False,
278
+ },
279
+ 'fetchClosedOrders': {
280
+ 'marginMode': False,
281
+ 'limit': 100,
282
+ 'daysBack': 100000,
283
+ 'daysBackCanceled': 1,
284
+ 'untilDays': 100000,
285
+ 'trigger': False,
286
+ 'trailing': False,
287
+ },
288
+ 'fetchOHLCV': {
289
+ 'limit': 300,
290
+ },
291
+ },
292
+ 'spot': {
293
+ 'extends': 'default',
294
+ },
295
+ 'swap': {
296
+ 'linear': None,
297
+ 'inverse': None,
298
+ },
299
+ 'future': {
300
+ 'linear': None,
301
+ 'inverse': None,
302
+ },
303
+ },
228
304
  'exceptions': {
229
305
  'exact': {
230
306
  'Insufficient funds': InsufficientFunds,
@@ -4589,8 +4589,7 @@ class coinex(Exchange, ImplicitAPI):
4589
4589
  # }
4590
4590
  #
4591
4591
  data = self.safe_list(response, 'data', [])
4592
- result = self.parse_funding_rates(data, market)
4593
- return self.filter_by_array(result, 'symbol', symbols)
4592
+ return self.parse_funding_rates(data, symbols)
4594
4593
 
4595
4594
  async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
4596
4595
  """
@@ -2463,8 +2463,7 @@ class delta(Exchange, ImplicitAPI):
2463
2463
  # }
2464
2464
  #
2465
2465
  rates = self.safe_list(response, 'result', [])
2466
- result = self.parse_funding_rates(rates)
2467
- return self.filter_by_array(result, 'symbol', symbols)
2466
+ return self.parse_funding_rates(rates, symbols)
2468
2467
 
2469
2468
  def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
2470
2469
  #
@@ -1962,8 +1962,7 @@ class gate(Exchange, ImplicitAPI):
1962
1962
  # }
1963
1963
  # ]
1964
1964
  #
1965
- result = self.parse_funding_rates(response)
1966
- return self.filter_by_array(result, 'symbol', symbols)
1965
+ return self.parse_funding_rates(response, symbols)
1967
1966
 
1968
1967
  def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
1969
1968
  #
@@ -2377,7 +2376,8 @@ class gate(Exchange, ImplicitAPI):
2377
2376
  chainKeys = list(withdrawFixOnChains.keys())
2378
2377
  for i in range(0, len(chainKeys)):
2379
2378
  chainKey = chainKeys[i]
2380
- result['networks'][chainKey] = {
2379
+ networkCode = self.network_id_to_code(chainKey, self.safe_string(fee, 'currency'))
2380
+ result['networks'][networkCode] = {
2381
2381
  'withdraw': {
2382
2382
  'fee': self.parse_number(withdrawFixOnChains[chainKey]),
2383
2383
  'percentage': False,
@@ -3623,8 +3623,7 @@ class hashkey(Exchange, ImplicitAPI):
3623
3623
  # {"symbol": "ETHUSDT-PERPETUAL", "rate": "0.0001", "nextSettleTime": "1722297600000"}
3624
3624
  # ]
3625
3625
  #
3626
- fundingRates = self.parse_funding_rates(response)
3627
- return self.filter_by_array(fundingRates, 'symbol', symbols)
3626
+ return self.parse_funding_rates(response, symbols)
3628
3627
 
3629
3628
  def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
3630
3629
  #
@@ -353,7 +353,7 @@ class hollaex(Exchange, ImplicitAPI):
353
353
  # "verified":true,
354
354
  # "allow_deposit":true,
355
355
  # "allow_withdrawal":true,
356
- # "withdrawal_fee":0.0001,
356
+ # "withdrawal_fee":0.0002,
357
357
  # "min":0.001,
358
358
  # "max":100000,
359
359
  # "increment_unit":0.001,
ccxt/async_support/htx.py CHANGED
@@ -6780,8 +6780,7 @@ class htx(Exchange, ImplicitAPI):
6780
6780
  # }
6781
6781
  #
6782
6782
  data = self.safe_value(response, 'data', [])
6783
- result = self.parse_funding_rates(data)
6784
- return self.filter_by_array(result, 'symbol', symbols)
6783
+ return self.parse_funding_rates(data, symbols)
6785
6784
 
6786
6785
  async def fetch_borrow_interest(self, code: Str = None, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[BorrowInterest]:
6787
6786
  """
@@ -8098,8 +8097,7 @@ class htx(Exchange, ImplicitAPI):
8098
8097
  # }
8099
8098
  #
8100
8099
  data = self.safe_list(response, 'data', [])
8101
- result = self.parse_open_interests(data)
8102
- return self.filter_by_array(result, 'symbol', symbols)
8100
+ return self.parse_open_interests(data, symbols)
8103
8101
 
8104
8102
  async def fetch_open_interest(self, symbol: str, params={}):
8105
8103
  """