ccxt-ir 4.3.46.0.2__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 (528) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +9 -9
  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 +10 -10
  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.2.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.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/abstract/ace.py +0 -15
  438. ccxt/abstract/bitbay.py +0 -53
  439. ccxt/abstract/bitcoincom.py +0 -115
  440. ccxt/abstract/bitfinex2.py +0 -139
  441. ccxt/abstract/bitpanda.py +0 -35
  442. ccxt/abstract/bl3p.py +0 -19
  443. ccxt/abstract/coinlist.py +0 -54
  444. ccxt/abstract/currencycom.py +0 -68
  445. ccxt/abstract/hitbtc3.py +0 -115
  446. ccxt/abstract/idex.py +0 -26
  447. ccxt/abstract/kuna.py +0 -182
  448. ccxt/abstract/lykke.py +0 -29
  449. ccxt/abstract/poloniexfutures.py +0 -48
  450. ccxt/abstract/wazirx.py +0 -30
  451. ccxt/ace.py +0 -1012
  452. ccxt/async_support/ace.py +0 -1012
  453. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  454. ccxt/async_support/base/ws/fast_client.py +0 -96
  455. ccxt/async_support/bitbay.py +0 -17
  456. ccxt/async_support/bitcoincom.py +0 -17
  457. ccxt/async_support/bitfinex2.py +0 -3552
  458. ccxt/async_support/bitpanda.py +0 -16
  459. ccxt/async_support/bl3p.py +0 -485
  460. ccxt/async_support/coinlist.py +0 -2243
  461. ccxt/async_support/currencycom.py +0 -1950
  462. ccxt/async_support/hitbtc3.py +0 -16
  463. ccxt/async_support/idex.py +0 -1766
  464. ccxt/async_support/kuna.py +0 -1841
  465. ccxt/async_support/lykke.py +0 -1270
  466. ccxt/async_support/poloniexfutures.py +0 -1717
  467. ccxt/async_support/wazirx.py +0 -1224
  468. ccxt/bitbay.py +0 -17
  469. ccxt/bitcoincom.py +0 -17
  470. ccxt/bitfinex2.py +0 -3552
  471. ccxt/bitpanda.py +0 -16
  472. ccxt/bl3p.py +0 -485
  473. ccxt/coinlist.py +0 -2243
  474. ccxt/currencycom.py +0 -1950
  475. ccxt/hitbtc3.py +0 -16
  476. ccxt/idex.py +0 -1766
  477. ccxt/kuna.py +0 -1841
  478. ccxt/lykke.py +0 -1270
  479. ccxt/poloniexfutures.py +0 -1717
  480. ccxt/pro/bitcoincom.py +0 -34
  481. ccxt/pro/bitfinex2.py +0 -1083
  482. ccxt/pro/bitpanda.py +0 -15
  483. ccxt/pro/currencycom.py +0 -536
  484. ccxt/pro/idex.py +0 -672
  485. ccxt/pro/poloniexfutures.py +0 -990
  486. ccxt/pro/wazirx.py +0 -749
  487. ccxt/test/base/__init__.py +0 -29
  488. ccxt/test/base/test_account.py +0 -26
  489. ccxt/test/base/test_balance.py +0 -56
  490. ccxt/test/base/test_borrow_interest.py +0 -35
  491. ccxt/test/base/test_borrow_rate.py +0 -32
  492. ccxt/test/base/test_calculate_fee.py +0 -51
  493. ccxt/test/base/test_crypto.py +0 -127
  494. ccxt/test/base/test_currency.py +0 -76
  495. ccxt/test/base/test_datetime.py +0 -109
  496. ccxt/test/base/test_decimal_to_precision.py +0 -392
  497. ccxt/test/base/test_deep_extend.py +0 -68
  498. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  499. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  500. ccxt/test/base/test_funding_rate_history.py +0 -29
  501. ccxt/test/base/test_last_price.py +0 -31
  502. ccxt/test/base/test_ledger_entry.py +0 -45
  503. ccxt/test/base/test_ledger_item.py +0 -48
  504. ccxt/test/base/test_leverage_tier.py +0 -33
  505. ccxt/test/base/test_liquidation.py +0 -50
  506. ccxt/test/base/test_margin_mode.py +0 -24
  507. ccxt/test/base/test_margin_modification.py +0 -35
  508. ccxt/test/base/test_market.py +0 -193
  509. ccxt/test/base/test_number.py +0 -411
  510. ccxt/test/base/test_ohlcv.py +0 -33
  511. ccxt/test/base/test_open_interest.py +0 -32
  512. ccxt/test/base/test_order.py +0 -64
  513. ccxt/test/base/test_order_book.py +0 -69
  514. ccxt/test/base/test_position.py +0 -60
  515. ccxt/test/base/test_shared_methods.py +0 -353
  516. ccxt/test/base/test_status.py +0 -24
  517. ccxt/test/base/test_throttle.py +0 -126
  518. ccxt/test/base/test_ticker.py +0 -92
  519. ccxt/test/base/test_trade.py +0 -47
  520. ccxt/test/base/test_trading_fee.py +0 -26
  521. ccxt/test/base/test_transaction.py +0 -39
  522. ccxt/test/test_async.py +0 -1649
  523. ccxt/test/test_sync.py +0 -1648
  524. ccxt/wazirx.py +0 -1224
  525. ccxt_ir-4.3.46.0.2.dist-info/RECORD +0 -772
  526. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  527. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  528. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/btcmarkets.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.btcmarkets import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -14,14 +14,13 @@ from ccxt.base.errors import BadRequest
14
14
  from ccxt.base.errors import InsufficientFunds
15
15
  from ccxt.base.errors import InvalidOrder
16
16
  from ccxt.base.errors import OrderNotFound
17
- from ccxt.base.errors import DDoSProtection
18
17
  from ccxt.base.decimal_to_precision import TICK_SIZE
19
18
  from ccxt.base.precise import Precise
20
19
 
21
20
 
22
21
  class btcmarkets(Exchange, ImplicitAPI):
23
22
 
24
- def describe(self):
23
+ def describe(self) -> Any:
25
24
  return self.deep_extend(super(btcmarkets, self).describe(), {
26
25
  'id': 'btcmarkets',
27
26
  'name': 'BTC Markets',
@@ -36,16 +35,27 @@ class btcmarkets(Exchange, ImplicitAPI):
36
35
  'future': False,
37
36
  'option': False,
38
37
  'addMargin': False,
38
+ 'borrowCrossMargin': False,
39
+ 'borrowIsolatedMargin': False,
40
+ 'borrowMargin': False,
39
41
  'cancelOrder': True,
40
42
  'cancelOrders': True,
41
43
  'closeAllPositions': False,
42
44
  'closePosition': False,
43
45
  'createDepositAddress': False,
44
46
  'createOrder': True,
47
+ 'createOrderWithTakeProfitAndStopLoss': False,
48
+ 'createOrderWithTakeProfitAndStopLossWs': False,
49
+ 'createPostOnlyOrder': False,
45
50
  'createReduceOnlyOrder': False,
51
+ 'createTriggerOrder': True,
46
52
  'fetchBalance': True,
53
+ 'fetchBorrowInterest': False,
54
+ 'fetchBorrowRate': False,
47
55
  'fetchBorrowRateHistories': False,
48
56
  'fetchBorrowRateHistory': False,
57
+ 'fetchBorrowRates': False,
58
+ 'fetchBorrowRatesPerSymbol': False,
49
59
  'fetchClosedOrders': 'emulated',
50
60
  'fetchCrossBorrowRate': False,
51
61
  'fetchCrossBorrowRates': False,
@@ -55,20 +65,39 @@ class btcmarkets(Exchange, ImplicitAPI):
55
65
  'fetchDeposits': True,
56
66
  'fetchDepositsWithdrawals': True,
57
67
  'fetchFundingHistory': False,
68
+ 'fetchFundingInterval': False,
69
+ 'fetchFundingIntervals': False,
58
70
  'fetchFundingRate': False,
59
71
  'fetchFundingRateHistory': False,
60
72
  'fetchFundingRates': False,
73
+ 'fetchGreeks': False,
61
74
  'fetchIndexOHLCV': False,
62
75
  'fetchIsolatedBorrowRate': False,
63
76
  'fetchIsolatedBorrowRates': False,
77
+ 'fetchIsolatedPositions': False,
64
78
  'fetchLeverage': False,
79
+ 'fetchLeverages': False,
80
+ 'fetchLeverageTiers': False,
81
+ 'fetchLiquidations': False,
82
+ 'fetchLongShortRatio': False,
83
+ 'fetchLongShortRatioHistory': False,
84
+ 'fetchMarginAdjustmentHistory': False,
65
85
  'fetchMarginMode': False,
86
+ 'fetchMarginModes': False,
87
+ 'fetchMarketLeverageTiers': False,
66
88
  'fetchMarkets': True,
67
89
  'fetchMarkOHLCV': False,
90
+ 'fetchMarkPrices': False,
91
+ 'fetchMyLiquidations': False,
92
+ 'fetchMySettlementHistory': False,
68
93
  'fetchMyTrades': True,
69
94
  'fetchOHLCV': True,
95
+ 'fetchOpenInterest': False,
70
96
  'fetchOpenInterestHistory': False,
97
+ 'fetchOpenInterests': False,
71
98
  'fetchOpenOrders': True,
99
+ 'fetchOption': False,
100
+ 'fetchOptionChain': False,
72
101
  'fetchOrder': True,
73
102
  'fetchOrderBook': True,
74
103
  'fetchOrders': True,
@@ -80,19 +109,25 @@ class btcmarkets(Exchange, ImplicitAPI):
80
109
  'fetchPositionsHistory': False,
81
110
  'fetchPositionsRisk': False,
82
111
  'fetchPremiumIndexOHLCV': False,
112
+ 'fetchSettlementHistory': False,
83
113
  'fetchTicker': True,
84
114
  'fetchTime': True,
85
115
  'fetchTrades': True,
86
116
  'fetchTransactions': 'emulated',
117
+ 'fetchVolatilityHistory': False,
87
118
  'fetchWithdrawals': True,
88
119
  'reduceMargin': False,
120
+ 'repayCrossMargin': False,
121
+ 'repayIsolatedMargin': False,
122
+ 'repayMargin': False,
89
123
  'setLeverage': False,
124
+ 'setMargin': False,
90
125
  'setMarginMode': False,
91
126
  'setPositionMode': False,
92
127
  'withdraw': True,
93
128
  },
94
129
  'urls': {
95
- 'logo': 'https://user-images.githubusercontent.com/51840849/89731817-b3fb8480-da52-11ea-817f-783b08aaf32b.jpg',
130
+ 'logo': 'https://github.com/user-attachments/assets/8c8d6907-3873-4cc4-ad20-e22fba28247e',
96
131
  'api': {
97
132
  'public': 'https://api.btcmarkets.net',
98
133
  'private': 'https://api.btcmarkets.net',
@@ -159,18 +194,98 @@ class btcmarkets(Exchange, ImplicitAPI):
159
194
  '1h': '1h',
160
195
  '1d': '1d',
161
196
  },
197
+ 'features': {
198
+ 'spot': {
199
+ 'sandbox': False,
200
+ 'createOrder': {
201
+ 'marginMode': False,
202
+ 'triggerPrice': True, # todo: check
203
+ 'triggerPriceType': None,
204
+ 'triggerDirection': False,
205
+ 'stopLossPrice': False,
206
+ 'takeProfitPrice': False,
207
+ 'attachedStopLossTakeProfit': None,
208
+ 'timeInForce': {
209
+ 'IOC': True,
210
+ 'FOK': True,
211
+ 'PO': True,
212
+ 'GTD': False,
213
+ },
214
+ 'hedged': False,
215
+ 'leverage': False,
216
+ 'marketBuyRequiresPrice': False,
217
+ 'marketBuyByCost': False,
218
+ 'selfTradePrevention': True, # todo: check
219
+ 'trailing': False,
220
+ 'iceberg': False,
221
+ },
222
+ 'createOrders': None,
223
+ 'fetchMyTrades': {
224
+ 'marginMode': False,
225
+ 'limit': 100,
226
+ 'daysBack': 100000,
227
+ 'untilDays': 100000,
228
+ 'symbolRequired': True,
229
+ },
230
+ 'fetchOrder': {
231
+ 'marginMode': False,
232
+ 'trigger': False,
233
+ 'trailing': False,
234
+ 'symbolRequired': False,
235
+ },
236
+ 'fetchOpenOrders': {
237
+ 'marginMode': False,
238
+ 'limit': 100,
239
+ 'trigger': False,
240
+ 'trailing': False,
241
+ 'symbolRequired': False,
242
+ },
243
+ 'fetchOrders': {
244
+ 'marginMode': False,
245
+ 'limit': 100,
246
+ 'daysBack': 100000,
247
+ 'untilDays': 100000,
248
+ 'trigger': False,
249
+ 'trailing': False,
250
+ 'symbolRequired': False,
251
+ },
252
+ 'fetchClosedOrders': {
253
+ 'marginMode': False,
254
+ 'limit': 100,
255
+ 'daysBack': 100000,
256
+ 'daysBackCanceled': 1,
257
+ 'untilDays': 100000,
258
+ 'trigger': False,
259
+ 'trailing': False,
260
+ 'symbolRequired': False,
261
+ },
262
+ 'fetchOHLCV': {
263
+ 'limit': 1000,
264
+ },
265
+ },
266
+ 'swap': {
267
+ 'linear': None,
268
+ 'inverse': None,
269
+ },
270
+ 'future': {
271
+ 'linear': None,
272
+ 'inverse': None,
273
+ },
274
+ },
162
275
  'precisionMode': TICK_SIZE,
163
276
  'exceptions': {
164
- '3': InvalidOrder,
165
- '6': DDoSProtection,
166
- 'InsufficientFund': InsufficientFunds,
167
- 'InvalidPrice': InvalidOrder,
168
- 'InvalidAmount': InvalidOrder,
169
- 'MissingArgument': InvalidOrder,
170
- 'OrderAlreadyCancelled': InvalidOrder,
171
- 'OrderNotFound': OrderNotFound,
172
- 'OrderStatusIsFinal': InvalidOrder,
173
- 'InvalidPaginationParameter': BadRequest,
277
+ 'exact': {
278
+ 'InsufficientFund': InsufficientFunds,
279
+ 'InvalidPrice': InvalidOrder,
280
+ 'InvalidAmount': InvalidOrder,
281
+ 'MissingArgument': BadRequest,
282
+ 'OrderAlreadyCancelled': InvalidOrder,
283
+ 'OrderNotFound': OrderNotFound,
284
+ 'OrderStatusIsFinal': InvalidOrder,
285
+ 'InvalidPaginationParameter': BadRequest,
286
+ },
287
+ 'broad': {
288
+ },
174
289
  },
175
290
  'fees': {
176
291
  'percentage': True,
@@ -204,7 +319,9 @@ class btcmarkets(Exchange, ImplicitAPI):
204
319
  def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
205
320
  """
206
321
  fetch history of deposits and withdrawals
207
- :see: https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1transfers/get
322
+
323
+ https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1transfers/get
324
+
208
325
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
209
326
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
210
327
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -216,7 +333,9 @@ class btcmarkets(Exchange, ImplicitAPI):
216
333
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
217
334
  """
218
335
  fetch all deposits made to an account
219
- :see: https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1deposits/get
336
+
337
+ https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1deposits/get
338
+
220
339
  :param str code: unified currency code
221
340
  :param int [since]: the earliest time in ms to fetch deposits for
222
341
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -228,7 +347,9 @@ class btcmarkets(Exchange, ImplicitAPI):
228
347
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
229
348
  """
230
349
  fetch all withdrawals made from an account
231
- :see: https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1withdrawals/get
350
+
351
+ https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1withdrawals/get
352
+
232
353
  :param str code: unified currency code
233
354
  :param int [since]: the earliest time in ms to fetch withdrawals for
234
355
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -305,7 +426,7 @@ class btcmarkets(Exchange, ImplicitAPI):
305
426
  type = self.parse_transaction_type(self.safe_string_lower(transaction, 'type'))
306
427
  if type == 'withdraw':
307
428
  type = 'withdrawal'
308
- cryptoPaymentDetail = self.safe_value(transaction, 'paymentDetail', {})
429
+ cryptoPaymentDetail = self.safe_dict(transaction, 'paymentDetail', {})
309
430
  txid = self.safe_string(cryptoPaymentDetail, 'txId')
310
431
  address = self.safe_string(cryptoPaymentDetail, 'address')
311
432
  tag = None
@@ -356,7 +477,9 @@ class btcmarkets(Exchange, ImplicitAPI):
356
477
  def fetch_markets(self, params={}) -> List[Market]:
357
478
  """
358
479
  retrieves data on all markets for btcmarkets
359
- :see: https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets/get
480
+
481
+ https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets/get
482
+
360
483
  :param dict [params]: extra parameters specific to the exchange API endpoint
361
484
  :returns dict[]: an array of objects representing market data
362
485
  """
@@ -367,10 +490,11 @@ class btcmarkets(Exchange, ImplicitAPI):
367
490
  # "marketId":"COMP-AUD",
368
491
  # "baseAssetName":"COMP",
369
492
  # "quoteAssetName":"AUD",
370
- # "minOrderAmount":"0.00007",
493
+ # "minOrderAmount":"0.00006",
371
494
  # "maxOrderAmount":"1000000",
372
495
  # "amountDecimals":"8",
373
- # "priceDecimals":"2"
496
+ # "priceDecimals":"2",
497
+ # "status": "Online"
374
498
  # }
375
499
  # ]
376
500
  #
@@ -383,10 +507,11 @@ class btcmarkets(Exchange, ImplicitAPI):
383
507
  base = self.safe_currency_code(baseId)
384
508
  quote = self.safe_currency_code(quoteId)
385
509
  symbol = base + '/' + quote
386
- fees = self.safe_value(self.safe_value(self.options, 'fees', {}), quote, self.fees)
510
+ fees = self.safe_value(self.safe_dict(self.options, 'fees', {}), quote, self.fees)
387
511
  pricePrecision = self.parse_number(self.parse_precision(self.safe_string(market, 'priceDecimals')))
388
512
  minAmount = self.safe_number(market, 'minOrderAmount')
389
513
  maxAmount = self.safe_number(market, 'maxOrderAmount')
514
+ status = self.safe_string(market, 'status')
390
515
  minPrice = None
391
516
  if quote == 'AUD':
392
517
  minPrice = pricePrecision
@@ -405,7 +530,7 @@ class btcmarkets(Exchange, ImplicitAPI):
405
530
  'swap': False,
406
531
  'future': False,
407
532
  'option': False,
408
- 'active': None,
533
+ 'active': (status == 'Online'),
409
534
  'contract': False,
410
535
  'linear': None,
411
536
  'inverse': None,
@@ -442,10 +567,12 @@ class btcmarkets(Exchange, ImplicitAPI):
442
567
  'info': market,
443
568
  }
444
569
 
445
- def fetch_time(self, params={}):
570
+ def fetch_time(self, params={}) -> Int:
446
571
  """
447
572
  fetches the current integer timestamp in milliseconds from the exchange server
448
- :see: https://docs.btcmarkets.net/v3/#tag/Misc-APIs/paths/~1v3~1time/get
573
+
574
+ https://docs.btcmarkets.net/v3/#tag/Misc-APIs/paths/~1v3~1time/get
575
+
449
576
  :param dict [params]: extra parameters specific to the exchange API endpoint
450
577
  :returns int: the current integer timestamp in milliseconds from the exchange server
451
578
  """
@@ -472,7 +599,9 @@ class btcmarkets(Exchange, ImplicitAPI):
472
599
  def fetch_balance(self, params={}) -> Balances:
473
600
  """
474
601
  query for balance and get the amount of funds available for trading or funds locked in orders
475
- :see: https://docs.btcmarkets.net/v3/#tag/Account-APIs/paths/~1v3~1accounts~1me~1balances/get
602
+
603
+ https://docs.btcmarkets.net/v3/#tag/Account-APIs/paths/~1v3~1accounts~1me~1balances/get
604
+
476
605
  :param dict [params]: extra parameters specific to the exchange API endpoint
477
606
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
478
607
  """
@@ -503,7 +632,9 @@ class btcmarkets(Exchange, ImplicitAPI):
503
632
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
504
633
  """
505
634
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
506
- :see: https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1candles/get
635
+
636
+ https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1candles/get
637
+
507
638
  :param str symbol: unified symbol of the market to fetch OHLCV data for
508
639
  :param str timeframe: the length of time each candle represents
509
640
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -539,7 +670,9 @@ class btcmarkets(Exchange, ImplicitAPI):
539
670
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
540
671
  """
541
672
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
542
- :see: https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1orderbook/get
673
+
674
+ https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1orderbook/get
675
+
543
676
  :param str symbol: unified symbol of the market to fetch the order book for
544
677
  :param int [limit]: the maximum amount of order book entries to return
545
678
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -625,7 +758,9 @@ class btcmarkets(Exchange, ImplicitAPI):
625
758
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
626
759
  """
627
760
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
628
- :see: https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1ticker/get
761
+
762
+ https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1ticker/get
763
+
629
764
  :param str symbol: unified symbol of the market to fetch the ticker for
630
765
  :param dict [params]: extra parameters specific to the exchange API endpoint
631
766
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -729,7 +864,9 @@ class btcmarkets(Exchange, ImplicitAPI):
729
864
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
730
865
  """
731
866
  get the list of most recent trades for a particular symbol
732
- :see: https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1trades/get
867
+
868
+ https://docs.btcmarkets.net/v3/#tag/Market-Data-APIs/paths/~1v3~1markets~1{marketId}~1trades/get
869
+
733
870
  :param str symbol: unified symbol of the market to fetch trades for
734
871
  :param int [since]: timestamp in ms of the earliest trade to fetch
735
872
  :param int [limit]: the maximum amount of trades to fetch
@@ -755,13 +892,16 @@ class btcmarkets(Exchange, ImplicitAPI):
755
892
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
756
893
  """
757
894
  create a trade order
758
- :see: https://docs.btcmarkets.net/v3/#tag/Order-Placement-APIs/paths/~1v3~1orders/post
895
+
896
+ https://docs.btcmarkets.net/v3/#tag/Order-Placement-APIs/paths/~1v3~1orders/post
897
+
759
898
  :param str symbol: unified symbol of the market to create an order in
760
899
  :param str type: 'market' or 'limit'
761
900
  :param str side: 'buy' or 'sell'
762
901
  :param float amount: how much of currency you want to trade in units of base currency
763
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
902
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
764
903
  :param dict [params]: extra parameters specific to the exchange API endpoint
904
+ :param float [params.triggerPrice]: the price at which a trigger order is triggered at
765
905
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
766
906
  """
767
907
  self.load_markets()
@@ -843,7 +983,9 @@ class btcmarkets(Exchange, ImplicitAPI):
843
983
  def cancel_orders(self, ids, symbol: Str = None, params={}):
844
984
  """
845
985
  cancel multiple orders
846
- :see: https://docs.btcmarkets.net/v3/#tag/Batch-Order-APIs/paths/~1v3~1batchorders~1{ids}/delete
986
+
987
+ https://docs.btcmarkets.net/v3/#tag/Batch-Order-APIs/paths/~1v3~1batchorders~1{ids}/delete
988
+
847
989
  :param str[] ids: order ids
848
990
  :param str symbol: not used by btcmarkets cancelOrders()
849
991
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -882,7 +1024,9 @@ class btcmarkets(Exchange, ImplicitAPI):
882
1024
  def cancel_order(self, id: str, symbol: Str = None, params={}):
883
1025
  """
884
1026
  cancels an open order
885
- :see: https://docs.btcmarkets.net/v3/#operation/cancelOrder
1027
+
1028
+ https://docs.btcmarkets.net/v3/#operation/cancelOrder
1029
+
886
1030
  :param str id: order id
887
1031
  :param str symbol: not used by btcmarket cancelOrder()
888
1032
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -984,8 +1128,7 @@ class btcmarkets(Exchange, ImplicitAPI):
984
1128
  id = self.safe_string(order, 'orderId')
985
1129
  clientOrderId = self.safe_string(order, 'clientOrderId')
986
1130
  timeInForce = self.safe_string(order, 'timeInForce')
987
- stopPrice = self.safe_number(order, 'triggerPrice')
988
- postOnly = self.safe_value(order, 'postOnly')
1131
+ postOnly = self.safe_bool(order, 'postOnly')
989
1132
  return self.safe_order({
990
1133
  'info': order,
991
1134
  'id': id,
@@ -999,8 +1142,7 @@ class btcmarkets(Exchange, ImplicitAPI):
999
1142
  'postOnly': postOnly,
1000
1143
  'side': side,
1001
1144
  'price': price,
1002
- 'stopPrice': stopPrice,
1003
- 'triggerPrice': stopPrice,
1145
+ 'triggerPrice': self.safe_number(order, 'triggerPrice'),
1004
1146
  'cost': None,
1005
1147
  'amount': amount,
1006
1148
  'filled': None,
@@ -1014,7 +1156,10 @@ class btcmarkets(Exchange, ImplicitAPI):
1014
1156
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1015
1157
  """
1016
1158
  fetches information on an order made by the user
1017
- :see: https://docs.btcmarkets.net/v3/#operation/getOrderById
1159
+
1160
+ https://docs.btcmarkets.net/v3/#operation/getOrderById
1161
+
1162
+ :param str id: the order id
1018
1163
  :param str symbol: not used by btcmarkets fetchOrder
1019
1164
  :param dict [params]: extra parameters specific to the exchange API endpoint
1020
1165
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1029,7 +1174,9 @@ class btcmarkets(Exchange, ImplicitAPI):
1029
1174
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1030
1175
  """
1031
1176
  fetches information on multiple orders made by the user
1032
- :see: https://docs.btcmarkets.net/v3/#operation/listOrders
1177
+
1178
+ https://docs.btcmarkets.net/v3/#operation/listOrders
1179
+
1033
1180
  :param str symbol: unified market symbol of the market orders were made in
1034
1181
  :param int [since]: the earliest time in ms to fetch orders for
1035
1182
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1054,7 +1201,9 @@ class btcmarkets(Exchange, ImplicitAPI):
1054
1201
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1055
1202
  """
1056
1203
  fetch all unfilled currently open orders
1057
- :see: https://docs.btcmarkets.net/v3/#operation/listOrders
1204
+
1205
+ https://docs.btcmarkets.net/v3/#operation/listOrders
1206
+
1058
1207
  :param str symbol: unified market symbol
1059
1208
  :param int [since]: the earliest time in ms to fetch open orders for
1060
1209
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1067,7 +1216,9 @@ class btcmarkets(Exchange, ImplicitAPI):
1067
1216
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1068
1217
  """
1069
1218
  fetches information on multiple closed orders made by the user
1070
- :see: https://docs.btcmarkets.net/v3/#operation/listOrders
1219
+
1220
+ https://docs.btcmarkets.net/v3/#operation/listOrders
1221
+
1071
1222
  :param str symbol: unified market symbol of the market orders were made in
1072
1223
  :param int [since]: the earliest time in ms to fetch orders for
1073
1224
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1080,7 +1231,9 @@ class btcmarkets(Exchange, ImplicitAPI):
1080
1231
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1081
1232
  """
1082
1233
  fetch all trades made by the user
1083
- :see: https://docs.btcmarkets.net/v3/#operation/getTrades
1234
+
1235
+ https://docs.btcmarkets.net/v3/#operation/getTrades
1236
+
1084
1237
  :param str symbol: unified market symbol
1085
1238
  :param int [since]: the earliest time in ms to fetch trades for
1086
1239
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1127,10 +1280,12 @@ class btcmarkets(Exchange, ImplicitAPI):
1127
1280
  #
1128
1281
  return self.parse_trades(response, market, since, limit)
1129
1282
 
1130
- def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1283
+ def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1131
1284
  """
1132
1285
  make a withdrawal
1133
- :see: https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1withdrawals/post
1286
+
1287
+ https://docs.btcmarkets.net/v3/#tag/Fund-Management-APIs/paths/~1v3~1withdrawals/post
1288
+
1134
1289
  :param str code: unified currency code
1135
1290
  :param float amount: the amount to withdraw
1136
1291
  :param str address: the address to withdraw to
@@ -1204,18 +1359,16 @@ class btcmarkets(Exchange, ImplicitAPI):
1204
1359
  def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1205
1360
  if response is None:
1206
1361
  return None # fallback to default error handler
1207
- if 'success' in response:
1208
- if not response['success']:
1209
- error = self.safe_string(response, 'errorCode')
1210
- feedback = self.id + ' ' + body
1211
- self.throw_exactly_matched_exception(self.exceptions, error, feedback)
1212
- raise ExchangeError(feedback)
1213
- # v3 api errors
1214
- if code >= 400:
1215
- errorCode = self.safe_string(response, 'code')
1216
- message = self.safe_string(response, 'message')
1362
+ #
1363
+ # {"code":"UnAuthorized","message":"invalid access token"}
1364
+ # {"code":"MarketNotFound","message":"invalid marketId"}
1365
+ #
1366
+ errorCode = self.safe_string(response, 'code')
1367
+ message = self.safe_string(response, 'message')
1368
+ if errorCode is not None:
1217
1369
  feedback = self.id + ' ' + body
1218
- self.throw_exactly_matched_exception(self.exceptions, errorCode, feedback)
1219
- self.throw_exactly_matched_exception(self.exceptions, message, feedback)
1220
- raise ExchangeError(feedback)
1370
+ self.throw_exactly_matched_exception(self.exceptions['exact'], message, feedback)
1371
+ self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
1372
+ self.throw_broadly_matched_exception(self.exceptions['broad'], message, feedback)
1373
+ raise ExchangeError(feedback) # unknown message
1221
1374
  return None