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
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.indodax import ImplicitAPI
8
8
  import hashlib
9
9
  import math
10
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -17,18 +17,19 @@ from ccxt.base.errors import InsufficientFunds
17
17
  from ccxt.base.errors import InvalidOrder
18
18
  from ccxt.base.errors import OrderNotFound
19
19
  from ccxt.base.decimal_to_precision import TICK_SIZE
20
+ from ccxt.base.precise import Precise
20
21
 
21
22
 
22
23
  class indodax(Exchange, ImplicitAPI):
23
24
 
24
- def describe(self):
25
+ def describe(self) -> Any:
25
26
  return self.deep_extend(super(indodax, self).describe(), {
26
27
  'id': 'indodax',
27
28
  'name': 'INDODAX',
28
29
  'countries': ['ID'], # Indonesia
29
30
  # 10 requests per second for making trades => 1000ms / 10 = 100ms
30
31
  # 180 requests per minute(public endpoints) = 2 requests per second => cost = (1000ms / rateLimit) / 2 = 5
31
- 'rateLimit': 100,
32
+ 'rateLimit': 50,
32
33
  'has': {
33
34
  'CORS': None,
34
35
  'spot': True,
@@ -37,6 +38,9 @@ class indodax(Exchange, ImplicitAPI):
37
38
  'future': False,
38
39
  'option': False,
39
40
  'addMargin': False,
41
+ 'borrowCrossMargin': False,
42
+ 'borrowIsolatedMargin': False,
43
+ 'borrowMargin': False,
40
44
  'cancelAllOrders': False,
41
45
  'cancelOrder': True,
42
46
  'cancelOrders': False,
@@ -48,9 +52,14 @@ class indodax(Exchange, ImplicitAPI):
48
52
  'createStopLimitOrder': False,
49
53
  'createStopMarketOrder': False,
50
54
  'createStopOrder': False,
55
+ 'fetchAllGreeks': False,
51
56
  'fetchBalance': True,
57
+ 'fetchBorrowInterest': False,
58
+ 'fetchBorrowRate': False,
52
59
  'fetchBorrowRateHistories': False,
53
60
  'fetchBorrowRateHistory': False,
61
+ 'fetchBorrowRates': False,
62
+ 'fetchBorrowRatesPerSymbol': False,
54
63
  'fetchClosedOrders': True,
55
64
  'fetchCrossBorrowRate': False,
56
65
  'fetchCrossBorrowRates': False,
@@ -61,30 +70,52 @@ class indodax(Exchange, ImplicitAPI):
61
70
  'fetchDeposits': False,
62
71
  'fetchDepositsWithdrawals': True,
63
72
  'fetchFundingHistory': False,
73
+ 'fetchFundingInterval': False,
74
+ 'fetchFundingIntervals': False,
64
75
  'fetchFundingRate': False,
65
76
  'fetchFundingRateHistory': False,
66
77
  'fetchFundingRates': False,
78
+ 'fetchGreeks': False,
67
79
  'fetchIndexOHLCV': False,
68
80
  'fetchIsolatedBorrowRate': False,
69
81
  'fetchIsolatedBorrowRates': False,
82
+ 'fetchIsolatedPositions': False,
70
83
  'fetchLeverage': False,
84
+ 'fetchLeverages': False,
71
85
  'fetchLeverageTiers': False,
86
+ 'fetchLiquidations': False,
87
+ 'fetchLongShortRatio': False,
88
+ 'fetchLongShortRatioHistory': False,
89
+ 'fetchMarginAdjustmentHistory': False,
72
90
  'fetchMarginMode': False,
91
+ 'fetchMarginModes': False,
92
+ 'fetchMarketLeverageTiers': False,
73
93
  'fetchMarkets': True,
74
94
  'fetchMarkOHLCV': False,
95
+ 'fetchMarkPrice': False,
96
+ 'fetchMarkPrices': False,
97
+ 'fetchMyLiquidations': False,
98
+ 'fetchMySettlementHistory': False,
99
+ 'fetchOpenInterest': False,
75
100
  'fetchOpenInterestHistory': False,
101
+ 'fetchOpenInterests': False,
76
102
  'fetchOpenOrders': True,
103
+ 'fetchOption': False,
104
+ 'fetchOptionChain': False,
77
105
  'fetchOrder': True,
78
106
  'fetchOrderBook': True,
79
107
  'fetchOrders': False,
80
108
  'fetchPosition': False,
109
+ 'fetchPositionForSymbolWs': False,
81
110
  'fetchPositionHistory': False,
82
111
  'fetchPositionMode': False,
83
112
  'fetchPositions': False,
84
113
  'fetchPositionsForSymbol': False,
114
+ 'fetchPositionsForSymbolWs': False,
85
115
  'fetchPositionsHistory': False,
86
116
  'fetchPositionsRisk': False,
87
117
  'fetchPremiumIndexOHLCV': False,
118
+ 'fetchSettlementHistory': False,
88
119
  'fetchTicker': True,
89
120
  'fetchTime': True,
90
121
  'fetchTrades': True,
@@ -95,9 +126,13 @@ class indodax(Exchange, ImplicitAPI):
95
126
  'fetchTransactions': 'emulated',
96
127
  'fetchTransfer': False,
97
128
  'fetchTransfers': False,
129
+ 'fetchUnderlyingAssets': False,
130
+ 'fetchVolatilityHistory': False,
98
131
  'fetchWithdrawal': False,
99
132
  'fetchWithdrawals': False,
100
133
  'reduceMargin': False,
134
+ 'repayCrossMargin': False,
135
+ 'repayIsolatedMargin': False,
101
136
  'setLeverage': False,
102
137
  'setMargin': False,
103
138
  'setMarginMode': False,
@@ -203,6 +238,70 @@ class indodax(Exchange, ImplicitAPI):
203
238
  '1w': '1W',
204
239
  },
205
240
  },
241
+ 'features': {
242
+ 'spot': {
243
+ 'sandbox': False,
244
+ 'createOrder': {
245
+ 'marginMode': False,
246
+ 'triggerPrice': False,
247
+ 'triggerPriceType': None,
248
+ 'triggerDirection': False,
249
+ 'stopLossPrice': False,
250
+ 'takeProfitPrice': False,
251
+ 'attachedStopLossTakeProfit': None,
252
+ 'timeInForce': {
253
+ 'IOC': True, # todo implementation
254
+ 'FOK': False,
255
+ 'PO': False,
256
+ 'GTD': False,
257
+ },
258
+ 'hedged': False,
259
+ 'selfTradePrevention': False,
260
+ 'trailing': False,
261
+ 'leverage': False,
262
+ 'marketBuyByCost': False,
263
+ 'marketBuyRequiresPrice': False,
264
+ 'iceberg': False,
265
+ },
266
+ 'createOrders': None,
267
+ 'fetchMyTrades': None, # todo implement
268
+ 'fetchOrder': {
269
+ 'marginMode': False,
270
+ 'trigger': False,
271
+ 'trailing': False,
272
+ 'symbolRequired': True,
273
+ },
274
+ 'fetchOpenOrders': {
275
+ 'marginMode': False,
276
+ 'limit': None,
277
+ 'trigger': False,
278
+ 'trailing': False,
279
+ 'symbolRequired': False,
280
+ },
281
+ 'fetchOrders': None,
282
+ 'fetchClosedOrders': {
283
+ 'marginMode': False,
284
+ 'limit': 1000,
285
+ 'daysBack': 100000, # todo
286
+ 'daysBackCanceled': 1,
287
+ 'untilDays': None,
288
+ 'trigger': False,
289
+ 'trailing': False,
290
+ 'symbolRequired': True,
291
+ },
292
+ 'fetchOHLCV': {
293
+ 'limit': 2000, # todo: not in request
294
+ },
295
+ },
296
+ 'swap': {
297
+ 'linear': None,
298
+ 'inverse': None,
299
+ },
300
+ 'future': {
301
+ 'linear': None,
302
+ 'inverse': None,
303
+ },
304
+ },
206
305
  'commonCurrencies': {
207
306
  'STR': 'XLM',
208
307
  'BCHABC': 'BCH',
@@ -216,10 +315,12 @@ class indodax(Exchange, ImplicitAPI):
216
315
  def nonce(self):
217
316
  return self.milliseconds() - self.options['timeDifference']
218
317
 
219
- async def fetch_time(self, params={}):
318
+ async def fetch_time(self, params={}) -> Int:
220
319
  """
221
320
  fetches the current integer timestamp in milliseconds from the exchange server
222
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#server-time
321
+
322
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#server-time
323
+
223
324
  :param dict [params]: extra parameters specific to the exchange API endpoint
224
325
  :returns int: the current integer timestamp in milliseconds from the exchange server
225
326
  """
@@ -235,7 +336,9 @@ class indodax(Exchange, ImplicitAPI):
235
336
  async def fetch_markets(self, params={}) -> List[Market]:
236
337
  """
237
338
  retrieves data on all markets for indodax
238
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#pairs
339
+
340
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#pairs
341
+
239
342
  :param dict [params]: extra parameters specific to the exchange API endpoint
240
343
  :returns dict[]: an array of objects representing market data
241
344
  """
@@ -352,7 +455,9 @@ class indodax(Exchange, ImplicitAPI):
352
455
  async def fetch_balance(self, params={}) -> Balances:
353
456
  """
354
457
  query for balance and get the amount of funds available for trading or funds locked in orders
355
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#get-info-endpoint
458
+
459
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#get-info-endpoint
460
+
356
461
  :param dict [params]: extra parameters specific to the exchange API endpoint
357
462
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
358
463
  """
@@ -393,7 +498,9 @@ class indodax(Exchange, ImplicitAPI):
393
498
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
394
499
  """
395
500
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
396
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#depth
501
+
502
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#depth
503
+
397
504
  :param str symbol: unified symbol of the market to fetch the order book for
398
505
  :param int [limit]: the maximum amount of order book entries to return
399
506
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -451,7 +558,9 @@ class indodax(Exchange, ImplicitAPI):
451
558
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
452
559
  """
453
560
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
454
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#ticker
561
+
562
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#ticker
563
+
455
564
  :param str symbol: unified symbol of the market to fetch the ticker for
456
565
  :param dict [params]: extra parameters specific to the exchange API endpoint
457
566
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -482,7 +591,9 @@ class indodax(Exchange, ImplicitAPI):
482
591
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
483
592
  """
484
593
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
485
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#ticker-all
594
+
595
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#ticker-all
596
+
486
597
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
487
598
  :param dict [params]: extra parameters specific to the exchange API endpoint
488
599
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -529,7 +640,9 @@ class indodax(Exchange, ImplicitAPI):
529
640
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
530
641
  """
531
642
  get the list of most recent trades for a particular symbol
532
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#trades
643
+
644
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Public-RestAPI.md#trades
645
+
533
646
  :param str symbol: unified symbol of the market to fetch trades for
534
647
  :param int [since]: timestamp in ms of the earliest trade to fetch
535
648
  :param int [limit]: the maximum amount of trades to fetch
@@ -698,7 +811,6 @@ class indodax(Exchange, ImplicitAPI):
698
811
  'postOnly': None,
699
812
  'side': side,
700
813
  'price': price,
701
- 'stopPrice': None,
702
814
  'triggerPrice': None,
703
815
  'cost': cost,
704
816
  'average': None,
@@ -713,7 +825,10 @@ class indodax(Exchange, ImplicitAPI):
713
825
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
714
826
  """
715
827
  fetches information on an order made by the user
716
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#get-order-endpoints
828
+
829
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#get-order-endpoints
830
+
831
+ :param str id: order id
717
832
  :param str symbol: unified symbol of the market the order was made in
718
833
  :param dict [params]: extra parameters specific to the exchange API endpoint
719
834
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -735,7 +850,9 @@ class indodax(Exchange, ImplicitAPI):
735
850
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
736
851
  """
737
852
  fetch all unfilled currently open orders
738
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#open-orders-endpoints
853
+
854
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#open-orders-endpoints
855
+
739
856
  :param str symbol: unified market symbol
740
857
  :param int [since]: the earliest time in ms to fetch open orders for
741
858
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -770,7 +887,9 @@ class indodax(Exchange, ImplicitAPI):
770
887
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
771
888
  """
772
889
  fetches information on multiple closed orders made by the user
773
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#order-history
890
+
891
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#order-history
892
+
774
893
  :param str symbol: unified market symbol of the market orders were made in
775
894
  :param int [since]: the earliest time in ms to fetch orders for
776
895
  :param int [limit]: the maximum number of order structures to retrieve
@@ -792,17 +911,17 @@ class indodax(Exchange, ImplicitAPI):
792
911
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
793
912
  """
794
913
  create a trade order
795
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#trade-endpoints
914
+
915
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#trade-endpoints
916
+
796
917
  :param str symbol: unified symbol of the market to create an order in
797
918
  :param str type: 'market' or 'limit'
798
919
  :param str side: 'buy' or 'sell'
799
920
  :param float amount: how much of currency you want to trade in units of base currency
800
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
921
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
801
922
  :param dict [params]: extra parameters specific to the exchange API endpoint
802
923
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
803
924
  """
804
- if type != 'limit':
805
- raise ExchangeError(self.id + ' createOrder() allows limit orders only')
806
925
  await self.load_markets()
807
926
  market = self.market(symbol)
808
927
  request: dict = {
@@ -810,12 +929,36 @@ class indodax(Exchange, ImplicitAPI):
810
929
  'type': side,
811
930
  'price': price,
812
931
  }
813
- currency = market['baseId']
814
- if side == 'buy':
815
- request[market['quoteId']] = amount * price
816
- else:
817
- request[market['baseId']] = amount
818
- request[currency] = amount
932
+ priceIsRequired = False
933
+ quantityIsRequired = False
934
+ if type == 'market':
935
+ if side == 'buy':
936
+ quoteAmount = None
937
+ cost = self.safe_number(params, 'cost')
938
+ params = self.omit(params, 'cost')
939
+ if cost is not None:
940
+ quoteAmount = self.cost_to_precision(symbol, cost)
941
+ else:
942
+ if price is None:
943
+ raise InvalidOrder(self.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price).')
944
+ amountString = self.number_to_string(amount)
945
+ priceString = self.number_to_string(price)
946
+ costRequest = Precise.string_mul(amountString, priceString)
947
+ quoteAmount = self.cost_to_precision(symbol, costRequest)
948
+ request[market['quoteId']] = quoteAmount
949
+ else:
950
+ quantityIsRequired = True
951
+ elif type == 'limit':
952
+ priceIsRequired = True
953
+ quantityIsRequired = True
954
+ if side == 'buy':
955
+ request[market['quoteId']] = self.parse_to_numeric(Precise.string_mul(self.number_to_string(amount), self.number_to_string(price)))
956
+ if priceIsRequired:
957
+ if price is None:
958
+ raise InvalidOrder(self.id + ' createOrder() requires a price argument for a ' + type + ' order')
959
+ request['price'] = price
960
+ if quantityIsRequired:
961
+ request[market['baseId']] = self.amount_to_precision(symbol, amount)
819
962
  result = await self.privatePostTrade(self.extend(request, params))
820
963
  data = self.safe_value(result, 'return', {})
821
964
  id = self.safe_string(data, 'order_id')
@@ -827,7 +970,9 @@ class indodax(Exchange, ImplicitAPI):
827
970
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
828
971
  """
829
972
  cancels an open order
830
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#cancel-order-endpoints
973
+
974
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#cancel-order-endpoints
975
+
831
976
  :param str id: order id
832
977
  :param str symbol: unified symbol of the market the order was made in
833
978
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -871,7 +1016,9 @@ class indodax(Exchange, ImplicitAPI):
871
1016
  async def fetch_transaction_fee(self, code: str, params={}):
872
1017
  """
873
1018
  fetch the fee for a transaction
874
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#withdraw-fee-endpoints
1019
+
1020
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#withdraw-fee-endpoints
1021
+
875
1022
  :param str code: unified currency code
876
1023
  :param dict [params]: extra parameters specific to the exchange API endpoint
877
1024
  :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -903,7 +1050,9 @@ class indodax(Exchange, ImplicitAPI):
903
1050
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
904
1051
  """
905
1052
  fetch history of deposits and withdrawals
906
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#transaction-history-endpoints
1053
+
1054
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#transaction-history-endpoints
1055
+
907
1056
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
908
1057
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
909
1058
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -995,10 +1144,12 @@ class indodax(Exchange, ImplicitAPI):
995
1144
  transactions = self.array_concat(withdraws, deposits)
996
1145
  return self.parse_transactions(transactions, currency, since, limit)
997
1146
 
998
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1147
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
999
1148
  """
1000
1149
  make a withdrawal
1001
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#withdraw-coin-endpoints
1150
+
1151
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#withdraw-coin-endpoints
1152
+
1002
1153
  :param str code: unified currency code
1003
1154
  :param float amount: the amount to withdraw
1004
1155
  :param str address: the address to withdraw to
@@ -1125,10 +1276,12 @@ class indodax(Exchange, ImplicitAPI):
1125
1276
  }
1126
1277
  return self.safe_string(statuses, status, status)
1127
1278
 
1128
- async def fetch_deposit_addresses(self, codes: Strings = None, params={}):
1279
+ async def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
1129
1280
  """
1130
1281
  fetch deposit addresses for multiple currencies and chain types
1131
- :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#general-information-on-endpoints
1282
+
1283
+ https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#general-information-on-endpoints
1284
+
1132
1285
  :param str[] [codes]: list of unified currency codes, default is None
1133
1286
  :param dict [params]: extra parameters specific to the exchange API endpoint
1134
1287
  :returns dict: a list of `address structures <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1196,8 +1349,8 @@ class indodax(Exchange, ImplicitAPI):
1196
1349
  result[code] = {
1197
1350
  'info': {},
1198
1351
  'currency': code,
1199
- 'address': address,
1200
1352
  'network': network,
1353
+ 'address': address,
1201
1354
  'tag': None,
1202
1355
  }
1203
1356
  return result
@@ -1230,11 +1383,15 @@ class indodax(Exchange, ImplicitAPI):
1230
1383
  # {success: 0, error: "invalid order."}
1231
1384
  # or
1232
1385
  # [{data, ...}, {...}, ...]
1386
+ # {"success":"1","status":"approved","withdraw_currency":"strm","withdraw_address":"0x2b9A8cd5535D99b419aEfFBF1ae8D90a7eBdb24E","withdraw_amount":"2165.05767839","fee":"21.11000000","amount_after_fee":"2143.94767839","submit_time":"1730759489","withdraw_id":"strm-3423","txid":""}
1233
1387
  if isinstance(response, list):
1234
1388
  return None # public endpoints may return []-arrays
1235
1389
  error = self.safe_value(response, 'error', '')
1236
1390
  if not ('success' in response) and error == '':
1237
1391
  return None # no 'success' property on public responses
1392
+ status = self.safe_string(response, 'success')
1393
+ if status == 'approved':
1394
+ return None
1238
1395
  if self.safe_integer(response, 'success', 0) == 1:
1239
1396
  # {success: 1, return: {orders: []}}
1240
1397
  if not ('return' in response):
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.jibitex import ImplicitAPI
8
- from ccxt.base.types import Int, Market, OrderBook, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Int, Market, OrderBook, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class jibitex(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(jibitex, self).describe(), {
16
16
  'id': 'jibitex',
17
17
  'name': 'Jibitex',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -118,10 +118,10 @@ class jibitex(Exchange, ImplicitAPI):
118
118
  },
119
119
  })
120
120
 
121
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
121
+ async def fetch_markets(self, params={}) -> List[Market]:
122
122
  """
123
123
  retrieves data on all markets for jibitex
124
- :see: https://jibitex.co/
124
+ https://jibitex.co/
125
125
  :param dict [params]: extra parameters specific to the exchange API endpoint
126
126
  :returns dict[]: an array of objects representing market data
127
127
  """
@@ -129,7 +129,7 @@ class jibitex(Exchange, ImplicitAPI):
129
129
  markets = self.safe_list(response, 'content')
130
130
  result = []
131
131
  for i in range(0, len(markets)):
132
- market = await self.parse_market(markets[i])
132
+ market = self.parse_market(markets[i])
133
133
  result.append(market)
134
134
  return result
135
135
 
@@ -223,7 +223,7 @@ class jibitex(Exchange, ImplicitAPI):
223
223
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
224
224
  """
225
225
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
226
- :see: https://jibitex.co/
226
+ https://jibitex.co/
227
227
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
228
228
  :param dict [params]: extra parameters specific to the exchange API endpoint
229
229
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -238,7 +238,7 @@ class jibitex(Exchange, ImplicitAPI):
238
238
  markets = self.safe_list(response, 'content')
239
239
  result = {}
240
240
  for i in range(0, len(markets)):
241
- ticker = await self.parse_ticker(markets[i])
241
+ ticker = self.parse_ticker(markets[i])
242
242
  symbol = ticker['symbol']
243
243
  result[symbol] = ticker
244
244
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -246,7 +246,7 @@ class jibitex(Exchange, ImplicitAPI):
246
246
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
247
247
  """
248
248
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
249
- :see: https://jibitex.co/
249
+ https://jibitex.co/
250
250
  :param str symbol: unified symbol of the market to fetch the ticker for
251
251
  :param dict [params]: extra parameters specific to the exchange API endpoint
252
252
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -260,7 +260,7 @@ class jibitex(Exchange, ImplicitAPI):
260
260
  }
261
261
  response = await self.publicGetApi1Markets(request)
262
262
  marketData = self.safe_list(response, 'content')
263
- ticker = await self.parse_ticker(marketData[0])
263
+ ticker = self.parse_ticker(marketData[0])
264
264
  return ticker
265
265
 
266
266
  def parse_ticker(self, ticker, market: Market = None) -> Ticker:
@@ -330,7 +330,7 @@ class jibitex(Exchange, ImplicitAPI):
330
330
  async def fetch_ohlcv(self, symbol: str, timeframe='1h', since: Int = None, limit: Int = None, params={}) -> List[list]:
331
331
  """
332
332
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
333
- :see: https://jibitex.co/
333
+ https://jibitex.co/
334
334
  :param str symbol: unified symbol of the market to fetch OHLCV data for
335
335
  :param str timeframe: the length of time each candle represents
336
336
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -370,7 +370,7 @@ class jibitex(Exchange, ImplicitAPI):
370
370
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
371
371
  """
372
372
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
373
- :see: https://jibitex.co/
373
+ https://jibitex.co/
374
374
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
375
375
  :param int [limit]: max number of entries per orderbook to return, default is None
376
376
  :param dict [params]: extra parameters specific to the exchange API endpoint