ccxt-ir 4.3.46.0.3__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 (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 +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 +8 -8
  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.3.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.3.dist-info → ccxt_ir-4.5.0.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.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/krakenfutures.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.krakenfutures import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Leverage, Leverages, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TransferEntry
9
+ from ccxt.base.types import Any, Balances, Currency, Int, Leverage, Leverages, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -29,7 +29,7 @@ from ccxt.base.precise import Precise
29
29
 
30
30
  class krakenfutures(Exchange, ImplicitAPI):
31
31
 
32
- def describe(self):
32
+ def describe(self) -> Any:
33
33
  return self.deep_extend(super(krakenfutures, self).describe(), {
34
34
  'id': 'krakenfutures',
35
35
  'name': 'Kraken Futures',
@@ -51,6 +51,12 @@ class krakenfutures(Exchange, ImplicitAPI):
51
51
  'cancelOrders': True,
52
52
  'createMarketOrder': False,
53
53
  'createOrder': True,
54
+ 'createPostOnlyOrder': True,
55
+ 'createReduceOnlyOrder': True,
56
+ 'createStopLimitOrder': True,
57
+ 'createStopMarketOrder': True,
58
+ 'createStopOrder': True,
59
+ 'createTriggerOrder': True,
54
60
  'editOrder': True,
55
61
  'fetchBalance': True,
56
62
  'fetchBorrowRateHistories': False,
@@ -96,6 +102,7 @@ class krakenfutures(Exchange, ImplicitAPI):
96
102
  'public': 'https://demo-futures.kraken.com/derivatives/api/',
97
103
  'private': 'https://demo-futures.kraken.com/derivatives/api/',
98
104
  'charts': 'https://demo-futures.kraken.com/api/charts/',
105
+ 'history': 'https://demo-futures.kraken.com/api/history/',
99
106
  'www': 'https://demo-futures.kraken.com',
100
107
  },
101
108
  'logo': 'https://user-images.githubusercontent.com/24300605/81436764-b22fd580-9172-11ea-9703-742783e6376d.jpg',
@@ -108,7 +115,7 @@ class krakenfutures(Exchange, ImplicitAPI):
108
115
  },
109
116
  'www': 'https://futures.kraken.com/',
110
117
  'doc': [
111
- 'https://docs.futures.kraken.com/#introduction',
118
+ 'https://docs.kraken.com/api/docs/futures-api/trading/market-data/',
112
119
  ],
113
120
  'fees': 'https://support.kraken.com/hc/en-us/articles/360022835771-Transaction-fees-and-rebates-for-Kraken-Futures',
114
121
  'referral': None,
@@ -136,6 +143,8 @@ class krakenfutures(Exchange, ImplicitAPI):
136
143
  'transfers',
137
144
  'leveragepreferences',
138
145
  'pnlpreferences',
146
+ 'assignmentprogram/current',
147
+ 'assignmentprogram/history',
139
148
  ],
140
149
  'post': [
141
150
  'sendorder',
@@ -146,6 +155,8 @@ class krakenfutures(Exchange, ImplicitAPI):
146
155
  'cancelallorders',
147
156
  'cancelallordersafter',
148
157
  'withdrawal', # for futures wallet -> kraken spot wallet
158
+ 'assignmentprogram/add',
159
+ 'assignmentprogram/delete',
149
160
  ],
150
161
  'put': [
151
162
  'leveragepreferences',
@@ -211,7 +222,7 @@ class krakenfutures(Exchange, ImplicitAPI):
211
222
  'invalidAmount': BadRequest,
212
223
  'insufficientFunds': InsufficientFunds,
213
224
  'Bad Request': BadRequest, # The URL contains invalid characters.(Please encode the json URL parameter)
214
- 'Unavailable': InsufficientFunds, # Insufficient funds in Futures account [withdraw]
225
+ 'Unavailable': ExchangeNotAvailable, # https://github.com/ccxt/ccxt/issues/24338
215
226
  'invalidUnit': BadRequest,
216
227
  'Json Parse Error': ExchangeError,
217
228
  'nonceBelowThreshold': InvalidNonce,
@@ -235,6 +246,7 @@ class krakenfutures(Exchange, ImplicitAPI):
235
246
  'executions': 'private',
236
247
  'triggers': 'private',
237
248
  'accountlogcsv': 'private',
249
+ 'account-log': 'private',
238
250
  },
239
251
  },
240
252
  },
@@ -269,6 +281,86 @@ class krakenfutures(Exchange, ImplicitAPI):
269
281
  'method': 'historyGetMarketSymbolExecutions', # historyGetMarketSymbolExecutions, publicGetHistory
270
282
  },
271
283
  },
284
+ 'features': {
285
+ 'default': {
286
+ 'sandbox': True,
287
+ 'createOrder': {
288
+ 'marginMode': False,
289
+ 'triggerPrice': True,
290
+ 'triggerPriceType': {
291
+ 'last': True,
292
+ 'mark': True,
293
+ 'index': True,
294
+ },
295
+ 'triggerDirection': False,
296
+ 'stopLossPrice': True,
297
+ 'takeProfitPrice': True,
298
+ 'attachedStopLossTakeProfit': None,
299
+ 'timeInForce': {
300
+ 'IOC': True,
301
+ 'FOK': True,
302
+ 'PO': True,
303
+ 'GTD': False,
304
+ },
305
+ 'hedged': False,
306
+ 'trailing': False,
307
+ 'leverage': False,
308
+ 'marketBuyByCost': False,
309
+ 'marketBuyRequiresPrice': False,
310
+ 'selfTradePrevention': False,
311
+ 'iceberg': False,
312
+ },
313
+ 'createOrders': {
314
+ 'max': 100,
315
+ },
316
+ 'fetchMyTrades': {
317
+ 'marginMode': False,
318
+ 'limit': None,
319
+ 'daysBack': None,
320
+ 'untilDays': 100000,
321
+ 'symbolRequired': False,
322
+ },
323
+ 'fetchOrder': None,
324
+ 'fetchOpenOrders': {
325
+ 'marginMode': False,
326
+ 'limit': None,
327
+ 'trigger': False,
328
+ 'trailing': False,
329
+ 'symbolRequired': False,
330
+ },
331
+ 'fetchOrders': None,
332
+ 'fetchClosedOrders': {
333
+ 'marginMode': False,
334
+ 'limit': None,
335
+ 'daysBack': None,
336
+ 'daysBackCanceled': None,
337
+ 'untilDays': None,
338
+ 'trigger': False,
339
+ 'trailing': False,
340
+ 'symbolRequired': False,
341
+ },
342
+ 'fetchOHLCV': {
343
+ 'limit': 5000,
344
+ },
345
+ },
346
+ 'spot': None,
347
+ 'swap': {
348
+ 'linear': {
349
+ 'extends': 'default',
350
+ },
351
+ 'inverse': {
352
+ 'extends': 'default',
353
+ },
354
+ },
355
+ 'future': {
356
+ 'linear': {
357
+ 'extends': 'default',
358
+ },
359
+ 'inverse': {
360
+ 'extends': 'default',
361
+ },
362
+ },
363
+ },
272
364
  'timeframes': {
273
365
  '1m': '1m',
274
366
  '5m': '5m',
@@ -285,7 +377,9 @@ class krakenfutures(Exchange, ImplicitAPI):
285
377
  def fetch_markets(self, params={}) -> List[Market]:
286
378
  """
287
379
  Fetches the available trading markets from the exchange, Multi-collateral markets are returned markets, but can be settled in multiple currencies
288
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-instrument-details-get-instruments
380
+
381
+ https://docs.kraken.com/api/docs/futures-api/trading/get-instruments
382
+
289
383
  :param dict [params]: exchange specific params
290
384
  :returns: An array of market structures
291
385
  """
@@ -445,12 +539,14 @@ class krakenfutures(Exchange, ImplicitAPI):
445
539
  'code': code,
446
540
  'precision': None,
447
541
  })
448
- self.currencies = self.deep_extend(currencies, self.currencies)
542
+ self.currencies = self.map_to_safe_map(self.deep_extend(currencies, self.currencies))
449
543
  return result
450
544
 
451
545
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
452
546
  """
453
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-orderbook
547
+
548
+ https://docs.kraken.com/api/docs/futures-api/trading/get-orderbook
549
+
454
550
  Fetches a list of open orders in a market
455
551
  :param str symbol: Unified market symbol
456
552
  :param int [limit]: Not used by krakenfutures
@@ -499,7 +595,9 @@ class krakenfutures(Exchange, ImplicitAPI):
499
595
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
500
596
  """
501
597
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
502
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
598
+
599
+ https://docs.kraken.com/api/docs/futures-api/trading/get-tickers
600
+
503
601
  :param str[] symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
504
602
  :param dict [params]: extra parameters specific to the exchange API endpoint
505
603
  :returns dict: an array of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -606,12 +704,16 @@ class krakenfutures(Exchange, ImplicitAPI):
606
704
  'average': average,
607
705
  'baseVolume': baseVolume,
608
706
  'quoteVolume': quoteVolume,
707
+ 'markPrice': self.safe_string(ticker, 'markPrice'),
708
+ 'indexPrice': self.safe_string(ticker, 'indexPrice'),
609
709
  'info': ticker,
610
710
  })
611
711
 
612
712
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
613
713
  """
614
- :see: https://docs.futures.kraken.com/#http-api-charts-candles
714
+
715
+ https://docs.kraken.com/api/docs/futures-api/charts/candles
716
+
615
717
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
616
718
  :param str symbol: unified symbol of the market to fetch OHLCV data for
617
719
  :param str timeframe: the length of time each candle represents
@@ -688,8 +790,10 @@ class krakenfutures(Exchange, ImplicitAPI):
688
790
 
689
791
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
690
792
  """
691
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-trade-history
692
- :see: https://docs.futures.kraken.com/#http-api-history-market-history-get-public-execution-events
793
+
794
+ https://docs.kraken.com/api/docs/futures-api/trading/get-history
795
+ https://docs.kraken.com/api/docs/futures-api/history/get-public-execution-events
796
+
693
797
  Fetch a history of filled trades that self account has made
694
798
  :param str symbol: Unified CCXT market symbol
695
799
  :param int [since]: Timestamp in ms of earliest trade. Not used by krakenfutures except in combination with params.until
@@ -991,12 +1095,15 @@ class krakenfutures(Exchange, ImplicitAPI):
991
1095
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
992
1096
  """
993
1097
  Create an order on the exchange
994
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-send-order
1098
+
1099
+ https://docs.kraken.com/api/docs/futures-api/trading/send-order
1100
+
995
1101
  :param str symbol: unified market symbol
996
1102
  :param str type: 'limit' or 'market'
997
1103
  :param str side: 'buy' or 'sell'
998
1104
  :param float amount: number of contracts
999
1105
  :param float [price]: limit order price
1106
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1000
1107
  :param bool [params.reduceOnly]: set if you wish the order to only reduce an existing position, any order which increases an existing position will be rejected, default is False
1001
1108
  :param bool [params.postOnly]: set if you wish to make a postOnly order, default is False
1002
1109
  :param str [params.clientOrderId]: UUID The order identity that is specified from the user, It must be globally unique
@@ -1004,6 +1111,7 @@ class krakenfutures(Exchange, ImplicitAPI):
1004
1111
  :param float [params.stopLossPrice]: the price that a stop loss order is triggered at
1005
1112
  :param float [params.takeProfitPrice]: the price that a take profit order is triggered at
1006
1113
  :param str [params.triggerSignal]: for triggerPrice, stopLossPrice and takeProfitPrice orders, the trigger price type, 'last', 'mark' or 'index', default is 'last'
1114
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1007
1115
  """
1008
1116
  self.load_markets()
1009
1117
  market = self.market(symbol)
@@ -1047,8 +1155,11 @@ class krakenfutures(Exchange, ImplicitAPI):
1047
1155
  def create_orders(self, orders: List[OrderRequest], params={}):
1048
1156
  """
1049
1157
  create a list of trade orders
1050
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-batch-order-management
1158
+
1159
+ https://docs.kraken.com/api/docs/futures-api/trading/send-batch-order
1160
+
1051
1161
  :param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
1162
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1052
1163
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1053
1164
  """
1054
1165
  self.load_markets()
@@ -1093,7 +1204,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1093
1204
 
1094
1205
  def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
1095
1206
  """
1096
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-edit-order
1207
+
1208
+ https://docs.kraken.com/api/docs/futures-api/trading/edit-order-spring
1209
+
1097
1210
  Edit an open order on the exchange
1098
1211
  :param str id: order id
1099
1212
  :param str symbol: Not used by Krakenfutures
@@ -1121,7 +1234,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1121
1234
 
1122
1235
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1123
1236
  """
1124
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-cancel-order
1237
+
1238
+ https://docs.kraken.com/api/docs/futures-api/trading/cancel-order
1239
+
1125
1240
  Cancel an open order on the exchange
1126
1241
  :param str id: Order id
1127
1242
  :param str symbol: Not used by Krakenfutures
@@ -1140,12 +1255,14 @@ class krakenfutures(Exchange, ImplicitAPI):
1140
1255
  def cancel_orders(self, ids: List[str], symbol: Str = None, params={}):
1141
1256
  """
1142
1257
  cancel multiple orders
1143
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-batch-order-management
1258
+
1259
+ https://docs.kraken.com/api/docs/futures-api/trading/send-batch-order
1260
+
1144
1261
  :param str[] ids: order ids
1145
1262
  :param str [symbol]: unified market symbol
1146
1263
  :param dict [params]: extra parameters specific to the exchange API endpoint
1147
- *
1148
- * EXCHANGE SPECIFIC PARAMETERS
1264
+
1265
+ EXCHANGE SPECIFIC PARAMETERS
1149
1266
  :param str[] [params.clientOrderIds]: max length 10 e.g. ["my_id_1","my_id_2"]
1150
1267
  :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1151
1268
  """
@@ -1197,7 +1314,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1197
1314
 
1198
1315
  def cancel_all_orders(self, symbol: Str = None, params={}):
1199
1316
  """
1200
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-cancel-all-orders
1317
+
1318
+ https://docs.kraken.com/api/docs/futures-api/trading/cancel-all-orders
1319
+
1201
1320
  Cancels all orders on the exchange, including trigger orders
1202
1321
  :param str symbol: Unified market symbol
1203
1322
  :param dict [params]: Exchange specific params
@@ -1250,7 +1369,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1250
1369
  def cancel_all_orders_after(self, timeout: Int, params={}):
1251
1370
  """
1252
1371
  dead man's switch, cancel all orders after the given timeout
1253
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-dead-man-39-s-switch
1372
+
1373
+ https://docs.kraken.com/api/docs/futures-api/trading/cancel-all-orders-after
1374
+
1254
1375
  :param number timeout: time in milliseconds, 0 represents cancel the timer
1255
1376
  :param dict [params]: extra parameters specific to the exchange API endpoint
1256
1377
  :returns dict: the api result
@@ -1274,7 +1395,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1274
1395
 
1275
1396
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1276
1397
  """
1277
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-get-open-orders
1398
+
1399
+ https://docs.kraken.com/api/docs/futures-api/trading/get-open-orders
1400
+
1278
1401
  Gets all open orders, including trigger orders, for an account from the exchange api
1279
1402
  :param str symbol: Unified market symbol
1280
1403
  :param int [since]: Timestamp(ms) of earliest order.(Not used by kraken api but filtered internally by CCXT)
@@ -1292,7 +1415,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1292
1415
 
1293
1416
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1294
1417
  """
1295
- :see: https://docs.futures.kraken.com/#http-api-history-account-history-get-order-events
1418
+
1419
+ https://docs.futures.kraken.com/#http-api-history-account-history-get-order-events
1420
+
1296
1421
  Gets all closed orders, including trigger orders, for an account from the exchange api
1297
1422
  :param str symbol: Unified market symbol
1298
1423
  :param int [since]: Timestamp(ms) of earliest order.
@@ -1326,7 +1451,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1326
1451
 
1327
1452
  def fetch_canceled_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1328
1453
  """
1329
- :see: https://docs.futures.kraken.com/#http-api-history-account-history-get-order-events
1454
+
1455
+ https://docs.kraken.com/api/docs/futures-api/history/get-order-events
1456
+
1330
1457
  Gets all canceled orders, including trigger orders, for an account from the exchange api
1331
1458
  :param str symbol: Unified market symbol
1332
1459
  :param int [since]: Timestamp(ms) of earliest order.
@@ -1369,13 +1496,13 @@ class krakenfutures(Exchange, ImplicitAPI):
1369
1496
  return self.parse_orders(canceledAndRejected, market, since, limit)
1370
1497
 
1371
1498
  def parse_order_type(self, orderType):
1372
- map: dict = {
1499
+ typesMap: dict = {
1373
1500
  'lmt': 'limit',
1374
1501
  'mkt': 'market',
1375
1502
  'post': 'limit',
1376
1503
  'ioc': 'market',
1377
1504
  }
1378
- return self.safe_string(map, orderType, orderType)
1505
+ return self.safe_string(typesMap, orderType, orderType)
1379
1506
 
1380
1507
  def verify_order_action_success(self, status, method, omit=[]):
1381
1508
  errors: dict = {
@@ -1673,16 +1800,17 @@ class krakenfutures(Exchange, ImplicitAPI):
1673
1800
  executions.append(item)
1674
1801
  # Final order(after placement / editing / execution / canceling)
1675
1802
  orderTrigger = self.safe_value(item, 'orderTrigger')
1676
- details = self.safe_value_2(item, 'new', 'order', orderTrigger)
1677
- if details is not None:
1678
- isPrior = False
1679
- fixed = True
1680
- elif not fixed:
1681
- orderPriorExecution = self.safe_value(item, 'orderPriorExecution')
1682
- details = self.safe_value_2(item, 'orderPriorExecution', 'orderPriorEdit')
1683
- price = self.safe_string(orderPriorExecution, 'limitPrice')
1803
+ if details is None:
1804
+ details = self.safe_value_2(item, 'new', 'order', orderTrigger)
1684
1805
  if details is not None:
1685
- isPrior = True
1806
+ isPrior = False
1807
+ fixed = True
1808
+ elif not fixed:
1809
+ orderPriorExecution = self.safe_value(item, 'orderPriorExecution')
1810
+ details = self.safe_value_2(item, 'orderPriorExecution', 'orderPriorEdit')
1811
+ price = self.safe_string(orderPriorExecution, 'limitPrice')
1812
+ if details is not None:
1813
+ isPrior = True
1686
1814
  trades = self.parse_trades(executions)
1687
1815
  statusId = self.safe_string(order, 'status')
1688
1816
  if details is None:
@@ -1758,10 +1886,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1758
1886
  'type': self.parse_order_type(type),
1759
1887
  'timeInForce': timeInForce,
1760
1888
  'postOnly': type == 'post',
1761
- 'reduceOnly': self.safe_value(details, 'reduceOnly'),
1889
+ 'reduceOnly': self.safe_bool_2(details, 'reduceOnly', 'reduce_only'),
1762
1890
  'side': self.safe_string(details, 'side'),
1763
1891
  'price': price,
1764
- 'stopPrice': self.safe_string(details, 'triggerPrice'),
1765
1892
  'triggerPrice': self.safe_string(details, 'triggerPrice'),
1766
1893
  'amount': amount,
1767
1894
  'cost': cost,
@@ -1777,7 +1904,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1777
1904
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1778
1905
  """
1779
1906
  fetch all trades made by the user
1780
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-historical-data-get-your-fills
1907
+
1908
+ https://docs.kraken.com/api/docs/futures-api/trading/get-fills
1909
+
1781
1910
  :param str symbol: unified market symbol
1782
1911
  :param int [since]: *not used by the api* the earliest time in ms to fetch trades for
1783
1912
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1789,6 +1918,7 @@ class krakenfutures(Exchange, ImplicitAPI):
1789
1918
  market = None
1790
1919
  if symbol is not None:
1791
1920
  market = self.market(symbol)
1921
+ # todo: lastFillTime: self.iso8601(end)
1792
1922
  response = self.privateGetFills(params)
1793
1923
  #
1794
1924
  # {
@@ -1814,7 +1944,9 @@ class krakenfutures(Exchange, ImplicitAPI):
1814
1944
 
1815
1945
  def fetch_balance(self, params={}) -> Balances:
1816
1946
  """
1817
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-account-information-get-wallets
1947
+
1948
+ https://docs.kraken.com/api/docs/futures-api/trading/get-accounts
1949
+
1818
1950
  Fetch the balance for a sub-account, all sub-account balances are inside 'info' in the response
1819
1951
  :param dict [params]: Exchange specific parameters
1820
1952
  :param str [params.type]: The sub-account type to query the balance of, possible values include 'flex', 'cash'/'main'/'funding', or a market symbol * defaults to 'flex' *
@@ -2024,10 +2156,12 @@ class krakenfutures(Exchange, ImplicitAPI):
2024
2156
  result[code] = account
2025
2157
  return self.safe_balance(result)
2026
2158
 
2027
- def fetch_funding_rates(self, symbols: Strings = None, params={}):
2159
+ def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
2028
2160
  """
2029
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
2030
- fetch the current funding rates
2161
+ fetch the current funding rates for multiple markets
2162
+
2163
+ https://docs.kraken.com/api/docs/futures-api/trading/get-tickers
2164
+
2031
2165
  :param str[] symbols: unified market symbols
2032
2166
  :param dict [params]: extra parameters specific to the exchange API endpoint
2033
2167
  :returns Order[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
@@ -2035,7 +2169,7 @@ class krakenfutures(Exchange, ImplicitAPI):
2035
2169
  self.load_markets()
2036
2170
  marketIds = self.market_ids(symbols)
2037
2171
  response = self.publicGetTickers(params)
2038
- tickers = self.safe_value(response, 'tickers')
2172
+ tickers = self.safe_list(response, 'tickers', [])
2039
2173
  fundingRates = []
2040
2174
  for i in range(0, len(tickers)):
2041
2175
  entry = tickers[i]
@@ -2048,7 +2182,7 @@ class krakenfutures(Exchange, ImplicitAPI):
2048
2182
  fundingRates.append(parsed)
2049
2183
  return self.index_by(fundingRates, 'symbol')
2050
2184
 
2051
- def parse_funding_rate(self, ticker, market: Market = None):
2185
+ def parse_funding_rate(self, ticker, market: Market = None) -> FundingRate:
2052
2186
  #
2053
2187
  # {"ask": 26.283,
2054
2188
  # "askSize": 4.6,
@@ -2102,12 +2236,15 @@ class krakenfutures(Exchange, ImplicitAPI):
2102
2236
  'previousFundingRate': None,
2103
2237
  'previousFundingTimestamp': None,
2104
2238
  'previousFundingDatetime': None,
2239
+ 'interval': None,
2105
2240
  }
2106
2241
 
2107
2242
  def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
2108
2243
  """
2109
2244
  fetches historical funding rate prices
2110
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-historical-funding-rates-historical-funding-rates
2245
+
2246
+ https://docs.kraken.com/api/docs/futures-api/trading/historical-funding-rates
2247
+
2111
2248
  :param str symbol: unified symbol of the market to fetch the funding rate history for
2112
2249
  :param int [since]: timestamp in ms of the earliest funding rate to fetch
2113
2250
  :param int [limit]: the maximum amount of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>` to fetch
@@ -2151,9 +2288,11 @@ class krakenfutures(Exchange, ImplicitAPI):
2151
2288
  sorted = self.sort_by(result, 'timestamp')
2152
2289
  return self.filter_by_symbol_since_limit(sorted, symbol, since, limit)
2153
2290
 
2154
- def fetch_positions(self, symbols: Strings = None, params={}):
2291
+ def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
2155
2292
  """
2156
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-account-information-get-open-positions
2293
+
2294
+ https://docs.kraken.com/api/docs/futures-api/trading/get-open-positions
2295
+
2157
2296
  Fetches current contract trading positions
2158
2297
  :param str[] symbols: List of unified symbols
2159
2298
  :param dict [params]: Not used by krakenfutures
@@ -2245,8 +2384,10 @@ class krakenfutures(Exchange, ImplicitAPI):
2245
2384
 
2246
2385
  def fetch_leverage_tiers(self, symbols: Strings = None, params={}) -> LeverageTiers:
2247
2386
  """
2248
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-instrument-details-get-instruments
2249
2387
  retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes
2388
+
2389
+ https://docs.kraken.com/api/docs/futures-api/trading/get-instruments
2390
+
2250
2391
  :param str[]|None symbols: list of unified market symbols
2251
2392
  :param dict [params]: extra parameters specific to the exchange API endpoint
2252
2393
  :returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`, indexed by market symbols
@@ -2302,9 +2443,9 @@ class krakenfutures(Exchange, ImplicitAPI):
2302
2443
 
2303
2444
  def parse_market_leverage_tiers(self, info, market: Market = None) -> List[LeverageTier]:
2304
2445
  """
2305
- * @ignore
2306
- * @param info Exchange market response for 1 market
2307
- * @param market CCXT market
2446
+ @ignore
2447
+ @param info Exchange market response for 1 market
2448
+ @param market CCXT market
2308
2449
  """
2309
2450
  #
2310
2451
  # {
@@ -2340,22 +2481,25 @@ class krakenfutures(Exchange, ImplicitAPI):
2340
2481
  # }
2341
2482
  #
2342
2483
  marginLevels = self.safe_value(info, 'marginLevels')
2343
- id = self.safe_string(info, 'symbol')
2344
- market = self.safe_market(id, market)
2484
+ marketId = self.safe_string(info, 'symbol')
2485
+ market = self.safe_market(marketId, market)
2345
2486
  tiers = []
2487
+ if marginLevels is None:
2488
+ return tiers
2346
2489
  for i in range(0, len(marginLevels)):
2347
2490
  tier = marginLevels[i]
2348
2491
  initialMargin = self.safe_string(tier, 'initialMargin')
2349
- notionalFloor = self.safe_number(tier, 'contracts')
2492
+ minNotional = self.safe_number(tier, 'numNonContractUnits')
2350
2493
  if i != 0:
2351
2494
  tiersLength = len(tiers)
2352
2495
  previousTier = tiers[tiersLength - 1]
2353
- previousTier['notionalCap'] = notionalFloor
2496
+ previousTier['maxNotional'] = minNotional
2354
2497
  tiers.append({
2355
2498
  'tier': self.sum(i, 1),
2499
+ 'symbol': self.safe_symbol(marketId, market),
2356
2500
  'currency': market['quote'],
2357
- 'notionalFloor': notionalFloor,
2358
- 'notionalCap': None,
2501
+ 'minNotional': minNotional,
2502
+ 'maxNotional': None,
2359
2503
  'maintenanceMarginRate': self.safe_number(tier, 'maintenanceMargin'),
2360
2504
  'maxLeverage': self.parse_number(Precise.string_div('1', initialMargin)),
2361
2505
  'info': tier,
@@ -2420,8 +2564,10 @@ class krakenfutures(Exchange, ImplicitAPI):
2420
2564
 
2421
2565
  def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
2422
2566
  """
2423
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-transfers-initiate-wallet-transfer
2424
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-transfers-initiate-withdrawal-to-spot-wallet
2567
+
2568
+ https://docs.kraken.com/api/docs/futures-api/trading/transfer
2569
+ https://docs.kraken.com/api/docs/futures-api/trading/sub-account-transfer
2570
+
2425
2571
  transfers currencies between sub-accounts
2426
2572
  :param str code: Unified currency code
2427
2573
  :param float amount: Size of the transfer
@@ -2461,10 +2607,12 @@ class krakenfutures(Exchange, ImplicitAPI):
2461
2607
  'toAccount': toAccount,
2462
2608
  })
2463
2609
 
2464
- def set_leverage(self, leverage: Int, symbol: Str = None, params={}):
2610
+ def set_leverage(self, leverage: int, symbol: Str = None, params={}):
2465
2611
  """
2466
2612
  set the level of leverage for a market
2467
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-multi-collateral-set-the-leverage-setting-for-a-market
2613
+
2614
+ https://docs.kraken.com/api/docs/futures-api/trading/set-leverage-setting
2615
+
2468
2616
  :param float leverage: the rate of leverage
2469
2617
  :param str symbol: unified market symbol
2470
2618
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2485,7 +2633,9 @@ class krakenfutures(Exchange, ImplicitAPI):
2485
2633
  def fetch_leverages(self, symbols: Strings = None, params={}) -> Leverages:
2486
2634
  """
2487
2635
  fetch the set leverage for all contract and margin markets
2488
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-multi-collateral-get-the-leverage-setting-for-a-market
2636
+
2637
+ https://docs.kraken.com/api/docs/futures-api/trading/get-leverage-setting
2638
+
2489
2639
  :param str[] [symbols]: a list of unified market symbols
2490
2640
  :param dict [params]: extra parameters specific to the exchange API endpoint
2491
2641
  :returns dict: a list of `leverage structures <https://docs.ccxt.com/#/?id=leverage-structure>`
@@ -2510,7 +2660,9 @@ class krakenfutures(Exchange, ImplicitAPI):
2510
2660
  def fetch_leverage(self, symbol: str, params={}) -> Leverage:
2511
2661
  """
2512
2662
  fetch the set leverage for a market
2513
- :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-multi-collateral-get-the-leverage-setting-for-a-market
2663
+
2664
+ https://docs.kraken.com/api/docs/futures-api/trading/get-leverage-setting
2665
+
2514
2666
  :param str symbol: unified market symbol
2515
2667
  :param dict [params]: extra parameters specific to the exchange API endpoint
2516
2668
  :returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`