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
ccxt/coinbaseexchange.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.coinbaseexchange import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Account, Any, Balances, Currencies, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -24,7 +24,7 @@ from ccxt.base.precise import Precise
24
24
 
25
25
  class coinbaseexchange(Exchange, ImplicitAPI):
26
26
 
27
- def describe(self):
27
+ def describe(self) -> Any:
28
28
  return self.deep_extend(super(coinbaseexchange, self).describe(), {
29
29
  'id': 'coinbaseexchange',
30
30
  'name': 'Coinbase Exchange',
@@ -39,27 +39,73 @@ class coinbaseexchange(Exchange, ImplicitAPI):
39
39
  'swap': False,
40
40
  'future': False,
41
41
  'option': False,
42
+ 'addMargin': False,
43
+ 'borrowCrossMargin': False,
44
+ 'borrowIsolatedMargin': False,
45
+ 'borrowMargin': False,
42
46
  'cancelAllOrders': True,
43
47
  'cancelOrder': True,
48
+ 'closeAllPositions': False,
49
+ 'closePosition': False,
44
50
  'createDepositAddress': True,
45
51
  'createOrder': True,
52
+ 'createOrderWithTakeProfitAndStopLoss': False,
53
+ 'createOrderWithTakeProfitAndStopLossWs': False,
54
+ 'createPostOnlyOrder': False,
55
+ 'createReduceOnlyOrder': False,
46
56
  'createStopLimitOrder': True,
47
57
  'createStopMarketOrder': True,
48
58
  'createStopOrder': True,
49
59
  'fetchAccounts': True,
50
60
  'fetchBalance': True,
61
+ 'fetchBorrowInterest': False,
62
+ 'fetchBorrowRate': False,
63
+ 'fetchBorrowRateHistories': False,
64
+ 'fetchBorrowRateHistory': False,
65
+ 'fetchBorrowRates': False,
66
+ 'fetchBorrowRatesPerSymbol': False,
51
67
  'fetchClosedOrders': True,
68
+ 'fetchCrossBorrowRate': False,
69
+ 'fetchCrossBorrowRates': False,
52
70
  'fetchCurrencies': True,
53
71
  'fetchDepositAddress': False, # the exchange does not have self method, only createDepositAddress, see https://github.com/ccxt/ccxt/pull/7405
54
72
  'fetchDeposits': True,
55
73
  'fetchDepositsWithdrawals': True,
74
+ 'fetchFundingHistory': False,
75
+ 'fetchFundingInterval': False,
76
+ 'fetchFundingIntervals': False,
56
77
  'fetchFundingRate': False,
78
+ 'fetchFundingRateHistory': False,
79
+ 'fetchFundingRates': False,
80
+ 'fetchGreeks': False,
81
+ 'fetchIndexOHLCV': False,
82
+ 'fetchIsolatedBorrowRate': False,
83
+ 'fetchIsolatedBorrowRates': False,
84
+ 'fetchIsolatedPositions': False,
57
85
  'fetchLedger': True,
86
+ 'fetchLeverage': False,
87
+ 'fetchLeverages': False,
88
+ 'fetchLeverageTiers': False,
89
+ 'fetchLiquidations': False,
90
+ 'fetchLongShortRatio': False,
91
+ 'fetchLongShortRatioHistory': False,
92
+ 'fetchMarginAdjustmentHistory': False,
58
93
  'fetchMarginMode': False,
94
+ 'fetchMarginModes': False,
95
+ 'fetchMarketLeverageTiers': False,
59
96
  'fetchMarkets': True,
97
+ 'fetchMarkOHLCV': False,
98
+ 'fetchMarkPrices': False,
99
+ 'fetchMyLiquidations': False,
100
+ 'fetchMySettlementHistory': False,
60
101
  'fetchMyTrades': True,
61
102
  'fetchOHLCV': True,
103
+ 'fetchOpenInterest': False,
104
+ 'fetchOpenInterestHistory': False,
105
+ 'fetchOpenInterests': False,
62
106
  'fetchOpenOrders': True,
107
+ 'fetchOption': False,
108
+ 'fetchOptionChain': False,
63
109
  'fetchOrder': True,
64
110
  'fetchOrderBook': True,
65
111
  'fetchOrders': True,
@@ -71,6 +117,8 @@ class coinbaseexchange(Exchange, ImplicitAPI):
71
117
  'fetchPositionsForSymbol': False,
72
118
  'fetchPositionsHistory': False,
73
119
  'fetchPositionsRisk': False,
120
+ 'fetchPremiumIndexOHLCV': False,
121
+ 'fetchSettlementHistory': False,
74
122
  'fetchTicker': True,
75
123
  'fetchTickers': True,
76
124
  'fetchTime': True,
@@ -78,7 +126,16 @@ class coinbaseexchange(Exchange, ImplicitAPI):
78
126
  'fetchTradingFee': False,
79
127
  'fetchTradingFees': True,
80
128
  'fetchTransactions': 'emulated',
129
+ 'fetchVolatilityHistory': False,
81
130
  'fetchWithdrawals': True,
131
+ 'reduceMargin': False,
132
+ 'repayCrossMargin': False,
133
+ 'repayIsolatedMargin': False,
134
+ 'repayMargin': False,
135
+ 'setLeverage': False,
136
+ 'setMargin': False,
137
+ 'setMarginMode': False,
138
+ 'setPositionMode': False,
82
139
  'withdraw': True,
83
140
  },
84
141
  'timeframes': {
@@ -124,7 +181,8 @@ class coinbaseexchange(Exchange, ImplicitAPI):
124
181
  'products/{id}/ticker',
125
182
  'products/{id}/trades',
126
183
  'time',
127
- 'products/spark-lines', # experimental
184
+ 'products/spark-lines', # experimental,
185
+ 'products/volume-summary',
128
186
  ],
129
187
  },
130
188
  'private': {
@@ -221,6 +279,159 @@ class coinbaseexchange(Exchange, ImplicitAPI):
221
279
  },
222
280
  },
223
281
  },
282
+ 'features': {
283
+ 'default': {
284
+ 'sandbox': True,
285
+ 'createOrder': {
286
+ 'marginMode': True,
287
+ 'triggerPrice': True,
288
+ 'triggerPriceType': None,
289
+ 'triggerDirection': False,
290
+ 'stopLossPrice': False, # todo
291
+ 'takeProfitPrice': False, # todo
292
+ 'attachedStopLossTakeProfit': None,
293
+ 'timeInForce': {
294
+ 'IOC': True,
295
+ 'FOK': True,
296
+ 'PO': True,
297
+ 'GTD': True,
298
+ },
299
+ 'hedged': False,
300
+ 'trailing': False,
301
+ 'leverage': False,
302
+ 'marketBuyByCost': False,
303
+ 'marketBuyRequiresPrice': False,
304
+ 'selfTradePrevention': False,
305
+ 'iceberg': True, # todo: implement
306
+ },
307
+ 'createOrders': None,
308
+ 'fetchMyTrades': {
309
+ 'marginMode': False,
310
+ 'limit': 100,
311
+ 'daysBack': 100000,
312
+ 'untilDays': 100000,
313
+ 'symbolRequired': True,
314
+ },
315
+ 'fetchOrder': {
316
+ 'marginMode': False,
317
+ 'trigger': False,
318
+ 'trailing': False,
319
+ 'symbolRequired': False,
320
+ },
321
+ 'fetchOpenOrders': {
322
+ 'marginMode': False,
323
+ 'limit': 100,
324
+ 'trigger': False,
325
+ 'trailing': False,
326
+ 'symbolRequired': False,
327
+ },
328
+ 'fetchOrders': {
329
+ 'marginMode': False,
330
+ 'limit': 100,
331
+ 'daysBack': 100000,
332
+ 'untilDays': 100000,
333
+ 'trigger': False,
334
+ 'trailing': False,
335
+ 'symbolRequired': False,
336
+ },
337
+ 'fetchClosedOrders': {
338
+ 'marginMode': False,
339
+ 'limit': 100,
340
+ 'daysBack': 100000,
341
+ 'daysBackCanceled': 1,
342
+ 'untilDays': 100000,
343
+ 'trigger': False,
344
+ 'trailing': False,
345
+ 'symbolRequired': False,
346
+ },
347
+ 'fetchOHLCV': {
348
+ 'limit': 300,
349
+ },
350
+ },
351
+ 'spot': {
352
+ 'extends': 'default',
353
+ },
354
+ 'swap': {
355
+ 'linear': None,
356
+ 'inverse': None,
357
+ },
358
+ 'future': {
359
+ 'linear': None,
360
+ 'inverse': None,
361
+ },
362
+ },
363
+ 'options': {
364
+ 'networks': {
365
+ 'BTC': 'bitcoin',
366
+ # LIGHTNING unsupported
367
+ 'ETH': 'ethereum',
368
+ # TRON unsupported
369
+ 'SOL': 'solana',
370
+ # BSC unsupported
371
+ 'ARBONE': 'arbitrum',
372
+ 'AVAXC': 'avacchain',
373
+ 'MATIC': 'polygon',
374
+ 'BASE': 'base',
375
+ 'SUI': 'sui',
376
+ 'OP': 'optimism',
377
+ 'NEAR': 'near',
378
+ # CRONOS unsupported
379
+ # GNO unsupported
380
+ 'APT': 'aptos',
381
+ # SCROLL unsupported
382
+ 'KAVA': 'kava',
383
+ # TAIKO unsupported
384
+ # BOB unsupported
385
+ # LINEA unsupported
386
+ 'BLAST': 'blast',
387
+ 'XLM': 'stellar',
388
+ # RSK unsupported
389
+ 'SEI': 'sei',
390
+ # TON unsupported
391
+ # MANTLE unsupported
392
+ 'ADA': 'cardano',
393
+ # HYPE unsupported
394
+ 'CORE': 'coredao',
395
+ 'ALGO': 'algorand',
396
+ # RUNE unsupported
397
+ 'OSMO': 'osmosis',
398
+ # XIN unsupported
399
+ 'CELO': 'celo',
400
+ 'HBAR': 'hedera',
401
+ # FTM unsupported
402
+ # WEMIX unsupported
403
+ 'ZKSYNC': 'zksync',
404
+ # KLAY unsupported
405
+ # HT unsupported
406
+ # FSN unsupported
407
+ # EOS unsupported, eosio?
408
+ # ACA unsupported
409
+ 'STX': 'stacks',
410
+ 'XTZ': 'tezos',
411
+ # NEO unsupported
412
+ # METIS unsupported
413
+ # TLOS unsupported
414
+ 'EGLD': 'elrond',
415
+ # ASTR unsupported
416
+ # CFX unsupported
417
+ # GLMR unsupported
418
+ # CANTO unsupported
419
+ # SCRT unsupported
420
+ 'LTC': 'litecoin',
421
+ # AURORA unsupported
422
+ # ONG unsupported
423
+ 'ATOM': 'cosmos',
424
+ # CHZ unsupported
425
+ 'FIL': 'filecoin',
426
+ 'DOT': 'polkadot',
427
+ 'DOGE': 'dogecoin',
428
+ # BRC20 unsupported
429
+ 'XRP': 'ripple',
430
+ # XMR unsupported
431
+ 'DASH': 'dash',
432
+ # akash, aleo, axelar, bitcoincash, berachain, deso, ethereumclassic, unichain, flow, flare, dfinity, story,kusama, mina, ronin, oasis, bittensor, celestia, noble, vara, vechain, zcash, horizen, zetachain
433
+ },
434
+ },
224
435
  'exceptions': {
225
436
  'exact': {
226
437
  'Insufficient funds': InsufficientFunds,
@@ -248,36 +459,53 @@ class coinbaseexchange(Exchange, ImplicitAPI):
248
459
  def fetch_currencies(self, params={}) -> Currencies:
249
460
  """
250
461
  fetches all available currencies on an exchange
251
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getcurrencies
462
+
463
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getcurrencies
464
+
252
465
  :param dict [params]: extra parameters specific to the exchange API endpoint
253
466
  :returns dict: an associative dictionary of currencies
254
467
  """
255
468
  response = self.publicGetCurrencies(params)
256
469
  #
257
- # [
258
- # {
259
- # "id": "XTZ",
260
- # "name": "Tezos",
261
- # "min_size": "0.000001",
262
- # "status": "online",
263
- # "message": '',
264
- # "max_precision": "0.000001",
265
- # "convertible_to": [],
266
- # "details": {
267
- # "type": "crypto",
268
- # "symbol": "Τ",
269
- # "network_confirmations": 60,
270
- # "sort_order": 53,
271
- # "crypto_address_link": "https://tzstats.com/{{address}}",
272
- # "crypto_transaction_link": "https://tzstats.com/{{txId}}",
273
- # "push_payment_methods": ["crypto"],
274
- # "group_types": [],
275
- # "display_name": '',
276
- # "processing_time_seconds": 0,
277
- # "min_withdrawal_amount": 1
278
- # }
279
- # }
280
- # ]
470
+ # {
471
+ # "id": "USDT",
472
+ # "name": "Tether",
473
+ # "min_size": "0.000001",
474
+ # "status": "online",
475
+ # "message": "",
476
+ # "max_precision": "0.000001",
477
+ # "convertible_to": [],
478
+ # "details": {
479
+ # "type": "crypto",
480
+ # "symbol": null,
481
+ # "network_confirmations": 14,
482
+ # "sort_order": 0,
483
+ # "crypto_address_link": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7?a={{address}}",
484
+ # "crypto_transaction_link": "https://etherscan.io/tx/0x{{txId}}",
485
+ # "push_payment_methods": [],
486
+ # "group_types": [],
487
+ # "display_name": null,
488
+ # "processing_time_seconds": null,
489
+ # "min_withdrawal_amount": 0.000001,
490
+ # "max_withdrawal_amount": 20000000
491
+ # },
492
+ # "default_network": "ethereum",
493
+ # "supported_networks": [
494
+ # {
495
+ # "id": "ethereum",
496
+ # "name": "Ethereum",
497
+ # "status": "online",
498
+ # "contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
499
+ # "crypto_address_link": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7?a={{address}}",
500
+ # "crypto_transaction_link": "https://etherscan.io/tx/0x{{txId}}",
501
+ # "min_withdrawal_amount": 0.000001,
502
+ # "max_withdrawal_amount": 20000000,
503
+ # "network_confirmations": 14,
504
+ # "processing_time_seconds": null
505
+ # }
506
+ # ],
507
+ # "display_name": "USDT"
508
+ # }
281
509
  #
282
510
  result: dict = {}
283
511
  for i in range(0, len(response)):
@@ -285,16 +513,38 @@ class coinbaseexchange(Exchange, ImplicitAPI):
285
513
  id = self.safe_string(currency, 'id')
286
514
  name = self.safe_string(currency, 'name')
287
515
  code = self.safe_currency_code(id)
288
- details = self.safe_value(currency, 'details', {})
289
- status = self.safe_string(currency, 'status')
290
- active = (status == 'online')
291
- result[code] = {
516
+ details = self.safe_dict(currency, 'details', {})
517
+ networks: dict = {}
518
+ supportedNetworks = self.safe_list(currency, 'supported_networks', [])
519
+ for j in range(0, len(supportedNetworks)):
520
+ network = supportedNetworks[j]
521
+ networkId = self.safe_string(network, 'id')
522
+ networkCode = self.network_id_to_code(networkId)
523
+ networks[networkCode] = {
524
+ 'id': networkId,
525
+ 'name': self.safe_string(network, 'name'),
526
+ 'network': networkCode,
527
+ 'active': self.safe_string(network, 'status') == 'online',
528
+ 'withdraw': None,
529
+ 'deposit': None,
530
+ 'fee': None,
531
+ 'precision': None,
532
+ 'limits': {
533
+ 'withdraw': {
534
+ 'min': self.safe_number(network, 'min_withdrawal_amount'),
535
+ 'max': self.safe_number(network, 'max_withdrawal_amount'),
536
+ },
537
+ },
538
+ 'contract': self.safe_string(network, 'contract_address'),
539
+ 'info': network,
540
+ }
541
+ result[code] = self.safe_currency_structure({
292
542
  'id': id,
293
543
  'code': code,
294
544
  'info': currency,
295
545
  'type': self.safe_string(details, 'type'),
296
546
  'name': name,
297
- 'active': active,
547
+ 'active': self.safe_string(currency, 'status') == 'online',
298
548
  'deposit': None,
299
549
  'withdraw': None,
300
550
  'fee': None,
@@ -306,17 +556,19 @@ class coinbaseexchange(Exchange, ImplicitAPI):
306
556
  },
307
557
  'withdraw': {
308
558
  'min': self.safe_number(details, 'min_withdrawal_amount'),
309
- 'max': None,
559
+ 'max': self.safe_number(details, 'max_withdrawal_amount'),
310
560
  },
311
561
  },
312
- 'networks': {},
313
- }
562
+ 'networks': networks,
563
+ })
314
564
  return result
315
565
 
316
566
  def fetch_markets(self, params={}) -> List[Market]:
317
567
  """
318
568
  retrieves data on all markets for coinbaseexchange
319
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducts
569
+
570
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducts
571
+
320
572
  :param dict [params]: extra parameters specific to the exchange API endpoint
321
573
  :returns dict[]: an array of objects representing market data
322
574
  """
@@ -434,7 +686,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
434
686
  def fetch_accounts(self, params={}) -> List[Account]:
435
687
  """
436
688
  fetch all the accounts associated with a profile
437
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
689
+
690
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
691
+
438
692
  :param dict [params]: extra parameters specific to the exchange API endpoint
439
693
  :returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
440
694
  """
@@ -497,7 +751,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
497
751
  def fetch_balance(self, params={}) -> Balances:
498
752
  """
499
753
  query for balance and get the amount of funds available for trading or funds locked in orders
500
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
754
+
755
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
756
+
501
757
  :param dict [params]: extra parameters specific to the exchange API endpoint
502
758
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
503
759
  """
@@ -507,7 +763,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
507
763
 
508
764
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
509
765
  """
510
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductbook
766
+
767
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductbook
768
+
511
769
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
512
770
  :param str symbol: unified symbol of the market to fetch the order book for
513
771
  :param int [limit]: the maximum amount of order book entries to return
@@ -624,7 +882,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
624
882
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
625
883
  """
626
884
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
627
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproduct
885
+
886
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproduct
887
+
628
888
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
629
889
  :param dict [params]: extra parameters specific to the exchange API endpoint
630
890
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -667,7 +927,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
667
927
 
668
928
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
669
929
  """
670
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductticker
930
+
931
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductticker
932
+
671
933
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
672
934
  :param str symbol: unified symbol of the market to fetch the ticker for
673
935
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -776,7 +1038,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
776
1038
 
777
1039
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
778
1040
  """
779
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfills
1041
+
1042
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfills
1043
+
780
1044
  fetch all trades made by the user
781
1045
  :param str symbol: unified market symbol
782
1046
  :param int [since]: the earliest time in ms to fetch trades for
@@ -810,7 +1074,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
810
1074
 
811
1075
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
812
1076
  """
813
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducttrades
1077
+
1078
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducttrades
1079
+
814
1080
  get the list of most recent trades for a particular symbol
815
1081
  :param str symbol: unified symbol of the market to fetch trades for
816
1082
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -842,7 +1108,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
842
1108
  def fetch_trading_fees(self, params={}) -> TradingFees:
843
1109
  """
844
1110
  fetch the trading fees for multiple markets
845
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfees
1111
+
1112
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfees
1113
+
846
1114
  :param dict [params]: extra parameters specific to the exchange API endpoint
847
1115
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
848
1116
  """
@@ -892,7 +1160,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
892
1160
 
893
1161
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
894
1162
  """
895
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductcandles
1163
+
1164
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductcandles
1165
+
896
1166
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
897
1167
  :param str symbol: unified symbol of the market to fetch OHLCV data for
898
1168
  :param str timeframe: the length of time each candle represents
@@ -944,7 +1214,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
944
1214
  #
945
1215
  return self.parse_ohlcvs(response, market, timeframe, since, limit)
946
1216
 
947
- def fetch_time(self, params={}):
1217
+ def fetch_time(self, params={}) -> Int:
948
1218
  """
949
1219
  fetches the current integer timestamp in milliseconds from the exchange server
950
1220
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1016,7 +1286,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1016
1286
  side = self.safe_string(order, 'side')
1017
1287
  timeInForce = self.safe_string(order, 'time_in_force')
1018
1288
  postOnly = self.safe_value(order, 'post_only')
1019
- stopPrice = self.safe_number(order, 'stop_price')
1289
+ triggerPrice = self.safe_number(order, 'stop_price')
1020
1290
  clientOrderId = self.safe_string(order, 'client_oid')
1021
1291
  return self.safe_order({
1022
1292
  'id': id,
@@ -1032,8 +1302,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1032
1302
  'postOnly': postOnly,
1033
1303
  'side': side,
1034
1304
  'price': price,
1035
- 'stopPrice': stopPrice,
1036
- 'triggerPrice': stopPrice,
1305
+ 'triggerPrice': triggerPrice,
1037
1306
  'cost': cost,
1038
1307
  'amount': amount,
1039
1308
  'filled': filled,
@@ -1045,8 +1314,11 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1045
1314
 
1046
1315
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1047
1316
  """
1048
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorder
1317
+
1318
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorder
1319
+
1049
1320
  fetches information on an order made by the user
1321
+ :param str id: the order id
1050
1322
  :param str symbol: not used by coinbaseexchange fetchOrder
1051
1323
  :param dict [params]: extra parameters specific to the exchange API endpoint
1052
1324
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1087,7 +1359,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1087
1359
 
1088
1360
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1089
1361
  """
1090
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1362
+
1363
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1364
+
1091
1365
  fetches information on multiple orders made by the user
1092
1366
  :param str symbol: unified market symbol of the market orders were made in
1093
1367
  :param int [since]: the earliest time in ms to fetch orders for
@@ -1103,7 +1377,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1103
1377
 
1104
1378
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1105
1379
  """
1106
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1380
+
1381
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1382
+
1107
1383
  fetch all unfilled currently open orders
1108
1384
  :param str symbol: unified market symbol
1109
1385
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -1136,7 +1412,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1136
1412
 
1137
1413
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1138
1414
  """
1139
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1415
+
1416
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1417
+
1140
1418
  fetches information on multiple closed orders made by the user
1141
1419
  :param str symbol: unified market symbol of the market orders were made in
1142
1420
  :param int [since]: the earliest time in ms to fetch orders for
@@ -1152,13 +1430,15 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1152
1430
 
1153
1431
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1154
1432
  """
1155
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postorders
1433
+
1434
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postorders
1435
+
1156
1436
  create a trade order
1157
1437
  :param str symbol: unified symbol of the market to create an order in
1158
1438
  :param str type: 'market' or 'limit'
1159
1439
  :param str side: 'buy' or 'sell'
1160
1440
  :param float amount: how much of currency you want to trade in units of base currency
1161
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1441
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1162
1442
  :param dict [params]: extra parameters specific to the exchange API endpoint
1163
1443
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1164
1444
  """
@@ -1187,9 +1467,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1187
1467
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_oid')
1188
1468
  if clientOrderId is not None:
1189
1469
  request['client_oid'] = clientOrderId
1190
- stopPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
1191
- if stopPrice is not None:
1192
- request['stop_price'] = self.price_to_precision(symbol, stopPrice)
1470
+ triggerPrice = self.safe_number_n(params, ['stopPrice', 'stop_price', 'triggerPrice'])
1471
+ if triggerPrice is not None:
1472
+ request['stop_price'] = self.price_to_precision(symbol, triggerPrice)
1193
1473
  timeInForce = self.safe_string_2(params, 'timeInForce', 'time_in_force')
1194
1474
  if timeInForce is not None:
1195
1475
  request['time_in_force'] = timeInForce
@@ -1235,7 +1515,9 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1235
1515
 
1236
1516
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1237
1517
  """
1238
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorder
1518
+
1519
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorder
1520
+
1239
1521
  cancels an open order
1240
1522
  :param str id: order id
1241
1523
  :param str symbol: unified symbol of the market the order was made in
@@ -1259,11 +1541,14 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1259
1541
  if symbol is not None:
1260
1542
  market = self.market(symbol)
1261
1543
  request['product_id'] = market['symbol'] # the request will be more performant if you include it
1262
- return getattr(self, method)(self.extend(request, params))
1544
+ response = getattr(self, method)(self.extend(request, params))
1545
+ return self.safe_order({'info': response})
1263
1546
 
1264
1547
  def cancel_all_orders(self, symbol: Str = None, params={}):
1265
1548
  """
1266
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorders
1549
+
1550
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorders
1551
+
1267
1552
  cancel all open orders
1268
1553
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1269
1554
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1275,16 +1560,19 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1275
1560
  if symbol is not None:
1276
1561
  market = self.market(symbol)
1277
1562
  request['product_id'] = market['symbol'] # the request will be more performant if you include it
1278
- return self.privateDeleteOrders(self.extend(request, params))
1563
+ response = self.privateDeleteOrders(self.extend(request, params))
1564
+ return [self.safe_order({'info': response})]
1279
1565
 
1280
1566
  def fetch_payment_methods(self, params={}):
1281
1567
  return self.privateGetPaymentMethods(params)
1282
1568
 
1283
- def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1569
+ def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1284
1570
  """
1285
1571
  make a withdrawal
1286
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawpaymentmethod
1287
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawcoinbaseaccount
1572
+
1573
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawpaymentmethod
1574
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawcoinbaseaccount
1575
+
1288
1576
  :param str code: unified currency code
1289
1577
  :param float amount: the amount to withdraw
1290
1578
  :param str address: the address to withdraw to
@@ -1325,7 +1613,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1325
1613
  }
1326
1614
  return self.safe_string(types, type, type)
1327
1615
 
1328
- def parse_ledger_entry(self, item: dict, currency: Currency = None):
1616
+ def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
1329
1617
  # {
1330
1618
  # "id": "12087495079",
1331
1619
  # "amount": "-0.0100000000000000",
@@ -1377,34 +1665,36 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1377
1665
  else:
1378
1666
  referenceId = self.safe_string(details, 'order_id')
1379
1667
  status = 'ok'
1380
- return {
1668
+ return self.safe_ledger_entry({
1669
+ 'info': item,
1381
1670
  'id': id,
1382
- 'currency': code,
1671
+ 'timestamp': timestamp,
1672
+ 'datetime': self.iso8601(timestamp),
1673
+ 'direction': direction,
1383
1674
  'account': account,
1384
1675
  'referenceAccount': referenceAccount,
1385
1676
  'referenceId': referenceId,
1386
- 'status': status,
1677
+ 'type': type,
1678
+ 'currency': code,
1387
1679
  'amount': amount,
1388
1680
  'before': before,
1389
1681
  'after': after,
1682
+ 'status': status,
1390
1683
  'fee': None,
1391
- 'direction': direction,
1392
- 'timestamp': timestamp,
1393
- 'datetime': self.iso8601(timestamp),
1394
- 'type': type,
1395
- 'info': item,
1396
- }
1684
+ }, currency)
1397
1685
 
1398
- def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1686
+ def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
1399
1687
  """
1400
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1401
- fetch the history of changes, actions done by the user or operations that altered balance of the user
1688
+ fetch the history of changes, actions done by the user or operations that altered the balance of the user
1689
+
1690
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1691
+
1402
1692
  :param str code: unified currency code, default is None
1403
1693
  :param int [since]: timestamp in ms of the earliest ledger entry, default is None
1404
- :param int [limit]: max number of ledger entrys to return, default is None
1694
+ :param int [limit]: max number of ledger entries to return, default is None
1405
1695
  :param dict [params]: extra parameters specific to the exchange API endpoint
1406
1696
  :param int [params.until]: the latest time in ms to fetch trades for
1407
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
1697
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
1408
1698
  """
1409
1699
  # https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1410
1700
  if code is None:
@@ -1441,8 +1731,10 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1441
1731
  def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1442
1732
  """
1443
1733
  fetch history of deposits and withdrawals
1444
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1445
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1734
+
1735
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1736
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1737
+
1446
1738
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
1447
1739
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
1448
1740
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -1538,8 +1830,10 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1538
1830
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1539
1831
  """
1540
1832
  fetch all deposits made to an account
1541
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1542
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1833
+
1834
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1835
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1836
+
1543
1837
  :param str code: unified currency code
1544
1838
  :param int [since]: the earliest time in ms to fetch deposits for
1545
1839
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1551,8 +1845,10 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1551
1845
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1552
1846
  """
1553
1847
  fetch all withdrawals made from an account
1554
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1555
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1848
+
1849
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1850
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1851
+
1556
1852
  :param str code: unified currency code
1557
1853
  :param int [since]: the earliest time in ms to fetch withdrawals for
1558
1854
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1651,10 +1947,12 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1651
1947
  'fee': fee,
1652
1948
  }
1653
1949
 
1654
- def create_deposit_address(self, code: str, params={}):
1950
+ def create_deposit_address(self, code: str, params={}) -> DepositAddress:
1655
1951
  """
1656
1952
  create a currency deposit address
1657
- :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postcoinbaseaccountaddresses
1953
+
1954
+ https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postcoinbaseaccountaddresses
1955
+
1658
1956
  :param str code: unified currency code of the currency for the deposit address
1659
1957
  :param dict [params]: extra parameters specific to the exchange API endpoint
1660
1958
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1680,6 +1978,7 @@ class coinbaseexchange(Exchange, ImplicitAPI):
1680
1978
  return {
1681
1979
  'currency': code,
1682
1980
  'address': self.check_address(address),
1981
+ 'network': None,
1683
1982
  'tag': tag,
1684
1983
  'info': response,
1685
1984
  }