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,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.nobitex 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 nobitex(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(nobitex, self).describe(), {
16
16
  'id': 'nobitex',
17
17
  'name': 'Nobitex',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -86,7 +86,7 @@ class nobitex(Exchange, ImplicitAPI):
86
86
  'urls': {
87
87
  'logo': 'https://cdn.arz.digital/cr-odin/img/exchanges/nobitex/64x64.png',
88
88
  'api': {
89
- 'public': 'https://api.nobitex.ir',
89
+ 'public': 'https://apiv2.nobitex.ir',
90
90
  },
91
91
  'www': 'https://nobitex.ir/',
92
92
  'doc': [
@@ -129,18 +129,14 @@ class nobitex(Exchange, ImplicitAPI):
129
129
  },
130
130
  })
131
131
 
132
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
132
+ async def fetch_markets(self, params={}) -> List[Market]:
133
133
  """
134
134
  retrieves data on all markets for nobitex
135
- :see: https://apidocs.nobitex.ir/#6ae2dae4a2
135
+ https://apidocs.nobitex.ir/#6ae2dae4a2
136
136
  :param dict [params]: extra parameters specific to the exchange API endpoint
137
137
  :returns dict[]: an array of objects representing market data
138
138
  """
139
- request = {
140
- 'srcCurrency': 'btc,usdt,eth,etc,doge,ada,bch,ltc,bnb,eos,xlm,xrp,trx,uni,link,dai,dot,shib,aave,ftm,matic,axs,mana,sand,avax,usdc,gmt,mkr,sol,atom,grt,bat,near,ape,qnt,chz,xmr,egala,busd,algo,hbar,1inch,yfi,flow,snx,enj,crv,fil,wbtc,ldo,dydx,apt,mask,comp,bal,lrc,lpt,ens,sushi,api3,one,glm,pmn,dao,cvc,nmr,storj,snt,ant,zrx,slp,egld,imx,blur,100k_floki,1b_babydoge,1m_nft,1m_btt,t,celr,arb,magic,gmx,band,cvx,ton,ssv,mdt,omg,wld,rdnt,jst,bico,rndr,woo,skl,gal,agix,fet,not,xtz,agld,trb,rsr,ethfi',
141
- 'dstCurrency': 'rls,usdt',
142
- }
143
- response = await self.publicGetMarketStats(request)
139
+ response = await self.publicGetMarketStats()
144
140
  markets = self.safe_dict(response, 'stats')
145
141
  marketKeys = list(markets.keys())
146
142
  result = []
@@ -149,7 +145,7 @@ class nobitex(Exchange, ImplicitAPI):
149
145
  if markets[symbol]['isClosed']:
150
146
  continue
151
147
  markets[symbol]['symbol'] = symbol
152
- market = await self.parse_market(markets[symbol])
148
+ market = self.parse_market(markets[symbol])
153
149
  result.append(market)
154
150
  return result
155
151
 
@@ -228,7 +224,7 @@ class nobitex(Exchange, ImplicitAPI):
228
224
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
229
225
  """
230
226
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
231
- :see: https://apidocs.nobitex.ir/#6ae2dae4a2
227
+ https://apidocs.nobitex.ir/#6ae2dae4a2
232
228
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
233
229
  :param dict [params]: extra parameters specific to the exchange API endpoint
234
230
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -236,11 +232,7 @@ class nobitex(Exchange, ImplicitAPI):
236
232
  await self.load_markets()
237
233
  if symbols is not None:
238
234
  symbols = self.market_symbols(symbols)
239
- request = {
240
- 'srcCurrency': 'btc,usdt,eth,etc,doge,ada,bch,ltc,bnb,eos,xlm,xrp,trx,uni,link,dai,dot,shib,aave,ftm,matic,axs,mana,sand,avax,usdc,gmt,mkr,sol,atom,grt,bat,near,ape,qnt,chz,xmr,egala,busd,algo,hbar,1inch,yfi,flow,snx,enj,crv,fil,wbtc,ldo,dydx,apt,mask,comp,bal,lrc,lpt,ens,sushi,api3,one,glm,pmn,dao,cvc,nmr,storj,snt,ant,zrx,slp,egld,imx,blur,100k_floki,1b_babydoge,1m_nft,1m_btt,t,celr,arb,magic,gmx,band,cvx,ton,ssv,mdt,omg,wld,rdnt,jst,bico,rndr,woo,skl,gal,agix,fet,not,xtz,agld,trb,rsr,ethfi',
241
- 'dstCurrency': 'rls,usdt',
242
- }
243
- response = await self.publicGetMarketStats(request)
235
+ response = await self.publicGetMarketStats()
244
236
  markets = self.safe_dict(response, 'stats')
245
237
  marketKeys = list(markets.keys())
246
238
  result = []
@@ -249,7 +241,7 @@ class nobitex(Exchange, ImplicitAPI):
249
241
  if markets[symbol]['isClosed']:
250
242
  continue
251
243
  markets[symbol]['symbol'] = symbol
252
- ticker = await self.parse_ticker(markets[symbol])
244
+ ticker = self.parse_ticker(markets[symbol])
253
245
  symbol = ticker['symbol']
254
246
  result[symbol] = ticker
255
247
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -257,7 +249,7 @@ class nobitex(Exchange, ImplicitAPI):
257
249
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
258
250
  """
259
251
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
260
- :see: https://apidocs.nobitex.ir/#6ae2dae4a2
252
+ https://apidocs.nobitex.ir/#6ae2dae4a2
261
253
  :param str symbol: unified symbol of the market to fetch the ticker for
262
254
  :param dict [params]: extra parameters specific to the exchange API endpoint
263
255
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -296,14 +288,14 @@ class nobitex(Exchange, ImplicitAPI):
296
288
  quoteVolume = self.safe_float(ticker, 'volumeDst')
297
289
  baseVolume = self.safe_float(ticker, 'volumeSrc')
298
290
  if marketinfo['quote'] == 'IRT':
299
- high /= 10
300
- low /= 10
301
- bid /= 10
302
- ask /= 10
303
- open /= 10
304
- close /= 10
305
- last /= 10
306
- quoteVolume /= 10
291
+ high = high * 10 if high else 0
292
+ low = low / 10 if low else 0
293
+ bid = bid / 10 if bid else 0
294
+ ask = ask / 10 if ask else 0
295
+ open = open / 10 if open else 0
296
+ close = close / 10 if close else 0
297
+ last = last / 10 if last else 0
298
+ quoteVolume = quoteVolume / 10 if quoteVolume else 0
307
299
  return self.safe_ticker({
308
300
  'symbol': symbol.replace('-', '/'),
309
301
  'timestamp': None,
@@ -330,7 +322,7 @@ class nobitex(Exchange, ImplicitAPI):
330
322
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
331
323
  """
332
324
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
333
- :see: https://apidocs.nobitex.ir/#ohlc
325
+ https://apidocs.nobitex.ir/#ohlc
334
326
  :param str symbol: unified symbol of the market to fetch OHLCV data for
335
327
  :param str timeframe: the length of time each candle represents
336
328
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -341,6 +333,8 @@ class nobitex(Exchange, ImplicitAPI):
341
333
  await self.load_markets()
342
334
  market = self.market(symbol)
343
335
  endTime = Date.now()
336
+ if market['quote'] == 'IRT':
337
+ market['id'] = market['id'].replace('RLS', 'IRT')
344
338
  request = {
345
339
  'symbol': market['id'],
346
340
  'from': (endTime / 1000) - (24 * 60 * 60),
@@ -364,11 +358,11 @@ class nobitex(Exchange, ImplicitAPI):
364
358
  ohlcvs = []
365
359
  for i in range(0, len(openList)):
366
360
  if market['quote'] == 'IRT':
367
- openList[i] /= 10
368
- highList[i] /= 10
369
- lowList[i] /= 10
370
- closeList[i] /= 10
371
- volumeList[i] /= 10
361
+ openList[i] = openList[i] / 10 if openList[i] else 0
362
+ highList[i] = highList[i] / 10 if highList[i] else 0
363
+ lowList[i] = lowList[i] / 10 if lowList[i] else 0
364
+ closeList[i] = closeList[i] / 10 if closeList[i] else 0
365
+ volumeList[i] = volumeList[i] / 10 if volumeList[i] else 0
372
366
  ohlcvs.append([
373
367
  timestampList[i],
374
368
  openList[i],
@@ -382,7 +376,7 @@ class nobitex(Exchange, ImplicitAPI):
382
376
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
383
377
  """
384
378
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
385
- :see: https://apidocs.nobitex.ir/#orderbook
379
+ https://apidocs.nobitex.ir/#orderbook
386
380
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
387
381
  :param int [limit]: max number of entries per orderbook to return, default is None
388
382
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -398,9 +392,9 @@ class nobitex(Exchange, ImplicitAPI):
398
392
  bids = self.safe_list(response, 'bids')
399
393
  asks = self.safe_list(response, 'asks')
400
394
  for i in range(0, len(bids)):
401
- bids[i][0] /= 10
395
+ bids[i][0] = bids[i][0] / 10 if bids[i][0] else 0
402
396
  for i in range(0, len(asks)):
403
- asks[i][0] /= 10
397
+ asks[i][0] = asks[i][0] / 10 if asks[i][0] else 0
404
398
  response['bids'] = bids
405
399
  response['asks'] = asks
406
400
  timestamp = self.safe_integer(response, 'lastUpdate')
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.novadax import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
9
+ from ccxt.base.types import Account, Any, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -19,16 +19,16 @@ from ccxt.base.errors import BadSymbol
19
19
  from ccxt.base.errors import InsufficientFunds
20
20
  from ccxt.base.errors import InvalidOrder
21
21
  from ccxt.base.errors import OrderNotFound
22
- from ccxt.base.errors import CancelPending
23
22
  from ccxt.base.errors import RateLimitExceeded
24
23
  from ccxt.base.errors import OnMaintenance
24
+ from ccxt.base.errors import CancelPending
25
25
  from ccxt.base.decimal_to_precision import TICK_SIZE
26
26
  from ccxt.base.precise import Precise
27
27
 
28
28
 
29
29
  class novadax(Exchange, ImplicitAPI):
30
30
 
31
- def describe(self):
31
+ def describe(self) -> Any:
32
32
  return self.deep_extend(super(novadax, self).describe(), {
33
33
  'id': 'novadax',
34
34
  'name': 'NovaDAX',
@@ -46,6 +46,9 @@ class novadax(Exchange, ImplicitAPI):
46
46
  'future': False,
47
47
  'option': False,
48
48
  'addMargin': False,
49
+ 'borrowCrossMargin': False,
50
+ 'borrowIsolatedMargin': False,
51
+ 'borrowMargin': False,
49
52
  'cancelOrder': True,
50
53
  'closeAllPositions': False,
51
54
  'closePosition': False,
@@ -58,9 +61,14 @@ class novadax(Exchange, ImplicitAPI):
58
61
  'createStopMarketOrder': True,
59
62
  'createStopOrder': True,
60
63
  'fetchAccounts': True,
64
+ 'fetchAllGreeks': False,
61
65
  'fetchBalance': True,
66
+ 'fetchBorrowInterest': False,
67
+ 'fetchBorrowRate': False,
62
68
  'fetchBorrowRateHistories': False,
63
69
  'fetchBorrowRateHistory': False,
70
+ 'fetchBorrowRates': False,
71
+ 'fetchBorrowRatesPerSymbol': False,
64
72
  'fetchClosedOrders': True,
65
73
  'fetchCrossBorrowRate': False,
66
74
  'fetchCrossBorrowRates': False,
@@ -70,20 +78,40 @@ class novadax(Exchange, ImplicitAPI):
70
78
  'fetchDeposits': True,
71
79
  'fetchDepositsWithdrawals': True,
72
80
  'fetchFundingHistory': False,
81
+ 'fetchFundingInterval': False,
82
+ 'fetchFundingIntervals': False,
73
83
  'fetchFundingRate': False,
74
84
  'fetchFundingRateHistory': False,
75
85
  'fetchFundingRates': False,
86
+ 'fetchGreeks': False,
76
87
  'fetchIndexOHLCV': False,
77
88
  'fetchIsolatedBorrowRate': False,
78
89
  'fetchIsolatedBorrowRates': False,
90
+ 'fetchIsolatedPositions': False,
79
91
  'fetchLeverage': False,
92
+ 'fetchLeverages': False,
80
93
  'fetchLeverageTiers': False,
94
+ 'fetchLiquidations': False,
95
+ 'fetchLongShortRatio': False,
96
+ 'fetchLongShortRatioHistory': False,
97
+ 'fetchMarginAdjustmentHistory': False,
98
+ 'fetchMarginMode': False,
99
+ 'fetchMarginModes': False,
100
+ 'fetchMarketLeverageTiers': False,
81
101
  'fetchMarkets': True,
82
102
  'fetchMarkOHLCV': False,
103
+ 'fetchMarkPrice': False,
104
+ 'fetchMarkPrices': False,
105
+ 'fetchMyLiquidations': False,
106
+ 'fetchMySettlementHistory': False,
83
107
  'fetchMyTrades': True,
84
108
  'fetchOHLCV': True,
109
+ 'fetchOpenInterest': False,
85
110
  'fetchOpenInterestHistory': False,
111
+ 'fetchOpenInterests': False,
86
112
  'fetchOpenOrders': True,
113
+ 'fetchOption': False,
114
+ 'fetchOptionChain': False,
87
115
  'fetchOrder': True,
88
116
  'fetchOrderBook': True,
89
117
  'fetchOrders': True,
@@ -96,6 +124,7 @@ class novadax(Exchange, ImplicitAPI):
96
124
  'fetchPositionsHistory': False,
97
125
  'fetchPositionsRisk': False,
98
126
  'fetchPremiumIndexOHLCV': False,
127
+ 'fetchSettlementHistory': False,
99
128
  'fetchTicker': True,
100
129
  'fetchTickers': True,
101
130
  'fetchTime': True,
@@ -103,9 +132,14 @@ class novadax(Exchange, ImplicitAPI):
103
132
  'fetchTradingFee': False,
104
133
  'fetchTradingFees': False,
105
134
  'fetchTransactions': 'emulated',
135
+ 'fetchUnderlyingAssets': False,
136
+ 'fetchVolatilityHistory': False,
106
137
  'fetchWithdrawals': True,
107
138
  'reduceMargin': False,
139
+ 'repayCrossMargin': False,
140
+ 'repayIsolatedMargin': False,
108
141
  'setLeverage': False,
142
+ 'setMargin': False,
109
143
  'setMarginMode': False,
110
144
  'setPositionMode': False,
111
145
  'transfer': True,
@@ -223,12 +257,93 @@ class novadax(Exchange, ImplicitAPI):
223
257
  'fillResponseFromRequest': True,
224
258
  },
225
259
  },
260
+ 'features': {
261
+ 'spot': {
262
+ 'sandbox': False,
263
+ 'createOrder': {
264
+ 'marginMode': False,
265
+ 'triggerPrice': True,
266
+ 'triggerDirection': True, # todo
267
+ 'triggerPriceType': None,
268
+ 'stopLossPrice': False, # todo
269
+ 'takeProfitPrice': False, # todo
270
+ 'attachedStopLossTakeProfit': None,
271
+ # todo
272
+ 'timeInForce': {
273
+ 'IOC': False,
274
+ 'FOK': False,
275
+ 'PO': False,
276
+ 'GTD': False,
277
+ },
278
+ 'hedged': False,
279
+ 'trailing': False,
280
+ 'leverage': False,
281
+ 'marketBuyByCost': True,
282
+ 'marketBuyRequiresPrice': False,
283
+ 'selfTradePrevention': False,
284
+ 'iceberg': True, # todo
285
+ },
286
+ 'createOrders': None, # todo: add implementation
287
+ 'fetchMyTrades': {
288
+ 'marginMode': False,
289
+ 'limit': 100,
290
+ 'daysBack': 100000, # todo
291
+ 'untilDays': 100000, # todo
292
+ 'symbolRequired': False,
293
+ },
294
+ 'fetchOrder': {
295
+ 'marginMode': False,
296
+ 'trigger': False,
297
+ 'trailing': False,
298
+ 'symbolRequired': False,
299
+ },
300
+ 'fetchOpenOrders': {
301
+ 'marginMode': False,
302
+ 'limit': None,
303
+ 'trigger': False,
304
+ 'trailing': False,
305
+ 'symbolRequired': False,
306
+ },
307
+ 'fetchOrders': {
308
+ 'marginMode': False,
309
+ 'limit': 100,
310
+ 'daysBack': 100000, # todo
311
+ 'untilDays': 100000, # todo
312
+ 'trigger': False,
313
+ 'trailing': False,
314
+ 'symbolRequired': False,
315
+ },
316
+ 'fetchClosedOrders': {
317
+ 'marginMode': False,
318
+ 'limit': 100,
319
+ 'daysBack': 100000, # todo
320
+ 'daysBackCanceled': 1, # todo
321
+ 'untilDays': 100000, # todo
322
+ 'trigger': False,
323
+ 'trailing': False,
324
+ 'symbolRequired': False,
325
+ },
326
+ 'fetchOHLCV': {
327
+ 'limit': None, # todo max 3000
328
+ },
329
+ },
330
+ 'swap': {
331
+ 'linear': None,
332
+ 'inverse': None,
333
+ },
334
+ 'future': {
335
+ 'linear': None,
336
+ 'inverse': None,
337
+ },
338
+ },
226
339
  })
227
340
 
228
- async def fetch_time(self, params={}):
341
+ async def fetch_time(self, params={}) -> Int:
229
342
  """
230
343
  fetches the current integer timestamp in milliseconds from the exchange server
231
- :see: https://doc.novadax.com/en-US/#get-current-system-time
344
+
345
+ https://doc.novadax.com/en-US/#get-current-system-time
346
+
232
347
  :param dict [params]: extra parameters specific to the exchange API endpoint
233
348
  :returns int: the current integer timestamp in milliseconds from the exchange server
234
349
  """
@@ -245,7 +360,9 @@ class novadax(Exchange, ImplicitAPI):
245
360
  async def fetch_markets(self, params={}) -> List[Market]:
246
361
  """
247
362
  retrieves data on all markets for novadax
248
- :see: https://doc.novadax.com/en-US/#get-all-supported-trading-symbol
363
+
364
+ https://doc.novadax.com/en-US/#get-all-supported-trading-symbol
365
+
249
366
  :param dict [params]: extra parameters specific to the exchange API endpoint
250
367
  :returns dict[]: an array of objects representing market data
251
368
  """
@@ -380,7 +497,9 @@ class novadax(Exchange, ImplicitAPI):
380
497
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
381
498
  """
382
499
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
383
- :see: https://doc.novadax.com/en-US/#get-latest-ticker-for-specific-pair
500
+
501
+ https://doc.novadax.com/en-US/#get-latest-ticker-for-specific-pair
502
+
384
503
  :param str symbol: unified symbol of the market to fetch the ticker for
385
504
  :param dict [params]: extra parameters specific to the exchange API endpoint
386
505
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -415,7 +534,9 @@ class novadax(Exchange, ImplicitAPI):
415
534
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
416
535
  """
417
536
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
418
- :see: https://doc.novadax.com/en-US/#get-latest-tickers-for-all-trading-pairs
537
+
538
+ https://doc.novadax.com/en-US/#get-latest-tickers-for-all-trading-pairs
539
+
419
540
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
420
541
  :param dict [params]: extra parameters specific to the exchange API endpoint
421
542
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -454,7 +575,9 @@ class novadax(Exchange, ImplicitAPI):
454
575
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
455
576
  """
456
577
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
457
- :see: https://doc.novadax.com/en-US/#get-market-depth
578
+
579
+ https://doc.novadax.com/en-US/#get-market-depth
580
+
458
581
  :param str symbol: unified symbol of the market to fetch the order book for
459
582
  :param int [limit]: the maximum amount of order book entries to return
460
583
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -571,7 +694,9 @@ class novadax(Exchange, ImplicitAPI):
571
694
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
572
695
  """
573
696
  get the list of most recent trades for a particular symbol
574
- :see: https://doc.novadax.com/en-US/#get-recent-trades
697
+
698
+ https://doc.novadax.com/en-US/#get-recent-trades
699
+
575
700
  :param str symbol: unified symbol of the market to fetch trades for
576
701
  :param int [since]: timestamp in ms of the earliest trade to fetch
577
702
  :param int [limit]: the maximum amount of trades to fetch
@@ -603,7 +728,9 @@ class novadax(Exchange, ImplicitAPI):
603
728
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
604
729
  """
605
730
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
606
- :see: https://doc.novadax.com/en-US/#get-kline-data
731
+
732
+ https://doc.novadax.com/en-US/#get-kline-data
733
+
607
734
  :param str symbol: unified symbol of the market to fetch OHLCV data for
608
735
  :param str timeframe: the length of time each candle represents
609
736
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -697,7 +824,9 @@ class novadax(Exchange, ImplicitAPI):
697
824
  async def fetch_balance(self, params={}) -> Balances:
698
825
  """
699
826
  query for balance and get the amount of funds available for trading or funds locked in orders
700
- :see: https://doc.novadax.com/en-US/#get-account-balance
827
+
828
+ https://doc.novadax.com/en-US/#get-account-balance
829
+
701
830
  :param dict [params]: extra parameters specific to the exchange API endpoint
702
831
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
703
832
  """
@@ -722,12 +851,14 @@ class novadax(Exchange, ImplicitAPI):
722
851
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
723
852
  """
724
853
  create a trade order
725
- :see: https://doc.novadax.com/en-US/#order-introduction
854
+
855
+ https://doc.novadax.com/en-US/#order-introduction
856
+
726
857
  :param str symbol: unified symbol of the market to create an order in
727
858
  :param str type: 'market' or 'limit'
728
859
  :param str side: 'buy' or 'sell'
729
860
  :param float amount: how much you want to trade in units of the base currency
730
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
861
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
731
862
  :param dict [params]: extra parameters specific to the exchange API endpoint
732
863
  :param float [params.cost]: for spot market buy orders, the quote quantity that can be used alternative for the amount
733
864
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -745,8 +876,8 @@ class novadax(Exchange, ImplicitAPI):
745
876
  # "stopPrice": self.price_to_precision(symbol, stopPrice),
746
877
  # "accountId": "...", # subaccount id, optional
747
878
  }
748
- stopPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
749
- if stopPrice is None:
879
+ triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
880
+ if triggerPrice is None:
750
881
  if (uppercaseType == 'STOP_LIMIT') or (uppercaseType == 'STOP_MARKET'):
751
882
  raise ArgumentsRequired(self.id + ' createOrder() requires a stopPrice parameter for ' + uppercaseType + ' orders')
752
883
  else:
@@ -756,7 +887,7 @@ class novadax(Exchange, ImplicitAPI):
756
887
  uppercaseType = 'STOP_MARKET'
757
888
  defaultOperator = 'LTE' if (uppercaseSide == 'BUY') else 'GTE'
758
889
  request['operator'] = self.safe_string(params, 'operator', defaultOperator)
759
- request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
890
+ request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
760
891
  params = self.omit(params, ['triggerPrice', 'stopPrice'])
761
892
  if (uppercaseType == 'LIMIT') or (uppercaseType == 'STOP_LIMIT'):
762
893
  request['price'] = self.price_to_precision(symbol, price)
@@ -814,7 +945,9 @@ class novadax(Exchange, ImplicitAPI):
814
945
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
815
946
  """
816
947
  cancels an open order
817
- :see: https://doc.novadax.com/en-US/#cancel-an-order
948
+
949
+ https://doc.novadax.com/en-US/#cancel-an-order
950
+
818
951
  :param str id: order id
819
952
  :param str symbol: not used by novadax cancelOrder()
820
953
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -840,7 +973,10 @@ class novadax(Exchange, ImplicitAPI):
840
973
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
841
974
  """
842
975
  fetches information on an order made by the user
843
- :see: https://doc.novadax.com/en-US/#get-order-details
976
+
977
+ https://doc.novadax.com/en-US/#get-order-details
978
+
979
+ :param str id: order id
844
980
  :param str symbol: not used by novadax fetchOrder
845
981
  :param dict [params]: extra parameters specific to the exchange API endpoint
846
982
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -877,7 +1013,9 @@ class novadax(Exchange, ImplicitAPI):
877
1013
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
878
1014
  """
879
1015
  fetches information on multiple orders made by the user
880
- :see: https://doc.novadax.com/en-US/#get-order-history
1016
+
1017
+ https://doc.novadax.com/en-US/#get-order-history
1018
+
881
1019
  :param str symbol: unified market symbol of the market orders were made in
882
1020
  :param int [since]: the earliest time in ms to fetch orders for
883
1021
  :param int [limit]: the maximum number of order structures to retrieve
@@ -932,7 +1070,9 @@ class novadax(Exchange, ImplicitAPI):
932
1070
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
933
1071
  """
934
1072
  fetch all unfilled currently open orders
935
- :see: https://doc.novadax.com/en-US/#get-order-history
1073
+
1074
+ https://doc.novadax.com/en-US/#get-order-history
1075
+
936
1076
  :param str symbol: unified market symbol
937
1077
  :param int [since]: the earliest time in ms to fetch open orders for
938
1078
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -947,7 +1087,9 @@ class novadax(Exchange, ImplicitAPI):
947
1087
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
948
1088
  """
949
1089
  fetches information on multiple closed orders made by the user
950
- :see: https://doc.novadax.com/en-US/#get-order-history
1090
+
1091
+ https://doc.novadax.com/en-US/#get-order-history
1092
+
951
1093
  :param str symbol: unified market symbol of the market orders were made in
952
1094
  :param int [since]: the earliest time in ms to fetch orders for
953
1095
  :param int [limit]: the maximum number of order structures to retrieve
@@ -962,7 +1104,9 @@ class novadax(Exchange, ImplicitAPI):
962
1104
  async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
963
1105
  """
964
1106
  fetch all the trades made from a single order
965
- :see: https://doc.novadax.com/en-US/#get-order-match-details
1107
+
1108
+ https://doc.novadax.com/en-US/#get-order-match-details
1109
+
966
1110
  :param str id: order id
967
1111
  :param str symbol: unified market symbol
968
1112
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1061,7 +1205,6 @@ class novadax(Exchange, ImplicitAPI):
1061
1205
  }
1062
1206
  marketId = self.safe_string(order, 'symbol')
1063
1207
  symbol = self.safe_symbol(marketId, market, '_')
1064
- stopPrice = self.safe_number(order, 'stopPrice')
1065
1208
  return self.safe_order({
1066
1209
  'id': id,
1067
1210
  'clientOrderId': None,
@@ -1075,8 +1218,7 @@ class novadax(Exchange, ImplicitAPI):
1075
1218
  'postOnly': None,
1076
1219
  'side': side,
1077
1220
  'price': price,
1078
- 'stopPrice': stopPrice,
1079
- 'triggerPrice': stopPrice,
1221
+ 'triggerPrice': self.safe_number(order, 'stopPrice'),
1080
1222
  'amount': amount,
1081
1223
  'cost': cost,
1082
1224
  'average': average,
@@ -1090,7 +1232,9 @@ class novadax(Exchange, ImplicitAPI):
1090
1232
  async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1091
1233
  """
1092
1234
  transfer currency internally between wallets on the same account
1093
- :see: https://doc.novadax.com/en-US/#get-sub-account-transfer
1235
+
1236
+ https://doc.novadax.com/en-US/#get-sub-account-transfer
1237
+
1094
1238
  :param str code: unified currency code
1095
1239
  :param float amount: amount to transfer
1096
1240
  :param str fromAccount: account to transfer from
@@ -1157,10 +1301,12 @@ class novadax(Exchange, ImplicitAPI):
1157
1301
  }
1158
1302
  return self.safe_string(statuses, status, 'failed')
1159
1303
 
1160
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1304
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1161
1305
  """
1162
1306
  make a withdrawal
1163
- :see: https://doc.novadax.com/en-US/#send-cryptocurrencies
1307
+
1308
+ https://doc.novadax.com/en-US/#send-cryptocurrencies
1309
+
1164
1310
  :param str code: unified currency code
1165
1311
  :param float amount: the amount to withdraw
1166
1312
  :param str address: the address to withdraw to
@@ -1191,7 +1337,9 @@ class novadax(Exchange, ImplicitAPI):
1191
1337
  async def fetch_accounts(self, params={}) -> List[Account]:
1192
1338
  """
1193
1339
  fetch all the accounts associated with a profile
1194
- :see: https://doc.novadax.com/en-US/#get-sub-account-list
1340
+
1341
+ https://doc.novadax.com/en-US/#get-sub-account-list
1342
+
1195
1343
  :param dict [params]: extra parameters specific to the exchange API endpoint
1196
1344
  :returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
1197
1345
  """
@@ -1227,7 +1375,9 @@ class novadax(Exchange, ImplicitAPI):
1227
1375
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1228
1376
  """
1229
1377
  fetch all deposits made to an account
1230
- :see: https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1378
+
1379
+ https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1380
+
1231
1381
  :param str code: unified currency code
1232
1382
  :param int [since]: the earliest time in ms to fetch deposits for
1233
1383
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1242,7 +1392,9 @@ class novadax(Exchange, ImplicitAPI):
1242
1392
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1243
1393
  """
1244
1394
  fetch all withdrawals made from an account
1245
- :see: https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1395
+
1396
+ https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1397
+
1246
1398
  :param str code: unified currency code
1247
1399
  :param int [since]: the earliest time in ms to fetch withdrawals for
1248
1400
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1257,7 +1409,9 @@ class novadax(Exchange, ImplicitAPI):
1257
1409
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1258
1410
  """
1259
1411
  fetch history of deposits and withdrawals
1260
- :see: https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1412
+
1413
+ https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1414
+
1261
1415
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
1262
1416
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
1263
1417
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -1390,7 +1544,9 @@ class novadax(Exchange, ImplicitAPI):
1390
1544
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1391
1545
  """
1392
1546
  fetch all trades made by the user
1393
- :see: https://doc.novadax.com/en-US/#get-order-history
1547
+
1548
+ https://doc.novadax.com/en-US/#get-order-history
1549
+
1394
1550
  :param str symbol: unified market symbol
1395
1551
  :param int [since]: the earliest time in ms to fetch trades for
1396
1552
  :param int [limit]: the maximum number of trades structures to retrieve