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
ccxt/coinmetro.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.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
+ from ccxt.base.types import Any, Balances, Currencies, Currency, IndexType, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import PermissionDenied
@@ -22,7 +22,7 @@ from ccxt.base.precise import Precise
22
22
 
23
23
  class coinmetro(Exchange, ImplicitAPI):
24
24
 
25
- def describe(self):
25
+ def describe(self) -> Any:
26
26
  return self.deep_extend(super(coinmetro, self).describe(), {
27
27
  'id': 'coinmetro',
28
28
  'name': 'Coinmetro',
@@ -219,7 +219,79 @@ class coinmetro(Exchange, ImplicitAPI):
219
219
  # exchange-specific options
220
220
  'options': {
221
221
  'currenciesByIdForParseMarket': None,
222
- 'currencyIdsListForParseMarket': None,
222
+ 'currencyIdsListForParseMarket': ['QRDO'],
223
+ },
224
+ 'features': {
225
+ 'spot': {
226
+ 'sandbox': True,
227
+ 'createOrder': {
228
+ 'marginMode': True, # todo implement
229
+ 'triggerPrice': True,
230
+ 'triggerPriceType': None,
231
+ 'triggerDirection': False,
232
+ 'stopLossPrice': False, # todo
233
+ 'takeProfitPrice': False, # todo
234
+ 'attachedStopLossTakeProfit': {
235
+ 'triggerPriceType': None,
236
+ 'price': False,
237
+ },
238
+ 'timeInForce': {
239
+ 'IOC': True,
240
+ 'FOK': True,
241
+ 'PO': False,
242
+ 'GTD': True,
243
+ },
244
+ 'hedged': False,
245
+ 'trailing': False,
246
+ 'leverage': False,
247
+ 'marketBuyByCost': True,
248
+ 'marketBuyRequiresPrice': False,
249
+ 'selfTradePrevention': False,
250
+ 'iceberg': True,
251
+ },
252
+ 'createOrders': None,
253
+ 'fetchMyTrades': {
254
+ 'marginMode': False,
255
+ 'limit': None,
256
+ 'daysBack': 100000,
257
+ 'untilDays': None,
258
+ 'symbolRequired': False,
259
+ },
260
+ 'fetchOrder': {
261
+ 'marginMode': False,
262
+ 'trigger': False,
263
+ 'trailing': False,
264
+ 'symbolRequired': False,
265
+ },
266
+ 'fetchOpenOrders': {
267
+ 'marginMode': False,
268
+ 'limit': None,
269
+ 'trigger': False,
270
+ 'trailing': False,
271
+ 'symbolRequired': False,
272
+ },
273
+ 'fetchOrders': {
274
+ 'marginMode': False,
275
+ 'limit': None,
276
+ 'daysBack': 100000,
277
+ 'untilDays': None,
278
+ 'trigger': False,
279
+ 'trailing': False,
280
+ 'symbolRequired': False,
281
+ },
282
+ 'fetchClosedOrders': None,
283
+ 'fetchOHLCV': {
284
+ 'limit': 1000,
285
+ },
286
+ },
287
+ 'swap': {
288
+ 'linear': None,
289
+ 'inverse': None,
290
+ },
291
+ 'future': {
292
+ 'linear': None,
293
+ 'inverse': None,
294
+ },
223
295
  },
224
296
  'exceptions': {
225
297
  # https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
@@ -261,7 +333,9 @@ class coinmetro(Exchange, ImplicitAPI):
261
333
  def fetch_currencies(self, params={}) -> Currencies:
262
334
  """
263
335
  fetches all available currencies on an exchange
264
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
336
+
337
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
338
+
265
339
  :param dict [params]: extra parameters specific to the exchange API endpoint
266
340
  :returns dict: an associative dictionary of currencies
267
341
  """
@@ -313,43 +387,64 @@ class coinmetro(Exchange, ImplicitAPI):
313
387
  currency = response[i]
314
388
  id = self.safe_string(currency, 'symbol')
315
389
  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')
390
+ typeRaw = self.safe_string(currency, 'type')
391
+ type = None
392
+ if typeRaw == 'coin' or typeRaw == 'token' or typeRaw == 'erc20':
393
+ type = 'crypto'
394
+ elif typeRaw == 'fiat':
395
+ type = 'fiat'
396
+ precisionDigits = self.safe_string_2(currency, 'digits', 'notabeneDecimals')
397
+ if code == 'RENDER':
398
+ # RENDER is an exception(with broken info)
399
+ precisionDigits = '4'
321
400
  result[code] = self.safe_currency_structure({
322
401
  'id': id,
323
402
  'code': code,
324
403
  'name': code,
404
+ 'type': type,
325
405
  'info': currency,
326
- 'active': active,
327
- 'deposit': deposit,
328
- 'withdraw': withdraw,
406
+ 'active': self.safe_bool(currency, 'canTrade'),
407
+ 'deposit': self.safe_bool(currency, 'canDeposit'),
408
+ 'withdraw': self.safe_bool(currency, 'canWithdraw'),
329
409
  'fee': None,
330
- 'precision': self.parse_number(self.parse_precision(self.safe_string(currency, 'digits'))),
410
+ 'precision': self.parse_number(self.parse_precision(precisionDigits)),
331
411
  'limits': {
332
- 'amount': {'min': minAmount, 'max': None},
333
- 'withdraw': {'min': None, 'max': None},
412
+ 'amount': {
413
+ 'min': self.safe_number(currency, 'minQty'),
414
+ 'max': None,
415
+ },
416
+ 'withdraw': {
417
+ 'min': None,
418
+ 'max': None,
419
+ },
334
420
  },
335
421
  'networks': {},
336
422
  })
337
423
  if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
338
424
  currenciesById = self.index_by(result, 'id')
339
425
  self.options['currenciesByIdForParseMarket'] = currenciesById
340
- self.options['currencyIdsListForParseMarket'] = list(currenciesById.keys())
426
+ currentCurrencyIdsList = self.safe_list(self.options, 'currencyIdsListForParseMarket', [])
427
+ currencyIdsList = list(currenciesById.keys())
428
+ for i in range(0, len(currencyIdsList)):
429
+ currentCurrencyIdsList.append(currencyIdsList[i])
430
+ self.options['currencyIdsListForParseMarket'] = currentCurrencyIdsList
341
431
  return result
342
432
 
343
433
  def fetch_markets(self, params={}) -> List[Market]:
344
434
  """
345
435
  retrieves data on all markets for coinmetro
346
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
436
+
437
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
438
+
347
439
  :param dict [params]: extra parameters specific to the exchange API endpoint
348
440
  :returns dict[]: an array of objects representing market data
349
441
  """
350
- response = self.publicGetMarkets(params)
442
+ promises = []
443
+ promises.append(self.publicGetMarkets(params))
351
444
  if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
352
- self.fetch_currencies()
445
+ promises.append(self.fetch_currencies())
446
+ responses = promises
447
+ response = responses[0]
353
448
  #
354
449
  # [
355
450
  # {
@@ -365,7 +460,14 @@ class coinmetro(Exchange, ImplicitAPI):
365
460
  # ...
366
461
  # ]
367
462
  #
368
- return self.parse_markets(response)
463
+ result = []
464
+ for i in range(0, len(response)):
465
+ market = self.parse_market(response[i])
466
+ # there are several broken(unavailable info) markets
467
+ if market['base'] is None or market['quote'] is None:
468
+ continue
469
+ result.append(market)
470
+ return result
369
471
 
370
472
  def parse_market(self, market: dict) -> Market:
371
473
  id = self.safe_string(market, 'pair')
@@ -434,10 +536,19 @@ class coinmetro(Exchange, ImplicitAPI):
434
536
  baseId = None
435
537
  quoteId = None
436
538
  currencyIds = self.safe_value(self.options, 'currencyIdsListForParseMarket', [])
539
+ # Bubble sort by length(longest first)
540
+ currencyIdsLength = len(currencyIds)
541
+ for i in range(0, currencyIdsLength):
542
+ for j in range(0, currencyIdsLength - i - 1):
543
+ a = currencyIds[j]
544
+ b = currencyIds[j + 1]
545
+ if len(a) < len(b):
546
+ currencyIds[j] = b
547
+ currencyIds[j + 1] = a
437
548
  for i in range(0, len(currencyIds)):
438
549
  currencyId = currencyIds[i]
439
550
  entryIndex = marketId.find(currencyId)
440
- if entryIndex != -1:
551
+ if entryIndex == 0:
441
552
  restId = marketId.replace(currencyId, '')
442
553
  if self.in_array(restId, currencyIds):
443
554
  if entryIndex == 0:
@@ -468,7 +579,9 @@ class coinmetro(Exchange, ImplicitAPI):
468
579
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
469
580
  """
470
581
  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
582
+
583
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
584
+
472
585
  :param str symbol: unified symbol of the market to fetch OHLCV data for
473
586
  :param str timeframe: the length of time each candle represents
474
587
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -541,7 +654,9 @@ class coinmetro(Exchange, ImplicitAPI):
541
654
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
542
655
  """
543
656
  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
657
+
658
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
659
+
545
660
  :param str symbol: unified symbol of the market to fetch trades for
546
661
  :param int [since]: timestamp in ms of the earliest trade to fetch
547
662
  :param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
@@ -593,7 +708,9 @@ class coinmetro(Exchange, ImplicitAPI):
593
708
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
594
709
  """
595
710
  fetch all trades made by the user
596
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
711
+
712
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
713
+
597
714
  :param str symbol: unified market symbol
598
715
  :param int [since]: the earliest time in ms to fetch trades for
599
716
  :param int [limit]: the maximum number of trades structures to retrieve(default 500, max 1000)
@@ -698,7 +815,9 @@ class coinmetro(Exchange, ImplicitAPI):
698
815
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
699
816
  """
700
817
  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
818
+
819
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
820
+
702
821
  :param str symbol: unified symbol of the market to fetch the order book for
703
822
  :param int [limit]: the maximum amount of order book entries to return(default 100, max 200)
704
823
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -761,7 +880,9 @@ class coinmetro(Exchange, ImplicitAPI):
761
880
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
762
881
  """
763
882
  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
883
+
884
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
885
+
765
886
  :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
766
887
  :param dict [params]: extra parameters specific to the exchange API endpoint
767
888
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -837,7 +958,9 @@ class coinmetro(Exchange, ImplicitAPI):
837
958
  def fetch_bids_asks(self, symbols: Strings = None, params={}):
838
959
  """
839
960
  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
961
+
962
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
963
+
841
964
  :param str[] [symbols]: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
842
965
  :param dict [params]: extra parameters specific to the exchange API endpoint
843
966
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -903,7 +1026,9 @@ class coinmetro(Exchange, ImplicitAPI):
903
1026
  def fetch_balance(self, params={}) -> Balances:
904
1027
  """
905
1028
  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
1029
+
1030
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#741a1dcc-7307-40d0-acca-28d003d1506a
1031
+
907
1032
  :param dict [params]: extra parameters specific to the exchange API endpoint
908
1033
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
909
1034
  """
@@ -948,16 +1073,18 @@ class coinmetro(Exchange, ImplicitAPI):
948
1073
  result[code] = account
949
1074
  return self.safe_balance(result)
950
1075
 
951
- def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1076
+ def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
952
1077
  """
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
1078
+ fetch the history of changes, actions done by the user or operations that altered the balance of the user
1079
+
1080
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
1081
+
1082
+ :param str [code]: unified currency code, default is None
956
1083
  :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)
1084
+ :param int [limit]: max number of ledger entries to return(default 200, max 500)
958
1085
  :param dict [params]: extra parameters specific to the exchange API endpoint
959
1086
  :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>`
1087
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
961
1088
  """
962
1089
  self.load_markets()
963
1090
  request: dict = {}
@@ -1070,7 +1197,7 @@ class coinmetro(Exchange, ImplicitAPI):
1070
1197
  ledger.append(rawLedgerEntry)
1071
1198
  return self.parse_ledger(ledger, currency, since, limit)
1072
1199
 
1073
- def parse_ledger_entry(self, item: dict, currency: Currency = None):
1200
+ def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
1074
1201
  datetime = self.safe_string(item, 'timestamp')
1075
1202
  currencyId = self.safe_string(item, 'currencyId')
1076
1203
  item = self.omit(item, 'currencyId')
@@ -1135,12 +1262,14 @@ class coinmetro(Exchange, ImplicitAPI):
1135
1262
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1136
1263
  """
1137
1264
  create a trade order
1138
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
1265
+
1266
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
1267
+
1139
1268
  :param str symbol: unified symbol of the market to create an order in
1140
1269
  :param str type: 'market' or 'limit'
1141
1270
  :param str side: 'buy' or 'sell'
1142
1271
  :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
1272
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1144
1273
  :param dict [params]: extra parameters specific to the exchange API endpoint
1145
1274
  :param float [params.cost]: the quote quantity that can be used alternative for the amount in market orders
1146
1275
  :param str [params.timeInForce]: "GTC", "IOC", "FOK", "GTD"
@@ -1158,32 +1287,32 @@ class coinmetro(Exchange, ImplicitAPI):
1158
1287
  request: dict = {
1159
1288
  }
1160
1289
  request['orderType'] = type
1161
- precisedAmount = None
1290
+ formattedAmount = None
1162
1291
  if amount is not None:
1163
- precisedAmount = self.amount_to_precision(symbol, amount)
1292
+ formattedAmount = self.amount_to_precision(symbol, amount)
1164
1293
  cost = self.safe_value(params, 'cost')
1165
1294
  params = self.omit(params, 'cost')
1166
1295
  if type == 'limit':
1167
1296
  if (price is None) and (cost is None):
1168
1297
  raise ArgumentsRequired(self.id + ' createOrder() requires a price or params.cost argument for a ' + type + ' order')
1169
1298
  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))
1299
+ costString = Precise.string_mul(self.number_to_string(price), self.number_to_string(formattedAmount))
1171
1300
  cost = self.parse_to_numeric(costString)
1172
1301
  precisedCost = None
1173
1302
  if cost is not None:
1174
1303
  precisedCost = self.cost_to_precision(symbol, cost)
1175
1304
  if side == 'sell':
1176
- request = self.handle_create_order_side(market['baseId'], market['quoteId'], precisedAmount, precisedCost, request)
1305
+ request = self.handle_create_order_side(market['baseId'], market['quoteId'], formattedAmount, precisedCost, request)
1177
1306
  elif side == 'buy':
1178
- request = self.handle_create_order_side(market['quoteId'], market['baseId'], precisedCost, precisedAmount, request)
1307
+ request = self.handle_create_order_side(market['quoteId'], market['baseId'], precisedCost, formattedAmount, request)
1179
1308
  timeInForce = self.safe_value(params, 'timeInForce')
1180
1309
  if timeInForce is not None:
1181
1310
  params = self.omit(params, 'timeInForce')
1182
1311
  request['timeInForce'] = self.encode_order_time_in_force(timeInForce)
1183
- stopPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
1184
- if stopPrice is not None:
1312
+ triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
1313
+ if triggerPrice is not None:
1185
1314
  params = self.omit(params, ['triggerPrice'])
1186
- request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
1315
+ request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
1187
1316
  userData = self.safe_value(params, 'userData', {})
1188
1317
  comment = self.safe_string_2(params, 'clientOrderId', 'comment')
1189
1318
  if comment is not None:
@@ -1251,8 +1380,10 @@ class coinmetro(Exchange, ImplicitAPI):
1251
1380
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1252
1381
  """
1253
1382
  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
1383
+
1384
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
1385
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1386
+
1256
1387
  :param str id: order id
1257
1388
  :param str symbol: not used by coinmetro cancelOrder()
1258
1389
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1296,7 +1427,9 @@ class coinmetro(Exchange, ImplicitAPI):
1296
1427
  def close_position(self, symbol: str, side: OrderSide = None, params={}):
1297
1428
  """
1298
1429
  closes an open position
1299
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1430
+
1431
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
1432
+
1300
1433
  :param str symbol: not used by coinmetro closePosition()
1301
1434
  :param str [side]: not used by coinmetro closePosition()
1302
1435
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1346,7 +1479,9 @@ class coinmetro(Exchange, ImplicitAPI):
1346
1479
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1347
1480
  """
1348
1481
  fetch all unfilled currently open orders
1349
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
1482
+
1483
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
1484
+
1350
1485
  :param str symbol: unified market symbol
1351
1486
  :param int [since]: the earliest time in ms to fetch open orders for
1352
1487
  :param int [limit]: the maximum number of open order structures to retrieve
@@ -1367,7 +1502,9 @@ class coinmetro(Exchange, ImplicitAPI):
1367
1502
  def fetch_canceled_and_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1368
1503
  """
1369
1504
  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
1505
+
1506
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
1507
+
1371
1508
  :param str symbol: unified market symbol of the market orders were made in
1372
1509
  :param int [since]: the earliest time in ms to fetch orders for
1373
1510
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1387,7 +1524,9 @@ class coinmetro(Exchange, ImplicitAPI):
1387
1524
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1388
1525
  """
1389
1526
  fetches information on an order made by the user
1390
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
1527
+
1528
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
1529
+
1391
1530
  :param int|str id: order id
1392
1531
  :param str symbol: not used by coinmetro fetchOrder()
1393
1532
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1674,7 +1813,6 @@ class coinmetro(Exchange, ImplicitAPI):
1674
1813
  }
1675
1814
  trades = self.safe_value(order, 'fills', [])
1676
1815
  userData = self.safe_value(order, 'userData', {})
1677
- triggerPrice = self.safe_string(order, 'stopPrice')
1678
1816
  clientOrderId = self.safe_string(userData, 'comment')
1679
1817
  takeProfitPrice = self.safe_string(userData, 'takeProfit')
1680
1818
  stopLossPrice = self.safe_string(userData, 'stopLoss')
@@ -1690,7 +1828,7 @@ class coinmetro(Exchange, ImplicitAPI):
1690
1828
  'timeInForce': self.parse_order_time_in_force(self.safe_integer(order, 'timeInForce')),
1691
1829
  'side': side,
1692
1830
  'price': price,
1693
- 'triggerPrice': triggerPrice,
1831
+ 'triggerPrice': self.safe_string(order, 'stopPrice'),
1694
1832
  'takeProfitPrice': takeProfitPrice,
1695
1833
  'stopLossPrice': stopLossPrice,
1696
1834
  'average': None,
@@ -1717,7 +1855,9 @@ class coinmetro(Exchange, ImplicitAPI):
1717
1855
  def borrow_cross_margin(self, code: str, amount: float, params={}):
1718
1856
  """
1719
1857
  create a loan to borrow margin
1720
- :see: https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
1858
+
1859
+ https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
1860
+
1721
1861
  :param str code: unified currency code of the currency to borrow
1722
1862
  :param float amount: the amount to borrow
1723
1863
  :param dict [params]: extra parameters specific to the exchange API endpoint