ccxt-ir 4.3.46.0.3__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 (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  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 +8 -8
  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.3.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.3.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.tradeogre import ImplicitAPI
8
- from ccxt.base.types import IndexType, Int, Market, Num, Order, OrderSide, OrderType, Str, Ticker
8
+ from ccxt.base.types import Any, IndexType, Int, Market, Num, Order, OrderSide, OrderType, Str, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import AuthenticationError
@@ -17,14 +17,14 @@ from ccxt.base.decimal_to_precision import TICK_SIZE
17
17
 
18
18
  class tradeogre(Exchange, ImplicitAPI):
19
19
 
20
- def describe(self):
20
+ def describe(self) -> Any:
21
21
  return self.deep_extend(super(tradeogre, self).describe(), {
22
22
  'id': 'tradeogre',
23
23
  'name': 'tradeogre',
24
24
  'countries': [],
25
25
  'rateLimit': 100,
26
26
  'version': 'v2',
27
- 'pro': False,
27
+ 'pro': True,
28
28
  'has': {
29
29
  'CORS': None,
30
30
  'spot': True,
@@ -33,6 +33,9 @@ class tradeogre(Exchange, ImplicitAPI):
33
33
  'future': False,
34
34
  'option': False,
35
35
  'addMargin': False,
36
+ 'borrowCrossMargin': False,
37
+ 'borrowIsolatedMargin': False,
38
+ 'borrowMargin': False,
36
39
  'cancelAllOrders': True,
37
40
  'cancelOrder': True,
38
41
  'cancelOrders': False,
@@ -48,9 +51,14 @@ class tradeogre(Exchange, ImplicitAPI):
48
51
  'createStopMarketOrder': False,
49
52
  'createStopOrder': False,
50
53
  'fetchAccounts': False,
54
+ 'fetchAllGreeks': False,
51
55
  'fetchBalance': True,
52
56
  'fetchBorrowInterest': False,
57
+ 'fetchBorrowRate': False,
58
+ 'fetchBorrowRateHistories': False,
53
59
  'fetchBorrowRateHistory': False,
60
+ 'fetchBorrowRates': False,
61
+ 'fetchBorrowRatesPerSymbol': False,
54
62
  'fetchClosedOrders': False,
55
63
  'fetchCrossBorrowRate': False,
56
64
  'fetchCrossBorrowRates': False,
@@ -61,29 +69,47 @@ class tradeogre(Exchange, ImplicitAPI):
61
69
  'fetchDeposits': False,
62
70
  'fetchDepositsWithdrawals': False,
63
71
  'fetchFundingHistory': False,
72
+ 'fetchFundingInterval': False,
73
+ 'fetchFundingIntervals': False,
64
74
  'fetchFundingRate': False,
65
75
  'fetchFundingRateHistory': False,
66
76
  'fetchFundingRates': False,
77
+ 'fetchGreeks': False,
67
78
  'fetchIndexOHLCV': False,
68
79
  'fetchIsolatedBorrowRate': False,
69
80
  'fetchIsolatedBorrowRates': False,
81
+ 'fetchIsolatedPositions': False,
70
82
  'fetchLedger': False,
71
83
  'fetchLedgerEntry': False,
84
+ 'fetchLeverage': False,
85
+ 'fetchLeverages': False,
72
86
  'fetchLeverageTiers': False,
87
+ 'fetchLiquidations': False,
88
+ 'fetchLongShortRatio': False,
89
+ 'fetchLongShortRatioHistory': False,
90
+ 'fetchMarginAdjustmentHistory': False,
91
+ 'fetchMarginMode': False,
92
+ 'fetchMarginModes': False,
73
93
  'fetchMarketLeverageTiers': False,
74
94
  'fetchMarkets': True,
75
95
  'fetchMarkOHLCV': False,
96
+ 'fetchMarkPrice': False,
97
+ 'fetchMarkPrices': False,
98
+ 'fetchMyLiquidations': False,
99
+ 'fetchMySettlementHistory': False,
76
100
  'fetchMyTrades': False,
77
- 'fetchOHLCV': False,
101
+ 'fetchOHLCV': True,
78
102
  'fetchOpenInterest': False,
79
103
  'fetchOpenInterestHistory': False,
104
+ 'fetchOpenInterests': False,
80
105
  'fetchOpenOrders': True,
106
+ 'fetchOption': False,
107
+ 'fetchOptionChain': False,
81
108
  'fetchOrder': True,
82
109
  'fetchOrderBook': True,
83
110
  'fetchOrderBooks': False,
84
111
  'fetchOrders': False,
85
112
  'fetchOrderTrades': False,
86
- 'fetchPermissions': False,
87
113
  'fetchPosition': False,
88
114
  'fetchPositionHistory': False,
89
115
  'fetchPositionMode': False,
@@ -92,18 +118,23 @@ class tradeogre(Exchange, ImplicitAPI):
92
118
  'fetchPositionsHistory': False,
93
119
  'fetchPositionsRisk': False,
94
120
  'fetchPremiumIndexOHLCV': False,
121
+ 'fetchSettlementHistory': False,
95
122
  'fetchTicker': True,
96
- 'fetchTickers': False,
123
+ 'fetchTickers': True,
97
124
  'fetchTrades': True,
98
125
  'fetchTradingLimits': False,
99
126
  'fetchTransactionFee': False,
100
127
  'fetchTransactionFees': False,
101
128
  'fetchTransactions': False,
102
129
  'fetchTransfers': False,
130
+ 'fetchUnderlyingAssets': False,
131
+ 'fetchVolatilityHistory': False,
103
132
  'fetchWithdrawAddresses': False,
104
133
  'fetchWithdrawal': False,
105
134
  'fetchWithdrawals': False,
106
135
  'reduceMargin': False,
136
+ 'repayCrossMargin': False,
137
+ 'repayIsolatedMargin': False,
107
138
  'setLeverage': False,
108
139
  'setMargin': False,
109
140
  'setMarginMode': False,
@@ -135,11 +166,12 @@ class tradeogre(Exchange, ImplicitAPI):
135
166
  'orders/{market}': 1,
136
167
  'ticker/{market}': 1,
137
168
  'history/{market}': 1,
169
+ 'chart/{interval}/{market}/{timestamp}': 1,
170
+ 'chart/{interval}/{market}': 1,
138
171
  },
139
172
  },
140
173
  'private': {
141
174
  'get': {
142
- 'account/balance': 1,
143
175
  'account/balances': 1,
144
176
  'account/order/{uuid}': 1,
145
177
  },
@@ -149,6 +181,7 @@ class tradeogre(Exchange, ImplicitAPI):
149
181
  'order/cancel': 1,
150
182
  'orders': 1,
151
183
  'account/orders': 1,
184
+ 'account/balance': 1,
152
185
  },
153
186
  },
154
187
  },
@@ -163,14 +196,77 @@ class tradeogre(Exchange, ImplicitAPI):
163
196
  'Order not found': BadRequest,
164
197
  },
165
198
  },
199
+ 'timeframes': {
200
+ '1m': '1m',
201
+ '15m': '15m',
202
+ '1h': '1h',
203
+ '4h': '4h',
204
+ '1d': '1d',
205
+ '1w': '1w',
206
+ },
166
207
  'options': {
167
208
  },
209
+ 'features': {
210
+ 'spot': {
211
+ 'sandbox': False,
212
+ 'createOrder': {
213
+ 'marginMode': False,
214
+ 'triggerPrice': False,
215
+ 'triggerDirection': False,
216
+ 'triggerPriceType': None,
217
+ 'stopLossPrice': False,
218
+ 'takeProfitPrice': False,
219
+ 'attachedStopLossTakeProfit': None,
220
+ 'timeInForce': {
221
+ 'IOC': False,
222
+ 'FOK': False,
223
+ 'PO': False,
224
+ 'GTD': False,
225
+ },
226
+ 'hedged': False,
227
+ 'trailing': False,
228
+ 'leverage': False,
229
+ 'marketBuyByCost': False,
230
+ 'marketBuyRequiresPrice': False,
231
+ 'selfTradePrevention': False,
232
+ 'iceberg': False,
233
+ },
234
+ 'createOrders': None,
235
+ 'fetchMyTrades': None,
236
+ 'fetchOrder': {
237
+ 'marginMode': False,
238
+ 'trigger': False,
239
+ 'trailing': False,
240
+ 'symbolRequired': False,
241
+ },
242
+ 'fetchOpenOrders': {
243
+ 'marginMode': False,
244
+ 'limit': None,
245
+ 'trigger': False,
246
+ 'trailing': False,
247
+ 'symbolRequired': False,
248
+ },
249
+ 'fetchOrders': None,
250
+ 'fetchClosedOrders': None,
251
+ 'fetchOHLCV': None, # todo
252
+ },
253
+ 'swap': {
254
+ 'linear': None,
255
+ 'inverse': None,
256
+ },
257
+ 'future': {
258
+ 'linear': None,
259
+ 'inverse': None,
260
+ },
261
+ },
168
262
  })
169
263
 
170
264
  async def fetch_markets(self, params={}) -> List[Market]:
171
265
  """
172
266
  retrieves data on all markets for bigone
173
- :see: https://github.com/P2B-team/p2b-api-docs/blob/master/api-doc.md#markets
267
+
268
+ https://github.com/P2B-team/p2b-api-docs/blob/master/api-doc.md#markets
269
+
174
270
  :param dict [params]: extra parameters specific to the exchange API endpoint
175
271
  :returns dict[]: an array of objects representing market data
176
272
  """
@@ -221,7 +317,7 @@ class tradeogre(Exchange, ImplicitAPI):
221
317
  'inverse': None,
222
318
  'contractSize': None,
223
319
  'taker': self.fees['trading']['taker'],
224
- 'maker': self.fees['trading']['taker'],
320
+ 'maker': self.fees['trading']['maker'],
225
321
  'expiry': None,
226
322
  'expiryDatetime': None,
227
323
  'strike': None,
@@ -281,18 +377,72 @@ class tradeogre(Exchange, ImplicitAPI):
281
377
  #
282
378
  return self.parse_ticker(response, market)
283
379
 
380
+ async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
381
+ """
382
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
383
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
384
+ :param dict [params]: extra parameters specific to the exchange API endpoint
385
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
386
+ """
387
+ await self.load_markets()
388
+ symbols = self.market_symbols(symbols)
389
+ request: dict = {}
390
+ response = await self.publicGetMarkets(self.extend(request, params))
391
+ #
392
+ # [
393
+ # {
394
+ # "AAVE-USDT": {
395
+ # "initialprice": "177.20325711",
396
+ # "price": "177.20325711",
397
+ # "high": "177.20325711",
398
+ # "low": "177.20325711",
399
+ # "volume": "0.00000000",
400
+ # "bid": "160.72768581",
401
+ # "ask": "348.99999999",
402
+ # "basename": "Aave"
403
+ # }
404
+ # },
405
+ # ...
406
+ # ]
407
+ #
408
+ result: dict = {}
409
+ for i in range(0, len(response)):
410
+ entry = response[i]
411
+ marketIdArray = list(entry.keys())
412
+ marketId = self.safe_string(marketIdArray, 0)
413
+ market = self.safe_market(marketId)
414
+ data = entry[marketId]
415
+ ticker = self.parse_ticker(data, market)
416
+ symbol = ticker['symbol']
417
+ result[symbol] = ticker
418
+ return self.filter_by_array_tickers(result, 'symbol', symbols)
419
+
284
420
  def parse_ticker(self, ticker, market: Market = None):
285
421
  #
286
- # {
287
- # "success":true,
288
- # "initialprice":"0.02502002",
289
- # "price":"0.02500000",
290
- # "high":"0.03102001",
291
- # "low":"0.02500000",
292
- # "volume":"0.15549958",
293
- # "bid":"0.02420000",
294
- # "ask":"0.02625000"
295
- # }
422
+ # fetchTicker:
423
+ # {
424
+ # "success":true,
425
+ # "initialprice":"0.02502002",
426
+ # "price":"0.02500000",
427
+ # "high":"0.03102001",
428
+ # "low":"0.02500000",
429
+ # "volume":"0.15549958",
430
+ # "bid":"0.02420000",
431
+ # "ask":"0.02625000"
432
+ # }
433
+ #
434
+ # fetchTickers:
435
+ # {
436
+ # "initialprice": "177.20325711",
437
+ # "price": "177.20325711",
438
+ # "high": "177.20325711",
439
+ # "low": "177.20325711",
440
+ # "volume": "0.00000000",
441
+ # "bid": "160.72768581",
442
+ # "ask": "348.99999999",
443
+ # "basename": "Aave"
444
+ # },
445
+ # ...
296
446
  #
297
447
  return self.safe_ticker({
298
448
  'symbol': self.safe_string(market, 'symbol'),
@@ -305,9 +455,9 @@ class tradeogre(Exchange, ImplicitAPI):
305
455
  'ask': self.safe_string(ticker, 'ask'),
306
456
  'askVolume': None,
307
457
  'vwap': None,
308
- 'open': self.safe_string(ticker, 'open'),
309
- 'close': None,
310
- 'last': None,
458
+ 'open': self.safe_string(ticker, 'initialprice'),
459
+ 'close': self.safe_string(ticker, 'price'),
460
+ 'last': self.safe_string(ticker, 'price'),
311
461
  'previousClose': None,
312
462
  'change': None,
313
463
  'percentage': None,
@@ -317,6 +467,65 @@ class tradeogre(Exchange, ImplicitAPI):
317
467
  'info': ticker,
318
468
  }, market)
319
469
 
470
+ async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
471
+ """
472
+ fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
473
+ :param str symbol: unified symbol of the market to fetch OHLCV data for
474
+ :param str timeframe: the length of time each candle represents
475
+ :param int [since]: timestamp in ms of the earliest candle to fetch
476
+ :param int [limit]: the maximum amount of candles to fetch
477
+ :param dict [params]: extra parameters specific to the exchange API endpoint
478
+ :param int [params.until]: timestamp of the latest candle in ms
479
+ :returns int[][]: A list of candles ordered, open, high, low, close, volume
480
+ """
481
+ await self.load_markets()
482
+ market = self.market(symbol)
483
+ request: dict = {
484
+ 'market': market['id'],
485
+ 'interval': self.safe_string(self.timeframes, timeframe, timeframe),
486
+ }
487
+ response = None
488
+ until = self.safe_integer(params, 'until')
489
+ if until is not None:
490
+ params = self.omit(params, 'until')
491
+ request['timestamp'] = self.parse_to_int(until / 1000)
492
+ response = await self.publicGetChartIntervalMarketTimestamp(self.extend(request, params))
493
+ else:
494
+ response = await self.publicGetChartIntervalMarket(self.extend(request, params))
495
+ #
496
+ # [
497
+ # [
498
+ # 1729130040,
499
+ # 67581.47235999,
500
+ # 67581.47235999,
501
+ # 67338.01,
502
+ # 67338.01,
503
+ # 6.72168016
504
+ # ],
505
+ # ]
506
+ #
507
+ return self.parse_ohlcvs(response, market, timeframe, since, limit)
508
+
509
+ def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
510
+ #
511
+ # [
512
+ # 1729130040,
513
+ # 67581.47235999,
514
+ # 67581.47235999,
515
+ # 67338.01,
516
+ # 67338.01,
517
+ # 6.72168016
518
+ # ]
519
+ #
520
+ return [
521
+ self.safe_timestamp(ohlcv, 0),
522
+ self.safe_number(ohlcv, 1),
523
+ self.safe_number(ohlcv, 2),
524
+ self.safe_number(ohlcv, 3),
525
+ self.safe_number(ohlcv, 4),
526
+ self.safe_number(ohlcv, 5),
527
+ ]
528
+
320
529
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}):
321
530
  """
322
531
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
@@ -348,6 +557,7 @@ class tradeogre(Exchange, ImplicitAPI):
348
557
  'asks': rawAsks,
349
558
  }
350
559
  orderbook = self.parse_order_book(rawOrderbook, symbol)
560
+ orderbook['nonce'] = self.safe_integer(response, 's')
351
561
  return orderbook
352
562
 
353
563
  def parse_bids_asks(self, bidasks, priceKey: IndexType = 0, amountKey: IndexType = 1, countOrIdKey: IndexType = 2):
@@ -411,10 +621,26 @@ class tradeogre(Exchange, ImplicitAPI):
411
621
  """
412
622
  query for balance and get the amount of funds available for trading or funds locked in orders
413
623
  :param dict [params]: extra parameters specific to the exchange API endpoint
624
+ :param str [params.currency]: currency to fetch the balance for
414
625
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
415
626
  """
416
627
  await self.load_markets()
417
- response = await self.privateGetAccountBalances(params)
628
+ response = None
629
+ currency = self.safe_string(params, 'currency')
630
+ if currency is not None:
631
+ response = await self.privatePostAccountBalance(params)
632
+ singleCurrencyresult: dict = {
633
+ 'info': response,
634
+ }
635
+ code = self.safe_currency_code(currency)
636
+ account = {
637
+ 'total': self.safe_number(response, 'balance'),
638
+ 'free': self.safe_number(response, 'available'),
639
+ }
640
+ singleCurrencyresult[code] = account
641
+ return self.safe_balance(singleCurrencyresult)
642
+ else:
643
+ response = await self.privateGetAccountBalances(params)
418
644
  result = self.safe_dict(response, 'balances', {})
419
645
  return self.parse_balance(result)
420
646
 
@@ -441,11 +667,14 @@ class tradeogre(Exchange, ImplicitAPI):
441
667
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
442
668
  """
443
669
  create a trade order
670
+
671
+ https://tradeogre.com/help/api#:~:text=u%20%27%7Bpublic%7D%3A%7Bprivate%7D%27-,Submit%20Buy%20Order
672
+
444
673
  :param str symbol: unified symbol of the market to create an order in
445
674
  :param str type: must be 'limit'
446
675
  :param str side: 'buy' or 'sell'
447
676
  :param float amount: how much of currency you want to trade in units of base currency
448
- :param float price: the price at which the order is to be fullfilled, in units of the quote currency
677
+ :param float price: the price at which the order is to be fulfilled, in units of the quote currency
449
678
  :param dict [params]: extra parameters specific to the exchange API endpoint
450
679
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
451
680
  """
@@ -454,11 +683,11 @@ class tradeogre(Exchange, ImplicitAPI):
454
683
  if type == 'market':
455
684
  raise BadRequest(self.id + ' createOrder does not support market orders')
456
685
  if price is None:
457
- raise ArgumentsRequired(self.id + ' createOrder requires a limit parameter')
686
+ raise ArgumentsRequired(self.id + ' createOrder requires a price parameter')
458
687
  request: dict = {
459
688
  'market': market['id'],
460
- 'quantity': self.parse_to_numeric(self.amount_to_precision(symbol, amount)),
461
- 'price': self.parse_to_numeric(self.price_to_precision(symbol, price)),
689
+ 'quantity': self.amount_to_precision(symbol, amount),
690
+ 'price': self.price_to_precision(symbol, price),
462
691
  }
463
692
  response = None
464
693
  if side == 'buy':
@@ -498,6 +727,9 @@ class tradeogre(Exchange, ImplicitAPI):
498
727
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
499
728
  """
500
729
  fetch all unfilled currently open orders
730
+
731
+ https://tradeogre.com/help/api#:~:text=%7B%22success%22%3Atrue%7D-,Get%20Orders,-Method%20(POST)
732
+
501
733
  :param str symbol: unified market symbol of the market orders were made in
502
734
  :param int [since]: the earliest time in ms to fetch orders for
503
735
  :param int [limit]: the maximum number of order structures to retrieve
@@ -517,7 +749,10 @@ class tradeogre(Exchange, ImplicitAPI):
517
749
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
518
750
  """
519
751
  fetches information on an order made by the user
520
- :see: https://github.com/ace-exchange/ace-official-api-docs/blob/master/api_v2.md#open-api---order-status
752
+
753
+ https://tradeogre.com/help/api#:~:text=market%22%3A%22XMR%2DBTC%22%7D%5D-,Get%20Order,-Method%20(GET)
754
+
755
+ :param str id: order id
521
756
  :param str symbol: unified symbol of the market the order was made in
522
757
  :param dict [params]: extra parameters specific to the exchange API endpoint
523
758
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -557,12 +792,12 @@ class tradeogre(Exchange, ImplicitAPI):
557
792
  'postOnly': None,
558
793
  'side': self.safe_string(order, 'type'),
559
794
  'price': self.safe_string(order, 'price'),
560
- 'stopPrice': None,
561
- 'amount': self.safe_string(order, 'quantity'),
795
+ 'triggerPrice': None,
796
+ 'amount': None,
562
797
  'cost': None,
563
798
  'average': None,
564
799
  'filled': self.safe_string(order, 'fulfilled'),
565
- 'remaining': None,
800
+ 'remaining': self.safe_string(order, 'quantity'),
566
801
  'status': None,
567
802
  'fee': {
568
803
  'currency': None,
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.twox import ImplicitAPI
8
- from ccxt.base.types import Market, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Market, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class twox(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(twox, self).describe(), {
16
16
  'id': 'twox',
17
17
  'name': 'Twox',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -111,10 +111,10 @@ class twox(Exchange, ImplicitAPI):
111
111
  },
112
112
  })
113
113
 
114
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
114
+ async def fetch_markets(self, params={}) -> List[Market]:
115
115
  """
116
116
  retrieves data on all markets for twox
117
- :see: https://api.twox.ir/api/currencies
117
+ https://api.twox.ir/api/currencies
118
118
  :param dict [params]: extra parameters specific to the exchange API endpoint
119
119
  :returns dict[]: an array of objects representing market data
120
120
  """
@@ -130,7 +130,7 @@ class twox(Exchange, ImplicitAPI):
130
130
  break
131
131
  marketData['base'] = base
132
132
  marketData['quote'] = quote
133
- market = await self.parse_market(marketData)
133
+ market = self.parse_market(marketData)
134
134
  result.append(market)
135
135
  return result
136
136
 
@@ -224,7 +224,7 @@ class twox(Exchange, ImplicitAPI):
224
224
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
225
225
  """
226
226
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
227
- :see: https://api.twox.ir/api/currencies
227
+ https://api.twox.ir/api/currencies
228
228
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
229
229
  :param dict [params]: extra parameters specific to the exchange API endpoint
230
230
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -244,7 +244,7 @@ class twox(Exchange, ImplicitAPI):
244
244
  response[i]['base'] = base
245
245
  response[i]['quote'] = quote
246
246
  response[i]['symbol'] = base + quote
247
- ticker = await self.parse_ticker(response[i])
247
+ ticker = self.parse_ticker(response[i])
248
248
  symbol = ticker['symbol']
249
249
  result[symbol] = ticker
250
250
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -252,7 +252,7 @@ class twox(Exchange, ImplicitAPI):
252
252
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
253
253
  """
254
254
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
255
- :see: https://api.twox.ir/api/currencies
255
+ https://api.twox.ir/api/currencies
256
256
  :param str symbol: unified symbol of the market to fetch the ticker for
257
257
  :param dict [params]: extra parameters specific to the exchange API endpoint
258
258
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.ubitex 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 ubitex(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(ubitex, self).describe(), {
16
16
  'id': 'ubitex',
17
17
  'name': 'Ubitex',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -120,17 +120,17 @@ class ubitex(Exchange, ImplicitAPI):
120
120
  },
121
121
  })
122
122
 
123
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
123
+ async def fetch_markets(self, params={}) -> List[Market]:
124
124
  """
125
125
  retrieves data on all markets for ubitex
126
- :see: https://ubitex.io/
126
+ https://ubitex.io/
127
127
  :param dict [params]: extra parameters specific to the exchange API endpoint
128
128
  :returns dict[]: an array of objects representing market data
129
129
  """
130
130
  response = await self.publicGetApiDashboardPairList(params)
131
131
  result = []
132
132
  for i in range(0, len(response)):
133
- market = await self.parse_market(response[i])
133
+ market = self.parse_market(response[i])
134
134
  result.append(market)
135
135
  return result
136
136
 
@@ -228,7 +228,7 @@ class ubitex(Exchange, ImplicitAPI):
228
228
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
229
229
  """
230
230
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
231
- :see: https://ubitex.io/
231
+ https://ubitex.io/
232
232
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
233
233
  :param dict [params]: extra parameters specific to the exchange API endpoint
234
234
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -239,7 +239,7 @@ class ubitex(Exchange, ImplicitAPI):
239
239
  response = await self.publicGetApiDashboardPairList(params)
240
240
  result = {}
241
241
  for i in range(0, len(response)):
242
- ticker = await self.parse_ticker(response[i])
242
+ ticker = self.parse_ticker(response[i])
243
243
  symbol = ticker['symbol']
244
244
  result[symbol] = ticker
245
245
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -247,7 +247,7 @@ class ubitex(Exchange, ImplicitAPI):
247
247
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
248
248
  """
249
249
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
250
- :see: https://ubitex.io/
250
+ https://ubitex.io/
251
251
  :param str symbol: unified symbol of the market to fetch the ticker for
252
252
  :param dict [params]: extra parameters specific to the exchange API endpoint
253
253
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -260,7 +260,7 @@ class ubitex(Exchange, ImplicitAPI):
260
260
  }
261
261
  response = await self.publicGetApiDashboardPairList(request)
262
262
  pair = self.safe_dict(response, 0)
263
- ticker = await self.parse_ticker(pair)
263
+ ticker = self.parse_ticker(pair)
264
264
  return ticker
265
265
 
266
266
  def parse_ticker(self, ticker, market: Market = None) -> Ticker:
@@ -333,7 +333,7 @@ class ubitex(Exchange, ImplicitAPI):
333
333
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = 100, params={}) -> List[list]:
334
334
  """
335
335
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
336
- :see: https://ubitex.io/
336
+ https://ubitex.io/
337
337
  :param str symbol: unified symbol of the market to fetch OHLCV data for
338
338
  :param str timeframe: the length of time each candle represents
339
339
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -381,7 +381,7 @@ class ubitex(Exchange, ImplicitAPI):
381
381
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
382
382
  """
383
383
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
384
- :see: https://ubitex.io/
384
+ https://ubitex.io/
385
385
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
386
386
  :param int [limit]: max number of entries per orderbook to return, default is None
387
387
  :param dict [params]: extra parameters specific to the exchange API endpoint