ccxt-ir 4.3.46.0.2__py2.py3-none-any.whl → 4.5.0__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 (528) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +9 -9
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +10 -10
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/abstract/ace.py +0 -15
  438. ccxt/abstract/bitbay.py +0 -53
  439. ccxt/abstract/bitcoincom.py +0 -115
  440. ccxt/abstract/bitfinex2.py +0 -139
  441. ccxt/abstract/bitpanda.py +0 -35
  442. ccxt/abstract/bl3p.py +0 -19
  443. ccxt/abstract/coinlist.py +0 -54
  444. ccxt/abstract/currencycom.py +0 -68
  445. ccxt/abstract/hitbtc3.py +0 -115
  446. ccxt/abstract/idex.py +0 -26
  447. ccxt/abstract/kuna.py +0 -182
  448. ccxt/abstract/lykke.py +0 -29
  449. ccxt/abstract/poloniexfutures.py +0 -48
  450. ccxt/abstract/wazirx.py +0 -30
  451. ccxt/ace.py +0 -1012
  452. ccxt/async_support/ace.py +0 -1012
  453. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  454. ccxt/async_support/base/ws/fast_client.py +0 -96
  455. ccxt/async_support/bitbay.py +0 -17
  456. ccxt/async_support/bitcoincom.py +0 -17
  457. ccxt/async_support/bitfinex2.py +0 -3552
  458. ccxt/async_support/bitpanda.py +0 -16
  459. ccxt/async_support/bl3p.py +0 -485
  460. ccxt/async_support/coinlist.py +0 -2243
  461. ccxt/async_support/currencycom.py +0 -1950
  462. ccxt/async_support/hitbtc3.py +0 -16
  463. ccxt/async_support/idex.py +0 -1766
  464. ccxt/async_support/kuna.py +0 -1841
  465. ccxt/async_support/lykke.py +0 -1270
  466. ccxt/async_support/poloniexfutures.py +0 -1717
  467. ccxt/async_support/wazirx.py +0 -1224
  468. ccxt/bitbay.py +0 -17
  469. ccxt/bitcoincom.py +0 -17
  470. ccxt/bitfinex2.py +0 -3552
  471. ccxt/bitpanda.py +0 -16
  472. ccxt/bl3p.py +0 -485
  473. ccxt/coinlist.py +0 -2243
  474. ccxt/currencycom.py +0 -1950
  475. ccxt/hitbtc3.py +0 -16
  476. ccxt/idex.py +0 -1766
  477. ccxt/kuna.py +0 -1841
  478. ccxt/lykke.py +0 -1270
  479. ccxt/poloniexfutures.py +0 -1717
  480. ccxt/pro/bitcoincom.py +0 -34
  481. ccxt/pro/bitfinex2.py +0 -1083
  482. ccxt/pro/bitpanda.py +0 -15
  483. ccxt/pro/currencycom.py +0 -536
  484. ccxt/pro/idex.py +0 -672
  485. ccxt/pro/poloniexfutures.py +0 -990
  486. ccxt/pro/wazirx.py +0 -749
  487. ccxt/test/base/__init__.py +0 -29
  488. ccxt/test/base/test_account.py +0 -26
  489. ccxt/test/base/test_balance.py +0 -56
  490. ccxt/test/base/test_borrow_interest.py +0 -35
  491. ccxt/test/base/test_borrow_rate.py +0 -32
  492. ccxt/test/base/test_calculate_fee.py +0 -51
  493. ccxt/test/base/test_crypto.py +0 -127
  494. ccxt/test/base/test_currency.py +0 -76
  495. ccxt/test/base/test_datetime.py +0 -109
  496. ccxt/test/base/test_decimal_to_precision.py +0 -392
  497. ccxt/test/base/test_deep_extend.py +0 -68
  498. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  499. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  500. ccxt/test/base/test_funding_rate_history.py +0 -29
  501. ccxt/test/base/test_last_price.py +0 -31
  502. ccxt/test/base/test_ledger_entry.py +0 -45
  503. ccxt/test/base/test_ledger_item.py +0 -48
  504. ccxt/test/base/test_leverage_tier.py +0 -33
  505. ccxt/test/base/test_liquidation.py +0 -50
  506. ccxt/test/base/test_margin_mode.py +0 -24
  507. ccxt/test/base/test_margin_modification.py +0 -35
  508. ccxt/test/base/test_market.py +0 -193
  509. ccxt/test/base/test_number.py +0 -411
  510. ccxt/test/base/test_ohlcv.py +0 -33
  511. ccxt/test/base/test_open_interest.py +0 -32
  512. ccxt/test/base/test_order.py +0 -64
  513. ccxt/test/base/test_order_book.py +0 -69
  514. ccxt/test/base/test_position.py +0 -60
  515. ccxt/test/base/test_shared_methods.py +0 -353
  516. ccxt/test/base/test_status.py +0 -24
  517. ccxt/test/base/test_throttle.py +0 -126
  518. ccxt/test/base/test_ticker.py +0 -92
  519. ccxt/test/base/test_trade.py +0 -47
  520. ccxt/test/base/test_trading_fee.py +0 -26
  521. ccxt/test/base/test_transaction.py +0 -39
  522. ccxt/test/test_async.py +0 -1649
  523. ccxt/test/test_sync.py +0 -1648
  524. ccxt/wazirx.py +0 -1224
  525. ccxt_ir-4.3.46.0.2.dist-info/RECORD +0 -772
  526. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  527. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  528. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -6,9 +6,8 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.coinbaseinternational import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Order, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
9
+ from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, MarginModification, Market, Order, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
10
  from typing import List
11
- from typing import Any
12
11
  from ccxt.base.errors import ExchangeError
13
12
  from ccxt.base.errors import AuthenticationError
14
13
  from ccxt.base.errors import PermissionDenied
@@ -22,12 +21,12 @@ from ccxt.base.precise import Precise
22
21
 
23
22
  class coinbaseinternational(Exchange, ImplicitAPI):
24
23
 
25
- def describe(self):
24
+ def describe(self) -> Any:
26
25
  return self.deep_extend(super(coinbaseinternational, self).describe(), {
27
26
  'id': 'coinbaseinternational',
28
27
  'name': 'Coinbase International',
29
28
  'countries': ['US'],
30
- 'certified': True,
29
+ 'certified': False,
31
30
  'pro': True,
32
31
  'rateLimit': 100, # 10 requests per second
33
32
  'version': 'v1',
@@ -74,7 +73,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
74
73
  'fetchCrossBorrowRates': False,
75
74
  'fetchCurrencies': True,
76
75
  'fetchDeposits': True,
77
- 'fetchFundingHistory': False,
76
+ 'fetchFundingHistory': True,
78
77
  'fetchFundingRate': False,
79
78
  'fetchFundingRateHistory': True,
80
79
  'fetchFundingRates': False,
@@ -92,7 +91,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
92
91
  'fetchMyBuys': True,
93
92
  'fetchMySells': True,
94
93
  'fetchMyTrades': True,
95
- 'fetchOHLCV': False,
94
+ 'fetchOHLCV': True,
96
95
  'fetchOpenInterestHistory': False,
97
96
  'fetchOpenOrders': True,
98
97
  'fetchOrder': True,
@@ -111,6 +110,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
111
110
  'fetchTrades': False,
112
111
  'fetchTradingFee': False,
113
112
  'fetchTradingFees': False,
113
+ 'fetchTransfers': True,
114
114
  'fetchWithdrawals': True,
115
115
  'reduceMargin': False,
116
116
  'sandbox': True,
@@ -153,7 +153,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
153
153
  'instruments/{instrument}',
154
154
  'instruments/{instrument}/quote',
155
155
  'instruments/{instrument}/funding',
156
- '',
156
+ 'instruments/{instrument}/candles',
157
157
  ],
158
158
  },
159
159
  'private': {
@@ -263,6 +263,75 @@ class coinbaseinternational(Exchange, ImplicitAPI):
263
263
  'bitcoin': 'BTC',
264
264
  },
265
265
  },
266
+ 'features': {
267
+ 'default': {
268
+ 'sandbox': True,
269
+ 'createOrder': {
270
+ 'marginMode': False,
271
+ 'triggerPrice': True,
272
+ 'triggerPriceType': None,
273
+ 'triggerDirection': True,
274
+ 'stopLossPrice': False, # todo implementation
275
+ 'takeProfitPrice': False, # todo implementation
276
+ 'attachedStopLossTakeProfit': None,
277
+ 'timeInForce': {
278
+ 'IOC': True,
279
+ 'FOK': True,
280
+ 'PO': True,
281
+ 'GTD': True,
282
+ 'GTC': True, # has 30 days max
283
+ },
284
+ 'hedged': False,
285
+ 'trailing': False,
286
+ 'leverage': False,
287
+ 'marketBuyByCost': False,
288
+ 'marketBuyRequiresPrice': True,
289
+ 'selfTradePrevention': True, # todo: implement
290
+ 'iceberg': False,
291
+ },
292
+ 'createOrders': None,
293
+ 'fetchMyTrades': {
294
+ 'marginMode': False,
295
+ 'limit': 100,
296
+ 'daysBack': None,
297
+ 'untilDays': 10000,
298
+ 'symbolRequired': False,
299
+ },
300
+ 'fetchOrder': {
301
+ 'marginMode': False,
302
+ 'trigger': False,
303
+ 'trailing': False,
304
+ 'symbolRequired': False,
305
+ },
306
+ 'fetchOpenOrders': {
307
+ 'marginMode': False,
308
+ 'limit': 100,
309
+ 'trigger': False,
310
+ 'trailing': False,
311
+ 'symbolRequired': False,
312
+ },
313
+ 'fetchOrders': None,
314
+ 'fetchClosedOrders': None,
315
+ 'fetchOHLCV': {
316
+ 'limit': 300,
317
+ },
318
+ },
319
+ 'spot': {
320
+ 'extends': 'default',
321
+ },
322
+ 'swap': {
323
+ 'linear': {
324
+ 'extends': 'default',
325
+ },
326
+ 'inverse': {
327
+ 'extends': 'default',
328
+ },
329
+ },
330
+ 'future': {
331
+ 'linear': None,
332
+ 'inverse': None,
333
+ },
334
+ },
266
335
  })
267
336
 
268
337
  def handle_portfolio_and_params(self, methodName: str, params={}):
@@ -303,7 +372,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
303
372
  def fetch_accounts(self, params={}):
304
373
  """
305
374
  fetch all the accounts associated with a profile
306
- :see: https://docs.cloud.coinbase.com/intx/reference/getportfolios
375
+
376
+ https://docs.cloud.coinbase.com/intx/reference/getportfolios
377
+
307
378
  :param dict [params]: extra parameters specific to the exchange API endpoint
308
379
  :returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
309
380
  """
@@ -351,15 +422,89 @@ class coinbaseinternational(Exchange, ImplicitAPI):
351
422
  'info': account,
352
423
  }
353
424
 
425
+ def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = 100, params={}) -> List[list]:
426
+ """
427
+ fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
428
+
429
+ https://docs.cdp.coinbase.com/intx/reference/getinstrumentcandles
430
+
431
+ :param str symbol: unified symbol of the market to fetch OHLCV data for
432
+ :param str timeframe: the length of time each candle represents
433
+ :param int [since]: timestamp in ms of the earliest candle to fetch
434
+ :param int [limit]: the maximum amount of candles to fetch, default 100 max 10000
435
+ :param dict [params]: extra parameters specific to the exchange API endpoint
436
+ :returns int[][]: A list of candles ordered, open, high, low, close, volume
437
+ :param int [params.until]: timestamp in ms of the latest candle to fetch
438
+ :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
439
+ """
440
+ self.load_markets()
441
+ paginate = False
442
+ paginate, params = self.handle_option_and_params(params, 'fetchOHLCV', 'paginate')
443
+ if paginate:
444
+ return self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 10000)
445
+ market = self.market(symbol)
446
+ request: dict = {
447
+ 'instrument': market['id'],
448
+ 'granularity': self.safe_string(self.timeframes, timeframe, timeframe),
449
+ }
450
+ if since is not None:
451
+ request['start'] = self.iso8601(since)
452
+ else:
453
+ raise ArgumentsRequired(self.id + ' fetchOHLCV() requires a since argument')
454
+ unitl = self.safe_integer(params, 'until')
455
+ if unitl is not None:
456
+ params = self.omit(params, 'until')
457
+ request['end'] = self.iso8601(unitl)
458
+ response = self.v1PublicGetInstrumentsInstrumentCandles(self.extend(request, params))
459
+ #
460
+ # {
461
+ # "aggregations": [
462
+ # {
463
+ # "start": "2024-04-23T00:00:00Z",
464
+ # "open": "62884.4",
465
+ # "high": "64710.6",
466
+ # "low": "62884.4",
467
+ # "close": "63508.4",
468
+ # "volume": "3253.9983"
469
+ # }
470
+ # ]
471
+ # }
472
+ #
473
+ candles = self.safe_list(response, 'aggregations', [])
474
+ return self.parse_ohlcvs(candles, market, timeframe, since, limit)
475
+
476
+ def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
477
+ #
478
+ # {
479
+ # "start": "2024-04-23T00:00:00Z",
480
+ # "open": "62884.4",
481
+ # "high": "64710.6",
482
+ # "low": "62884.4",
483
+ # "close": "63508.4",
484
+ # "volume": "3253.9983"
485
+ # }
486
+ #
487
+ return [
488
+ self.parse8601(self.safe_string_2(ohlcv, 'start', 'time')),
489
+ self.safe_number(ohlcv, 'open'),
490
+ self.safe_number(ohlcv, 'high'),
491
+ self.safe_number(ohlcv, 'low'),
492
+ self.safe_number(ohlcv, 'close'),
493
+ self.safe_number(ohlcv, 'volume'),
494
+ ]
495
+
354
496
  def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
355
497
  """
356
498
  fetches historical funding rate prices
357
- :see: https://docs.cloud.coinbase.com/intx/reference/getinstrumentfunding
499
+
500
+ https://docs.cloud.coinbase.com/intx/reference/getinstrumentfunding
501
+
358
502
  :param str symbol: unified symbol of the market to fetch the funding rate history for
359
503
  :param int [since]: timestamp in ms of the earliest funding rate to fetch
360
504
  :param int [limit]: the maximum amount of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>` to fetch
361
505
  :param dict [params]: extra parameters specific to the exchange API endpoint
362
506
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
507
+ :returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>`
363
508
  """
364
509
  if symbol is None:
365
510
  raise ArgumentsRequired(self.id + ' fetchFundingRateHistory() requires a symbol argument')
@@ -433,11 +578,171 @@ class coinbaseinternational(Exchange, ImplicitAPI):
433
578
  'previousFundingDatetime': None,
434
579
  }
435
580
 
436
- def create_deposit_address(self, code: str, params={}):
581
+ def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
582
+ """
583
+ fetch the history of funding payments paid and received on self account
584
+
585
+ https://docs.cdp.coinbase.com/intx/reference/gettransfers
586
+
587
+ :param str [symbol]: unified market symbol
588
+ :param int [since]: the earliest time in ms to fetch funding history for
589
+ :param int [limit]: the maximum number of funding history structures to retrieve
590
+ :param dict [params]: extra parameters specific to the exchange API endpoint
591
+ :returns dict: a `funding history structure <https://docs.ccxt.com/#/?id=funding-history-structure>`
592
+ """
593
+ self.load_markets()
594
+ request: dict = {
595
+ 'type': 'FUNDING',
596
+ }
597
+ market: Market = None
598
+ if symbol is not None:
599
+ market = self.market(symbol)
600
+ portfolios = None
601
+ portfolios, params = self.handle_option_and_params(params, 'fetchFundingHistory', 'portfolios')
602
+ if portfolios is not None:
603
+ request['portfolios'] = portfolios
604
+ if since is not None:
605
+ request['time_from'] = self.iso8601(since)
606
+ if limit is not None:
607
+ request['result_limit'] = limit
608
+ else:
609
+ request['result_limit'] = 100
610
+ response = self.v1PrivateGetTransfers(self.extend(request, params))
611
+ fundings = self.safe_list(response, 'results', [])
612
+ return self.parse_incomes(fundings, market, since, limit)
613
+
614
+ def parse_income(self, income, market: Market = None):
615
+ #
616
+ # {
617
+ # "amount":"0.0008",
618
+ # "asset":"USDC",
619
+ # "created_at":"2024-02-22T16:00:00Z",
620
+ # "from_portfolio":{
621
+ # "id":"13yuk1fs-1-0",
622
+ # "name":"Eng Test Portfolio - 2",
623
+ # "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
624
+ # },
625
+ # "instrument_id":"149264164756389888",
626
+ # "instrument_symbol":"ETH-PERP",
627
+ # "position_id":"1xy4v51m-1-2",
628
+ # "status":"PROCESSED",
629
+ # "to_portfolio":{
630
+ # "name":"CB_FUND"
631
+ # },
632
+ # "transfer_type":"FUNDING",
633
+ # "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
634
+ # "updated_at":"2024-02-22T16:00:00Z"
635
+ # }
636
+ #
637
+ marketId = self.safe_string(income, 'symbol')
638
+ market = self.safe_market(marketId, market, None, 'contract')
639
+ datetime = self.safe_integer(income, 'created_at')
640
+ timestamp = self.parse8601(datetime)
641
+ currencyId = self.safe_string(income, 'asset')
642
+ code = self.safe_currency_code(currencyId)
643
+ return {
644
+ 'info': income,
645
+ 'symbol': market['symbol'],
646
+ 'code': code,
647
+ 'timestamp': timestamp,
648
+ 'datetime': self.iso8601(timestamp),
649
+ 'id': self.safe_string(income, 'transfer_uuid'),
650
+ 'amount': self.safe_number(income, 'amount'),
651
+ 'rate': None,
652
+ }
653
+
654
+ def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[TransferEntry]:
655
+ """
656
+ fetch a history of internal transfers made on an account
657
+
658
+ https://docs.cdp.coinbase.com/intx/reference/gettransfers
659
+
660
+ :param str code: unified currency code of the currency transferred
661
+ :param int [since]: the earliest time in ms to fetch transfers for
662
+ :param int [limit]: the maximum number of transfers structures to retrieve
663
+ :param dict [params]: extra parameters specific to the exchange API endpoint
664
+ :returns dict[]: a list of `transfer structures <https://docs.ccxt.com/#/?id=transfer-structure>`
665
+ """
666
+ self.load_markets()
667
+ request: dict = {
668
+ 'type': 'INTERNAL',
669
+ }
670
+ currency = None
671
+ if code is not None:
672
+ currency = self.currency(code)
673
+ portfolios = None
674
+ portfolios, params = self.handle_option_and_params(params, 'fetchTransfers', 'portfolios')
675
+ if portfolios is not None:
676
+ request['portfolios'] = portfolios
677
+ if since is not None:
678
+ request['time_from'] = self.iso8601(since)
679
+ if limit is not None:
680
+ request['result_limit'] = limit
681
+ else:
682
+ request['result_limit'] = 100
683
+ response = self.v1PrivateGetTransfers(self.extend(request, params))
684
+ transfers = self.safe_list(response, 'results', [])
685
+ return self.parse_transfers(transfers, currency, since, limit)
686
+
687
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
688
+ #
689
+ # {
690
+ # "amount":"0.0008",
691
+ # "asset":"USDC",
692
+ # "created_at":"2024-02-22T16:00:00Z",
693
+ # "from_portfolio":{
694
+ # "id":"13yuk1fs-1-0",
695
+ # "name":"Eng Test Portfolio - 2",
696
+ # "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
697
+ # },
698
+ # "instrument_id":"149264164756389888",
699
+ # "instrument_symbol":"ETH-PERP",
700
+ # "position_id":"1xy4v51m-1-2",
701
+ # "status":"PROCESSED",
702
+ # "to_portfolio":{
703
+ # "name":"CB_FUND"
704
+ # },
705
+ # "transfer_type":"FUNDING",
706
+ # "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
707
+ # "updated_at":"2024-02-22T16:00:00Z"
708
+ # }
709
+ #
710
+ datetime = self.safe_integer(transfer, 'created_at')
711
+ timestamp = self.parse8601(datetime)
712
+ currencyId = self.safe_string(transfer, 'asset')
713
+ code = self.safe_currency_code(currencyId)
714
+ fromPorfolio = self.safe_dict(transfer, 'from_portfolio', {})
715
+ fromId = self.safe_string(fromPorfolio, 'id')
716
+ toPorfolio = self.safe_dict(transfer, 'to_portfolio', {})
717
+ toId = self.safe_string(toPorfolio, 'id')
718
+ return {
719
+ 'info': transfer,
720
+ 'id': self.safe_string(transfer, 'transfer_uuid'),
721
+ 'timestamp': timestamp,
722
+ 'datetime': self.iso8601(timestamp),
723
+ 'currency': code,
724
+ 'amount': self.safe_number(transfer, 'amount'),
725
+ 'fromAccount': fromId,
726
+ 'toAccount': toId,
727
+ 'status': self.parse_transfer_status(self.safe_string(transfer, 'status')),
728
+ }
729
+
730
+ def parse_transfer_status(self, status: Str) -> Str:
731
+ statuses: dict = {
732
+ 'FAILED': 'failed',
733
+ 'PROCESSED': 'ok',
734
+ 'NEW': 'pending',
735
+ 'STARTED': 'pending',
736
+ }
737
+ return self.safe_string(statuses, status, status)
738
+
739
+ def create_deposit_address(self, code: str, params={}) -> DepositAddress:
437
740
  """
438
741
  create a currency deposit address
439
- :see: https://docs.cloud.coinbase.com/intx/reference/createaddress
440
- :see: https://docs.cloud.coinbase.com/intx/reference/createcounterpartyid
742
+
743
+ https://docs.cloud.coinbase.com/intx/reference/createaddress
744
+ https://docs.cloud.coinbase.com/intx/reference/createcounterpartyid
745
+
441
746
  :param str code: unified currency code of the currency for the deposit address
442
747
  :param dict [params]: extra parameters specific to the exchange API endpoint
443
748
  :param str [params.network_arn_id]: Identifies the blockchain network(e.g., networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a) if not provided will pick default
@@ -478,6 +783,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
478
783
  'currency': code,
479
784
  'tag': tag,
480
785
  'address': address,
786
+ 'network': None,
481
787
  'info': response,
482
788
  }
483
789
 
@@ -494,7 +800,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
494
800
  currency = self.currency(code)
495
801
  networks = self.safe_dict(currency, 'networks')
496
802
  if networks is not None:
497
- return
803
+ return False
498
804
  request: dict = {
499
805
  'asset': currency['id'],
500
806
  }
@@ -502,7 +808,23 @@ class coinbaseinternational(Exchange, ImplicitAPI):
502
808
  #
503
809
  # [
504
810
  # {
505
- # "asset_id" = self.parse_networks(rawNetworks)
811
+ # "asset_id":"1",
812
+ # "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
813
+ # "asset_name":"USDC",
814
+ # "network_arn_id":"networks/ethereum-mainnet/assets/9bc140b4-69c3-5fc9-bd0d-b041bcf40039",
815
+ # "min_withdrawal_amt":"1",
816
+ # "max_withdrawal_amt":"100000000",
817
+ # "network_confirms":35,
818
+ # "processing_time":485,
819
+ # "is_default":true,
820
+ # "network_name":"ethereum",
821
+ # "display_name":"Ethereum"
822
+ # },
823
+ # ....
824
+ # ]
825
+ #
826
+ currency['networks'] = self.parse_networks(rawNetworks)
827
+ return True
506
828
 
507
829
  def parse_networks(self, networks, params={}):
508
830
  result: dict = {}
@@ -530,11 +852,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
530
852
  currencyId = self.safe_string(network, 'asset_name')
531
853
  currencyCode = self.safe_currency_code(currencyId)
532
854
  networkId = self.safe_string(network, 'network_arn_id')
855
+ networkIdForCode = self.safe_string_n(network, ['network_name', 'display_name', 'network_arn_id'], '')
533
856
  return self.safe_network({
534
857
  'info': network,
535
858
  'id': networkId,
536
859
  'name': self.safe_string(network, 'display_name'),
537
- 'network': self.network_id_to_code(self.safe_string_n(network, ['network_name', 'display_name', 'network_arn_id'], ''), currencyCode),
860
+ 'network': self.network_id_to_code(networkIdForCode, currencyCode),
538
861
  'active': None,
539
862
  'deposit': None,
540
863
  'withdraw': None,
@@ -552,10 +875,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
552
875
  },
553
876
  })
554
877
 
555
- def set_margin(self, symbol: str, amount: float, params={}) -> Any:
878
+ def set_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
556
879
  """
557
880
  Either adds or reduces margin in order to set the margin to a specific value
558
- :see: https://docs.cloud.coinbase.com/intx/reference/setportfoliomarginoverride
881
+
882
+ https://docs.cloud.coinbase.com/intx/reference/setportfoliomarginoverride
883
+
559
884
  :param str symbol: unified market symbol of the market to set margin in
560
885
  :param float amount: the amount to set the margin to
561
886
  :param dict [params]: parameters specific to the exchange API endpoint
@@ -571,10 +896,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
571
896
  }
572
897
  return self.v1PrivatePostPortfoliosMargin(self.extend(request, params))
573
898
 
574
- def fetch_deposits_withdrawals(self, code: str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
899
+ def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
575
900
  """
576
901
  fetch history of deposits and withdrawals
577
- :see: https://docs.cloud.coinbase.com/intx/reference/gettransfers
902
+
903
+ https://docs.cloud.coinbase.com/intx/reference/gettransfers
904
+
578
905
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
579
906
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
580
907
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -643,7 +970,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
643
970
 
644
971
  def fetch_position(self, symbol: str, params={}):
645
972
  """
646
- :see: https://docs.cloud.coinbase.com/intx/reference/getportfolioposition
973
+
974
+ https://docs.cloud.coinbase.com/intx/reference/getportfolioposition
975
+
647
976
  fetch data on an open position
648
977
  :param str symbol: unified market symbol of the market the position is held in
649
978
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -726,11 +1055,12 @@ class coinbaseinternational(Exchange, ImplicitAPI):
726
1055
 
727
1056
  def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
728
1057
  """
729
- :see: https://docs.cloud.coinbase.com/intx/reference/getportfoliopositions
1058
+
1059
+ https://docs.cloud.coinbase.com/intx/reference/getportfoliopositions
1060
+
730
1061
  fetch all open positions
731
1062
  :param str[] [symbols]: list of unified market symbols
732
1063
  :param dict [params]: extra parameters specific to the exchange API endpoint
733
- :param str [method]: method name to call, "positionRisk", "account" or "option", default is "positionRisk"
734
1064
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
735
1065
  """
736
1066
  self.load_markets()
@@ -766,7 +1096,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
766
1096
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
767
1097
  """
768
1098
  fetch all withdrawals made from an account
769
- :see: https://docs.cloud.coinbase.com/intx/reference/gettransfers
1099
+
1100
+ https://docs.cloud.coinbase.com/intx/reference/gettransfers
1101
+
770
1102
  :param str code: unified currency code
771
1103
  :param int [since]: the earliest time in ms to fetch withdrawals for
772
1104
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -900,7 +1232,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
900
1232
 
901
1233
  def fetch_markets(self, params={}) -> List[Market]:
902
1234
  """
903
- :see: https://docs.cloud.coinbase.com/intx/reference/getinstruments
1235
+
1236
+ https://docs.cloud.coinbase.com/intx/reference/getinstruments
1237
+
904
1238
  retrieves data on all markets for coinbaseinternational
905
1239
  :param dict [params]: extra parameters specific to the exchange API endpoint
906
1240
  :returns dict[]: an array of objects representing market data
@@ -1072,7 +1406,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1072
1406
  def fetch_currencies(self, params={}) -> Currencies:
1073
1407
  """
1074
1408
  fetches all available currencies on an exchange
1075
- :see: https://docs.cloud.coinbase.com/intx/reference/getassets
1409
+
1410
+ https://docs.cloud.coinbase.com/intx/reference/getassets
1411
+
1076
1412
  :param dict [params]: extra parameters specific to the exchange API endpoint
1077
1413
  :returns dict: an associative dictionary of currencies
1078
1414
  """
@@ -1090,13 +1426,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1090
1426
  # ...
1091
1427
  # ]
1092
1428
  #
1093
- result: dict = {}
1094
- for i in range(0, len(currencies)):
1095
- currency = self.parse_currency(currencies[i])
1096
- result[currency['code']] = currency
1097
- return result
1429
+ return self.parse_currencies(currencies)
1098
1430
 
1099
- def parse_currency(self, currency: dict):
1431
+ def parse_currency(self, currency: dict) -> Currency:
1100
1432
  #
1101
1433
  # {
1102
1434
  # "asset_id":"1",
@@ -1110,7 +1442,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1110
1442
  id = self.safe_string(currency, 'asset_name')
1111
1443
  code = self.safe_currency_code(id)
1112
1444
  statusId = self.safe_string(currency, 'status')
1113
- return {
1445
+ return self.safe_currency_structure({
1114
1446
  'id': id,
1115
1447
  'name': code,
1116
1448
  'code': code,
@@ -1123,12 +1455,14 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1123
1455
  'fee': None,
1124
1456
  'fees': None,
1125
1457
  'limits': self.limits,
1126
- }
1458
+ })
1127
1459
 
1128
1460
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
1129
1461
  """
1130
1462
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
1131
- :see: https://docs.cloud.coinbase.com/intx/reference/getinstruments
1463
+
1464
+ https://docs.cloud.coinbase.com/intx/reference/getinstruments
1465
+
1132
1466
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1133
1467
  :param dict [params]: extra parameters specific to the exchange API endpoint
1134
1468
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1148,7 +1482,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1148
1482
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
1149
1483
  """
1150
1484
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1151
- :see: https://docs.cloud.coinbase.com/intx/reference/getinstrumentquote
1485
+
1486
+ https://docs.cloud.coinbase.com/intx/reference/getinstrumentquote
1487
+
1152
1488
  :param str symbol: unified symbol of the market to fetch the ticker for
1153
1489
  :param dict [params]: extra parameters specific to the exchange API endpoint
1154
1490
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1201,12 +1537,16 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1201
1537
  'baseVolume': None,
1202
1538
  'quoteVolume': None,
1203
1539
  'previousClose': None,
1540
+ 'markPrice': self.safe_number(ticker, 'mark_price'),
1541
+ 'indexPrice': self.safe_number(ticker, 'index_price'),
1204
1542
  })
1205
1543
 
1206
1544
  def fetch_balance(self, params={}) -> Balances:
1207
1545
  """
1208
1546
  query for balance and get the amount of funds available for trading or funds locked in orders
1209
- :see: https://docs.cloud.coinbase.com/intx/reference/getportfoliobalances
1547
+
1548
+ https://docs.cloud.coinbase.com/intx/reference/getportfoliobalances
1549
+
1210
1550
  :param dict [params]: extra parameters specific to the exchange API endpoint
1211
1551
  :param boolean [params.v3]: default False, set True to use v3 api endpoint
1212
1552
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -1269,7 +1609,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1269
1609
  def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1270
1610
  """
1271
1611
  Transfer an amount of asset from one portfolio to another.
1272
- :see: https://docs.cloud.coinbase.com/intx/reference/createportfolioassettransfer
1612
+
1613
+ https://docs.cloud.coinbase.com/intx/reference/createportfolioassettransfer
1614
+
1273
1615
  :param str code: unified currency code
1274
1616
  :param float amount: amount to transfer
1275
1617
  :param str fromAccount: account to transfer from
@@ -1302,14 +1644,16 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1302
1644
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, params={}):
1303
1645
  """
1304
1646
  create a trade order
1305
- :see: https://docs.cloud.coinbase.com/intx/reference/createorder
1647
+
1648
+ https://docs.cloud.coinbase.com/intx/reference/createorder
1649
+
1306
1650
  :param str symbol: unified symbol of the market to create an order in
1307
1651
  :param str type: 'market' or 'limit'
1308
1652
  :param str side: 'buy' or 'sell'
1309
1653
  :param float amount: how much you want to trade in units of the base currency, quote currency for 'market' 'buy' orders
1310
1654
  :param float [price]: the price to fulfill the order, in units of the quote currency, ignored in market orders
1311
1655
  :param dict [params]: extra parameters specific to the exchange API endpoint
1312
- :param float [params.stopPrice]: price to trigger stop orders
1656
+ :param float [params.stopPrice]: alias for triggerPrice
1313
1657
  :param float [params.triggerPrice]: price to trigger stop orders
1314
1658
  :param float [params.stopLossPrice]: price to trigger stop-loss orders
1315
1659
  :param bool [params.postOnly]: True or False
@@ -1321,7 +1665,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1321
1665
  self.load_markets()
1322
1666
  market = self.market(symbol)
1323
1667
  typeId = type.upper()
1324
- stopPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop_price'])
1668
+ triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop_price'])
1325
1669
  clientOrderIdprefix = self.safe_string(self.options, 'brokerId', 'nfqkvdjp')
1326
1670
  clientOrderId = clientOrderIdprefix + '-' + self.uuid()
1327
1671
  clientOrderId = clientOrderId[0:17]
@@ -1331,16 +1675,16 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1331
1675
  'instrument': market['id'],
1332
1676
  'size': self.amount_to_precision(market['symbol'], amount),
1333
1677
  }
1334
- if stopPrice is not None:
1678
+ if triggerPrice is not None:
1335
1679
  if type == 'limit':
1336
1680
  typeId = 'STOP_LIMIT'
1337
1681
  else:
1338
1682
  typeId = 'STOP'
1339
- request['stop_price'] = stopPrice
1683
+ request['stop_price'] = triggerPrice
1340
1684
  request['type'] = typeId
1341
1685
  if type == 'limit':
1342
1686
  if price is None:
1343
- raise InvalidOrder(self.id + 'createOrder() requires a price parameter for a limit order types')
1687
+ raise InvalidOrder(self.id + ' createOrder() requires a price parameter for a limit order types')
1344
1688
  request['price'] = price
1345
1689
  portfolio = None
1346
1690
  portfolio, params = self.handle_portfolio_and_params('createOrder', params)
@@ -1351,7 +1695,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1351
1695
  # market orders must be IOC
1352
1696
  if typeId == 'MARKET':
1353
1697
  if tif is not None and tif != 'IOC':
1354
- raise InvalidOrder(self.id + 'createOrder() market orders must have tif set to "IOC"')
1698
+ raise InvalidOrder(self.id + ' createOrder() market orders must have tif set to "IOC"')
1355
1699
  tif = 'IOC'
1356
1700
  else:
1357
1701
  tif = 'GTC' if (tif is None) else tif
@@ -1430,7 +1774,6 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1430
1774
  'postOnly': None,
1431
1775
  'side': self.safe_string_lower(order, 'side'),
1432
1776
  'price': self.safe_string(order, 'price'),
1433
- 'stopPrice': self.safe_string(order, 'stop_price'),
1434
1777
  'triggerPrice': self.safe_string(order, 'stop_price'),
1435
1778
  'amount': self.safe_string(order, 'size'),
1436
1779
  'filled': self.safe_string(order, 'exec_qty'),
@@ -1471,7 +1814,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1471
1814
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1472
1815
  """
1473
1816
  cancels an open order
1474
- :see: https://docs.cloud.coinbase.com/intx/reference/cancelorder
1817
+
1818
+ https://docs.cloud.coinbase.com/intx/reference/cancelorder
1819
+
1475
1820
  :param str id: order id
1476
1821
  :param str symbol: not used by coinbaseinternational cancelOrder()
1477
1822
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1536,13 +1881,15 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1536
1881
  def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: float = None, price: float = None, params={}):
1537
1882
  """
1538
1883
  edit a trade order
1539
- :see: https://docs.cloud.coinbase.com/intx/reference/modifyorder
1884
+
1885
+ https://docs.cloud.coinbase.com/intx/reference/modifyorder
1886
+
1540
1887
  :param str id: cancel order id
1541
1888
  :param str symbol: unified symbol of the market to create an order in
1542
1889
  :param str type: 'market' or 'limit'
1543
1890
  :param str side: 'buy' or 'sell'
1544
1891
  :param float amount: how much of currency you want to trade in units of base currency
1545
- :param float [price]: the price at which the order is to be fullfilled, in units of the base currency, ignored in market orders
1892
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1546
1893
  :param dict [params]: extra parameters specific to the exchange API endpoint
1547
1894
  :param str params['clientOrderId']: client order id
1548
1895
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1560,9 +1907,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1560
1907
  request['size'] = self.amount_to_precision(symbol, amount)
1561
1908
  if price is not None:
1562
1909
  request['price'] = self.price_to_precision(symbol, price)
1563
- stopPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
1564
- if stopPrice is not None:
1565
- request['stop_price'] = stopPrice
1910
+ triggerPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
1911
+ if triggerPrice is not None:
1912
+ request['stop_price'] = triggerPrice
1566
1913
  clientOrderId = self.safe_string_2(params, 'client_order_id', 'clientOrderId')
1567
1914
  if clientOrderId is None:
1568
1915
  raise BadRequest(self.id + ' editOrder() requires a clientOrderId parameter')
@@ -1573,7 +1920,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1573
1920
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1574
1921
  """
1575
1922
  fetches information on an order made by the user
1576
- :see: https://docs.cloud.coinbase.com/intx/reference/modifyorder
1923
+
1924
+ https://docs.cloud.coinbase.com/intx/reference/modifyorder
1925
+
1577
1926
  :param str id: the order id
1578
1927
  :param str symbol: unified market symbol that the order was made in
1579
1928
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1620,7 +1969,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1620
1969
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1621
1970
  """
1622
1971
  fetches information on all currently open orders
1623
- :see: https://docs.cloud.coinbase.com/intx/reference/getorders
1972
+
1973
+ https://docs.cloud.coinbase.com/intx/reference/getorders
1974
+
1624
1975
  :param str symbol: unified market symbol of the orders
1625
1976
  :param int [since]: timestamp in ms of the earliest order, default is None
1626
1977
  :param int [limit]: the maximum number of open order structures to retrieve
@@ -1696,7 +2047,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1696
2047
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1697
2048
  """
1698
2049
  fetch all trades made by the user
1699
- :see: https://docs.cloud.coinbase.com/intx/reference/getmultiportfoliofills
2050
+
2051
+ https://docs.cloud.coinbase.com/intx/reference/getmultiportfoliofills
2052
+
1700
2053
  :param str symbol: unified market symbol of the trades
1701
2054
  :param int [since]: timestamp in ms of the earliest order, default is None
1702
2055
  :param int [limit]: the maximum number of trade structures to fetch
@@ -1774,11 +2127,13 @@ class coinbaseinternational(Exchange, ImplicitAPI):
1774
2127
  trades = self.safe_list(response, 'results', [])
1775
2128
  return self.parse_trades(trades, market, since, limit)
1776
2129
 
1777
- def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2130
+ def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1778
2131
  """
1779
2132
  make a withdrawal
1780
- :see: https://docs.cloud.coinbase.com/intx/reference/withdraw
1781
- :see: https://docs.cloud.coinbase.com/intx/reference/counterpartywithdraw
2133
+
2134
+ https://docs.cloud.coinbase.com/intx/reference/withdraw
2135
+ https://docs.cloud.coinbase.com/intx/reference/counterpartywithdraw
2136
+
1782
2137
  :param str code: unified currency code
1783
2138
  :param float amount: the amount to withdraw
1784
2139
  :param str address: the address to withdraw to