ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.1__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 +8 -8
  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 +10 -10
  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 +32 -38
  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 +32 -27
  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 +34 -30
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +15 -14
  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 +30 -36
  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 +29 -24
  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 +32 -28
  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 +13 -12
  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.1.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.1.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.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.1.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.hashkey import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, DepositAddress, Int, LastPrice, LastPrices, LedgerEntry, Leverage, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Account, Any, Balances, Bool, Currencies, Currency, DepositAddress, Int, LastPrice, LastPrices, LedgerEntry, Leverage, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -38,7 +38,7 @@ from ccxt.base.precise import Precise
38
38
 
39
39
  class hashkey(Exchange, ImplicitAPI):
40
40
 
41
- def describe(self):
41
+ def describe(self) -> Any:
42
42
  return self.deep_extend(super(hashkey, self).describe(), {
43
43
  'id': 'hashkey',
44
44
  'name': 'HashKey Global',
@@ -55,11 +55,15 @@ class hashkey(Exchange, ImplicitAPI):
55
55
  'future': False,
56
56
  'option': False,
57
57
  'addMargin': False,
58
+ 'borrowCrossMargin': False,
59
+ 'borrowIsolatedMargin': False,
60
+ 'borrowMargin': False,
58
61
  'cancelAllOrders': True,
59
62
  'cancelAllOrdersAfter': False,
60
63
  'cancelOrder': True,
61
64
  'cancelOrders': True,
62
65
  'cancelWithdraw': False,
66
+ 'closeAllPositions': False,
63
67
  'closePosition': False,
64
68
  'createConvertTrade': False,
65
69
  'createDepositAddress': False,
@@ -79,7 +83,14 @@ class hashkey(Exchange, ImplicitAPI):
79
83
  'createTrailingPercentOrder': False,
80
84
  'createTriggerOrder': True,
81
85
  'fetchAccounts': True,
86
+ 'fetchAllGreeks': False,
82
87
  'fetchBalance': True,
88
+ 'fetchBorrowInterest': False,
89
+ 'fetchBorrowRate': False,
90
+ 'fetchBorrowRateHistories': False,
91
+ 'fetchBorrowRateHistory': False,
92
+ 'fetchBorrowRates': False,
93
+ 'fetchBorrowRatesPerSymbol': False,
83
94
  'fetchCanceledAndClosedOrders': True,
84
95
  'fetchCanceledOrders': True,
85
96
  'fetchClosedOrder': True,
@@ -88,6 +99,8 @@ class hashkey(Exchange, ImplicitAPI):
88
99
  'fetchConvertQuote': False,
89
100
  'fetchConvertTrade': False,
90
101
  'fetchConvertTradeHistory': False,
102
+ 'fetchCrossBorrowRate': False,
103
+ 'fetchCrossBorrowRates': False,
91
104
  'fetchCurrencies': True,
92
105
  'fetchDepositAddress': True,
93
106
  'fetchDepositAddresses': False,
@@ -95,23 +108,42 @@ class hashkey(Exchange, ImplicitAPI):
95
108
  'fetchDeposits': True,
96
109
  'fetchDepositsWithdrawals': False,
97
110
  'fetchFundingHistory': False,
111
+ 'fetchFundingInterval': False,
112
+ 'fetchFundingIntervals': False,
98
113
  'fetchFundingRate': True,
99
114
  'fetchFundingRateHistory': True,
100
115
  'fetchFundingRates': True,
116
+ 'fetchGreeks': False,
101
117
  'fetchIndexOHLCV': False,
118
+ 'fetchIsolatedBorrowRate': False,
119
+ 'fetchIsolatedBorrowRates': False,
120
+ 'fetchIsolatedPositions': False,
102
121
  'fetchLedger': True,
103
122
  'fetchLeverage': True,
123
+ 'fetchLeverages': False,
104
124
  'fetchLeverageTiers': True,
125
+ 'fetchLiquidations': False,
126
+ 'fetchLongShortRatio': False,
127
+ 'fetchLongShortRatioHistory': False,
105
128
  'fetchMarginAdjustmentHistory': False,
106
129
  'fetchMarginMode': False,
130
+ 'fetchMarginModes': False,
107
131
  'fetchMarketLeverageTiers': 'emulated',
108
132
  'fetchMarkets': True,
109
133
  'fetchMarkOHLCV': False,
134
+ 'fetchMarkPrice': False,
135
+ 'fetchMarkPrices': False,
136
+ 'fetchMyLiquidations': False,
137
+ 'fetchMySettlementHistory': False,
110
138
  'fetchMyTrades': True,
111
139
  'fetchOHLCV': True,
140
+ 'fetchOpenInterest': False,
112
141
  'fetchOpenInterestHistory': False,
142
+ 'fetchOpenInterests': False,
113
143
  'fetchOpenOrder': False,
114
144
  'fetchOpenOrders': True,
145
+ 'fetchOption': False,
146
+ 'fetchOptionChain': False,
115
147
  'fetchOrder': True,
116
148
  'fetchOrderBook': True,
117
149
  'fetchOrders': False,
@@ -122,7 +154,9 @@ class hashkey(Exchange, ImplicitAPI):
122
154
  'fetchPositions': True,
123
155
  'fetchPositionsForSymbol': True,
124
156
  'fetchPositionsHistory': False,
157
+ 'fetchPositionsRisk': False,
125
158
  'fetchPremiumIndexOHLCV': False,
159
+ 'fetchSettlementHistory': False,
126
160
  'fetchStatus': True,
127
161
  'fetchTicker': True,
128
162
  'fetchTickers': True,
@@ -132,11 +166,16 @@ class hashkey(Exchange, ImplicitAPI):
132
166
  'fetchTradingFees': True, # for spot markets only
133
167
  'fetchTransactions': False,
134
168
  'fetchTransfers': False,
169
+ 'fetchUnderlyingAssets': False,
170
+ 'fetchVolatilityHistory': False,
135
171
  'fetchWithdrawals': True,
136
172
  'reduceMargin': False,
173
+ 'repayCrossMargin': False,
174
+ 'repayIsolatedMargin': False,
137
175
  'sandbox': False,
138
176
  'setLeverage': True,
139
177
  'setMargin': False,
178
+ 'setMarginMode': False,
140
179
  'setPositionMode': False,
141
180
  'transfer': True,
142
181
  'withdraw': True,
@@ -361,6 +400,85 @@ class hashkey(Exchange, ImplicitAPI):
361
400
  },
362
401
  'defaultNetwork': 'ERC20',
363
402
  },
403
+ 'features': {
404
+ 'default': {
405
+ 'sandbox': True,
406
+ 'createOrder': {
407
+ 'marginMode': False,
408
+ 'triggerPrice': False,
409
+ 'triggerPriceType': None,
410
+ 'triggerDirection': False,
411
+ 'stopLossPrice': False,
412
+ 'takeProfitPrice': False,
413
+ 'attachedStopLossTakeProfit': None,
414
+ 'timeInForce': {
415
+ 'IOC': True,
416
+ 'FOK': True,
417
+ 'PO': True,
418
+ 'GTD': False,
419
+ },
420
+ 'hedged': False,
421
+ 'trailing': False,
422
+ 'leverage': False,
423
+ 'marketBuyByCost': True,
424
+ 'marketBuyRequiresPrice': True, # todo fix
425
+ 'selfTradePrevention': True, # todo implement
426
+ 'iceberg': False,
427
+ },
428
+ 'createOrders': {
429
+ 'max': 20,
430
+ },
431
+ 'fetchMyTrades': {
432
+ 'marginMode': False,
433
+ 'limit': 1000,
434
+ 'daysBack': 30,
435
+ 'untilDays': 30,
436
+ 'symbolRequired': False,
437
+ },
438
+ 'fetchOrder': {
439
+ 'marginMode': False,
440
+ 'trigger': False,
441
+ 'trailing': False,
442
+ 'symbolRequired': False,
443
+ },
444
+ 'fetchOpenOrders': {
445
+ 'marginMode': False,
446
+ 'limit': 1000,
447
+ 'trigger': False,
448
+ 'trailing': False,
449
+ 'symbolRequired': False,
450
+ },
451
+ 'fetchOrders': None,
452
+ 'fetchClosedOrders': None, # todo
453
+ 'fetchOHLCV': {
454
+ 'limit': 1000,
455
+ },
456
+ },
457
+ 'spot': {
458
+ 'extends': 'default',
459
+ },
460
+ 'forDerivatives': {
461
+ 'extends': 'default',
462
+ 'createOrder': {
463
+ 'triggerPrice': True,
464
+ 'selfTradePrevention': True,
465
+ },
466
+ 'fetchOpenOrders': {
467
+ 'trigger': True,
468
+ 'limit': 500,
469
+ },
470
+ },
471
+ 'swap': {
472
+ 'linear': {
473
+ 'extends': 'forDerivatives',
474
+ },
475
+ 'inverse': None,
476
+ },
477
+ 'future': {
478
+ 'linear': None,
479
+ 'inverse': None,
480
+ },
481
+ },
364
482
  'commonCurrencies': {},
365
483
  'exceptions': {
366
484
  'exact': {
@@ -582,11 +700,7 @@ class hashkey(Exchange, ImplicitAPI):
582
700
  :param str [params.symbol]: the id of the market to fetch
583
701
  :returns dict[]: an array of objects representing market data
584
702
  """
585
- symbol: Str = None
586
703
  request: dict = {}
587
- symbol, params = self.handle_option_and_params(params, 'fetchMarkets', 'symbol')
588
- if symbol is not None:
589
- request['symbol'] = symbol
590
704
  response = await self.publicGetApiV1ExchangeInfo(self.extend(request, params))
591
705
  #
592
706
  # {
@@ -1076,47 +1190,43 @@ class hashkey(Exchange, ImplicitAPI):
1076
1190
  currecy = coins[i]
1077
1191
  currencyId = self.safe_string(currecy, 'coinId')
1078
1192
  code = self.safe_currency_code(currencyId)
1079
- allowWithdraw = self.safe_bool(currecy, 'allowWithdraw')
1080
- allowDeposit = self.safe_bool(currecy, 'allowDeposit')
1081
1193
  networks = self.safe_list(currecy, 'chainTypes')
1082
- networksById = self.safe_dict(self.options, 'networksById')
1083
1194
  parsedNetworks: dict = {}
1084
1195
  for j in range(0, len(networks)):
1085
1196
  network = networks[j]
1086
1197
  networkId = self.safe_string(network, 'chainType')
1087
- networkName = self.safe_string(networksById, networkId, networkId)
1088
- maxWithdrawQuantity = self.omit_zero(self.safe_string(network, 'maxWithdrawQuantity'))
1089
- networkDeposit = self.safe_bool(network, 'allowDeposit')
1090
- networkWithdraw = self.safe_bool(network, 'allowWithdraw')
1091
- parsedNetworks[networkName] = {
1198
+ networkCode = self.network_code_to_id(networkId)
1199
+ parsedNetworks[networkCode] = {
1092
1200
  'id': networkId,
1093
- 'network': networkName,
1201
+ 'network': networkCode,
1094
1202
  'limits': {
1095
1203
  'withdraw': {
1096
1204
  'min': self.safe_number(network, 'minWithdrawQuantity'),
1097
- 'max': self.parse_number(maxWithdrawQuantity),
1205
+ 'max': self.parse_number(self.omit_zero(self.safe_string(network, 'maxWithdrawQuantity'))),
1098
1206
  },
1099
1207
  'deposit': {
1100
1208
  'min': self.safe_number(network, 'minDepositQuantity'),
1101
1209
  'max': None,
1102
1210
  },
1103
1211
  },
1104
- 'active': networkDeposit and networkWithdraw,
1105
- 'deposit': networkDeposit,
1106
- 'withdraw': networkWithdraw,
1212
+ 'active': None,
1213
+ 'deposit': self.safe_bool(network, 'allowDeposit'),
1214
+ 'withdraw': self.safe_bool(network, 'allowWithdraw'),
1107
1215
  'fee': self.safe_number(network, 'withdrawFee'),
1108
1216
  'precision': None,
1109
1217
  'info': network,
1110
1218
  }
1111
- result[code] = {
1219
+ rawType = self.safe_string(currecy, 'tokenType')
1220
+ type = 'fiat' if (rawType == 'REAL_MONEY') else 'crypto'
1221
+ result[code] = self.safe_currency_structure({
1112
1222
  'id': currencyId,
1113
1223
  'code': code,
1114
1224
  'precision': None,
1115
- 'type': self.parse_currency_type(self.safe_string(currecy, 'tokenType')),
1225
+ 'type': type,
1116
1226
  'name': self.safe_string(currecy, 'coinFullName'),
1117
- 'active': allowWithdraw and allowDeposit,
1118
- 'deposit': allowDeposit,
1119
- 'withdraw': allowWithdraw,
1227
+ 'active': None,
1228
+ 'deposit': self.safe_bool(currecy, 'allowDeposit'),
1229
+ 'withdraw': self.safe_bool(currecy, 'allowWithdraw'),
1120
1230
  'fee': None,
1121
1231
  'limits': {
1122
1232
  'deposit': {
@@ -1130,18 +1240,9 @@ class hashkey(Exchange, ImplicitAPI):
1130
1240
  },
1131
1241
  'networks': parsedNetworks,
1132
1242
  'info': currecy,
1133
- }
1243
+ })
1134
1244
  return result
1135
1245
 
1136
- def parse_currency_type(self, type):
1137
- types = {
1138
- 'CHAIN_TOKEN': 'crypto',
1139
- 'ERC20_TOKEN': 'crypto',
1140
- 'BSC_TOKEN': 'crypto',
1141
- 'REAL_MONEY': 'fiat',
1142
- }
1143
- return self.safe_string(types, type)
1144
-
1145
1246
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
1146
1247
  """
1147
1248
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
@@ -1254,10 +1355,6 @@ class hashkey(Exchange, ImplicitAPI):
1254
1355
  if marketType == 'spot':
1255
1356
  if market is not None:
1256
1357
  request['symbol'] = market['id']
1257
- clientOrderId: Str = None
1258
- clientOrderId, params = self.handle_option_and_params(params, methodName, 'clientOrderId')
1259
- if clientOrderId is not None:
1260
- request['clientOrderId'] = clientOrderId
1261
1358
  if accountId is not None:
1262
1359
  request['accountId'] = accountId
1263
1360
  response = await self.privateGetApiV1AccountTrades(self.extend(request, params))
@@ -1386,9 +1483,14 @@ class hashkey(Exchange, ImplicitAPI):
1386
1483
  if isBuyer is not None:
1387
1484
  side = 'buy' if isBuyer else 'sell'
1388
1485
  takerOrMaker = None
1389
- isMaker = self.safe_bool_n(trade, ['isMaker', 'isMarker', 'ibm'])
1486
+ isMaker = self.safe_bool_n(trade, ['isMaker', 'isMarker'])
1390
1487
  if isMaker is not None:
1391
1488
  takerOrMaker = 'maker' if isMaker else 'taker'
1489
+ isBuyerMaker = self.safe_bool(trade, 'ibm')
1490
+ # if public trade
1491
+ if isBuyerMaker is not None:
1492
+ takerOrMaker = 'taker'
1493
+ side = 'sell' if isBuyerMaker else 'buy'
1392
1494
  feeCost = self.safe_string(trade, 'commission')
1393
1495
  feeCurrncyId = self.safe_string(trade, 'commissionAsset')
1394
1496
  feeInfo = self.safe_dict(trade, 'fee')
@@ -1601,10 +1703,6 @@ class hashkey(Exchange, ImplicitAPI):
1601
1703
  await self.load_markets()
1602
1704
  symbols = self.market_symbols(symbols)
1603
1705
  request: dict = {}
1604
- symbol: Str = None
1605
- symbol, params = self.handle_option_and_params(params, 'fetchLastPrices', 'symbol')
1606
- if symbol is not None:
1607
- request['symbol'] = symbol
1608
1706
  response = await self.publicGetQuoteV1TickerPrice(self.extend(request, params))
1609
1707
  #
1610
1708
  # [
@@ -1662,10 +1760,6 @@ class hashkey(Exchange, ImplicitAPI):
1662
1760
  balance = self.safe_dict(response, 0, {})
1663
1761
  return self.parse_swap_balance(balance)
1664
1762
  elif marketType == 'spot':
1665
- accountId: Str = None
1666
- accountId, params = self.handle_option_and_params(params, methodName, 'accountId')
1667
- if accountId is not None:
1668
- request['accountId'] = accountId
1669
1763
  response = await self.privateGetApiV1Account(self.extend(request, params))
1670
1764
  #
1671
1765
  # {
@@ -1905,7 +1999,7 @@ class hashkey(Exchange, ImplicitAPI):
1905
1999
  #
1906
2000
  return self.parse_transactions(response, currency, since, limit, {'type': 'withdrawal'})
1907
2001
 
1908
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
2002
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1909
2003
  """
1910
2004
  make a withdrawal
1911
2005
 
@@ -1931,18 +2025,10 @@ class hashkey(Exchange, ImplicitAPI):
1931
2025
  }
1932
2026
  if tag is not None:
1933
2027
  request['addressExt'] = tag
1934
- clientOrderId: Str = None
1935
- clientOrderId, params = self.handle_option_and_params(params, 'withdraw', 'clientOrderId')
1936
- if clientOrderId is not None:
1937
- request['clientOrderId'] = clientOrderId
1938
2028
  networkCode: Str = None
1939
2029
  networkCode, params = self.handle_network_code_and_params(params)
1940
2030
  if networkCode is not None:
1941
2031
  request['chainType'] = self.network_code_to_id(networkCode)
1942
- platform: Str = None
1943
- platform, params = self.handle_option_and_params(params, 'withdraw', 'platform')
1944
- if platform is not None:
1945
- request['platform'] = platform
1946
2032
  response = await self.privatePostApiV1AccountWithdraw(self.extend(request, params))
1947
2033
  #
1948
2034
  # {
@@ -2081,14 +2167,6 @@ class hashkey(Exchange, ImplicitAPI):
2081
2167
  'fromAccountId': fromAccount,
2082
2168
  'toAccountId': toAccount,
2083
2169
  }
2084
- clientOrderId: Str = None
2085
- clientOrderId, params = self.handle_option_and_params(params, 'transfer', 'clientOrderId')
2086
- if clientOrderId is not None:
2087
- request['clientOrderId'] = clientOrderId
2088
- remark: Str = None
2089
- remark, params = self.handle_option_and_params(params, 'transfer', 'remark')
2090
- if remark is not None:
2091
- request['remark'] = remark
2092
2170
  response = await self.privatePostApiV1AccountAssetTransfer(self.extend(request, params))
2093
2171
  #
2094
2172
  # {
@@ -2199,7 +2277,7 @@ class hashkey(Exchange, ImplicitAPI):
2199
2277
  :param int [params.until]: the latest time in ms to fetch entries for
2200
2278
  :param int [params.flowType]: trade, fee, transfer, deposit, withdrawal
2201
2279
  :param int [params.accountType]: spot, swap, custody
2202
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
2280
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
2203
2281
  """
2204
2282
  methodName = 'fetchLedger'
2205
2283
  if since is None:
@@ -2347,8 +2425,10 @@ class hashkey(Exchange, ImplicitAPI):
2347
2425
  market = self.market(symbol)
2348
2426
  if not market['spot']:
2349
2427
  raise NotSupported(self.id + ' createMarketBuyOrderWithCost() is supported for spot markets only')
2350
- params['cost'] = cost
2351
- return await self.create_order(symbol, 'market', 'buy', cost, None, params)
2428
+ req = {
2429
+ 'cost': cost,
2430
+ }
2431
+ return await self.create_order(symbol, 'market', 'buy', cost, None, self.extend(req, params))
2352
2432
 
2353
2433
  async def create_spot_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
2354
2434
  """
@@ -2926,10 +3006,6 @@ class hashkey(Exchange, ImplicitAPI):
2926
3006
  if marketType == 'spot':
2927
3007
  if clientOrderId is not None:
2928
3008
  request['origClientOrderId'] = clientOrderId
2929
- accountId: Str = None
2930
- accountId, params = self.handle_option_and_params(params, methodName, 'accountId')
2931
- if accountId is not None:
2932
- request['accountId'] = accountId
2933
3009
  response = await self.privateGetApiV1SpotOrder(self.extend(request, params))
2934
3010
  #
2935
3011
  # {
@@ -3065,14 +3141,6 @@ class hashkey(Exchange, ImplicitAPI):
3065
3141
  request['symbol'] = market['id']
3066
3142
  if limit is not None:
3067
3143
  request['limit'] = limit
3068
- orderId: Str = None
3069
- orderId, params = self.handle_option_and_params(params, methodName, 'orderId')
3070
- if orderId is not None:
3071
- request['orderId'] = orderId
3072
- side: Str = None
3073
- side, params = self.handle_option_and_params(params, methodName, 'side')
3074
- if side is not None:
3075
- request['side'] = side.upper()
3076
3144
  response = await self.privateGetApiV1SpotOpenOrders(self.extend(request, params))
3077
3145
  #
3078
3146
  # [
@@ -3138,10 +3206,6 @@ class hashkey(Exchange, ImplicitAPI):
3138
3206
  request['type'] = 'LIMIT'
3139
3207
  if limit is not None:
3140
3208
  request['limit'] = limit
3141
- fromOrderId: Str = None
3142
- fromOrderId, params = self.handle_option_and_params(params, methodName, 'fromOrderId')
3143
- if fromOrderId is not None:
3144
- request['fromOrderId'] = fromOrderId
3145
3209
  response = None
3146
3210
  accountId: Str = None
3147
3211
  accountId, params = self.handle_option_and_params(params, methodName, 'accountId')
@@ -3240,14 +3304,6 @@ class hashkey(Exchange, ImplicitAPI):
3240
3304
  if marketType == 'spot':
3241
3305
  if market is not None:
3242
3306
  request['symbol'] = market['id']
3243
- orderId: Str = None
3244
- orderId, params = self.handle_option_and_params(params, methodName, 'orderId')
3245
- if orderId is not None:
3246
- request['orderId'] = orderId
3247
- side: Str = None
3248
- side, params = self.handle_option_and_params(params, methodName, 'side')
3249
- if side is not None:
3250
- request['side'] = side.upper()
3251
3307
  if accountId is not None:
3252
3308
  request['accountId'] = accountId
3253
3309
  response = await self.privateGetApiV1SpotTradeOrders(self.extend(request, params))
@@ -3290,10 +3346,6 @@ class hashkey(Exchange, ImplicitAPI):
3290
3346
  request['type'] = 'STOP'
3291
3347
  else:
3292
3348
  request['type'] = 'LIMIT'
3293
- fromOrderId: Str = None
3294
- fromOrderId, params = self.handle_option_and_params(params, methodName, 'fromOrderId')
3295
- if fromOrderId is not None:
3296
- request['fromOrderId'] = fromOrderId
3297
3349
  if accountId is not None:
3298
3350
  request['subAccountId'] = accountId
3299
3351
  response = await self.privateGetApiV1FuturesSubAccountHistoryOrders(self.extend(request, params))
@@ -3337,10 +3389,8 @@ class hashkey(Exchange, ImplicitAPI):
3337
3389
  raise BadRequest(self.id + ' ' + methodName + '() type parameter can not be "' + paramsType + '". It should define the type of the market("spot" or "swap"). To define the type of an order use the trigger parameter(True for trigger orders)')
3338
3390
 
3339
3391
  def handle_trigger_option_and_params(self, params: object, methodName: str, defaultValue=None):
3340
- isStop = defaultValue
3341
- isStop, params = self.handle_option_and_params(params, methodName, 'stop', isStop)
3342
- isTrigger = isStop
3343
- isTrigger, params = self.handle_option_and_params(params, methodName, 'trigger', isTrigger)
3392
+ isTrigger = defaultValue
3393
+ isTrigger, params = self.handle_option_and_params_2(params, methodName, 'stop', 'trigger', isTrigger)
3344
3394
  return [isTrigger, params]
3345
3395
 
3346
3396
  def parse_order(self, order: dict, market: Market = None) -> Order:
@@ -3479,7 +3529,6 @@ class hashkey(Exchange, ImplicitAPI):
3479
3529
  feeCurrncyId = self.safe_string(order, 'feeCoin')
3480
3530
  if feeCurrncyId == '':
3481
3531
  feeCurrncyId = None
3482
- triggerPrice = self.omit_zero(self.safe_string(order, 'stopPrice'))
3483
3532
  return self.safe_order({
3484
3533
  'id': self.safe_string(order, 'orderId'),
3485
3534
  'clientOrderId': self.safe_string(order, 'clientOrderId'),
@@ -3497,8 +3546,7 @@ class hashkey(Exchange, ImplicitAPI):
3497
3546
  'amount': self.omit_zero(self.safe_string(order, 'origQty')),
3498
3547
  'filled': self.safe_string(order, 'executedQty'),
3499
3548
  'remaining': None,
3500
- 'stopPrice': triggerPrice,
3501
- 'triggerPrice': triggerPrice,
3549
+ 'triggerPrice': self.omit_zero(self.safe_string(order, 'stopPrice')),
3502
3550
  'takeProfitPrice': None,
3503
3551
  'stopLossPrice': None,
3504
3552
  'cost': self.omit_zero(self.safe_string_2(order, 'cumulativeQuoteQty', 'cummulativeQuoteQty')),
@@ -3604,8 +3652,7 @@ class hashkey(Exchange, ImplicitAPI):
3604
3652
  # {"symbol": "ETHUSDT-PERPETUAL", "rate": "0.0001", "nextSettleTime": "1722297600000"}
3605
3653
  # ]
3606
3654
  #
3607
- fundingRates = self.parse_funding_rates(response)
3608
- return self.filter_by_array(fundingRates, 'symbol', symbols)
3655
+ return self.parse_funding_rates(response, symbols)
3609
3656
 
3610
3657
  def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
3611
3658
  #
@@ -3732,10 +3779,6 @@ class hashkey(Exchange, ImplicitAPI):
3732
3779
  request: dict = {
3733
3780
  'symbol': market['id'],
3734
3781
  }
3735
- side: Str = None
3736
- side, params = self.handle_option_and_params(params, methodName, 'side')
3737
- if side is not None:
3738
- request['side'] = side.upper()
3739
3782
  response = await self.privateGetApiV1FuturesPositions(self.extend(request, params))
3740
3783
  #
3741
3784
  # [
@@ -3834,7 +3877,7 @@ class hashkey(Exchange, ImplicitAPI):
3834
3877
  'shortLeverage': leverageValue,
3835
3878
  }
3836
3879
 
3837
- async def set_leverage(self, leverage: Int, symbol: Str = None, params={}):
3880
+ async def set_leverage(self, leverage: int, symbol: Str = None, params={}):
3838
3881
  """
3839
3882
  set the level of leverage for a market
3840
3883