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
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.onetrading import ImplicitAPI
8
- from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
8
+ from ccxt.base.types import Any, Balances, Currencies, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import AuthenticationError
@@ -16,6 +16,7 @@ from ccxt.base.errors import InsufficientFunds
16
16
  from ccxt.base.errors import InvalidAddress
17
17
  from ccxt.base.errors import InvalidOrder
18
18
  from ccxt.base.errors import OrderNotFound
19
+ from ccxt.base.errors import NotSupported
19
20
  from ccxt.base.errors import DDoSProtection
20
21
  from ccxt.base.errors import ExchangeNotAvailable
21
22
  from ccxt.base.decimal_to_precision import TICK_SIZE
@@ -24,7 +25,7 @@ from ccxt.base.precise import Precise
24
25
 
25
26
  class onetrading(Exchange, ImplicitAPI):
26
27
 
27
- def describe(self):
28
+ def describe(self) -> Any:
28
29
  return self.deep_extend(super(onetrading, self).describe(), {
29
30
  'id': 'onetrading',
30
31
  'name': 'One Trading',
@@ -41,46 +42,75 @@ class onetrading(Exchange, ImplicitAPI):
41
42
  'future': False,
42
43
  'option': False,
43
44
  'addMargin': False,
45
+ 'borrowCrossMargin': False,
46
+ 'borrowIsolatedMargin': False,
47
+ 'borrowMargin': False,
44
48
  'cancelAllOrders': True,
45
49
  'cancelOrder': True,
46
50
  'cancelOrders': True,
47
51
  'closeAllPositions': False,
48
52
  'closePosition': False,
49
- 'createDepositAddress': True,
53
+ 'createDepositAddress': False,
50
54
  'createOrder': True,
51
55
  'createReduceOnlyOrder': False,
52
56
  'createStopLimitOrder': True,
53
57
  'createStopMarketOrder': False,
54
58
  'createStopOrder': True,
55
59
  'fetchAccounts': False,
60
+ 'fetchAllGreeks': False,
56
61
  'fetchBalance': True,
62
+ 'fetchBorrowInterest': False,
63
+ 'fetchBorrowRate': False,
57
64
  'fetchBorrowRateHistories': False,
58
65
  'fetchBorrowRateHistory': False,
66
+ 'fetchBorrowRates': False,
67
+ 'fetchBorrowRatesPerSymbol': False,
59
68
  'fetchClosedOrders': True,
60
69
  'fetchCrossBorrowRate': False,
61
70
  'fetchCrossBorrowRates': False,
62
71
  'fetchCurrencies': True,
63
72
  'fetchDeposit': False,
64
- 'fetchDepositAddress': True,
73
+ 'fetchDepositAddress': False,
65
74
  'fetchDepositAddresses': False,
66
- 'fetchDeposits': True,
75
+ 'fetchDepositAddressesByNetwork': False,
76
+ 'fetchDeposits': False,
67
77
  'fetchDepositsWithdrawals': False,
68
78
  'fetchFundingHistory': False,
79
+ 'fetchFundingInterval': False,
80
+ 'fetchFundingIntervals': False,
69
81
  'fetchFundingRate': False,
70
82
  'fetchFundingRateHistory': False,
71
83
  'fetchFundingRates': False,
84
+ 'fetchGreeks': False,
72
85
  'fetchIndexOHLCV': False,
73
86
  'fetchIsolatedBorrowRate': False,
74
87
  'fetchIsolatedBorrowRates': False,
88
+ 'fetchIsolatedPositions': False,
75
89
  'fetchLedger': False,
76
90
  'fetchLeverage': False,
91
+ 'fetchLeverages': False,
92
+ 'fetchLeverageTiers': False,
93
+ 'fetchLiquidations': False,
94
+ 'fetchLongShortRatio': False,
95
+ 'fetchLongShortRatioHistory': False,
96
+ 'fetchMarginAdjustmentHistory': False,
77
97
  'fetchMarginMode': False,
98
+ 'fetchMarginModes': False,
99
+ 'fetchMarketLeverageTiers': False,
78
100
  'fetchMarkets': True,
79
101
  'fetchMarkOHLCV': False,
102
+ 'fetchMarkPrice': False,
103
+ 'fetchMarkPrices': False,
104
+ 'fetchMyLiquidations': False,
105
+ 'fetchMySettlementHistory': False,
80
106
  'fetchMyTrades': True,
81
107
  'fetchOHLCV': True,
108
+ 'fetchOpenInterest': False,
82
109
  'fetchOpenInterestHistory': False,
110
+ 'fetchOpenInterests': False,
83
111
  'fetchOpenOrders': True,
112
+ 'fetchOption': False,
113
+ 'fetchOptionChain': False,
84
114
  'fetchOrder': True,
85
115
  'fetchOrderBook': True,
86
116
  'fetchOrders': False,
@@ -93,10 +123,11 @@ class onetrading(Exchange, ImplicitAPI):
93
123
  'fetchPositionsHistory': False,
94
124
  'fetchPositionsRisk': False,
95
125
  'fetchPremiumIndexOHLCV': False,
126
+ 'fetchSettlementHistory': False,
96
127
  'fetchTicker': True,
97
128
  'fetchTickers': True,
98
129
  'fetchTime': True,
99
- 'fetchTrades': True,
130
+ 'fetchTrades': False,
100
131
  'fetchTradingFee': False,
101
132
  'fetchTradingFees': True,
102
133
  'fetchTransactionFee': False,
@@ -104,15 +135,19 @@ class onetrading(Exchange, ImplicitAPI):
104
135
  'fetchTransactions': False,
105
136
  'fetchTransfer': False,
106
137
  'fetchTransfers': False,
138
+ 'fetchUnderlyingAssets': False,
139
+ 'fetchVolatilityHistory': False,
107
140
  'fetchWithdrawal': False,
108
- 'fetchWithdrawals': True,
141
+ 'fetchWithdrawals': False,
109
142
  'reduceMargin': False,
143
+ 'repayCrossMargin': False,
144
+ 'repayIsolatedMargin': False,
110
145
  'setLeverage': False,
111
146
  'setMargin': False,
112
147
  'setMarginMode': False,
113
148
  'setPositionMode': False,
114
149
  'transfer': False,
115
- 'withdraw': True,
150
+ 'withdraw': False,
116
151
  },
117
152
  'timeframes': {
118
153
  '1m': '1/MINUTES',
@@ -128,8 +163,8 @@ class onetrading(Exchange, ImplicitAPI):
128
163
  'urls': {
129
164
  'logo': 'https://github.com/ccxt/ccxt/assets/43336371/bdbc26fd-02f2-4ca7-9f1e-17333690bb1c',
130
165
  'api': {
131
- 'public': 'https://api.onetrading.com/public',
132
- 'private': 'https://api.onetrading.com/public',
166
+ 'public': 'https://api.onetrading.com/fast',
167
+ 'private': 'https://api.onetrading.com/fast',
133
168
  },
134
169
  'www': 'https://onetrading.com/',
135
170
  'doc': [
@@ -147,32 +182,20 @@ class onetrading(Exchange, ImplicitAPI):
147
182
  'order-book/{instrument_code}',
148
183
  'market-ticker',
149
184
  'market-ticker/{instrument_code}',
150
- 'price-ticks/{instrument_code}',
151
185
  'time',
152
186
  ],
153
187
  },
154
188
  'private': {
155
189
  'get': [
156
190
  'account/balances',
157
- 'account/deposit/crypto/{currency_code}',
158
- 'account/deposit/fiat/EUR',
159
- 'account/deposits',
160
- 'account/deposits/bitpanda',
161
- 'account/withdrawals',
162
- 'account/withdrawals/bitpanda',
163
191
  'account/fees',
164
192
  'account/orders',
165
193
  'account/orders/{order_id}',
166
194
  'account/orders/{order_id}/trades',
167
195
  'account/trades',
168
196
  'account/trades/{trade_id}',
169
- 'account/trading-volume',
170
197
  ],
171
198
  'post': [
172
- 'account/deposit/crypto',
173
- 'account/withdraw/crypto',
174
- 'account/withdraw/fiat',
175
- 'account/fees',
176
199
  'account/orders',
177
200
  ],
178
201
  'delete': [
@@ -299,6 +322,7 @@ class onetrading(Exchange, ImplicitAPI):
299
322
  'INTERNAL_SERVER_ERROR': ExchangeError,
300
323
  },
301
324
  'broad': {
325
+ 'Order not found.': OrderNotFound,
302
326
  },
303
327
  },
304
328
  'commonCurrencies': {
@@ -311,11 +335,84 @@ class onetrading(Exchange, ImplicitAPI):
311
335
  },
312
336
  'fiat': ['EUR', 'CHF'],
313
337
  },
338
+ 'features': {
339
+ 'spot': {
340
+ 'sandbox': False,
341
+ 'createOrder': {
342
+ 'marginMode': False,
343
+ 'triggerPrice': False,
344
+ 'triggerDirection': False,
345
+ 'triggerPriceType': None,
346
+ 'stopLossPrice': False,
347
+ 'takeProfitPrice': False,
348
+ 'attachedStopLossTakeProfit': None,
349
+ 'timeInForce': {
350
+ 'IOC': True,
351
+ 'FOK': True,
352
+ 'PO': True,
353
+ 'GTD': False,
354
+ },
355
+ 'hedged': False,
356
+ 'trailing': False,
357
+ 'leverage': False,
358
+ 'marketBuyByCost': False,
359
+ 'marketBuyRequiresPrice': False,
360
+ 'selfTradePrevention': False,
361
+ 'iceberg': False,
362
+ },
363
+ 'createOrders': None,
364
+ 'fetchMyTrades': {
365
+ 'marginMode': False,
366
+ 'limit': 100,
367
+ 'daysBack': 100000, # todo
368
+ 'untilDays': 100000, # todo
369
+ 'symbolRequired': False,
370
+ },
371
+ 'fetchOrder': {
372
+ 'marginMode': False,
373
+ 'trigger': False,
374
+ 'trailing': False,
375
+ 'symbolRequired': False,
376
+ },
377
+ 'fetchOpenOrders': {
378
+ 'marginMode': False,
379
+ 'limit': 100,
380
+ 'trigger': False,
381
+ 'trailing': False,
382
+ 'symbolRequired': False,
383
+ },
384
+ 'fetchOrders': None, # todo
385
+ 'fetchClosedOrders': {
386
+ 'marginMode': False,
387
+ 'limit': 100,
388
+ 'daysBack': 100000, # todo
389
+ 'daysBackCanceled': 1 / 12, # todo
390
+ 'untilDays': 100000, # todo
391
+ 'trigger': False,
392
+ 'trailing': False,
393
+ 'symbolRequired': False,
394
+ },
395
+ 'fetchOHLCV': {
396
+ 'limit': 5000,
397
+ },
398
+ },
399
+ 'swap': {
400
+ 'linear': None,
401
+ 'inverse': None,
402
+ },
403
+ 'future': {
404
+ 'linear': None,
405
+ 'inverse': None,
406
+ },
407
+ },
314
408
  })
315
409
 
316
- async def fetch_time(self, params={}):
410
+ async def fetch_time(self, params={}) -> Int:
317
411
  """
318
412
  fetches the current integer timestamp in milliseconds from the exchange server
413
+
414
+ https://docs.onetrading.com/#time
415
+
319
416
  :param dict [params]: extra parameters specific to the exchange API endpoint
320
417
  :returns int: the current integer timestamp in milliseconds from the exchange server
321
418
  """
@@ -331,6 +428,9 @@ class onetrading(Exchange, ImplicitAPI):
331
428
  async def fetch_currencies(self, params={}) -> Currencies:
332
429
  """
333
430
  fetches all available currencies on an exchange
431
+
432
+ https://docs.onetrading.com/#currencies
433
+
334
434
  :param dict [params]: extra parameters specific to the exchange API endpoint
335
435
  :returns dict: an associative dictionary of currencies
336
436
  """
@@ -338,9 +438,12 @@ class onetrading(Exchange, ImplicitAPI):
338
438
  #
339
439
  # [
340
440
  # {
341
- # "code":"BEST",
342
- # "precision":8
343
- # }
441
+ # "code": "USDT",
442
+ # "precision": 6,
443
+ # "unified_cryptoasset_id": 825,
444
+ # "name": "Tether USDt",
445
+ # "collateral_percentage": 0
446
+ # },
344
447
  # ]
345
448
  #
346
449
  result: dict = {}
@@ -348,11 +451,11 @@ class onetrading(Exchange, ImplicitAPI):
348
451
  currency = response[i]
349
452
  id = self.safe_string(currency, 'code')
350
453
  code = self.safe_currency_code(id)
351
- result[code] = {
454
+ result[code] = self.safe_currency_structure({
352
455
  'id': id,
353
456
  'code': code,
354
- 'name': None,
355
- 'info': currency, # the original payload
457
+ 'name': self.safe_string(currency, 'name'),
458
+ 'info': currency,
356
459
  'active': None,
357
460
  'fee': None,
358
461
  'precision': self.parse_number(self.parse_precision(self.safe_string(currency, 'precision'))),
@@ -363,12 +466,15 @@ class onetrading(Exchange, ImplicitAPI):
363
466
  'withdraw': {'min': None, 'max': None},
364
467
  },
365
468
  'networks': {},
366
- }
469
+ })
367
470
  return result
368
471
 
369
472
  async def fetch_markets(self, params={}) -> List[Market]:
370
473
  """
371
474
  retrieves data on all markets for onetrading
475
+
476
+ https://docs.onetrading.com/#instruments
477
+
372
478
  :param dict [params]: extra parameters specific to the exchange API endpoint
373
479
  :returns dict[]: an array of objects representing market data
374
480
  """
@@ -449,6 +555,10 @@ class onetrading(Exchange, ImplicitAPI):
449
555
  async def fetch_trading_fees(self, params={}) -> TradingFees:
450
556
  """
451
557
  fetch the trading fees for multiple markets
558
+
559
+ https://docs.onetrading.com/#fee-groups
560
+ https://docs.onetrading.com/#fees
561
+
452
562
  :param dict [params]: extra parameters specific to the exchange API endpoint
453
563
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
454
564
  """
@@ -457,7 +567,12 @@ class onetrading(Exchange, ImplicitAPI):
457
567
  if method is None:
458
568
  options = self.safe_value(self.options, 'fetchTradingFees', {})
459
569
  method = self.safe_string(options, 'method', 'fetchPrivateTradingFees')
460
- return await getattr(self, method)(params)
570
+ if method == 'fetchPrivateTradingFees':
571
+ return await self.fetch_private_trading_fees(params)
572
+ elif method == 'fetchPublicTradingFees':
573
+ return await self.fetch_public_trading_fees(params)
574
+ else:
575
+ raise NotSupported(self.id + ' fetchTradingFees() does not support ' + method + ', fetchPrivateTradingFees and fetchPublicTradingFees are supported')
461
576
 
462
577
  async def fetch_public_trading_fees(self, params={}):
463
578
  await self.load_markets()
@@ -616,6 +731,9 @@ class onetrading(Exchange, ImplicitAPI):
616
731
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
617
732
  """
618
733
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
734
+
735
+ https://docs.onetrading.com/#market-ticker-for-instrument
736
+
619
737
  :param str symbol: unified symbol of the market to fetch the ticker for
620
738
  :param dict [params]: extra parameters specific to the exchange API endpoint
621
739
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -649,7 +767,10 @@ class onetrading(Exchange, ImplicitAPI):
649
767
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
650
768
  """
651
769
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
652
- :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
770
+
771
+ https://docs.onetrading.com/#market-ticker
772
+
773
+ :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
653
774
  :param dict [params]: extra parameters specific to the exchange API endpoint
654
775
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
655
776
  """
@@ -686,6 +807,9 @@ class onetrading(Exchange, ImplicitAPI):
686
807
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
687
808
  """
688
809
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
810
+
811
+ https://docs.onetrading.com/#order-book
812
+
689
813
  :param str symbol: unified symbol of the market to fetch the order book for
690
814
  :param int [limit]: the maximum amount of order book entries to return
691
815
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -808,6 +932,9 @@ class onetrading(Exchange, ImplicitAPI):
808
932
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
809
933
  """
810
934
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
935
+
936
+ https://docs.onetrading.com/#candlesticks
937
+
811
938
  :param str symbol: unified symbol of the market to fetch OHLCV data for
812
939
  :param str timeframe: the length of time each candle represents
813
940
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -845,7 +972,8 @@ class onetrading(Exchange, ImplicitAPI):
845
972
  # {"instrument_code":"BTC_EUR","granularity":{"unit":"HOURS","period":1},"high":"9135.7","low":"9002.59","open":"9055.45","close":"9133.98","total_amount":"26.21919","volume":"238278.8724959","time":"2020-05-09T00:59:59.999Z","last_sequence":461521},
846
973
  # ]
847
974
  #
848
- return self.parse_ohlcvs(response, market, timeframe, since, limit)
975
+ ohlcv = self.safe_list(response, 'candlesticks')
976
+ return self.parse_ohlcvs(ohlcv, market, timeframe, since, limit)
849
977
 
850
978
  def parse_trade(self, trade: dict, market: Market = None) -> Trade:
851
979
  #
@@ -926,44 +1054,6 @@ class onetrading(Exchange, ImplicitAPI):
926
1054
  'info': trade,
927
1055
  }, market)
928
1056
 
929
- async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
930
- """
931
- get the list of most recent trades for a particular symbol
932
- :param str symbol: unified symbol of the market to fetch trades for
933
- :param int [since]: timestamp in ms of the earliest trade to fetch
934
- :param int [limit]: the maximum amount of trades to fetch
935
- :param dict [params]: extra parameters specific to the exchange API endpoint
936
- :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
937
- """
938
- await self.load_markets()
939
- market = self.market(symbol)
940
- request: dict = {
941
- 'instrument_code': market['id'],
942
- # 'from': self.iso8601(since),
943
- # 'to': self.iso8601(self.milliseconds()),
944
- }
945
- if since is not None:
946
- # returns price ticks for a specific market with an interval of maximum of 4 hours
947
- # sorted by latest first
948
- request['from'] = self.iso8601(since)
949
- request['to'] = self.iso8601(self.sum(since, 14400000))
950
- response = await self.publicGetPriceTicksInstrumentCode(self.extend(request, params))
951
- #
952
- # [
953
- # {
954
- # "instrument_code":"BTC_EUR",
955
- # "price":"8137.28",
956
- # "amount":"0.22269",
957
- # "taker_side":"BUY",
958
- # "volume":"1812.0908832",
959
- # "time":"2020-07-10T14:44:32.299Z",
960
- # "trade_timestamp":1594392272299,
961
- # "sequence":603047
962
- # }
963
- # ]
964
- #
965
- return self.parse_trades(response, market, since, limit)
966
-
967
1057
  def parse_balance(self, response) -> Balances:
968
1058
  balances = self.safe_value(response, 'balances', [])
969
1059
  result: dict = {'info': response}
@@ -980,6 +1070,9 @@ class onetrading(Exchange, ImplicitAPI):
980
1070
  async def fetch_balance(self, params={}) -> Balances:
981
1071
  """
982
1072
  query for balance and get the amount of funds available for trading or funds locked in orders
1073
+
1074
+ https://docs.onetrading.com/#balances
1075
+
983
1076
  :param dict [params]: extra parameters specific to the exchange API endpoint
984
1077
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
985
1078
  """
@@ -1003,317 +1096,6 @@ class onetrading(Exchange, ImplicitAPI):
1003
1096
  #
1004
1097
  return self.parse_balance(response)
1005
1098
 
1006
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1007
- code = None
1008
- if currency is not None:
1009
- code = currency['code']
1010
- address = self.safe_string(depositAddress, 'address')
1011
- tag = self.safe_string(depositAddress, 'destination_tag')
1012
- self.check_address(address)
1013
- return {
1014
- 'currency': code,
1015
- 'address': address,
1016
- 'tag': tag,
1017
- 'network': None,
1018
- 'info': depositAddress,
1019
- }
1020
-
1021
- async def create_deposit_address(self, code: str, params={}):
1022
- """
1023
- create a currency deposit address
1024
- :param str code: unified currency code of the currency for the deposit address
1025
- :param dict [params]: extra parameters specific to the exchange API endpoint
1026
- :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1027
- """
1028
- await self.load_markets()
1029
- currency = self.currency(code)
1030
- request: dict = {
1031
- 'currency': currency['id'],
1032
- }
1033
- response = await self.privatePostAccountDepositCrypto(self.extend(request, params))
1034
- #
1035
- # {
1036
- # "address":"rBnNhk95FrdNisZtXcStzriFS8vEzz53DM",
1037
- # "destination_tag":"865690307",
1038
- # "enabled":true,
1039
- # "is_smart_contract":false
1040
- # }
1041
- #
1042
- return self.parse_deposit_address(response, currency)
1043
-
1044
- async def fetch_deposit_address(self, code: str, params={}):
1045
- """
1046
- fetch the deposit address for a currency associated with self account
1047
- :param str code: unified currency code
1048
- :param dict [params]: extra parameters specific to the exchange API endpoint
1049
- :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1050
- """
1051
- await self.load_markets()
1052
- currency = self.currency(code)
1053
- request: dict = {
1054
- 'currency_code': currency['id'],
1055
- }
1056
- response = await self.privateGetAccountDepositCryptoCurrencyCode(self.extend(request, params))
1057
- #
1058
- # {
1059
- # "address":"rBnNhk95FrdNisZtXcStzriFS8vEzz53DM",
1060
- # "destination_tag":"865690307",
1061
- # "enabled":true,
1062
- # "is_smart_contract":false,
1063
- # "can_create_more":false
1064
- # }
1065
- #
1066
- return self.parse_deposit_address(response, currency)
1067
-
1068
- async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1069
- """
1070
- fetch all deposits made to an account
1071
- :param str code: unified currency code
1072
- :param int [since]: the earliest time in ms to fetch deposits for
1073
- :param int [limit]: the maximum number of deposits structures to retrieve
1074
- :param dict [params]: extra parameters specific to the exchange API endpoint
1075
- :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
1076
- """
1077
- await self.load_markets()
1078
- request: dict = {
1079
- # 'cursor': 'string', # pointer specifying the position from which the next pages should be returned
1080
- }
1081
- currency = None
1082
- if code is not None:
1083
- currency = self.currency(code)
1084
- request['currency_code'] = currency['id']
1085
- if limit is not None:
1086
- request['max_page_size'] = limit
1087
- if since is not None:
1088
- to = self.safe_string(params, 'to')
1089
- if to is None:
1090
- raise ArgumentsRequired(self.id + ' fetchDeposits() requires a "to" iso8601 string param with the since argument is specified')
1091
- request['from'] = self.iso8601(since)
1092
- response = await self.privateGetAccountDeposits(self.extend(request, params))
1093
- #
1094
- # {
1095
- # "deposit_history": [
1096
- # {
1097
- # "transaction_id": "e5342efcd-d5b7-4a56-8e12-b69ffd68c5ef",
1098
- # "account_id": "c2d0076a-c20d-41f8-9e9a-1a1d028b2b58",
1099
- # "amount": "100",
1100
- # "type": "CRYPTO",
1101
- # "funds_source": "INTERNAL",
1102
- # "time": "2020-04-22T09:57:47Z",
1103
- # "currency": "BTC",
1104
- # "fee_amount": "0.0",
1105
- # "fee_currency": "BTC"
1106
- # },
1107
- # {
1108
- # "transaction_id": "79793d00-2899-4a4d-95b7-73ae6b31384f",
1109
- # "account_id": "c2d0076a-c20d-41f8-9e9a-1a1d028b2b58",
1110
- # "time": "2020-05-05T11:22:07.925Z",
1111
- # "currency": "EUR",
1112
- # "funds_source": "EXTERNAL",
1113
- # "type": "FIAT",
1114
- # "amount": "50.0",
1115
- # "fee_amount": "0.01",
1116
- # "fee_currency": "EUR"
1117
- # }
1118
- # ],
1119
- # "max_page_size": 2,
1120
- # "cursor": "eyJhY2NvdW50X2lkIjp7InMiOiJlMzY5YWM4MC00NTc3LTExZTktYWUwOC05YmVkYzQ3OTBiODQiLCJzcyI6W10sIm5zIjpbXSwiYnMiOltdLCJtIjp7fSwibCI6W119LCJpdGVtX2tleSI6eyJzIjoiV0lUSERSQVdBTDo6MmFlMjYwY2ItOTk3MC00YmNiLTgxNmEtZGY4MDVmY2VhZTY1Iiwic3MiOltdLCJucyI6W10sImJzIjpbXSwibSI6e30sImwiOltdfSwiZ2xvYmFsX3dpdGhkcmF3YWxfaW5kZXhfaGFzaF9rZXkiOnsicyI6ImUzNjlhYzgwLTQ1NzctMTFlOS1hZTA4LTliZWRjNDc5MGI4NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX0sInRpbWVzdGFtcCI6eyJuIjoiMTU4ODA1ODc2Nzk0OCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX19"
1121
- # }
1122
- #
1123
- depositHistory = self.safe_list(response, 'deposit_history', [])
1124
- return self.parse_transactions(depositHistory, currency, since, limit, {'type': 'deposit'})
1125
-
1126
- async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1127
- """
1128
- fetch all withdrawals made from an account
1129
- :param str code: unified currency code
1130
- :param int [since]: the earliest time in ms to fetch withdrawals for
1131
- :param int [limit]: the maximum number of withdrawals structures to retrieve
1132
- :param dict [params]: extra parameters specific to the exchange API endpoint
1133
- :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
1134
- """
1135
- await self.load_markets()
1136
- request: dict = {
1137
- # 'cursor': 'string', # pointer specifying the position from which the next pages should be returned
1138
- }
1139
- currency = None
1140
- if code is not None:
1141
- currency = self.currency(code)
1142
- request['currency_code'] = currency['id']
1143
- if limit is not None:
1144
- request['max_page_size'] = limit
1145
- if since is not None:
1146
- to = self.safe_string(params, 'to')
1147
- if to is None:
1148
- raise ArgumentsRequired(self.id + ' fetchWithdrawals() requires a "to" iso8601 string param with the since argument is specified')
1149
- request['from'] = self.iso8601(since)
1150
- response = await self.privateGetAccountWithdrawals(self.extend(request, params))
1151
- #
1152
- # {
1153
- # "withdrawal_history": [
1154
- # {
1155
- # "account_id": "e369ac80-4577-11e9-ae08-9bedc4790b84",
1156
- # "amount": "0.1",
1157
- # "currency": "BTC",
1158
- # "fee_amount": "0.00002",
1159
- # "fee_currency": "BTC",
1160
- # "funds_source": "EXTERNAL",
1161
- # "related_transaction_id": "e298341a-3855-405e-bce3-92db368a3157",
1162
- # "time": "2020-05-05T11:11:32.110Z",
1163
- # "transaction_id": "6693ff40-bb10-4dcf-ada7-3b287727c882",
1164
- # "type": "CRYPTO"
1165
- # },
1166
- # {
1167
- # "account_id": "e369ac80-4577-11e9-ae08-9bedc4790b84",
1168
- # "amount": "0.1",
1169
- # "currency": "BTC",
1170
- # "fee_amount": "0.0",
1171
- # "fee_currency": "BTC",
1172
- # "funds_source": "INTERNAL",
1173
- # "time": "2020-05-05T10:29:53.464Z",
1174
- # "transaction_id": "ec9703b1-954b-4f76-adea-faac66eabc0b",
1175
- # "type": "CRYPTO"
1176
- # }
1177
- # ],
1178
- # "cursor": "eyJhY2NvdW50X2lkIjp7InMiOiJlMzY5YWM4MC00NTc3LTExZTktYWUwOC05YmVkYzQ3OTBiODQiLCJzcyI6W10sIm5zIjpbXSwiYnMiOltdLCJtIjp7fSwibCI6W119LCJpdGVtX2tleSI6eyJzIjoiV0lUSERSQVdBTDo6ZWM5NzAzYjEtOTU0Yi00Zjc2LWFkZWEtZmFhYzY2ZWFiYzBiIiwic3MiOltdLCJucyI6W10sImJzIjpbXSwibSI6e30sImwiOltdfSwiZ2xvYmFsX3dpdGhkcmF3YWxfaW5kZXhfaGFzaF9rZXkiOnsicyI6ImUzNjlhYzgwLTQ1NzctMTFlOS1hZTA4LTliZWRjNDc5MGI4NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX0sInRpbWVzdGFtcCI6eyJuIjoiMTU4ODY3NDU5MzQ2NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX19",
1179
- # "max_page_size": 2
1180
- # }
1181
- #
1182
- withdrawalHistory = self.safe_list(response, 'withdrawal_history', [])
1183
- return self.parse_transactions(withdrawalHistory, currency, since, limit, {'type': 'withdrawal'})
1184
-
1185
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1186
- """
1187
- make a withdrawal
1188
- :param str code: unified currency code
1189
- :param float amount: the amount to withdraw
1190
- :param str address: the address to withdraw to
1191
- :param str tag:
1192
- :param dict [params]: extra parameters specific to the exchange API endpoint
1193
- :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
1194
- """
1195
- tag, params = self.handle_withdraw_tag_and_params(tag, params)
1196
- self.check_address(address)
1197
- await self.load_markets()
1198
- currency = self.currency(code)
1199
- request: dict = {
1200
- 'currency': code,
1201
- 'amount': self.currency_to_precision(code, amount),
1202
- # 'payout_account_id': '66756a10-3e86-48f4-9678-b634c4b135b2', # fiat only
1203
- # 'recipient': { # crypto only
1204
- # 'address': address,
1205
- # # 'destination_tag': '',
1206
- # },
1207
- }
1208
- options = self.safe_value(self.options, 'fiat', [])
1209
- isFiat = self.in_array(code, options)
1210
- method = 'privatePostAccountWithdrawFiat' if isFiat else 'privatePostAccountWithdrawCrypto'
1211
- if isFiat:
1212
- payoutAccountId = self.safe_string(params, 'payout_account_id')
1213
- if payoutAccountId is None:
1214
- raise ArgumentsRequired(self.id + ' withdraw() requires a payout_account_id param for fiat ' + code + ' withdrawals')
1215
- else:
1216
- recipient: dict = {'address': address}
1217
- if tag is not None:
1218
- recipient['destination_tag'] = tag
1219
- request['recipient'] = recipient
1220
- response = await getattr(self, method)(self.extend(request, params))
1221
- #
1222
- # crypto
1223
- #
1224
- # {
1225
- # "amount": "1234.5678",
1226
- # "fee": "1234.5678",
1227
- # "recipient": "3NacQ7rzZdhfyAtfJ5a11k8jFPdcMP2Bq7",
1228
- # "destination_tag": "",
1229
- # "transaction_id": "d0f8529f-f832-4e6a-9dc5-b8d5797badb2"
1230
- # }
1231
- #
1232
- # fiat
1233
- #
1234
- # {
1235
- # "transaction_id": "54236cd0-4413-11e9-93fb-5fea7e5b5df6"
1236
- # }
1237
- #
1238
- return self.parse_transaction(response, currency)
1239
-
1240
- def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1241
- #
1242
- # fetchDeposits, fetchWithdrawals
1243
- #
1244
- # {
1245
- # "transaction_id": "C2b42efcd-d5b7-4a56-8e12-b69ffd68c5ef",
1246
- # "type": "FIAT",
1247
- # "account_id": "c2d0076a-c20d-41f8-9e9a-1a1d028b2b58",
1248
- # "amount": "1234.5678",
1249
- # "time": "2019-08-24T14:15:22Z",
1250
- # "funds_source": "INTERNAL",
1251
- # "currency": "BTC",
1252
- # "fee_amount": "1234.5678",
1253
- # "fee_currency": "BTC",
1254
- # "blockchain_transaction_id": "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16",
1255
- # "related_transaction_id": "e298341a-3855-405e-bce3-92db368a3157"
1256
- # }
1257
- #
1258
- # withdraw
1259
- #
1260
- #
1261
- # crypto
1262
- #
1263
- # {
1264
- # "amount": "1234.5678",
1265
- # "fee": "1234.5678",
1266
- # "recipient": "3NacQ7rzZdhfyAtfJ5a11k8jFPdcMP2Bq7",
1267
- # "destination_tag": "",
1268
- # "transaction_id": "d0f8529f-f832-4e6a-9dc5-b8d5797badb2"
1269
- # }
1270
- #
1271
- # fiat
1272
- #
1273
- # {
1274
- # "transaction_id": "54236cd0-4413-11e9-93fb-5fea7e5b5df6"
1275
- # }
1276
- #
1277
- id = self.safe_string(transaction, 'transaction_id')
1278
- amount = self.safe_number(transaction, 'amount')
1279
- timestamp = self.parse8601(self.safe_string(transaction, 'time'))
1280
- currencyId = self.safe_string(transaction, 'currency')
1281
- currency = self.safe_currency(currencyId, currency)
1282
- status = 'ok' # the exchange returns cleared transactions only
1283
- feeCost = self.safe_number_2(transaction, 'fee_amount', 'fee')
1284
- fee = None
1285
- addressTo = self.safe_string(transaction, 'recipient')
1286
- tagTo = self.safe_string(transaction, 'destination_tag')
1287
- if feeCost is not None:
1288
- feeCurrencyId = self.safe_string(transaction, 'fee_currency', currencyId)
1289
- feeCurrencyCode = self.safe_currency_code(feeCurrencyId)
1290
- fee = {
1291
- 'cost': feeCost,
1292
- 'currency': feeCurrencyCode,
1293
- }
1294
- return {
1295
- 'info': transaction,
1296
- 'id': id,
1297
- 'currency': currency['code'],
1298
- 'amount': amount,
1299
- 'network': None,
1300
- 'address': addressTo,
1301
- 'addressFrom': None,
1302
- 'addressTo': addressTo,
1303
- 'tag': tagTo,
1304
- 'tagFrom': None,
1305
- 'tagTo': tagTo,
1306
- 'status': status,
1307
- 'type': None,
1308
- 'updated': None,
1309
- 'txid': self.safe_string(transaction, 'blockchain_transaction_id'),
1310
- 'comment': None,
1311
- 'internal': None,
1312
- 'timestamp': timestamp,
1313
- 'datetime': self.iso8601(timestamp),
1314
- 'fee': fee,
1315
- }
1316
-
1317
1099
  def parse_order_status(self, status: Str):
1318
1100
  statuses: dict = {
1319
1101
  'FILLED': 'open',
@@ -1325,6 +1107,7 @@ class onetrading(Exchange, ImplicitAPI):
1325
1107
  'CLOSED': 'canceled',
1326
1108
  'FAILED': 'failed',
1327
1109
  'STOP_TRIGGERED': 'triggered',
1110
+ 'DONE': 'closed',
1328
1111
  }
1329
1112
  return self.safe_string(statuses, status, status)
1330
1113
 
@@ -1409,7 +1192,6 @@ class onetrading(Exchange, ImplicitAPI):
1409
1192
  side = self.safe_string_lower(rawOrder, 'side')
1410
1193
  type = self.safe_string_lower(rawOrder, 'type')
1411
1194
  timeInForce = self.parse_time_in_force(self.safe_string(rawOrder, 'time_in_force'))
1412
- stopPrice = self.safe_number(rawOrder, 'trigger_price')
1413
1195
  postOnly = self.safe_value(rawOrder, 'is_post_only')
1414
1196
  rawTrades = self.safe_value(order, 'trades', [])
1415
1197
  return self.safe_order({
@@ -1420,13 +1202,12 @@ class onetrading(Exchange, ImplicitAPI):
1420
1202
  'datetime': self.iso8601(timestamp),
1421
1203
  'lastTradeTimestamp': None,
1422
1204
  'symbol': symbol,
1423
- 'type': type,
1205
+ 'type': self.parse_order_type(type),
1424
1206
  'timeInForce': timeInForce,
1425
1207
  'postOnly': postOnly,
1426
1208
  'side': side,
1427
1209
  'price': price,
1428
- 'stopPrice': stopPrice,
1429
- 'triggerPrice': stopPrice,
1210
+ 'triggerPrice': self.safe_number(rawOrder, 'trigger_price'),
1430
1211
  'amount': amount,
1431
1212
  'cost': None,
1432
1213
  'average': None,
@@ -1437,6 +1218,12 @@ class onetrading(Exchange, ImplicitAPI):
1437
1218
  'trades': rawTrades,
1438
1219
  }, market)
1439
1220
 
1221
+ def parse_order_type(self, type: Str):
1222
+ types: dict = {
1223
+ 'booked': 'limit',
1224
+ }
1225
+ return self.safe_string(types, type, type)
1226
+
1440
1227
  def parse_time_in_force(self, timeInForce: Str):
1441
1228
  timeInForces: dict = {
1442
1229
  'GOOD_TILL_CANCELLED': 'GTC',
@@ -1449,12 +1236,14 @@ class onetrading(Exchange, ImplicitAPI):
1449
1236
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1450
1237
  """
1451
1238
  create a trade order
1452
- :see: https://docs.onetrading.com/#create-order
1239
+
1240
+ https://docs.onetrading.com/#create-order
1241
+
1453
1242
  :param str symbol: unified symbol of the market to create an order in
1454
- :param str type: 'market' or 'limit'
1243
+ :param str type: 'limit'
1455
1244
  :param str side: 'buy' or 'sell'
1456
1245
  :param float amount: how much of currency you want to trade in units of base currency
1457
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1246
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1458
1247
  :param dict [params]: extra parameters specific to the exchange API endpoint
1459
1248
  :param float [params.triggerPrice]: onetrading only does stop limit orders and does not do stop market
1460
1249
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1492,6 +1281,9 @@ class onetrading(Exchange, ImplicitAPI):
1492
1281
  if clientOrderId is not None:
1493
1282
  request['client_id'] = clientOrderId
1494
1283
  params = self.omit(params, ['clientOrderId', 'client_id'])
1284
+ timeInForce = self.safe_string_2(params, 'timeInForce', 'time_in_force', 'GOOD_TILL_CANCELLED')
1285
+ params = self.omit(params, 'timeInForce')
1286
+ request['time_in_force'] = timeInForce
1495
1287
  response = await self.privatePostAccountOrders(self.extend(request, params))
1496
1288
  #
1497
1289
  # {
@@ -1513,6 +1305,9 @@ class onetrading(Exchange, ImplicitAPI):
1513
1305
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1514
1306
  """
1515
1307
  cancels an open order
1308
+
1309
+ https://docs.onetrading.com/#close-order-by-order-id
1310
+
1516
1311
  :param str id: order id
1517
1312
  :param str symbol: not used by bitmex cancelOrder()
1518
1313
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1528,15 +1323,22 @@ class onetrading(Exchange, ImplicitAPI):
1528
1323
  request['client_id'] = clientOrderId
1529
1324
  else:
1530
1325
  request['order_id'] = id
1531
- response = await getattr(self, method)(self.extend(request, params))
1326
+ response = None
1327
+ if method == 'privateDeleteAccountOrdersOrderId':
1328
+ response = await self.privateDeleteAccountOrdersOrderId(self.extend(request, params))
1329
+ else:
1330
+ response = await self.privateDeleteAccountOrdersClientClientId(self.extend(request, params))
1532
1331
  #
1533
1332
  # responds with an empty body
1534
1333
  #
1535
- return response
1334
+ return self.parse_order(response)
1536
1335
 
1537
1336
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1538
1337
  """
1539
1338
  cancel all open orders
1339
+
1340
+ https://docs.onetrading.com/#close-all-orders
1341
+
1540
1342
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1541
1343
  :param dict [params]: extra parameters specific to the exchange API endpoint
1542
1344
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1552,11 +1354,14 @@ class onetrading(Exchange, ImplicitAPI):
1552
1354
  # "a10e9bd1-8f72-4cfe-9f1b-7f1c8a9bd8ee"
1553
1355
  # ]
1554
1356
  #
1555
- return response
1357
+ return [self.safe_order({'info': response})]
1556
1358
 
1557
1359
  async def cancel_orders(self, ids, symbol: Str = None, params={}):
1558
1360
  """
1559
1361
  cancel multiple orders
1362
+
1363
+ https://docs.onetrading.com/#close-all-orders
1364
+
1560
1365
  :param str[] ids: order ids
1561
1366
  :param str symbol: unified market symbol, default is None
1562
1367
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1577,6 +1382,10 @@ class onetrading(Exchange, ImplicitAPI):
1577
1382
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1578
1383
  """
1579
1384
  fetches information on an order made by the user
1385
+
1386
+ https://docs.onetrading.com/#get-order
1387
+
1388
+ :param str id: the order id
1580
1389
  :param str symbol: not used by onetrading fetchOrder
1581
1390
  :param dict [params]: extra parameters specific to the exchange API endpoint
1582
1391
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1632,6 +1441,9 @@ class onetrading(Exchange, ImplicitAPI):
1632
1441
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1633
1442
  """
1634
1443
  fetch all unfilled currently open orders
1444
+
1445
+ https://docs.onetrading.com/#get-orders
1446
+
1635
1447
  :param str symbol: unified market symbol
1636
1448
  :param int [since]: the earliest time in ms to fetch open orders for
1637
1449
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1746,6 +1558,9 @@ class onetrading(Exchange, ImplicitAPI):
1746
1558
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1747
1559
  """
1748
1560
  fetches information on multiple closed orders made by the user
1561
+
1562
+ https://docs.onetrading.com/#get-orders
1563
+
1749
1564
  :param str symbol: unified market symbol of the market orders were made in
1750
1565
  :param int [since]: the earliest time in ms to fetch orders for
1751
1566
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1760,6 +1575,9 @@ class onetrading(Exchange, ImplicitAPI):
1760
1575
  async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1761
1576
  """
1762
1577
  fetch all the trades made from a single order
1578
+
1579
+ https://docs.onetrading.com/#trades-for-order
1580
+
1763
1581
  :param str id: order id
1764
1582
  :param str symbol: unified market symbol
1765
1583
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1815,6 +1633,9 @@ class onetrading(Exchange, ImplicitAPI):
1815
1633
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1816
1634
  """
1817
1635
  fetch all trades made by the user
1636
+
1637
+ https://docs.onetrading.com/#all-trades
1638
+
1818
1639
  :param str symbol: unified market symbol
1819
1640
  :param int [since]: the earliest time in ms to fetch trades for
1820
1641
  :param int [limit]: the maximum number of trades structures to retrieve