ccxt 4.4.49__py2.py3-none-any.whl → 4.4.51__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.
- ccxt/__init__.py +1 -1
- ccxt/abstract/binance.py +1 -0
- ccxt/abstract/binancecoinm.py +1 -0
- ccxt/abstract/binanceus.py +1 -0
- ccxt/abstract/binanceusdm.py +1 -0
- ccxt/alpaca.py +63 -2
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/alpaca.py +63 -2
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +39 -20
- ccxt/async_support/blofin.py +5 -1
- ccxt/async_support/coinex.py +4 -4
- ccxt/async_support/coinmetro.py +16 -3
- ccxt/async_support/deribit.py +11 -3
- ccxt/async_support/gate.py +1 -1
- ccxt/async_support/hollaex.py +14 -17
- ccxt/async_support/htx.py +5 -3
- ccxt/async_support/kucoin.py +49 -69
- ccxt/async_support/mexc.py +24 -8
- ccxt/async_support/okcoin.py +13 -5
- ccxt/async_support/onetrading.py +1 -1
- ccxt/async_support/paradex.py +1 -1
- ccxt/async_support/paymium.py +42 -0
- ccxt/async_support/probit.py +77 -8
- ccxt/async_support/timex.py +67 -0
- ccxt/async_support/tokocrypto.py +81 -4
- ccxt/async_support/tradeogre.py +58 -1
- ccxt/async_support/vertex.py +65 -2
- ccxt/async_support/wavesexchange.py +73 -0
- ccxt/async_support/wazirx.py +59 -3
- ccxt/async_support/whitebit.py +79 -4
- ccxt/async_support/xt.py +112 -0
- ccxt/async_support/yobit.py +56 -0
- ccxt/async_support/zaif.py +55 -0
- ccxt/async_support/zonda.py +58 -0
- ccxt/base/exchange.py +72 -4
- ccxt/binance.py +39 -20
- ccxt/blofin.py +5 -1
- ccxt/coinex.py +4 -4
- ccxt/coinmetro.py +16 -3
- ccxt/deribit.py +11 -3
- ccxt/gate.py +1 -1
- ccxt/hollaex.py +14 -17
- ccxt/htx.py +5 -3
- ccxt/kucoin.py +49 -69
- ccxt/mexc.py +24 -8
- ccxt/okcoin.py +13 -5
- ccxt/onetrading.py +1 -1
- ccxt/paradex.py +1 -1
- ccxt/paymium.py +42 -0
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +2 -0
- ccxt/pro/blofin.py +8 -0
- ccxt/pro/coinex.py +4 -1
- ccxt/probit.py +77 -8
- ccxt/timex.py +67 -0
- ccxt/tokocrypto.py +81 -4
- ccxt/tradeogre.py +58 -1
- ccxt/vertex.py +65 -2
- ccxt/wavesexchange.py +73 -0
- ccxt/wazirx.py +59 -3
- ccxt/whitebit.py +79 -4
- ccxt/xt.py +112 -0
- ccxt/yobit.py +56 -0
- ccxt/zaif.py +55 -0
- ccxt/zonda.py +58 -0
- {ccxt-4.4.49.dist-info → ccxt-4.4.51.dist-info}/METADATA +18 -18
- {ccxt-4.4.49.dist-info → ccxt-4.4.51.dist-info}/RECORD +71 -71
- {ccxt-4.4.49.dist-info → ccxt-4.4.51.dist-info}/WHEEL +1 -1
- {ccxt-4.4.49.dist-info → ccxt-4.4.51.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.49.dist-info → ccxt-4.4.51.dist-info}/top_level.txt +0 -0
ccxt/whitebit.py
CHANGED
@@ -272,6 +272,8 @@ class whitebit(Exchange, ImplicitAPI):
|
|
272
272
|
},
|
273
273
|
},
|
274
274
|
'options': {
|
275
|
+
'timeDifference': 0, # the difference between system clock and exchange clock
|
276
|
+
'adjustForTimeDifference': False, # controls the adjustment logic upon instantiation
|
275
277
|
'fiatCurrencies': ['EUR', 'USD', 'RUB', 'UAH'],
|
276
278
|
'fetchBalance': {
|
277
279
|
'account': 'spot',
|
@@ -289,6 +291,75 @@ class whitebit(Exchange, ImplicitAPI):
|
|
289
291
|
'defaultType': 'spot',
|
290
292
|
'brokerId': 'ccxt',
|
291
293
|
},
|
294
|
+
'features': {
|
295
|
+
'default': {
|
296
|
+
'sandbox': False,
|
297
|
+
'createOrder': {
|
298
|
+
'marginMode': True,
|
299
|
+
'triggerPrice': True,
|
300
|
+
'triggerDirection': False,
|
301
|
+
'triggerPriceType': None,
|
302
|
+
'stopLossPrice': False, # todo
|
303
|
+
'takeProfitPrice': False, # todo
|
304
|
+
'attachedStopLossTakeProfit': None,
|
305
|
+
'timeInForce': {
|
306
|
+
'IOC': True, # todo
|
307
|
+
'FOK': False,
|
308
|
+
'PO': True, # todo
|
309
|
+
'GTD': False,
|
310
|
+
},
|
311
|
+
'hedged': False,
|
312
|
+
'trailing': False,
|
313
|
+
'leverage': False,
|
314
|
+
'marketBuyByCost': True,
|
315
|
+
'marketBuyRequiresPrice': False,
|
316
|
+
'selfTradePrevention': False,
|
317
|
+
'iceberg': False,
|
318
|
+
},
|
319
|
+
'createOrders': None,
|
320
|
+
'fetchMyTrades': {
|
321
|
+
'marginMode': False,
|
322
|
+
'limit': 100,
|
323
|
+
'daysBack': None,
|
324
|
+
'untilDays': None,
|
325
|
+
},
|
326
|
+
'fetchOrder': None,
|
327
|
+
'fetchOpenOrders': {
|
328
|
+
'marginMode': False,
|
329
|
+
'limit': 100,
|
330
|
+
'trigger': False,
|
331
|
+
'trailing': False,
|
332
|
+
},
|
333
|
+
'fetchOrders': None, # todo
|
334
|
+
'fetchClosedOrders': {
|
335
|
+
'marginMode': False,
|
336
|
+
'limit': 100,
|
337
|
+
'daysBack': None,
|
338
|
+
'daysBackCanceled': None,
|
339
|
+
'untilDays': None,
|
340
|
+
'trigger': False,
|
341
|
+
'trailing': False,
|
342
|
+
},
|
343
|
+
'fetchOHLCV': {
|
344
|
+
'limit': 1440,
|
345
|
+
},
|
346
|
+
},
|
347
|
+
'spot': {
|
348
|
+
'extends': 'default',
|
349
|
+
},
|
350
|
+
'swap': {
|
351
|
+
'linear': {
|
352
|
+
'extends': 'default',
|
353
|
+
},
|
354
|
+
'inverse': {
|
355
|
+
'extends': 'default',
|
356
|
+
},
|
357
|
+
},
|
358
|
+
'future': {
|
359
|
+
'linear': None,
|
360
|
+
'inverse': None,
|
361
|
+
},
|
362
|
+
},
|
292
363
|
'precisionMode': TICK_SIZE,
|
293
364
|
'exceptions': {
|
294
365
|
'exact': {
|
@@ -328,6 +399,8 @@ class whitebit(Exchange, ImplicitAPI):
|
|
328
399
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
329
400
|
:returns dict[]: an array of objects representing market data
|
330
401
|
"""
|
402
|
+
if self.options['adjustForTimeDifference']:
|
403
|
+
self.load_time_difference()
|
331
404
|
markets = self.v4PublicGetMarkets()
|
332
405
|
#
|
333
406
|
# [
|
@@ -1227,7 +1300,7 @@ class whitebit(Exchange, ImplicitAPI):
|
|
1227
1300
|
response = self.v4PublicGetTime(params)
|
1228
1301
|
#
|
1229
1302
|
# {
|
1230
|
-
# "time":
|
1303
|
+
# "time":1737380046
|
1231
1304
|
# }
|
1232
1305
|
#
|
1233
1306
|
return self.safe_integer(response, 'time')
|
@@ -2514,7 +2587,7 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2514
2587
|
return self.in_array(currency, fiatCurrencies)
|
2515
2588
|
|
2516
2589
|
def nonce(self):
|
2517
|
-
return self.milliseconds()
|
2590
|
+
return self.milliseconds() - self.options['timeDifference']
|
2518
2591
|
|
2519
2592
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
2520
2593
|
query = self.omit(params, self.extract_params(path))
|
@@ -2527,10 +2600,12 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2527
2600
|
url += '?' + self.urlencode(query)
|
2528
2601
|
if accessibility == 'private':
|
2529
2602
|
self.check_required_credentials()
|
2530
|
-
nonce =
|
2603
|
+
nonce = self.nonce()
|
2604
|
+
timestamp = self.parse_to_int(nonce / 1000)
|
2605
|
+
timestampString = str(timestamp)
|
2531
2606
|
secret = self.encode(self.secret)
|
2532
2607
|
request = '/' + 'api' + '/' + version + pathWithParams
|
2533
|
-
body = self.json(self.extend({'request': request, 'nonce':
|
2608
|
+
body = self.json(self.extend({'request': request, 'nonce': timestampString}, params))
|
2534
2609
|
payload = self.string_to_base64(body)
|
2535
2610
|
signature = self.hmac(self.encode(payload), secret, hashlib.sha512)
|
2536
2611
|
headers = {
|
ccxt/xt.py
CHANGED
@@ -687,6 +687,118 @@ class xt(Exchange, ImplicitAPI):
|
|
687
687
|
'createMarketBuyOrderRequiresPrice': True,
|
688
688
|
'recvWindow': '5000', # in milliseconds, spot only
|
689
689
|
},
|
690
|
+
'features': {
|
691
|
+
'default': {
|
692
|
+
'sandbox': False,
|
693
|
+
'createOrder': {
|
694
|
+
'marginMode': False,
|
695
|
+
'triggerPrice': False,
|
696
|
+
'triggerDirection': False,
|
697
|
+
'triggerPriceType': None,
|
698
|
+
'stopLossPrice': False,
|
699
|
+
'takeProfitPrice': False,
|
700
|
+
'attachedStopLossTakeProfit': None,
|
701
|
+
'timeInForce': {
|
702
|
+
'IOC': True,
|
703
|
+
'FOK': True,
|
704
|
+
'PO': True,
|
705
|
+
'GTD': False,
|
706
|
+
},
|
707
|
+
'hedged': False,
|
708
|
+
'trailing': False,
|
709
|
+
'leverage': False,
|
710
|
+
'marketBuyByCost': True,
|
711
|
+
'marketBuyRequiresPrice': False,
|
712
|
+
'selfTradePrevention': False,
|
713
|
+
'iceberg': False,
|
714
|
+
},
|
715
|
+
'createOrders': None,
|
716
|
+
'fetchMyTrades': {
|
717
|
+
'marginMode': True,
|
718
|
+
'limit': 100,
|
719
|
+
'daysBack': 100000, # todo
|
720
|
+
'untilDays': 100000, # todo
|
721
|
+
'marketType': True,
|
722
|
+
'subType': True,
|
723
|
+
},
|
724
|
+
'fetchOrder': {
|
725
|
+
'marginMode': False,
|
726
|
+
'trigger': True, # todo TPSL kind
|
727
|
+
'trailing': False,
|
728
|
+
'marketType': True,
|
729
|
+
'subType': True,
|
730
|
+
},
|
731
|
+
'fetchOpenOrders': {
|
732
|
+
'marginMode': True,
|
733
|
+
'limit': 100,
|
734
|
+
'trigger': True, # todo TPSL
|
735
|
+
'trailing': False,
|
736
|
+
'marketType': True,
|
737
|
+
'subType': True,
|
738
|
+
},
|
739
|
+
'fetchOrders': {
|
740
|
+
'marginMode': True,
|
741
|
+
'limit': 100,
|
742
|
+
'daysBack': 100000, # todo
|
743
|
+
'untilDays': 100000, # todo
|
744
|
+
'trigger': True, # todo TPSL
|
745
|
+
'trailing': False,
|
746
|
+
'marketType': True,
|
747
|
+
'subType': True,
|
748
|
+
},
|
749
|
+
'fetchClosedOrders': {
|
750
|
+
'marginMode': True,
|
751
|
+
'limit': 100,
|
752
|
+
'daysBack': 100000, # todo
|
753
|
+
'daysBackCanceled': 1, # todo
|
754
|
+
'untilDays': 100000, # todo
|
755
|
+
'trigger': True, # todo TPSL
|
756
|
+
'trailing': False,
|
757
|
+
'marketType': True,
|
758
|
+
'subType': True,
|
759
|
+
},
|
760
|
+
'fetchOHLCV': {
|
761
|
+
'limit': 1000, # todo for derivatives
|
762
|
+
},
|
763
|
+
},
|
764
|
+
'spot': {
|
765
|
+
'extends': 'default',
|
766
|
+
},
|
767
|
+
'forDerivatives': {
|
768
|
+
'extends': 'default',
|
769
|
+
'createOrder': {
|
770
|
+
'triggerPrice': True,
|
771
|
+
# todo
|
772
|
+
'triggerPriceType': {
|
773
|
+
'last': True,
|
774
|
+
'mark': True,
|
775
|
+
'index': True,
|
776
|
+
},
|
777
|
+
'stopLossPrice': True,
|
778
|
+
'takeProfitPrice': True,
|
779
|
+
},
|
780
|
+
'fetchMyTrades': {
|
781
|
+
'daysBack': None,
|
782
|
+
'untilDays': None,
|
783
|
+
},
|
784
|
+
},
|
785
|
+
'swap': {
|
786
|
+
'linear': {
|
787
|
+
'extends': 'forDerivatives',
|
788
|
+
},
|
789
|
+
'inverse': {
|
790
|
+
'extends': 'forDerivatives',
|
791
|
+
},
|
792
|
+
},
|
793
|
+
'future': {
|
794
|
+
'linear': {
|
795
|
+
'extends': 'forDerivatives',
|
796
|
+
},
|
797
|
+
'inverse': {
|
798
|
+
'extends': 'forDerivatives',
|
799
|
+
},
|
800
|
+
},
|
801
|
+
},
|
690
802
|
})
|
691
803
|
|
692
804
|
def nonce(self):
|
ccxt/yobit.py
CHANGED
@@ -319,6 +319,62 @@ class yobit(Exchange, ImplicitAPI):
|
|
319
319
|
'Rate Limited': RateLimitExceeded,
|
320
320
|
},
|
321
321
|
},
|
322
|
+
'features': {
|
323
|
+
'spot': {
|
324
|
+
'sandbox': False,
|
325
|
+
'createOrder': {
|
326
|
+
'marginMode': False,
|
327
|
+
'triggerPrice': False,
|
328
|
+
'triggerDirection': False,
|
329
|
+
'triggerPriceType': None,
|
330
|
+
'stopLossPrice': False,
|
331
|
+
'takeProfitPrice': False,
|
332
|
+
'attachedStopLossTakeProfit': None,
|
333
|
+
'timeInForce': {
|
334
|
+
'IOC': False,
|
335
|
+
'FOK': False,
|
336
|
+
'PO': False,
|
337
|
+
'GTD': False,
|
338
|
+
},
|
339
|
+
'hedged': False,
|
340
|
+
'trailing': False,
|
341
|
+
'leverage': False,
|
342
|
+
'marketBuyByCost': False,
|
343
|
+
'marketBuyRequiresPrice': False,
|
344
|
+
'selfTradePrevention': False,
|
345
|
+
'iceberg': False,
|
346
|
+
},
|
347
|
+
'createOrders': None,
|
348
|
+
'fetchMyTrades': {
|
349
|
+
'marginMode': False,
|
350
|
+
'limit': 1000,
|
351
|
+
'daysBack': 100000, # todo
|
352
|
+
'untilDays': 100000, # todo
|
353
|
+
},
|
354
|
+
'fetchOrder': {
|
355
|
+
'marginMode': False,
|
356
|
+
'trigger': False,
|
357
|
+
'trailing': False,
|
358
|
+
},
|
359
|
+
'fetchOpenOrders': {
|
360
|
+
'marginMode': False,
|
361
|
+
'limit': None,
|
362
|
+
'trigger': False,
|
363
|
+
'trailing': False,
|
364
|
+
},
|
365
|
+
'fetchOrders': None,
|
366
|
+
'fetchClosedOrders': None,
|
367
|
+
'fetchOHLCV': None,
|
368
|
+
},
|
369
|
+
'swap': {
|
370
|
+
'linear': None,
|
371
|
+
'inverse': None,
|
372
|
+
},
|
373
|
+
'future': {
|
374
|
+
'linear': None,
|
375
|
+
'inverse': None,
|
376
|
+
},
|
377
|
+
},
|
322
378
|
'orders': {}, # orders cache / emulation
|
323
379
|
})
|
324
380
|
|
ccxt/zaif.py
CHANGED
@@ -133,6 +133,61 @@ class zaif(Exchange, ImplicitAPI):
|
|
133
133
|
},
|
134
134
|
'options': {
|
135
135
|
},
|
136
|
+
'features': {
|
137
|
+
'spot': {
|
138
|
+
'sandbox': False,
|
139
|
+
'createOrder': {
|
140
|
+
'marginMode': True, # todo
|
141
|
+
'triggerPrice': True, # todo implement
|
142
|
+
'triggerDirection': False,
|
143
|
+
'triggerPriceType': None,
|
144
|
+
'stopLossPrice': False, # todo
|
145
|
+
'takeProfitPrice': False, # todo
|
146
|
+
'attachedStopLossTakeProfit': None,
|
147
|
+
'timeInForce': {
|
148
|
+
'IOC': False,
|
149
|
+
'FOK': False,
|
150
|
+
'PO': False,
|
151
|
+
'GTD': False,
|
152
|
+
},
|
153
|
+
'hedged': False,
|
154
|
+
'trailing': False,
|
155
|
+
'leverage': True, # todo implement
|
156
|
+
'marketBuyByCost': False,
|
157
|
+
'marketBuyRequiresPrice': False,
|
158
|
+
'selfTradePrevention': False,
|
159
|
+
'iceberg': False,
|
160
|
+
},
|
161
|
+
'createOrders': None,
|
162
|
+
'fetchMyTrades': None, # todo
|
163
|
+
'fetchOrder': None,
|
164
|
+
'fetchOpenOrders': {
|
165
|
+
'marginMode': True, # todo
|
166
|
+
'limit': None,
|
167
|
+
'trigger': False,
|
168
|
+
'trailing': False,
|
169
|
+
},
|
170
|
+
'fetchOrders': None, # todo
|
171
|
+
'fetchClosedOrders': {
|
172
|
+
'marginMode': True, # todo
|
173
|
+
'limit': 1000,
|
174
|
+
'daysBack': 100000, # todo
|
175
|
+
'daysBackCanceled': 1, # todo
|
176
|
+
'untilDays': 100000, # todo
|
177
|
+
'trigger': False,
|
178
|
+
'trailing': False,
|
179
|
+
},
|
180
|
+
'fetchOHLCV': None,
|
181
|
+
},
|
182
|
+
'swap': {
|
183
|
+
'linear': None,
|
184
|
+
'inverse': None,
|
185
|
+
},
|
186
|
+
'future': {
|
187
|
+
'linear': None,
|
188
|
+
'inverse': None,
|
189
|
+
},
|
190
|
+
},
|
136
191
|
'precisionMode': TICK_SIZE,
|
137
192
|
'exceptions': {
|
138
193
|
'exact': {
|
ccxt/zonda.py
CHANGED
@@ -303,6 +303,60 @@ class zonda(Exchange, ImplicitAPI):
|
|
303
303
|
'fillResponseFromRequest': True,
|
304
304
|
},
|
305
305
|
},
|
306
|
+
'features': {
|
307
|
+
'spot': {
|
308
|
+
'sandbox': False,
|
309
|
+
'createOrder': {
|
310
|
+
'marginMode': False,
|
311
|
+
'triggerPrice': True, # todo remove
|
312
|
+
'triggerDirection': False,
|
313
|
+
'triggerPriceType': None,
|
314
|
+
'stopLossPrice': False, # todo
|
315
|
+
'takeProfitPrice': False, # todo
|
316
|
+
'attachedStopLossTakeProfit': None,
|
317
|
+
'timeInForce': {
|
318
|
+
'IOC': True,
|
319
|
+
'FOK': True,
|
320
|
+
'PO': True,
|
321
|
+
'GTD': False,
|
322
|
+
},
|
323
|
+
'hedged': False,
|
324
|
+
'trailing': False,
|
325
|
+
'leverage': False,
|
326
|
+
'marketBuyByCost': True,
|
327
|
+
'marketBuyRequiresPrice': False,
|
328
|
+
'selfTradePrevention': False,
|
329
|
+
'iceberg': False,
|
330
|
+
},
|
331
|
+
'createOrders': None,
|
332
|
+
'fetchMyTrades': {
|
333
|
+
'marginMode': False,
|
334
|
+
'limit': None,
|
335
|
+
'daysBack': 100000, # todo
|
336
|
+
'untilDays': 100000, # todo
|
337
|
+
},
|
338
|
+
'fetchOrder': None,
|
339
|
+
'fetchOpenOrders': {
|
340
|
+
'marginMode': False,
|
341
|
+
'limit': 100,
|
342
|
+
'trigger': False,
|
343
|
+
'trailing': False,
|
344
|
+
},
|
345
|
+
'fetchOrders': None,
|
346
|
+
'fetchClosedOrders': None, # todo
|
347
|
+
'fetchOHLCV': {
|
348
|
+
'limit': None,
|
349
|
+
},
|
350
|
+
},
|
351
|
+
'swap': {
|
352
|
+
'linear': None,
|
353
|
+
'inverse': None,
|
354
|
+
},
|
355
|
+
'future': {
|
356
|
+
'linear': None,
|
357
|
+
'inverse': None,
|
358
|
+
},
|
359
|
+
},
|
306
360
|
'precisionMode': TICK_SIZE,
|
307
361
|
'exceptions': {
|
308
362
|
'400': ExchangeError, # At least one parameter wasn't set
|
@@ -455,6 +509,7 @@ class zonda(Exchange, ImplicitAPI):
|
|
455
509
|
"""
|
456
510
|
self.load_markets()
|
457
511
|
request: dict = {}
|
512
|
+
# todo pair
|
458
513
|
response = self.v1_01PrivateGetTradingOffer(self.extend(request, params))
|
459
514
|
items = self.safe_list(response, 'items', [])
|
460
515
|
return self.parse_orders(items, None, since, limit, {'status': 'open'})
|
@@ -1364,6 +1419,9 @@ class zonda(Exchange, ImplicitAPI):
|
|
1364
1419
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1365
1420
|
"""
|
1366
1421
|
create a trade order
|
1422
|
+
|
1423
|
+
https://docs.zondacrypto.exchange/reference/new-order
|
1424
|
+
|
1367
1425
|
:param str symbol: unified symbol of the market to create an order in
|
1368
1426
|
:param str type: 'market' or 'limit'
|
1369
1427
|
:param str side: 'buy' or 'sell'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.51
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -12,7 +12,6 @@ Project-URL: Discord, https://discord.gg/ccxt
|
|
12
12
|
Project-URL: Twitter, https://twitter.com/ccxt_official
|
13
13
|
Project-URL: Funding, https://opencollective.com/ccxt
|
14
14
|
Keywords: algorithmic,algotrading,altcoin,altcoins,api,arbitrage,real-time,realtime,backtest,backtesting,bitcoin,bot,btc,cny,coin,coins,crypto,cryptocurrency,crypto currency,crypto market,currency,currencies,darkcoin,dash,digital currency,doge,dogecoin,e-commerce,etc,eth,ether,ethereum,exchange,exchanges,eur,framework,invest,investing,investor,library,light,litecoin,ltc,market,market data,markets,merchandise,merchant,minimal,ohlcv,order,orderbook,order book,price,price data,pricefeed,private,public,ripple,strategy,ticker,tickers,toolkit,trade,trader,trading,usd,volume,websocket,websockets,web socket,web sockets,ws,xbt,xrp,zec,zerocoin
|
15
|
-
Platform: UNKNOWN
|
16
15
|
Classifier: Development Status :: 4 - Beta
|
17
16
|
Classifier: Intended Audience :: Developers
|
18
17
|
Classifier: Intended Audience :: Financial and Insurance Industry
|
@@ -34,19 +33,19 @@ Classifier: Operating System :: OS Independent
|
|
34
33
|
Classifier: Environment :: Console
|
35
34
|
Description-Content-Type: text/markdown
|
36
35
|
License-File: LICENSE.txt
|
37
|
-
Requires-Dist: setuptools
|
38
|
-
Requires-Dist: certifi
|
39
|
-
Requires-Dist: requests
|
40
|
-
Requires-Dist: cryptography
|
41
|
-
Requires-Dist: typing-extensions
|
42
|
-
Requires-Dist: aiohttp
|
43
|
-
Requires-Dist: aiodns
|
44
|
-
Requires-Dist: yarl
|
36
|
+
Requires-Dist: setuptools>=60.9.0
|
37
|
+
Requires-Dist: certifi>=2018.1.18
|
38
|
+
Requires-Dist: requests>=2.18.4
|
39
|
+
Requires-Dist: cryptography>=2.6.1
|
40
|
+
Requires-Dist: typing-extensions>=4.4.0
|
41
|
+
Requires-Dist: aiohttp<=3.10.11; python_version >= "3.5.2"
|
42
|
+
Requires-Dist: aiodns>=1.1.1; python_version >= "3.5.2"
|
43
|
+
Requires-Dist: yarl>=1.7.2; python_version >= "3.5.2"
|
45
44
|
Provides-Extra: qa
|
46
|
-
Requires-Dist: ruff
|
47
|
-
Requires-Dist: tox
|
45
|
+
Requires-Dist: ruff==0.0.292; extra == "qa"
|
46
|
+
Requires-Dist: tox>=4.8.0; extra == "qa"
|
48
47
|
Provides-Extra: type
|
49
|
-
Requires-Dist: mypy
|
48
|
+
Requires-Dist: mypy==1.6.1; extra == "type"
|
50
49
|
|
51
50
|
# CCXT – CryptoCurrency eXchange Trading Library
|
52
51
|
|
@@ -71,6 +70,9 @@ Current feature list:
|
|
71
70
|
|
72
71
|
## Sponsored Promotion
|
73
72
|
|
73
|
+
[](https://www.gate.io/activities/ccxt-trading-competition)
|
74
|
+
|
75
|
+
|
74
76
|
## See Also
|
75
77
|
|
76
78
|
- <sub>[](https://tab-trader.com/?utm_source=ccxt)</sub> **[TabTrader](https://tab-trader.com/?utm_source=ccxt)** – trading on all exchanges in one app. Available on **[Android](https://play.google.com/store/apps/details?id=com.tabtrader.android&referrer=utm_source%3Dccxt)** and **[iOS](https://itunes.apple.com/app/apple-store/id1095716562?mt=8)**!
|
@@ -276,13 +278,13 @@ console.log(version, Object.keys(exchanges));
|
|
276
278
|
|
277
279
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
278
280
|
|
279
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
280
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
281
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.51/dist/ccxt.browser.min.js
|
282
|
+
* unpkg: https://unpkg.com/ccxt@4.4.51/dist/ccxt.browser.min.js
|
281
283
|
|
282
284
|
CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
|
283
285
|
|
284
286
|
```HTML
|
285
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
287
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.51/dist/ccxt.browser.min.js"></script>
|
286
288
|
```
|
287
289
|
|
288
290
|
Creates a global `ccxt` object:
|
@@ -642,5 +644,3 @@ Thank you!
|
|
642
644
|
## Contact Us
|
643
645
|
|
644
646
|
For business inquiries: info@ccxt.trade
|
645
|
-
|
646
|
-
|