ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +8 -8
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,8 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.coinmetro import ImplicitAPI
8
- from ccxt.base.types import Balances, Currencies, Currency, IndexType, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
8
+ import asyncio
9
+ from ccxt.base.types import Any, Balances, Currencies, Currency, IndexType, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
9
10
  from typing import List
10
11
  from ccxt.base.errors import ExchangeError
11
12
  from ccxt.base.errors import PermissionDenied
@@ -22,7 +23,7 @@ from ccxt.base.precise import Precise
22
23
 
23
24
  class coinmetro(Exchange, ImplicitAPI):
24
25
 
25
- def describe(self):
26
+ def describe(self) -> Any:
26
27
  return self.deep_extend(super(coinmetro, self).describe(), {
27
28
  'id': 'coinmetro',
28
29
  'name': 'Coinmetro',
@@ -219,7 +220,79 @@ class coinmetro(Exchange, ImplicitAPI):
219
220
  # exchange-specific options
220
221
  'options': {
221
222
  'currenciesByIdForParseMarket': None,
222
- 'currencyIdsListForParseMarket': None,
223
+ 'currencyIdsListForParseMarket': ['QRDO'],
224
+ },
225
+ 'features': {
226
+ 'spot': {
227
+ 'sandbox': True,
228
+ 'createOrder': {
229
+ 'marginMode': True, # todo implement
230
+ 'triggerPrice': True,
231
+ 'triggerPriceType': None,
232
+ 'triggerDirection': False,
233
+ 'stopLossPrice': False, # todo
234
+ 'takeProfitPrice': False, # todo
235
+ 'attachedStopLossTakeProfit': {
236
+ 'triggerPriceType': None,
237
+ 'price': False,
238
+ },
239
+ 'timeInForce': {
240
+ 'IOC': True,
241
+ 'FOK': True,
242
+ 'PO': False,
243
+ 'GTD': True,
244
+ },
245
+ 'hedged': False,
246
+ 'trailing': False,
247
+ 'leverage': False,
248
+ 'marketBuyByCost': True,
249
+ 'marketBuyRequiresPrice': False,
250
+ 'selfTradePrevention': False,
251
+ 'iceberg': True,
252
+ },
253
+ 'createOrders': None,
254
+ 'fetchMyTrades': {
255
+ 'marginMode': False,
256
+ 'limit': None,
257
+ 'daysBack': 100000,
258
+ 'untilDays': None,
259
+ 'symbolRequired': False,
260
+ },
261
+ 'fetchOrder': {
262
+ 'marginMode': False,
263
+ 'trigger': False,
264
+ 'trailing': False,
265
+ 'symbolRequired': False,
266
+ },
267
+ 'fetchOpenOrders': {
268
+ 'marginMode': False,
269
+ 'limit': None,
270
+ 'trigger': False,
271
+ 'trailing': False,
272
+ 'symbolRequired': False,
273
+ },
274
+ 'fetchOrders': {
275
+ 'marginMode': False,
276
+ 'limit': None,
277
+ 'daysBack': 100000,
278
+ 'untilDays': None,
279
+ 'trigger': False,
280
+ 'trailing': False,
281
+ 'symbolRequired': False,
282
+ },
283
+ 'fetchClosedOrders': None,
284
+ 'fetchOHLCV': {
285
+ 'limit': 1000,
286
+ },
287
+ },
288
+ 'swap': {
289
+ 'linear': None,
290
+ 'inverse': None,
291
+ },
292
+ 'future': {
293
+ 'linear': None,
294
+ 'inverse': None,
295
+ },
223
296
  },
224
297
  'exceptions': {
225
298
  # https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
@@ -261,7 +334,9 @@ class coinmetro(Exchange, ImplicitAPI):
261
334
  async def fetch_currencies(self, params={}) -> Currencies:
262
335
  """
263
336
  fetches all available currencies on an exchange
264
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
337
+
338
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
339
+
265
340
  :param dict [params]: extra parameters specific to the exchange API endpoint
266
341
  :returns dict: an associative dictionary of currencies
267
342
  """
@@ -313,43 +388,64 @@ class coinmetro(Exchange, ImplicitAPI):
313
388
  currency = response[i]
314
389
  id = self.safe_string(currency, 'symbol')
315
390
  code = self.safe_currency_code(id)
316
- withdraw = self.safe_value(currency, 'canWithdraw')
317
- deposit = self.safe_value(currency, 'canDeposit')
318
- canTrade = self.safe_value(currency, 'canTrade')
319
- active = withdraw if canTrade else True
320
- minAmount = self.safe_number(currency, 'minQty')
391
+ typeRaw = self.safe_string(currency, 'type')
392
+ type = None
393
+ if typeRaw == 'coin' or typeRaw == 'token' or typeRaw == 'erc20':
394
+ type = 'crypto'
395
+ elif typeRaw == 'fiat':
396
+ type = 'fiat'
397
+ precisionDigits = self.safe_string_2(currency, 'digits', 'notabeneDecimals')
398
+ if code == 'RENDER':
399
+ # RENDER is an exception(with broken info)
400
+ precisionDigits = '4'
321
401
  result[code] = self.safe_currency_structure({
322
402
  'id': id,
323
403
  'code': code,
324
404
  'name': code,
405
+ 'type': type,
325
406
  'info': currency,
326
- 'active': active,
327
- 'deposit': deposit,
328
- 'withdraw': withdraw,
407
+ 'active': self.safe_bool(currency, 'canTrade'),
408
+ 'deposit': self.safe_bool(currency, 'canDeposit'),
409
+ 'withdraw': self.safe_bool(currency, 'canWithdraw'),
329
410
  'fee': None,
330
- 'precision': self.parse_number(self.parse_precision(self.safe_string(currency, 'digits'))),
411
+ 'precision': self.parse_number(self.parse_precision(precisionDigits)),
331
412
  'limits': {
332
- 'amount': {'min': minAmount, 'max': None},
333
- 'withdraw': {'min': None, 'max': None},
413
+ 'amount': {
414
+ 'min': self.safe_number(currency, 'minQty'),
415
+ 'max': None,
416
+ },
417
+ 'withdraw': {
418
+ 'min': None,
419
+ 'max': None,
420
+ },
334
421
  },
335
422
  'networks': {},
336
423
  })
337
424
  if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
338
425
  currenciesById = self.index_by(result, 'id')
339
426
  self.options['currenciesByIdForParseMarket'] = currenciesById
340
- self.options['currencyIdsListForParseMarket'] = list(currenciesById.keys())
427
+ currentCurrencyIdsList = self.safe_list(self.options, 'currencyIdsListForParseMarket', [])
428
+ currencyIdsList = list(currenciesById.keys())
429
+ for i in range(0, len(currencyIdsList)):
430
+ currentCurrencyIdsList.append(currencyIdsList[i])
431
+ self.options['currencyIdsListForParseMarket'] = currentCurrencyIdsList
341
432
  return result
342
433
 
343
434
  async def fetch_markets(self, params={}) -> List[Market]:
344
435
  """
345
436
  retrieves data on all markets for coinmetro
346
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
437
+
438
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
439
+
347
440
  :param dict [params]: extra parameters specific to the exchange API endpoint
348
441
  :returns dict[]: an array of objects representing market data
349
442
  """
350
- response = await self.publicGetMarkets(params)
443
+ promises = []
444
+ promises.append(self.publicGetMarkets(params))
351
445
  if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
352
- await self.fetch_currencies()
446
+ promises.append(self.fetch_currencies())
447
+ responses = await asyncio.gather(*promises)
448
+ response = responses[0]
353
449
  #
354
450
  # [
355
451
  # {
@@ -365,7 +461,14 @@ class coinmetro(Exchange, ImplicitAPI):
365
461
  # ...
366
462
  # ]
367
463
  #
368
- return self.parse_markets(response)
464
+ result = []
465
+ for i in range(0, len(response)):
466
+ market = self.parse_market(response[i])
467
+ # there are several broken(unavailable info) markets
468
+ if market['base'] is None or market['quote'] is None:
469
+ continue
470
+ result.append(market)
471
+ return result
369
472
 
370
473
  def parse_market(self, market: dict) -> Market:
371
474
  id = self.safe_string(market, 'pair')
@@ -434,10 +537,19 @@ class coinmetro(Exchange, ImplicitAPI):
434
537
  baseId = None
435
538
  quoteId = None
436
539
  currencyIds = self.safe_value(self.options, 'currencyIdsListForParseMarket', [])
540
+ # Bubble sort by length(longest first)
541
+ currencyIdsLength = len(currencyIds)
542
+ for i in range(0, currencyIdsLength):
543
+ for j in range(0, currencyIdsLength - i - 1):
544
+ a = currencyIds[j]
545
+ b = currencyIds[j + 1]
546
+ if len(a) < len(b):
547
+ currencyIds[j] = b
548
+ currencyIds[j + 1] = a
437
549
  for i in range(0, len(currencyIds)):
438
550
  currencyId = currencyIds[i]
439
551
  entryIndex = marketId.find(currencyId)
440
- if entryIndex != -1:
552
+ if entryIndex == 0:
441
553
  restId = marketId.replace(currencyId, '')
442
554
  if self.in_array(restId, currencyIds):
443
555
  if entryIndex == 0:
@@ -468,7 +580,9 @@ class coinmetro(Exchange, ImplicitAPI):
468
580
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
469
581
  """
470
582
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
471
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
583
+
584
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
585
+
472
586
  :param str symbol: unified symbol of the market to fetch OHLCV data for
473
587
  :param str timeframe: the length of time each candle represents
474
588
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -541,7 +655,9 @@ class coinmetro(Exchange, ImplicitAPI):
541
655
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
542
656
  """
543
657
  get the list of most recent trades for a particular symbol
544
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
658
+
659
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
660
+
545
661
  :param str symbol: unified symbol of the market to fetch trades for
546
662
  :param int [since]: timestamp in ms of the earliest trade to fetch
547
663
  :param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
@@ -593,7 +709,9 @@ class coinmetro(Exchange, ImplicitAPI):
593
709
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
594
710
  """
595
711
  fetch all trades made by the user
596
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
712
+
713
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
714
+
597
715
  :param str symbol: unified market symbol
598
716
  :param int [since]: the earliest time in ms to fetch trades for
599
717
  :param int [limit]: the maximum number of trades structures to retrieve(default 500, max 1000)
@@ -698,7 +816,9 @@ class coinmetro(Exchange, ImplicitAPI):
698
816
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
699
817
  """
700
818
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
701
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
819
+
820
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
821
+
702
822
  :param str symbol: unified symbol of the market to fetch the order book for
703
823
  :param int [limit]: the maximum amount of order book entries to return(default 100, max 200)
704
824
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -761,7 +881,9 @@ class coinmetro(Exchange, ImplicitAPI):
761
881
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
762
882
  """
763
883
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
764
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
884
+
885
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
886
+
765
887
  :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
766
888
  :param dict [params]: extra parameters specific to the exchange API endpoint
767
889
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -837,7 +959,9 @@ class coinmetro(Exchange, ImplicitAPI):
837
959
  async def fetch_bids_asks(self, symbols: Strings = None, params={}):
838
960
  """
839
961
  fetches the bid and ask price and volume for multiple markets
840
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
962
+
963
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
964
+
841
965
  :param str[] [symbols]: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
842
966
  :param dict [params]: extra parameters specific to the exchange API endpoint
843
967
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -903,7 +1027,9 @@ class coinmetro(Exchange, ImplicitAPI):
903
1027
  async def fetch_balance(self, params={}) -> Balances:
904
1028
  """
905
1029
  query for balance and get the amount of funds available for trading or funds locked in orders
906
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#741a1dcc-7307-40d0-acca-28d003d1506a
1030
+
1031
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#741a1dcc-7307-40d0-acca-28d003d1506a
1032
+
907
1033
  :param dict [params]: extra parameters specific to the exchange API endpoint
908
1034
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
909
1035
  """
@@ -948,16 +1074,18 @@ class coinmetro(Exchange, ImplicitAPI):
948
1074
  result[code] = account
949
1075
  return self.safe_balance(result)
950
1076
 
951
- async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1077
+ async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
952
1078
  """
953
- fetch the history of changes, actions done by the user or operations that altered balance of the user
954
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
955
- :param str code: unified currency code, default is None
1079
+ fetch the history of changes, actions done by the user or operations that altered the balance of the user
1080
+
1081
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
1082
+
1083
+ :param str [code]: unified currency code, default is None
956
1084
  :param int [since]: timestamp in ms of the earliest ledger entry, default is None
957
- :param int [limit]: max number of ledger entrys to return(default 200, max 500)
1085
+ :param int [limit]: max number of ledger entries to return(default 200, max 500)
958
1086
  :param dict [params]: extra parameters specific to the exchange API endpoint
959
1087
  :param int [params.until]: the latest time in ms to fetch entries for
960
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
1088
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
961
1089
  """
962
1090
  await self.load_markets()
963
1091
  request: dict = {}
@@ -1070,7 +1198,7 @@ class coinmetro(Exchange, ImplicitAPI):
1070
1198
  ledger.append(rawLedgerEntry)
1071
1199
  return self.parse_ledger(ledger, currency, since, limit)
1072
1200
 
1073
- def parse_ledger_entry(self, item: dict, currency: Currency = None):
1201
+ def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
1074
1202
  datetime = self.safe_string(item, 'timestamp')
1075
1203
  currencyId = self.safe_string(item, 'currencyId')
1076
1204
  item = self.omit(item, 'currencyId')
@@ -1135,12 +1263,14 @@ class coinmetro(Exchange, ImplicitAPI):
1135
1263
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1136
1264
  """
1137
1265
  create a trade order
1138
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
1266
+
1267
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
1268
+
1139
1269
  :param str symbol: unified symbol of the market to create an order in
1140
1270
  :param str type: 'market' or 'limit'
1141
1271
  :param str side: 'buy' or 'sell'
1142
1272
  :param float amount: how much of currency you want to trade in units of base currency
1143
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1273
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1144
1274
  :param dict [params]: extra parameters specific to the exchange API endpoint
1145
1275
  :param float [params.cost]: the quote quantity that can be used alternative for the amount in market orders
1146
1276
  :param str [params.timeInForce]: "GTC", "IOC", "FOK", "GTD"
@@ -1158,32 +1288,32 @@ class coinmetro(Exchange, ImplicitAPI):
1158
1288
  request: dict = {
1159
1289
  }
1160
1290
  request['orderType'] = type
1161
- precisedAmount = None
1291
+ formattedAmount = None
1162
1292
  if amount is not None:
1163
- precisedAmount = self.amount_to_precision(symbol, amount)
1293
+ formattedAmount = self.amount_to_precision(symbol, amount)
1164
1294
  cost = self.safe_value(params, 'cost')
1165
1295
  params = self.omit(params, 'cost')
1166
1296
  if type == 'limit':
1167
1297
  if (price is None) and (cost is None):
1168
1298
  raise ArgumentsRequired(self.id + ' createOrder() requires a price or params.cost argument for a ' + type + ' order')
1169
1299
  elif (price is not None) and (amount is not None):
1170
- costString = Precise.string_mul(self.number_to_string(price), self.number_to_string(precisedAmount))
1300
+ costString = Precise.string_mul(self.number_to_string(price), self.number_to_string(formattedAmount))
1171
1301
  cost = self.parse_to_numeric(costString)
1172
1302
  precisedCost = None
1173
1303
  if cost is not None:
1174
1304
  precisedCost = self.cost_to_precision(symbol, cost)
1175
1305
  if side == 'sell':
1176
- request = self.handle_create_order_side(market['baseId'], market['quoteId'], precisedAmount, precisedCost, request)
1306
+ request = self.handle_create_order_side(market['baseId'], market['quoteId'], formattedAmount, precisedCost, request)
1177
1307
  elif side == 'buy':
1178
- request = self.handle_create_order_side(market['quoteId'], market['baseId'], precisedCost, precisedAmount, request)
1308
+ request = self.handle_create_order_side(market['quoteId'], market['baseId'], precisedCost, formattedAmount, request)
1179
1309
  timeInForce = self.safe_value(params, 'timeInForce')
1180
1310
  if timeInForce is not None:
1181
1311
  params = self.omit(params, 'timeInForce')
1182
1312
  request['timeInForce'] = self.encode_order_time_in_force(timeInForce)
1183
- stopPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
1184
- if stopPrice is not None:
1313
+ triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
1314
+ if triggerPrice is not None:
1185
1315
  params = self.omit(params, ['triggerPrice'])
1186
- request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
1316
+ request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
1187
1317
  userData = self.safe_value(params, 'userData', {})
1188
1318
  comment = self.safe_string_2(params, 'clientOrderId', 'comment')
1189
1319
  if comment is not None:
@@ -1251,8 +1381,10 @@ class coinmetro(Exchange, ImplicitAPI):
1251
1381
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1252
1382
  """
1253
1383
  cancels an open order
1254
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
1255
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1384
+
1385
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
1386
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1387
+
1256
1388
  :param str id: order id
1257
1389
  :param str symbol: not used by coinmetro cancelOrder()
1258
1390
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1296,7 +1428,9 @@ class coinmetro(Exchange, ImplicitAPI):
1296
1428
  async def close_position(self, symbol: str, side: OrderSide = None, params={}):
1297
1429
  """
1298
1430
  closes an open position
1299
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1431
+
1432
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1433
+
1300
1434
  :param str symbol: not used by coinmetro closePosition()
1301
1435
  :param str [side]: not used by coinmetro closePosition()
1302
1436
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1346,7 +1480,9 @@ class coinmetro(Exchange, ImplicitAPI):
1346
1480
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1347
1481
  """
1348
1482
  fetch all unfilled currently open orders
1349
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
1483
+
1484
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
1485
+
1350
1486
  :param str symbol: unified market symbol
1351
1487
  :param int [since]: the earliest time in ms to fetch open orders for
1352
1488
  :param int [limit]: the maximum number of open order structures to retrieve
@@ -1367,7 +1503,9 @@ class coinmetro(Exchange, ImplicitAPI):
1367
1503
  async def fetch_canceled_and_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1368
1504
  """
1369
1505
  fetches information on multiple canceled and closed orders made by the user
1370
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
1506
+
1507
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
1508
+
1371
1509
  :param str symbol: unified market symbol of the market orders were made in
1372
1510
  :param int [since]: the earliest time in ms to fetch orders for
1373
1511
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1387,7 +1525,9 @@ class coinmetro(Exchange, ImplicitAPI):
1387
1525
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1388
1526
  """
1389
1527
  fetches information on an order made by the user
1390
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
1528
+
1529
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
1530
+
1391
1531
  :param int|str id: order id
1392
1532
  :param str symbol: not used by coinmetro fetchOrder()
1393
1533
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1674,7 +1814,6 @@ class coinmetro(Exchange, ImplicitAPI):
1674
1814
  }
1675
1815
  trades = self.safe_value(order, 'fills', [])
1676
1816
  userData = self.safe_value(order, 'userData', {})
1677
- triggerPrice = self.safe_string(order, 'stopPrice')
1678
1817
  clientOrderId = self.safe_string(userData, 'comment')
1679
1818
  takeProfitPrice = self.safe_string(userData, 'takeProfit')
1680
1819
  stopLossPrice = self.safe_string(userData, 'stopLoss')
@@ -1690,7 +1829,7 @@ class coinmetro(Exchange, ImplicitAPI):
1690
1829
  'timeInForce': self.parse_order_time_in_force(self.safe_integer(order, 'timeInForce')),
1691
1830
  'side': side,
1692
1831
  'price': price,
1693
- 'triggerPrice': triggerPrice,
1832
+ 'triggerPrice': self.safe_string(order, 'stopPrice'),
1694
1833
  'takeProfitPrice': takeProfitPrice,
1695
1834
  'stopLossPrice': stopLossPrice,
1696
1835
  'average': None,
@@ -1717,7 +1856,9 @@ class coinmetro(Exchange, ImplicitAPI):
1717
1856
  async def borrow_cross_margin(self, code: str, amount: float, params={}):
1718
1857
  """
1719
1858
  create a loan to borrow margin
1720
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
1859
+
1860
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
1861
+
1721
1862
  :param str code: unified currency code of the currency to borrow
1722
1863
  :param float amount: the amount to borrow
1723
1864
  :param dict [params]: extra parameters specific to the exchange API endpoint