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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +8 -8
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +8 -8
  68. ccxt/async_support/afratether.py +10 -10
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +32 -38
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +32 -27
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +34 -30
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +15 -14
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +30 -36
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +29 -24
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +32 -28
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +13 -12
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.1.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.delta import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, Greeks, Int, Leverage, MarginMode, MarginModification, Market, MarketInterface, Num, Option, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
9
+ from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Greeks, Int, LedgerEntry, Leverage, MarginMode, MarginModification, Market, Num, Option, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, MarketInterface
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -23,7 +23,7 @@ from ccxt.base.precise import Precise
23
23
 
24
24
  class delta(Exchange, ImplicitAPI):
25
25
 
26
- def describe(self):
26
+ def describe(self) -> Any:
27
27
  return self.deep_extend(super(delta, self).describe(), {
28
28
  'id': 'delta',
29
29
  'name': 'Delta Exchange',
@@ -51,6 +51,8 @@ class delta(Exchange, ImplicitAPI):
51
51
  'fetchCurrencies': True,
52
52
  'fetchDeposit': None,
53
53
  'fetchDepositAddress': True,
54
+ 'fetchDepositAddresses': False,
55
+ 'fetchDepositAddressesByNetwork': False,
54
56
  'fetchDeposits': None,
55
57
  'fetchFundingHistory': False,
56
58
  'fetchFundingRate': True,
@@ -227,6 +229,91 @@ class delta(Exchange, ImplicitAPI):
227
229
  'BEP20': 'BEP20(BSC)',
228
230
  },
229
231
  },
232
+ 'features': {
233
+ 'default': {
234
+ 'sandbox': True,
235
+ 'createOrder': {
236
+ 'marginMode': False,
237
+ 'triggerPrice': True, # todo implement
238
+ # todo implement
239
+ 'triggerPriceType': {
240
+ 'last': True,
241
+ 'mark': True,
242
+ 'index': True,
243
+ },
244
+ 'triggerDirection': False,
245
+ 'stopLossPrice': False, # todo
246
+ 'takeProfitPrice': False, # todo
247
+ 'attachedStopLossTakeProfit': {
248
+ 'triggerPriceType': None,
249
+ 'price': True,
250
+ },
251
+ # todo implementation
252
+ 'timeInForce': {
253
+ 'IOC': True,
254
+ 'FOK': True,
255
+ 'PO': True,
256
+ 'GTD': False,
257
+ },
258
+ 'hedged': False,
259
+ 'selfTradePrevention': False,
260
+ 'trailing': False, # todo: implement
261
+ 'iceberg': False,
262
+ 'leverage': False,
263
+ 'marketBuyByCost': False,
264
+ 'marketBuyRequiresPrice': False,
265
+ },
266
+ 'createOrders': None, # todo: implement
267
+ 'fetchMyTrades': {
268
+ 'marginMode': False,
269
+ 'limit': 100, # todo: revise
270
+ 'daysBack': 100000,
271
+ 'untilDays': 100000,
272
+ 'symbolRequired': False,
273
+ },
274
+ 'fetchOrder': None,
275
+ 'fetchOpenOrders': {
276
+ 'marginMode': False,
277
+ 'limit': 100, # todo: revise
278
+ 'trigger': False,
279
+ 'trailing': False,
280
+ 'symbolRequired': False,
281
+ },
282
+ 'fetchOrders': None,
283
+ 'fetchClosedOrders': {
284
+ 'marginMode': False,
285
+ 'limit': 500,
286
+ 'daysBack': 100000,
287
+ 'daysBackCanceled': 1,
288
+ 'untilDays': 100000,
289
+ 'trigger': False,
290
+ 'trailing': False,
291
+ 'symbolRequired': False,
292
+ },
293
+ 'fetchOHLCV': {
294
+ 'limit': 2000, # todo: recheck
295
+ },
296
+ },
297
+ 'spot': {
298
+ 'extends': 'default',
299
+ },
300
+ 'swap': {
301
+ 'linear': {
302
+ 'extends': 'default',
303
+ },
304
+ 'inverse': {
305
+ 'extends': 'default',
306
+ },
307
+ },
308
+ 'future': {
309
+ 'linear': {
310
+ 'extends': 'default',
311
+ },
312
+ 'inverse': {
313
+ 'extends': 'default',
314
+ },
315
+ },
316
+ },
230
317
  'precisionMode': TICK_SIZE,
231
318
  'requiredCredentials': {
232
319
  'apiKey': True,
@@ -270,6 +357,8 @@ class delta(Exchange, ImplicitAPI):
270
357
  base = self.safe_string(optionParts, 1)
271
358
  expiry = self.safe_string(optionParts, 3)
272
359
  optionType = self.safe_string(optionParts, 0)
360
+ if expiry is not None:
361
+ expiry = expiry[4:] + expiry[2:4] + expiry[0:2]
273
362
  settle = quote
274
363
  strike = self.safe_string(optionParts, 2)
275
364
  datetime = self.convert_expire_date(expiry)
@@ -326,7 +415,7 @@ class delta(Exchange, ImplicitAPI):
326
415
  return self.create_expired_option_market(marketId)
327
416
  return super(delta, self).safe_market(marketId, market, delimiter, marketType)
328
417
 
329
- async def fetch_time(self, params={}):
418
+ async def fetch_time(self, params={}) -> Int:
330
419
  """
331
420
  fetches the current integer timestamp in milliseconds from the exchange server
332
421
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -412,37 +501,57 @@ class delta(Exchange, ImplicitAPI):
412
501
  async def fetch_currencies(self, params={}) -> Currencies:
413
502
  """
414
503
  fetches all available currencies on an exchange
415
- :see: https://docs.delta.exchange/#get-list-of-all-assets
504
+
505
+ https://docs.delta.exchange/#get-list-of-all-assets
506
+
416
507
  :param dict [params]: extra parameters specific to the exchange API endpoint
417
508
  :returns dict: an associative dictionary of currencies
418
509
  """
419
510
  response = await self.publicGetAssets(params)
420
511
  #
421
- # {
422
- # "result":[
423
- # {
424
- # "base_withdrawal_fee":"0.0005",
425
- # "deposit_status":"enabled",
426
- # "id":2,
427
- # "interest_credit":true,
428
- # "interest_slabs":[
429
- # {"limit":"0.1","rate":"0"},
430
- # {"limit":"1","rate":"0.05"},
431
- # {"limit":"5","rate":"0.075"},
432
- # {"limit":"10","rate":"0.1"},
433
- # {"limit":"9999999999999999","rate":"0"}
434
- # ],
435
- # "kyc_deposit_limit":"10",
436
- # "kyc_withdrawal_limit":"2",
437
- # "min_withdrawal_amount":"0.001",
438
- # "minimum_precision":4,
439
- # "name":"Bitcoin",
440
- # "precision":8,
441
- # "sort_priority":1,
442
- # "symbol":"BTC",
443
- # "variable_withdrawal_fee":"0",
444
- # "withdrawal_status":"enabled"
445
- # },
512
+ # {
513
+ # "result": [
514
+ # {
515
+ # "base_withdrawal_fee": "0.005000000000000000",
516
+ # "id": "1",
517
+ # "interest_credit": False,
518
+ # "interest_slabs": null,
519
+ # "kyc_deposit_limit": "0.000000000000000000",
520
+ # "kyc_withdrawal_limit": "0.000000000000000000",
521
+ # "min_withdrawal_amount": "0.010000000000000000",
522
+ # "minimum_precision": "4",
523
+ # "name": "Ethereum",
524
+ # "networks": [
525
+ # {
526
+ # "allowed_deposit_groups": null,
527
+ # "base_withdrawal_fee": "0.0025",
528
+ # "deposit_status": "enabled",
529
+ # "memo_required": False,
530
+ # "min_deposit_amount": "0.000050000000000000",
531
+ # "min_withdrawal_amount": "0.010000000000000000",
532
+ # "minimum_deposit_confirmations": "12",
533
+ # "network": "ERC20",
534
+ # "variable_withdrawal_fee": "0",
535
+ # "withdrawal_status": "enabled"
536
+ # },
537
+ # {
538
+ # "allowed_deposit_groups": null,
539
+ # "base_withdrawal_fee": "0.0001",
540
+ # "deposit_status": "enabled",
541
+ # "memo_required": False,
542
+ # "min_deposit_amount": "0.000050000000000000",
543
+ # "min_withdrawal_amount": "0.000300000000000000",
544
+ # "minimum_deposit_confirmations": "15",
545
+ # "network": "BEP20(BSC)",
546
+ # "variable_withdrawal_fee": "0",
547
+ # "withdrawal_status": "enabled"
548
+ # }
549
+ # ],
550
+ # "precision": "18",
551
+ # "sort_priority": "3",
552
+ # "symbol": "ETH",
553
+ # "variable_withdrawal_fee": "0.000000000000000000"
554
+ # },
446
555
  # ],
447
556
  # "success":true
448
557
  # }
@@ -454,20 +563,41 @@ class delta(Exchange, ImplicitAPI):
454
563
  id = self.safe_string(currency, 'symbol')
455
564
  numericId = self.safe_integer(currency, 'id')
456
565
  code = self.safe_currency_code(id)
457
- depositStatus = self.safe_string(currency, 'deposit_status')
458
- withdrawalStatus = self.safe_string(currency, 'withdrawal_status')
459
- depositsEnabled = (depositStatus == 'enabled')
460
- withdrawalsEnabled = (withdrawalStatus == 'enabled')
461
- active = depositsEnabled and withdrawalsEnabled
462
- result[code] = {
566
+ chains = self.safe_list(currency, 'networks', [])
567
+ networks = {}
568
+ for j in range(0, len(chains)):
569
+ chain = chains[j]
570
+ networkId = self.safe_string(chain, 'network')
571
+ networkCode = self.network_id_to_code(networkId)
572
+ networks[networkCode] = {
573
+ 'id': networkId,
574
+ 'network': networkCode,
575
+ 'name': self.safe_string(chain, 'name'),
576
+ 'info': chain,
577
+ 'active': self.safe_string(chain, 'status') == 'enabled',
578
+ 'deposit': self.safe_string(chain, 'deposit_status') == 'enabled',
579
+ 'withdraw': self.safe_string(chain, 'withdrawal_status') == 'enabled',
580
+ 'fee': self.safe_number(chain, 'base_withdrawal_fee'),
581
+ 'limits': {
582
+ 'deposit': {
583
+ 'min': self.safe_number(chain, 'min_deposit_amount'),
584
+ 'max': None,
585
+ },
586
+ 'withdraw': {
587
+ 'min': self.safe_number(chain, 'min_withdrawal_amount'),
588
+ 'max': None,
589
+ },
590
+ },
591
+ }
592
+ result[code] = self.safe_currency_structure({
463
593
  'id': id,
464
594
  'numericId': numericId,
465
595
  'code': code,
466
596
  'name': self.safe_string(currency, 'name'),
467
597
  'info': currency, # the original payload
468
- 'active': active,
469
- 'deposit': depositsEnabled,
470
- 'withdraw': withdrawalsEnabled,
598
+ 'active': None,
599
+ 'deposit': self.safe_string(currency, 'deposit_status') == 'enabled',
600
+ 'withdraw': self.safe_string(currency, 'withdrawal_status') == 'enabled',
471
601
  'fee': self.safe_number(currency, 'base_withdrawal_fee'),
472
602
  'precision': self.parse_number(self.parse_precision(self.safe_string(currency, 'precision'))),
473
603
  'limits': {
@@ -477,8 +607,9 @@ class delta(Exchange, ImplicitAPI):
477
607
  'max': None,
478
608
  },
479
609
  },
480
- 'networks': {},
481
- }
610
+ 'networks': networks,
611
+ 'type': 'crypto',
612
+ })
482
613
  return result
483
614
 
484
615
  async def load_markets(self, reload=False, params={}):
@@ -508,7 +639,9 @@ class delta(Exchange, ImplicitAPI):
508
639
  async def fetch_markets(self, params={}) -> List[Market]:
509
640
  """
510
641
  retrieves data on all markets for delta
511
- :see: https://docs.delta.exchange/#get-list-of-products
642
+
643
+ https://docs.delta.exchange/#get-list-of-products
644
+
512
645
  :param dict [params]: extra parameters specific to the exchange API endpoint
513
646
  :returns dict[]: an array of objects representing market data
514
647
  """
@@ -728,7 +861,7 @@ class delta(Exchange, ImplicitAPI):
728
861
  else:
729
862
  # other markets(swap, futures, move, spread, irs) seem to use the step of '1' contract
730
863
  amountPrecision = self.parse_number('1')
731
- linear = (settle == base)
864
+ linear = (settle == quote)
732
865
  optionType = None
733
866
  symbol = base + '/' + quote
734
867
  if swap or future or option:
@@ -773,9 +906,9 @@ class delta(Exchange, ImplicitAPI):
773
906
  'inverse': None if spot else not linear,
774
907
  'taker': self.safe_number(market, 'taker_commission_rate'),
775
908
  'maker': self.safe_number(market, 'maker_commission_rate'),
776
- 'contractSize': contractSize,
909
+ 'contractSize': None if spot else contractSize,
777
910
  'expiry': expiry,
778
- 'expiryDatetime': expiryDatetime,
911
+ 'expiryDatetime': self.iso8601(expiry), # do not use raw expiry string
779
912
  'strike': self.parse_number(strike),
780
913
  'optionType': optionType,
781
914
  'precision': {
@@ -946,13 +1079,17 @@ class delta(Exchange, ImplicitAPI):
946
1079
  'average': None,
947
1080
  'baseVolume': self.safe_number(ticker, 'volume'),
948
1081
  'quoteVolume': self.safe_number(ticker, 'turnover'),
1082
+ 'markPrice': self.safe_number(ticker, 'mark_price'),
1083
+ 'indexPrice': self.safe_number(ticker, 'spot_price'),
949
1084
  'info': ticker,
950
1085
  }, market)
951
1086
 
952
1087
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
953
1088
  """
954
1089
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
955
- :see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
1090
+
1091
+ https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
1092
+
956
1093
  :param str symbol: unified symbol of the market to fetch the ticker for
957
1094
  :param dict [params]: extra parameters specific to the exchange API endpoint
958
1095
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1093,7 +1230,9 @@ class delta(Exchange, ImplicitAPI):
1093
1230
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
1094
1231
  """
1095
1232
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
1096
- :see: https://docs.delta.exchange/#get-tickers-for-products
1233
+
1234
+ https://docs.delta.exchange/#get-tickers-for-products
1235
+
1097
1236
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1098
1237
  :param dict [params]: extra parameters specific to the exchange API endpoint
1099
1238
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1242,7 +1381,9 @@ class delta(Exchange, ImplicitAPI):
1242
1381
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
1243
1382
  """
1244
1383
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1245
- :see: https://docs.delta.exchange/#get-l2-orderbook
1384
+
1385
+ https://docs.delta.exchange/#get-l2-orderbook
1386
+
1246
1387
  :param str symbol: unified symbol of the market to fetch the order book for
1247
1388
  :param int [limit]: the maximum amount of order book entries to return
1248
1389
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1375,7 +1516,9 @@ class delta(Exchange, ImplicitAPI):
1375
1516
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1376
1517
  """
1377
1518
  get the list of most recent trades for a particular symbol
1378
- :see: https://docs.delta.exchange/#get-public-trades
1519
+
1520
+ https://docs.delta.exchange/#get-public-trades
1521
+
1379
1522
  :param str symbol: unified symbol of the market to fetch trades for
1380
1523
  :param int [since]: timestamp in ms of the earliest trade to fetch
1381
1524
  :param int [limit]: the maximum amount of trades to fetch
@@ -1429,12 +1572,15 @@ class delta(Exchange, ImplicitAPI):
1429
1572
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1430
1573
  """
1431
1574
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1432
- :see: https://docs.delta.exchange/#get-ohlc-candles
1575
+
1576
+ https://docs.delta.exchange/#delta-exchange-api-v2-historical-ohlc-candles-sparklines
1577
+
1433
1578
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1434
1579
  :param str timeframe: the length of time each candle represents
1435
1580
  :param int [since]: timestamp in ms of the earliest candle to fetch
1436
1581
  :param int [limit]: the maximum amount of candles to fetch
1437
1582
  :param dict [params]: extra parameters specific to the exchange API endpoint
1583
+ :param str [params.until]: timestamp in ms of the latest candle to fetch
1438
1584
  :returns int[][]: A list of candles ordered, open, high, low, close, volume
1439
1585
  """
1440
1586
  await self.load_markets()
@@ -1444,14 +1590,18 @@ class delta(Exchange, ImplicitAPI):
1444
1590
  }
1445
1591
  duration = self.parse_timeframe(timeframe)
1446
1592
  limit = limit if limit else 2000 # max 2000
1593
+ until = self.safe_integer_product(params, 'until', 0.001)
1594
+ untilIsDefined = (until is not None)
1595
+ if untilIsDefined:
1596
+ until = self.parse_to_int(until)
1447
1597
  if since is None:
1448
- end = self.seconds()
1598
+ end = until if untilIsDefined else self.seconds()
1449
1599
  request['end'] = end
1450
1600
  request['start'] = end - limit * duration
1451
1601
  else:
1452
1602
  start = self.parse_to_int(since / 1000)
1453
1603
  request['start'] = start
1454
- request['end'] = self.sum(start, limit * duration)
1604
+ request['end'] = until if untilIsDefined else self.sum(start, limit * duration)
1455
1605
  price = self.safe_string(params, 'price')
1456
1606
  if price == 'mark':
1457
1607
  request['symbol'] = 'MARK:' + market['id']
@@ -1459,7 +1609,7 @@ class delta(Exchange, ImplicitAPI):
1459
1609
  request['symbol'] = market['info']['spot_index']['symbol']
1460
1610
  else:
1461
1611
  request['symbol'] = market['id']
1462
- params = self.omit(params, 'price')
1612
+ params = self.omit(params, ['price', 'until'])
1463
1613
  response = await self.publicGetHistoryCandles(self.extend(request, params))
1464
1614
  #
1465
1615
  # {
@@ -1492,7 +1642,9 @@ class delta(Exchange, ImplicitAPI):
1492
1642
  async def fetch_balance(self, params={}) -> Balances:
1493
1643
  """
1494
1644
  query for balance and get the amount of funds available for trading or funds locked in orders
1495
- :see: https://docs.delta.exchange/#get-wallet-balances
1645
+
1646
+ https://docs.delta.exchange/#get-wallet-balances
1647
+
1496
1648
  :param dict [params]: extra parameters specific to the exchange API endpoint
1497
1649
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1498
1650
  """
@@ -1524,7 +1676,9 @@ class delta(Exchange, ImplicitAPI):
1524
1676
  async def fetch_position(self, symbol: str, params={}):
1525
1677
  """
1526
1678
  fetch data on a single open contract trade position
1527
- :see: https://docs.delta.exchange/#get-position
1679
+
1680
+ https://docs.delta.exchange/#get-position
1681
+
1528
1682
  :param str symbol: unified market symbol of the market the position is held in, default is None
1529
1683
  :param dict [params]: extra parameters specific to the exchange API endpoint
1530
1684
  :returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
@@ -1548,10 +1702,12 @@ class delta(Exchange, ImplicitAPI):
1548
1702
  result = self.safe_dict(response, 'result', {})
1549
1703
  return self.parse_position(result, market)
1550
1704
 
1551
- async def fetch_positions(self, symbols: Strings = None, params={}):
1705
+ async def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
1552
1706
  """
1553
1707
  fetch all open positions
1554
- :see: https://docs.delta.exchange/#get-margined-positions
1708
+
1709
+ https://docs.delta.exchange/#get-margined-positions
1710
+
1555
1711
  :param str[]|None symbols: list of unified market symbols
1556
1712
  :param dict [params]: extra parameters specific to the exchange API endpoint
1557
1713
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
@@ -1745,12 +1901,14 @@ class delta(Exchange, ImplicitAPI):
1745
1901
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1746
1902
  """
1747
1903
  create a trade order
1748
- :see: https://docs.delta.exchange/#place-order
1904
+
1905
+ https://docs.delta.exchange/#place-order
1906
+
1749
1907
  :param str symbol: unified symbol of the market to create an order in
1750
1908
  :param str type: 'market' or 'limit'
1751
1909
  :param str side: 'buy' or 'sell'
1752
1910
  :param float amount: how much of currency you want to trade in units of base currency
1753
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1911
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1754
1912
  :param dict [params]: extra parameters specific to the exchange API endpoint
1755
1913
  :param bool [params.reduceOnly]: *contract only* indicates if self order is to reduce the size of a position
1756
1914
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1822,13 +1980,15 @@ class delta(Exchange, ImplicitAPI):
1822
1980
  async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
1823
1981
  """
1824
1982
  edit a trade order
1825
- :see: https://docs.delta.exchange/#edit-order
1983
+
1984
+ https://docs.delta.exchange/#edit-order
1985
+
1826
1986
  :param str id: order id
1827
1987
  :param str symbol: unified symbol of the market to create an order in
1828
1988
  :param str type: 'market' or 'limit'
1829
1989
  :param str side: 'buy' or 'sell'
1830
1990
  :param float amount: how much of the currency you want to trade in units of the base currency
1831
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency
1991
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency
1832
1992
  :param dict [params]: extra parameters specific to the exchange API endpoint
1833
1993
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1834
1994
  """
@@ -1868,7 +2028,9 @@ class delta(Exchange, ImplicitAPI):
1868
2028
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1869
2029
  """
1870
2030
  cancels an open order
1871
- :see: https://docs.delta.exchange/#cancel-order
2031
+
2032
+ https://docs.delta.exchange/#cancel-order
2033
+
1872
2034
  :param str id: order id
1873
2035
  :param str symbol: unified symbol of the market the order was made in
1874
2036
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1925,7 +2087,9 @@ class delta(Exchange, ImplicitAPI):
1925
2087
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1926
2088
  """
1927
2089
  cancel all open orders in a market
1928
- :see: https://docs.delta.exchange/#cancel-all-open-orders
2090
+
2091
+ https://docs.delta.exchange/#cancel-all-open-orders
2092
+
1929
2093
  :param str symbol: unified market symbol of the market to cancel orders in
1930
2094
  :param dict [params]: extra parameters specific to the exchange API endpoint
1931
2095
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1946,12 +2110,18 @@ class delta(Exchange, ImplicitAPI):
1946
2110
  # "success":true
1947
2111
  # }
1948
2112
  #
1949
- return response
2113
+ return [
2114
+ self.safe_order({
2115
+ 'info': response,
2116
+ }),
2117
+ ]
1950
2118
 
1951
2119
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1952
2120
  """
1953
2121
  fetch all unfilled currently open orders
1954
- :see: https://docs.delta.exchange/#get-active-orders
2122
+
2123
+ https://docs.delta.exchange/#get-active-orders
2124
+
1955
2125
  :param str symbol: unified market symbol
1956
2126
  :param int [since]: the earliest time in ms to fetch open orders for
1957
2127
  :param int [limit]: the maximum number of open order structures to retrieve
@@ -1963,7 +2133,9 @@ class delta(Exchange, ImplicitAPI):
1963
2133
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1964
2134
  """
1965
2135
  fetches information on multiple closed orders made by the user
1966
- :see: https://docs.delta.exchange/#get-order-history-cancelled-and-closed
2136
+
2137
+ https://docs.delta.exchange/#get-order-history-cancelled-and-closed
2138
+
1967
2139
  :param str symbol: unified market symbol of the market orders were made in
1968
2140
  :param int [since]: the earliest time in ms to fetch orders for
1969
2141
  :param int [limit]: the maximum number of order structures to retrieve
@@ -2026,7 +2198,9 @@ class delta(Exchange, ImplicitAPI):
2026
2198
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
2027
2199
  """
2028
2200
  fetch all trades made by the user
2029
- :see: https://docs.delta.exchange/#get-user-fills-by-filters
2201
+
2202
+ https://docs.delta.exchange/#get-user-fills-by-filters
2203
+
2030
2204
  :param str symbol: unified market symbol
2031
2205
  :param int [since]: the earliest time in ms to fetch trades for
2032
2206
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -2100,15 +2274,17 @@ class delta(Exchange, ImplicitAPI):
2100
2274
  result = self.safe_list(response, 'result', [])
2101
2275
  return self.parse_trades(result, market, since, limit)
2102
2276
 
2103
- async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
2277
+ async def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
2104
2278
  """
2105
- fetch the history of changes, actions done by the user or operations that altered balance of the user
2106
- :see: https://docs.delta.exchange/#get-wallet-transactions
2107
- :param str code: unified currency code, default is None
2279
+ fetch the history of changes, actions done by the user or operations that altered the balance of the user
2280
+
2281
+ https://docs.delta.exchange/#get-wallet-transactions
2282
+
2283
+ :param str [code]: unified currency code, default is None
2108
2284
  :param int [since]: timestamp in ms of the earliest ledger entry, default is None
2109
- :param int [limit]: max number of ledger entrys to return, default is None
2285
+ :param int [limit]: max number of ledger entries to return, default is None
2110
2286
  :param dict [params]: extra parameters specific to the exchange API endpoint
2111
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
2287
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
2112
2288
  """
2113
2289
  await self.load_markets()
2114
2290
  request: dict = {
@@ -2164,7 +2340,7 @@ class delta(Exchange, ImplicitAPI):
2164
2340
  }
2165
2341
  return self.safe_string(types, type, type)
2166
2342
 
2167
- def parse_ledger_entry(self, item: dict, currency: Currency = None):
2343
+ def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
2168
2344
  #
2169
2345
  # {
2170
2346
  # "amount":"29.889184",
@@ -2201,7 +2377,7 @@ class delta(Exchange, ImplicitAPI):
2201
2377
  after = self.safe_string(item, 'balance')
2202
2378
  before = Precise.string_max('0', Precise.string_sub(after, amount))
2203
2379
  status = 'ok'
2204
- return {
2380
+ return self.safe_ledger_entry({
2205
2381
  'info': item,
2206
2382
  'id': id,
2207
2383
  'direction': direction,
@@ -2217,9 +2393,9 @@ class delta(Exchange, ImplicitAPI):
2217
2393
  'timestamp': timestamp,
2218
2394
  'datetime': self.iso8601(timestamp),
2219
2395
  'fee': None,
2220
- }
2396
+ }, currency)
2221
2397
 
2222
- async def fetch_deposit_address(self, code: str, params={}):
2398
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
2223
2399
  """
2224
2400
  fetch the deposit address for a currency associated with self account
2225
2401
  :param str code: unified currency code
@@ -2257,7 +2433,7 @@ class delta(Exchange, ImplicitAPI):
2257
2433
  result = self.safe_dict(response, 'result', {})
2258
2434
  return self.parse_deposit_address(result, currency)
2259
2435
 
2260
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
2436
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
2261
2437
  #
2262
2438
  # {
2263
2439
  # "id": 1915615,
@@ -2277,17 +2453,19 @@ class delta(Exchange, ImplicitAPI):
2277
2453
  networkId = self.safe_string(depositAddress, 'network')
2278
2454
  self.check_address(address)
2279
2455
  return {
2456
+ 'info': depositAddress,
2280
2457
  'currency': self.safe_currency_code(marketId, currency),
2458
+ 'network': self.network_id_to_code(networkId),
2281
2459
  'address': address,
2282
2460
  'tag': self.safe_string(depositAddress, 'memo'),
2283
- 'network': self.network_id_to_code(networkId),
2284
- 'info': depositAddress,
2285
2461
  }
2286
2462
 
2287
- async def fetch_funding_rate(self, symbol: str, params={}):
2463
+ async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
2288
2464
  """
2289
2465
  fetch the current funding rate
2290
- :see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
2466
+
2467
+ https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
2468
+
2291
2469
  :param str symbol: unified market symbol
2292
2470
  :param dict [params]: extra parameters specific to the exchange API endpoint
2293
2471
  :returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
@@ -2348,13 +2526,15 @@ class delta(Exchange, ImplicitAPI):
2348
2526
  result = self.safe_dict(response, 'result', {})
2349
2527
  return self.parse_funding_rate(result, market)
2350
2528
 
2351
- async def fetch_funding_rates(self, symbols: Strings = None, params={}):
2529
+ async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
2352
2530
  """
2353
2531
  fetch the funding rate for multiple markets
2354
- :see: https://docs.delta.exchange/#get-tickers-for-products
2532
+
2533
+ https://docs.delta.exchange/#get-tickers-for-products
2534
+
2355
2535
  :param str[]|None symbols: list of unified market symbols
2356
2536
  :param dict [params]: extra parameters specific to the exchange API endpoint
2357
- :returns dict: a dictionary of `funding rates structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexe by market symbols
2537
+ :returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexed by market symbols
2358
2538
  """
2359
2539
  await self.load_markets()
2360
2540
  symbols = self.market_symbols(symbols)
@@ -2410,10 +2590,9 @@ class delta(Exchange, ImplicitAPI):
2410
2590
  # }
2411
2591
  #
2412
2592
  rates = self.safe_list(response, 'result', [])
2413
- result = self.parse_funding_rates(rates)
2414
- return self.filter_by_array(result, 'symbol', symbols)
2593
+ return self.parse_funding_rates(rates, symbols)
2415
2594
 
2416
- def parse_funding_rate(self, contract, market: Market = None):
2595
+ def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
2417
2596
  #
2418
2597
  # {
2419
2598
  # "close": 30600.5,
@@ -2478,12 +2657,15 @@ class delta(Exchange, ImplicitAPI):
2478
2657
  'previousFundingRate': None,
2479
2658
  'previousFundingTimestamp': None,
2480
2659
  'previousFundingDatetime': None,
2660
+ 'interval': None,
2481
2661
  }
2482
2662
 
2483
2663
  async def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
2484
2664
  """
2485
2665
  add margin
2486
- :see: https://docs.delta.exchange/#add-remove-position-margin
2666
+
2667
+ https://docs.delta.exchange/#add-remove-position-margin
2668
+
2487
2669
  :param str symbol: unified market symbol
2488
2670
  :param float amount: amount of margin to add
2489
2671
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2494,7 +2676,9 @@ class delta(Exchange, ImplicitAPI):
2494
2676
  async def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
2495
2677
  """
2496
2678
  remove margin from a position
2497
- :see: https://docs.delta.exchange/#add-remove-position-margin
2679
+
2680
+ https://docs.delta.exchange/#add-remove-position-margin
2681
+
2498
2682
  :param str symbol: unified market symbol
2499
2683
  :param float amount: the amount of margin to remove
2500
2684
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2578,7 +2762,9 @@ class delta(Exchange, ImplicitAPI):
2578
2762
  async def fetch_open_interest(self, symbol: str, params={}):
2579
2763
  """
2580
2764
  retrieves the open interest of a derivative market
2581
- :see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
2765
+
2766
+ https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
2767
+
2582
2768
  :param str symbol: unified market symbol
2583
2769
  :param dict [params]: exchange specific parameters
2584
2770
  :returns dict} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure:
@@ -2712,7 +2898,9 @@ class delta(Exchange, ImplicitAPI):
2712
2898
  async def fetch_leverage(self, symbol: str, params={}) -> Leverage:
2713
2899
  """
2714
2900
  fetch the set leverage for a market
2715
- :see: https://docs.delta.exchange/#get-order-leverage
2901
+
2902
+ https://docs.delta.exchange/#get-order-leverage
2903
+
2716
2904
  :param str symbol: unified market symbol
2717
2905
  :param dict [params]: extra parameters specific to the exchange API endpoint
2718
2906
  :returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`
@@ -2750,10 +2938,12 @@ class delta(Exchange, ImplicitAPI):
2750
2938
  'shortLeverage': leverageValue,
2751
2939
  }
2752
2940
 
2753
- async def set_leverage(self, leverage: Int, symbol: Str = None, params={}):
2941
+ async def set_leverage(self, leverage: int, symbol: Str = None, params={}):
2754
2942
  """
2755
2943
  set the level of leverage for a market
2756
- :see: https://docs.delta.exchange/#change-order-leverage
2944
+
2945
+ https://docs.delta.exchange/#change-order-leverage
2946
+
2757
2947
  :param float leverage: the rate of leverage
2758
2948
  :param str symbol: unified market symbol
2759
2949
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2783,7 +2973,9 @@ class delta(Exchange, ImplicitAPI):
2783
2973
  async def fetch_settlement_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
2784
2974
  """
2785
2975
  fetches historical settlement records
2786
- :see: https://docs.delta.exchange/#get-product-settlement-prices
2976
+
2977
+ https://docs.delta.exchange/#get-product-settlement-prices
2978
+
2787
2979
  :param str symbol: unified market symbol of the settlement history
2788
2980
  :param int [since]: timestamp in ms
2789
2981
  :param int [limit]: number of records
@@ -2936,7 +3128,9 @@ class delta(Exchange, ImplicitAPI):
2936
3128
  async def fetch_greeks(self, symbol: str, params={}) -> Greeks:
2937
3129
  """
2938
3130
  fetches an option contracts greeks, financial metrics used to measure the factors that affect the price of an options contract
2939
- :see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
3131
+
3132
+ https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
3133
+
2940
3134
  :param str symbol: unified symbol of the market to fetch greeks for
2941
3135
  :param dict [params]: extra parameters specific to the exchange API endpoint
2942
3136
  :returns dict: a `greeks structure <https://docs.ccxt.com/#/?id=greeks-structure>`
@@ -3082,7 +3276,9 @@ class delta(Exchange, ImplicitAPI):
3082
3276
  async def close_all_positions(self, params={}) -> List[Position]:
3083
3277
  """
3084
3278
  closes all open positions for a market type
3085
- :see: https://docs.delta.exchange/#close-all-positions
3279
+
3280
+ https://docs.delta.exchange/#close-all-positions
3281
+
3086
3282
  :param dict [params]: extra parameters specific to the exchange API endpoint
3087
3283
  :param int [params.user_id]: the users id
3088
3284
  :returns dict[]: A list of `position structures <https://docs.ccxt.com/#/?id=position-structure>`
@@ -3103,7 +3299,9 @@ class delta(Exchange, ImplicitAPI):
3103
3299
  async def fetch_margin_mode(self, symbol: str, params={}) -> MarginMode:
3104
3300
  """
3105
3301
  fetches the margin mode of a trading pair
3106
- :see: https://docs.delta.exchange/#get-user
3302
+
3303
+ https://docs.delta.exchange/#get-user
3304
+
3107
3305
  :param str symbol: unified symbol of the market to fetch the margin mode for
3108
3306
  :param dict [params]: extra parameters specific to the exchange API endpoint
3109
3307
  :returns dict: a `margin mode structure <https://docs.ccxt.com/#/?id=margin-mode-structure>`
@@ -3192,7 +3390,9 @@ class delta(Exchange, ImplicitAPI):
3192
3390
  async def fetch_option(self, symbol: str, params={}) -> Option:
3193
3391
  """
3194
3392
  fetches option data that is commonly found in an option chain
3195
- :see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
3393
+
3394
+ https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
3395
+
3196
3396
  :param str symbol: unified market symbol
3197
3397
  :param dict [params]: extra parameters specific to the exchange API endpoint
3198
3398
  :returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
@@ -3347,7 +3547,7 @@ class delta(Exchange, ImplicitAPI):
3347
3547
  'timestamp': timestamp,
3348
3548
  }
3349
3549
  auth = method + timestamp + requestPath
3350
- if (method == 'GET') or (method == 'DELETE'):
3550
+ if method == 'GET':
3351
3551
  if query:
3352
3552
  queryString = '?' + self.urlencode(query)
3353
3553
  auth += queryString