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
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.coinmate import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -21,12 +21,12 @@ from ccxt.base.precise import Precise
21
21
 
22
22
  class coinmate(Exchange, ImplicitAPI):
23
23
 
24
- def describe(self):
24
+ def describe(self) -> Any:
25
25
  return self.deep_extend(super(coinmate, self).describe(), {
26
26
  'id': 'coinmate',
27
27
  'name': 'CoinMate',
28
28
  'countries': ['GB', 'CZ', 'EU'], # UK, Czech Republic
29
- 'rateLimit': 1000,
29
+ 'rateLimit': 600,
30
30
  'has': {
31
31
  'CORS': True,
32
32
  'spot': True,
@@ -35,32 +35,60 @@ class coinmate(Exchange, ImplicitAPI):
35
35
  'future': False,
36
36
  'option': False,
37
37
  'addMargin': False,
38
+ 'borrowCrossMargin': False,
39
+ 'borrowIsolatedMargin': False,
40
+ 'borrowMargin': False,
38
41
  'cancelOrder': True,
39
42
  'closeAllPositions': False,
40
43
  'closePosition': False,
41
44
  'createOrder': True,
45
+ 'createOrderWithTakeProfitAndStopLoss': False,
46
+ 'createOrderWithTakeProfitAndStopLossWs': False,
47
+ 'createPostOnlyOrder': False,
42
48
  'createReduceOnlyOrder': False,
43
49
  'fetchBalance': True,
50
+ 'fetchBorrowInterest': False,
51
+ 'fetchBorrowRate': False,
44
52
  'fetchBorrowRateHistories': False,
45
53
  'fetchBorrowRateHistory': False,
54
+ 'fetchBorrowRates': False,
55
+ 'fetchBorrowRatesPerSymbol': False,
46
56
  'fetchCrossBorrowRate': False,
47
57
  'fetchCrossBorrowRates': False,
48
58
  'fetchDepositsWithdrawals': True,
49
59
  'fetchFundingHistory': False,
60
+ 'fetchFundingInterval': False,
61
+ 'fetchFundingIntervals': False,
50
62
  'fetchFundingRate': False,
51
63
  'fetchFundingRateHistory': False,
52
64
  'fetchFundingRates': False,
65
+ 'fetchGreeks': False,
53
66
  'fetchIndexOHLCV': False,
54
67
  'fetchIsolatedBorrowRate': False,
55
68
  'fetchIsolatedBorrowRates': False,
69
+ 'fetchIsolatedPositions': False,
56
70
  'fetchLeverage': False,
71
+ 'fetchLeverages': False,
57
72
  'fetchLeverageTiers': False,
73
+ 'fetchLiquidations': False,
74
+ 'fetchLongShortRatio': False,
75
+ 'fetchLongShortRatioHistory': False,
76
+ 'fetchMarginAdjustmentHistory': False,
58
77
  'fetchMarginMode': False,
78
+ 'fetchMarginModes': False,
79
+ 'fetchMarketLeverageTiers': False,
59
80
  'fetchMarkets': True,
60
81
  'fetchMarkOHLCV': False,
82
+ 'fetchMarkPrices': False,
83
+ 'fetchMyLiquidations': False,
84
+ 'fetchMySettlementHistory': False,
61
85
  'fetchMyTrades': True,
86
+ 'fetchOpenInterest': False,
62
87
  'fetchOpenInterestHistory': False,
88
+ 'fetchOpenInterests': False,
63
89
  'fetchOpenOrders': True,
90
+ 'fetchOption': False,
91
+ 'fetchOptionChain': False,
64
92
  'fetchOrder': True,
65
93
  'fetchOrderBook': True,
66
94
  'fetchOrders': True,
@@ -72,14 +100,20 @@ class coinmate(Exchange, ImplicitAPI):
72
100
  'fetchPositionsHistory': False,
73
101
  'fetchPositionsRisk': False,
74
102
  'fetchPremiumIndexOHLCV': False,
103
+ 'fetchSettlementHistory': False,
75
104
  'fetchTicker': True,
76
105
  'fetchTickers': True,
77
106
  'fetchTrades': True,
78
107
  'fetchTradingFee': True,
79
108
  'fetchTradingFees': False,
80
109
  'fetchTransactions': 'emulated',
110
+ 'fetchVolatilityHistory': False,
81
111
  'reduceMargin': False,
112
+ 'repayCrossMargin': False,
113
+ 'repayIsolatedMargin': False,
114
+ 'repayMargin': False,
82
115
  'setLeverage': False,
116
+ 'setMargin': False,
83
117
  'setMarginMode': False,
84
118
  'setPositionMode': False,
85
119
  'transfer': False,
@@ -175,28 +209,28 @@ class coinmate(Exchange, ImplicitAPI):
175
209
  'trading': {
176
210
  'tierBased': True,
177
211
  'percentage': True,
178
- 'maker': self.parse_number('0.0012'),
179
- 'taker': self.parse_number('0.0025'),
212
+ 'taker': self.parse_number('0.006'),
213
+ 'maker': self.parse_number('0.004'),
180
214
  'tiers': {
181
215
  'taker': [
182
- [self.parse_number('0'), self.parse_number('0.0035')],
183
- [self.parse_number('10000'), self.parse_number('0.0023')],
184
- [self.parse_number('100000'), self.parse_number('0.0021')],
185
- [self.parse_number('250000'), self.parse_number('0.0020')],
186
- [self.parse_number('500000'), self.parse_number('0.0015')],
187
- [self.parse_number('1000000'), self.parse_number('0.0013')],
188
- [self.parse_number('3000000'), self.parse_number('0.0010')],
189
- [self.parse_number('15000000'), self.parse_number('0.0005')],
216
+ [self.parse_number('0'), self.parse_number('0.006')],
217
+ [self.parse_number('10000'), self.parse_number('0.003')],
218
+ [self.parse_number('100000'), self.parse_number('0.0023')],
219
+ [self.parse_number('250000'), self.parse_number('0.0021')],
220
+ [self.parse_number('500000'), self.parse_number('0.0018')],
221
+ [self.parse_number('1000000'), self.parse_number('0.0015')],
222
+ [self.parse_number('3000000'), self.parse_number('0.0012')],
223
+ [self.parse_number('15000000'), self.parse_number('0.001')],
190
224
  ],
191
225
  'maker': [
192
- [self.parse_number('0'), self.parse_number('0.003')],
193
- [self.parse_number('10000'), self.parse_number('0.0011')],
194
- [self.parse_number('100000'), self.parse_number('0.0010')],
195
- [self.parse_number('250000'), self.parse_number('0.0008')],
226
+ [self.parse_number('0'), self.parse_number('0.004')],
227
+ [self.parse_number('10000'), self.parse_number('0.002')],
228
+ [self.parse_number('100000'), self.parse_number('0.0012')],
229
+ [self.parse_number('250000'), self.parse_number('0.0009')],
196
230
  [self.parse_number('500000'), self.parse_number('0.0005')],
197
231
  [self.parse_number('1000000'), self.parse_number('0.0003')],
198
232
  [self.parse_number('3000000'), self.parse_number('0.0002')],
199
- [self.parse_number('15000000'), self.parse_number('0')],
233
+ [self.parse_number('15000000'), self.parse_number('-0.0004')],
200
234
  ],
201
235
  },
202
236
  },
@@ -217,6 +251,73 @@ class coinmate(Exchange, ImplicitAPI):
217
251
  },
218
252
  },
219
253
  },
254
+ 'features': {
255
+ 'spot': {
256
+ 'sandbox': False,
257
+ 'createOrder': {
258
+ 'marginMode': False,
259
+ 'triggerPrice': True, # todo implement
260
+ 'triggerPriceType': None,
261
+ 'triggerDirection': False,
262
+ 'stopLossPrice': False, # todo
263
+ 'takeProfitPrice': False, # todo
264
+ 'attachedStopLossTakeProfit': None,
265
+ 'timeInForce': {
266
+ 'IOC': True,
267
+ 'FOK': False,
268
+ 'PO': True,
269
+ 'GTD': False,
270
+ },
271
+ 'hedged': False,
272
+ 'trailing': True, # todo implement
273
+ 'leverage': False,
274
+ 'marketBuyByCost': False,
275
+ 'marketBuyRequiresPrice': False,
276
+ 'selfTradePrevention': False,
277
+ 'iceberg': True, # todo
278
+ },
279
+ 'createOrders': None,
280
+ 'fetchMyTrades': {
281
+ 'marginMode': False,
282
+ 'limit': 1000,
283
+ 'daysBack': 100000,
284
+ 'untilDays': 100000, # todo implement
285
+ 'symbolRequired': False,
286
+ },
287
+ 'fetchOrder': {
288
+ 'marginMode': False,
289
+ 'trigger': False,
290
+ 'trailing': False,
291
+ 'symbolRequired': False,
292
+ },
293
+ 'fetchOpenOrders': {
294
+ 'marginMode': False,
295
+ 'limit': None,
296
+ 'trigger': False,
297
+ 'trailing': False,
298
+ 'symbolRequired': True,
299
+ },
300
+ 'fetchOrders': {
301
+ 'marginMode': False,
302
+ 'limit': 100,
303
+ 'daysBack': None,
304
+ 'untilDays': None,
305
+ 'trigger': False,
306
+ 'trailing': False,
307
+ 'symbolRequired': True,
308
+ },
309
+ 'fetchClosedOrders': None,
310
+ 'fetchOHLCV': None,
311
+ },
312
+ 'swap': {
313
+ 'linear': None,
314
+ 'inverse': None,
315
+ },
316
+ 'future': {
317
+ 'linear': None,
318
+ 'inverse': None,
319
+ },
320
+ },
220
321
  'exceptions': {
221
322
  'exact': {
222
323
  'No order with given ID': OrderNotFound,
@@ -236,7 +337,9 @@ class coinmate(Exchange, ImplicitAPI):
236
337
  async def fetch_markets(self, params={}) -> List[Market]:
237
338
  """
238
339
  retrieves data on all markets for coinmate
239
- :see: https://coinmate.docs.apiary.io/#reference/trading-pairs/get-trading-pairs/get
340
+
341
+ https://coinmate.docs.apiary.io/#reference/trading-pairs/get-trading-pairs/get
342
+
240
343
  :param dict [params]: extra parameters specific to the exchange API endpoint
241
344
  :returns dict[]: an array of objects representing market data
242
345
  """
@@ -339,7 +442,9 @@ class coinmate(Exchange, ImplicitAPI):
339
442
  async def fetch_balance(self, params={}) -> Balances:
340
443
  """
341
444
  query for balance and get the amount of funds available for trading or funds locked in orders
342
- :see: https://coinmate.docs.apiary.io/#reference/balance/get-balances/post
445
+
446
+ https://coinmate.docs.apiary.io/#reference/balance/get-balances/post
447
+
343
448
  :param dict [params]: extra parameters specific to the exchange API endpoint
344
449
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
345
450
  """
@@ -350,7 +455,9 @@ class coinmate(Exchange, ImplicitAPI):
350
455
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
351
456
  """
352
457
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
353
- :see: https://coinmate.docs.apiary.io/#reference/order-book/get-order-book/get
458
+
459
+ https://coinmate.docs.apiary.io/#reference/order-book/get-order-book/get
460
+
354
461
  :param str symbol: unified symbol of the market to fetch the order book for
355
462
  :param int [limit]: the maximum amount of order book entries to return
356
463
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -370,7 +477,9 @@ class coinmate(Exchange, ImplicitAPI):
370
477
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
371
478
  """
372
479
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
373
- :see: https://coinmate.docs.apiary.io/#reference/ticker/get-ticker/get
480
+
481
+ https://coinmate.docs.apiary.io/#reference/ticker/get-ticker/get
482
+
374
483
  :param str symbol: unified symbol of the market to fetch the ticker for
375
484
  :param dict [params]: extra parameters specific to the exchange API endpoint
376
485
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -404,7 +513,9 @@ class coinmate(Exchange, ImplicitAPI):
404
513
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
405
514
  """
406
515
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
407
- :see: https://coinmate.docs.apiary.io/#reference/ticker/get-ticker-all/get
516
+
517
+ https://coinmate.docs.apiary.io/#reference/ticker/get-ticker-all/get
518
+
408
519
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
409
520
  :param dict [params]: extra parameters specific to the exchange API endpoint
410
521
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -482,7 +593,9 @@ class coinmate(Exchange, ImplicitAPI):
482
593
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
483
594
  """
484
595
  fetch history of deposits and withdrawals
485
- :see: https://coinmate.docs.apiary.io/#reference/transfers/get-transfer-history/post
596
+
597
+ https://coinmate.docs.apiary.io/#reference/transfers/get-transfer-history/post
598
+
486
599
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
487
600
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
488
601
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -587,15 +700,17 @@ class coinmate(Exchange, ImplicitAPI):
587
700
  },
588
701
  }
589
702
 
590
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
703
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
591
704
  """
592
705
  make a withdrawal
593
- :see: https://coinmate.docs.apiary.io/#reference/bitcoin-withdrawal-and-deposit/withdraw-bitcoins/post
594
- :see: https://coinmate.docs.apiary.io/#reference/litecoin-withdrawal-and-deposit/withdraw-litecoins/post
595
- :see: https://coinmate.docs.apiary.io/#reference/ethereum-withdrawal-and-deposit/withdraw-ethereum/post
596
- :see: https://coinmate.docs.apiary.io/#reference/ripple-withdrawal-and-deposit/withdraw-ripple/post
597
- :see: https://coinmate.docs.apiary.io/#reference/cardano-withdrawal-and-deposit/withdraw-cardano/post
598
- :see: https://coinmate.docs.apiary.io/#reference/solana-withdrawal-and-deposit/withdraw-solana/post
706
+
707
+ https://coinmate.docs.apiary.io/#reference/bitcoin-withdrawal-and-deposit/withdraw-bitcoins/post
708
+ https://coinmate.docs.apiary.io/#reference/litecoin-withdrawal-and-deposit/withdraw-litecoins/post
709
+ https://coinmate.docs.apiary.io/#reference/ethereum-withdrawal-and-deposit/withdraw-ethereum/post
710
+ https://coinmate.docs.apiary.io/#reference/ripple-withdrawal-and-deposit/withdraw-ripple/post
711
+ https://coinmate.docs.apiary.io/#reference/cardano-withdrawal-and-deposit/withdraw-cardano/post
712
+ https://coinmate.docs.apiary.io/#reference/solana-withdrawal-and-deposit/withdraw-solana/post
713
+
599
714
  :param str code: unified currency code
600
715
  :param float amount: the amount to withdraw
601
716
  :param str address: the address to withdraw to
@@ -644,7 +759,9 @@ class coinmate(Exchange, ImplicitAPI):
644
759
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
645
760
  """
646
761
  fetch all trades made by the user
647
- :see: https://coinmate.docs.apiary.io/#reference/trade-history/get-trade-history/post
762
+
763
+ https://coinmate.docs.apiary.io/#reference/trade-history/get-trade-history/post
764
+
648
765
  :param str symbol: unified market symbol
649
766
  :param int [since]: the earliest time in ms to fetch trades for
650
767
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -731,7 +848,9 @@ class coinmate(Exchange, ImplicitAPI):
731
848
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
732
849
  """
733
850
  get the list of most recent trades for a particular symbol
734
- :see: https://coinmate.docs.apiary.io/#reference/transactions/transactions/get
851
+
852
+ https://coinmate.docs.apiary.io/#reference/transactions/transactions/get
853
+
735
854
  :param str symbol: unified symbol of the market to fetch trades for
736
855
  :param int [since]: timestamp in ms of the earliest trade to fetch
737
856
  :param int [limit]: the maximum amount of trades to fetch
@@ -767,7 +886,9 @@ class coinmate(Exchange, ImplicitAPI):
767
886
  async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
768
887
  """
769
888
  fetch the trading fees for a market
770
- :see: https://coinmate.docs.apiary.io/#reference/trader-fees/get-trading-fees/post
889
+
890
+ https://coinmate.docs.apiary.io/#reference/trader-fees/get-trading-fees/post
891
+
771
892
  :param str symbol: unified market symbol
772
893
  :param dict [params]: extra parameters specific to the exchange API endpoint
773
894
  :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -802,7 +923,9 @@ class coinmate(Exchange, ImplicitAPI):
802
923
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
803
924
  """
804
925
  fetch all unfilled currently open orders
805
- :see: https://coinmate.docs.apiary.io/#reference/order/get-open-orders/post
926
+
927
+ https://coinmate.docs.apiary.io/#reference/order/get-open-orders/post
928
+
806
929
  :param str symbol: unified market symbol
807
930
  :param int [since]: the earliest time in ms to fetch open orders for
808
931
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -816,7 +939,9 @@ class coinmate(Exchange, ImplicitAPI):
816
939
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
817
940
  """
818
941
  fetches information on multiple orders made by the user
819
- :see: https://coinmate.docs.apiary.io/#reference/order/order-history/post
942
+
943
+ https://coinmate.docs.apiary.io/#reference/order/order-history/post
944
+
820
945
  :param str symbol: unified market symbol of the market orders were made in
821
946
  :param int [since]: the earliest time in ms to fetch orders for
822
947
  :param int [limit]: the maximum number of order structures to retrieve
@@ -914,7 +1039,6 @@ class coinmate(Exchange, ImplicitAPI):
914
1039
  marketId = self.safe_string(order, 'currencyPair')
915
1040
  symbol = self.safe_symbol(marketId, market, '_')
916
1041
  clientOrderId = self.safe_string(order, 'clientOrderId')
917
- stopPrice = self.safe_number(order, 'stopPrice')
918
1042
  return self.safe_order({
919
1043
  'id': id,
920
1044
  'clientOrderId': clientOrderId,
@@ -927,8 +1051,7 @@ class coinmate(Exchange, ImplicitAPI):
927
1051
  'postOnly': None,
928
1052
  'side': side,
929
1053
  'price': priceString,
930
- 'stopPrice': stopPrice,
931
- 'triggerPrice': stopPrice,
1054
+ 'triggerPrice': self.safe_number(order, 'stopPrice'),
932
1055
  'amount': amountString,
933
1056
  'cost': None,
934
1057
  'average': averageString,
@@ -943,15 +1066,17 @@ class coinmate(Exchange, ImplicitAPI):
943
1066
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
944
1067
  """
945
1068
  create a trade order
946
- :see: https://coinmate.docs.apiary.io/#reference/order/buy-limit-order/post
947
- :see: https://coinmate.docs.apiary.io/#reference/order/sell-limit-order/post
948
- :see: https://coinmate.docs.apiary.io/#reference/order/buy-instant-order/post
949
- :see: https://coinmate.docs.apiary.io/#reference/order/sell-instant-order/post
1069
+
1070
+ https://coinmate.docs.apiary.io/#reference/order/buy-limit-order/post
1071
+ https://coinmate.docs.apiary.io/#reference/order/sell-limit-order/post
1072
+ https://coinmate.docs.apiary.io/#reference/order/buy-instant-order/post
1073
+ https://coinmate.docs.apiary.io/#reference/order/sell-instant-order/post
1074
+
950
1075
  :param str symbol: unified symbol of the market to create an order in
951
1076
  :param str type: 'market' or 'limit'
952
1077
  :param str side: 'buy' or 'sell'
953
1078
  :param float amount: how much of currency you want to trade in units of base currency
954
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1079
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
955
1080
  :param dict [params]: extra parameters specific to the exchange API endpoint
956
1081
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
957
1082
  """
@@ -981,8 +1106,11 @@ class coinmate(Exchange, ImplicitAPI):
981
1106
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
982
1107
  """
983
1108
  fetches information on an order made by the user
984
- :see: https://coinmate.docs.apiary.io/#reference/order/get-order-by-orderid/post
985
- :see: https://coinmate.docs.apiary.io/#reference/order/get-order-by-clientorderid/post
1109
+
1110
+ https://coinmate.docs.apiary.io/#reference/order/get-order-by-orderid/post
1111
+ https://coinmate.docs.apiary.io/#reference/order/get-order-by-clientorderid/post
1112
+
1113
+ :param str id: order id
986
1114
  :param str symbol: unified symbol of the market the order was made in
987
1115
  :param dict [params]: extra parameters specific to the exchange API endpoint
988
1116
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1001,7 +1129,9 @@ class coinmate(Exchange, ImplicitAPI):
1001
1129
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1002
1130
  """
1003
1131
  cancels an open order
1004
- :see: https://coinmate.docs.apiary.io/#reference/order/cancel-order/post
1132
+
1133
+ https://coinmate.docs.apiary.io/#reference/order/cancel-order/post
1134
+
1005
1135
  :param str id: order id
1006
1136
  :param str symbol: not used by coinmate cancelOrder()
1007
1137
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1048,20 +1178,16 @@ class coinmate(Exchange, ImplicitAPI):
1048
1178
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1049
1179
 
1050
1180
  def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1051
- if response is not None:
1052
- if 'error' in response:
1053
- # {"error":true,"errorMessage":"Minimum Order Size 0.01 ETH","data":null}
1054
- if response['error']:
1055
- message = self.safe_string(response, 'errorMessage')
1056
- feedback = self.id + ' ' + message
1057
- self.throw_exactly_matched_exception(self.exceptions['exact'], message, feedback)
1058
- self.throw_broadly_matched_exception(self.exceptions['broad'], message, feedback)
1059
- raise ExchangeError(self.id + ' ' + self.json(response))
1060
- if code > 400:
1061
- if body:
1062
- feedback = self.id + ' ' + body
1063
- self.throw_exactly_matched_exception(self.exceptions['exact'], body, feedback)
1064
- self.throw_broadly_matched_exception(self.exceptions['broad'], body, feedback)
1065
- raise ExchangeError(feedback) # unknown message
1066
- raise ExchangeError(self.id + ' ' + body)
1181
+ if response is None:
1182
+ return None # fallback to default error handler
1183
+ #
1184
+ # {"error":true,"errorMessage":"Api internal error","data":null}
1185
+ # {"error":true,"errorMessage":"Access denied.","data":null}
1186
+ #
1187
+ errorMessage = self.safe_string(response, 'errorMessage')
1188
+ if errorMessage is not None:
1189
+ feedback = self.id + ' ' + body
1190
+ self.throw_exactly_matched_exception(self.exceptions['exact'], errorMessage, feedback)
1191
+ self.throw_broadly_matched_exception(self.exceptions['broad'], errorMessage, feedback)
1192
+ raise ExchangeError(feedback) # unknown message
1067
1193
  return None