ccxt 4.2.30__py2.py3-none-any.whl → 4.2.34__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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

Files changed (244) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/coinbase.py +10 -0
  3. ccxt/abstract/okx.py +12 -1
  4. ccxt/ace.py +4 -3
  5. ccxt/alpaca.py +1 -1
  6. ccxt/ascendex.py +6 -6
  7. ccxt/async_support/__init__.py +1 -1
  8. ccxt/async_support/ace.py +4 -3
  9. ccxt/async_support/alpaca.py +1 -1
  10. ccxt/async_support/ascendex.py +6 -6
  11. ccxt/async_support/base/exchange.py +62 -39
  12. ccxt/async_support/bigone.py +25 -5
  13. ccxt/async_support/binance.py +17 -16
  14. ccxt/async_support/bingx.py +10 -9
  15. ccxt/async_support/bit2c.py +13 -1
  16. ccxt/async_support/bitbank.py +2 -2
  17. ccxt/async_support/bitbns.py +1 -1
  18. ccxt/async_support/bitfinex.py +5 -5
  19. ccxt/async_support/bitfinex2.py +386 -40
  20. ccxt/async_support/bitflyer.py +5 -5
  21. ccxt/async_support/bitforex.py +4 -1
  22. ccxt/async_support/bitget.py +11 -11
  23. ccxt/async_support/bithumb.py +2 -2
  24. ccxt/async_support/bitmart.py +9 -9
  25. ccxt/async_support/bitmex.py +3 -3
  26. ccxt/async_support/bitopro.py +2 -2
  27. ccxt/async_support/bitrue.py +8 -8
  28. ccxt/async_support/bitso.py +4 -4
  29. ccxt/async_support/bitstamp.py +2 -2
  30. ccxt/async_support/bitteam.py +1 -1
  31. ccxt/async_support/bitvavo.py +3 -3
  32. ccxt/async_support/bl3p.py +1 -1
  33. ccxt/async_support/blockchaincom.py +3 -3
  34. ccxt/async_support/btcalpha.py +1 -1
  35. ccxt/async_support/btcbox.py +1 -1
  36. ccxt/async_support/btcmarkets.py +2 -2
  37. ccxt/async_support/btcturk.py +1 -1
  38. ccxt/async_support/bybit.py +9 -9
  39. ccxt/async_support/cex.py +1 -1
  40. ccxt/async_support/coinbase.py +16 -6
  41. ccxt/async_support/coinbasepro.py +2 -2
  42. ccxt/async_support/coincheck.py +1 -1
  43. ccxt/async_support/coinex.py +9 -9
  44. ccxt/async_support/coinlist.py +4 -4
  45. ccxt/async_support/coinmate.py +2 -2
  46. ccxt/async_support/coinmetro.py +2 -2
  47. ccxt/async_support/coinone.py +1 -1
  48. ccxt/async_support/coinsph.py +2 -2
  49. ccxt/async_support/coinspot.py +1 -1
  50. ccxt/async_support/cryptocom.py +14 -14
  51. ccxt/async_support/currencycom.py +1 -1
  52. ccxt/async_support/delta.py +2 -2
  53. ccxt/async_support/deribit.py +5 -4
  54. ccxt/async_support/digifinex.py +6 -6
  55. ccxt/async_support/exmo.py +2 -2
  56. ccxt/async_support/gate.py +41 -37
  57. ccxt/async_support/gemini.py +2 -2
  58. ccxt/async_support/hitbtc.py +5 -5
  59. ccxt/async_support/hollaex.py +2 -2
  60. ccxt/async_support/htx.py +11 -11
  61. ccxt/async_support/huobijp.py +4 -4
  62. ccxt/async_support/idex.py +2 -2
  63. ccxt/async_support/independentreserve.py +2 -2
  64. ccxt/async_support/indodax.py +2 -2
  65. ccxt/async_support/kraken.py +45 -5
  66. ccxt/async_support/krakenfutures.py +8 -5
  67. ccxt/async_support/kucoin.py +8 -8
  68. ccxt/async_support/kucoinfutures.py +4 -4
  69. ccxt/async_support/kuna.py +2 -2
  70. ccxt/async_support/latoken.py +3 -3
  71. ccxt/async_support/lbank.py +5 -4
  72. ccxt/async_support/luno.py +1 -1
  73. ccxt/async_support/lykke.py +2 -2
  74. ccxt/async_support/mercado.py +2 -2
  75. ccxt/async_support/mexc.py +7 -6
  76. ccxt/async_support/ndax.py +2 -2
  77. ccxt/async_support/novadax.py +4 -4
  78. ccxt/async_support/oceanex.py +1 -1
  79. ccxt/async_support/okcoin.py +5 -5
  80. ccxt/async_support/okx.py +26 -12
  81. ccxt/async_support/onetrading.py +2 -2
  82. ccxt/async_support/p2b.py +1 -1
  83. ccxt/async_support/paymium.py +3 -3
  84. ccxt/async_support/phemex.py +13 -13
  85. ccxt/async_support/poloniex.py +4 -4
  86. ccxt/async_support/poloniexfutures.py +4 -1
  87. ccxt/async_support/probit.py +5 -5
  88. ccxt/async_support/timex.py +2 -2
  89. ccxt/async_support/tokocrypto.py +4 -4
  90. ccxt/async_support/upbit.py +2 -2
  91. ccxt/async_support/wavesexchange.py +4 -3
  92. ccxt/async_support/wazirx.py +1 -1
  93. ccxt/async_support/whitebit.py +6 -6
  94. ccxt/async_support/woo.py +6 -6
  95. ccxt/async_support/yobit.py +41 -2
  96. ccxt/async_support/zaif.py +2 -2
  97. ccxt/async_support/zonda.py +4 -4
  98. ccxt/base/exchange.py +77 -44
  99. ccxt/base/types.py +10 -0
  100. ccxt/bigone.py +25 -5
  101. ccxt/binance.py +17 -16
  102. ccxt/bingx.py +10 -9
  103. ccxt/bit2c.py +13 -1
  104. ccxt/bitbank.py +2 -2
  105. ccxt/bitbns.py +1 -1
  106. ccxt/bitfinex.py +5 -5
  107. ccxt/bitfinex2.py +386 -40
  108. ccxt/bitflyer.py +5 -5
  109. ccxt/bitforex.py +4 -1
  110. ccxt/bitget.py +11 -11
  111. ccxt/bithumb.py +2 -2
  112. ccxt/bitmart.py +9 -9
  113. ccxt/bitmex.py +3 -3
  114. ccxt/bitopro.py +2 -2
  115. ccxt/bitrue.py +8 -8
  116. ccxt/bitso.py +4 -4
  117. ccxt/bitstamp.py +2 -2
  118. ccxt/bitteam.py +1 -1
  119. ccxt/bitvavo.py +3 -3
  120. ccxt/bl3p.py +1 -1
  121. ccxt/blockchaincom.py +3 -3
  122. ccxt/btcalpha.py +1 -1
  123. ccxt/btcbox.py +1 -1
  124. ccxt/btcmarkets.py +2 -2
  125. ccxt/btcturk.py +1 -1
  126. ccxt/bybit.py +9 -9
  127. ccxt/cex.py +1 -1
  128. ccxt/coinbase.py +16 -6
  129. ccxt/coinbasepro.py +2 -2
  130. ccxt/coincheck.py +1 -1
  131. ccxt/coinex.py +9 -9
  132. ccxt/coinlist.py +4 -4
  133. ccxt/coinmate.py +2 -2
  134. ccxt/coinmetro.py +2 -2
  135. ccxt/coinone.py +1 -1
  136. ccxt/coinsph.py +2 -2
  137. ccxt/coinspot.py +1 -1
  138. ccxt/cryptocom.py +14 -14
  139. ccxt/currencycom.py +1 -1
  140. ccxt/delta.py +2 -2
  141. ccxt/deribit.py +5 -4
  142. ccxt/digifinex.py +6 -6
  143. ccxt/exmo.py +2 -2
  144. ccxt/gate.py +41 -37
  145. ccxt/gemini.py +2 -2
  146. ccxt/hitbtc.py +5 -5
  147. ccxt/hollaex.py +2 -2
  148. ccxt/htx.py +11 -11
  149. ccxt/huobijp.py +4 -4
  150. ccxt/idex.py +2 -2
  151. ccxt/independentreserve.py +2 -2
  152. ccxt/indodax.py +2 -2
  153. ccxt/kraken.py +45 -5
  154. ccxt/krakenfutures.py +8 -5
  155. ccxt/kucoin.py +8 -8
  156. ccxt/kucoinfutures.py +4 -4
  157. ccxt/kuna.py +2 -2
  158. ccxt/latoken.py +3 -3
  159. ccxt/lbank.py +5 -4
  160. ccxt/luno.py +1 -1
  161. ccxt/lykke.py +2 -2
  162. ccxt/mercado.py +2 -2
  163. ccxt/mexc.py +7 -6
  164. ccxt/ndax.py +2 -2
  165. ccxt/novadax.py +4 -4
  166. ccxt/oceanex.py +1 -1
  167. ccxt/okcoin.py +5 -5
  168. ccxt/okx.py +26 -12
  169. ccxt/onetrading.py +2 -2
  170. ccxt/p2b.py +1 -1
  171. ccxt/paymium.py +3 -3
  172. ccxt/phemex.py +13 -13
  173. ccxt/poloniex.py +4 -4
  174. ccxt/poloniexfutures.py +4 -1
  175. ccxt/pro/__init__.py +1 -1
  176. ccxt/pro/alpaca.py +8 -4
  177. ccxt/pro/ascendex.py +1 -2
  178. ccxt/pro/binance.py +14 -10
  179. ccxt/pro/bingx.py +1 -1
  180. ccxt/pro/bitfinex.py +21 -22
  181. ccxt/pro/bitfinex2.py +13 -15
  182. ccxt/pro/bitget.py +3 -1
  183. ccxt/pro/bitmart.py +3 -7
  184. ccxt/pro/bitmex.py +4 -6
  185. ccxt/pro/bitopro.py +2 -4
  186. ccxt/pro/bitrue.py +1 -1
  187. ccxt/pro/bitstamp.py +2 -3
  188. ccxt/pro/bitvavo.py +10 -5
  189. ccxt/pro/blockchaincom.py +22 -22
  190. ccxt/pro/bybit.py +5 -5
  191. ccxt/pro/cex.py +7 -7
  192. ccxt/pro/coinbase.py +3 -2
  193. ccxt/pro/coinbasepro.py +1 -1
  194. ccxt/pro/coinex.py +15 -13
  195. ccxt/pro/currencycom.py +5 -6
  196. ccxt/pro/deribit.py +4 -4
  197. ccxt/pro/exmo.py +15 -13
  198. ccxt/pro/gate.py +1 -1
  199. ccxt/pro/gemini.py +4 -2
  200. ccxt/pro/hitbtc.py +10 -9
  201. ccxt/pro/hollaex.py +2 -2
  202. ccxt/pro/htx.py +6 -6
  203. ccxt/pro/huobijp.py +3 -4
  204. ccxt/pro/idex.py +1 -1
  205. ccxt/pro/independentreserve.py +14 -13
  206. ccxt/pro/kraken.py +10 -14
  207. ccxt/pro/krakenfutures.py +10 -6
  208. ccxt/pro/kucoin.py +10 -10
  209. ccxt/pro/kucoinfutures.py +11 -10
  210. ccxt/pro/lbank.py +10 -10
  211. ccxt/pro/luno.py +12 -14
  212. ccxt/pro/mexc.py +3 -2
  213. ccxt/pro/ndax.py +7 -11
  214. ccxt/pro/okcoin.py +7 -10
  215. ccxt/pro/okx.py +6 -9
  216. ccxt/pro/onetrading.py +16 -15
  217. ccxt/pro/p2b.py +5 -3
  218. ccxt/pro/phemex.py +16 -11
  219. ccxt/pro/poloniex.py +6 -4
  220. ccxt/pro/poloniexfutures.py +13 -9
  221. ccxt/pro/probit.py +15 -12
  222. ccxt/pro/upbit.py +8 -8
  223. ccxt/pro/wazirx.py +6 -3
  224. ccxt/pro/woo.py +9 -7
  225. ccxt/probit.py +5 -5
  226. ccxt/test/base/test_order_book.py +7 -7
  227. ccxt/test/base/test_shared_methods.py +1 -1
  228. ccxt/test/test_async.py +86 -36
  229. ccxt/test/test_sync.py +86 -36
  230. ccxt/timex.py +2 -2
  231. ccxt/tokocrypto.py +4 -4
  232. ccxt/upbit.py +2 -2
  233. ccxt/wavesexchange.py +4 -3
  234. ccxt/wazirx.py +1 -1
  235. ccxt/whitebit.py +6 -6
  236. ccxt/woo.py +6 -6
  237. ccxt/yobit.py +41 -2
  238. ccxt/zaif.py +2 -2
  239. ccxt/zonda.py +4 -4
  240. {ccxt-4.2.30.dist-info → ccxt-4.2.34.dist-info}/METADATA +10 -10
  241. ccxt-4.2.34.dist-info/RECORD +438 -0
  242. ccxt-4.2.30.dist-info/RECORD +0 -438
  243. {ccxt-4.2.30.dist-info → ccxt-4.2.34.dist-info}/WHEEL +0 -0
  244. {ccxt-4.2.30.dist-info → ccxt-4.2.34.dist-info}/top_level.txt +0 -0
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.30'
7
+ __version__ = '4.2.34'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1969,7 +1969,7 @@ class Exchange(object):
1969
1969
  result.append(messageHash)
1970
1970
  return result
1971
1971
 
1972
- def filter_by_limit(self, array: List[object], limit: Int = None, key: IndexType = 'timestamp'):
1972
+ def filter_by_limit(self, array: List[object], limit: Int = None, key: IndexType = 'timestamp', fromStart: bool = False):
1973
1973
  if self.valueIsDefined(limit):
1974
1974
  arrayLength = len(array)
1975
1975
  if arrayLength > 0:
@@ -1979,7 +1979,12 @@ class Exchange(object):
1979
1979
  last = array[arrayLength - 1][key]
1980
1980
  if first is not None and last is not None:
1981
1981
  ascending = first <= last # True if array is sorted in ascending order based on 'timestamp'
1982
- array = self.arraySlice(array, -limit) if ascending else self.arraySlice(array, 0, limit)
1982
+ if fromStart:
1983
+ if limit > arrayLength:
1984
+ limit = arrayLength
1985
+ array = self.arraySlice(array, 0, limit) if ascending else self.arraySlice(array, -limit)
1986
+ else:
1987
+ array = self.arraySlice(array, -limit) if ascending else self.arraySlice(array, 0, limit)
1983
1988
  return array
1984
1989
 
1985
1990
  def filter_by_since_limit(self, array: List[object], since: Int = None, limit: Int = None, key: IndexType = 'timestamp', tail=False):
@@ -1995,7 +2000,10 @@ class Exchange(object):
1995
2000
  result.append(entry)
1996
2001
  if tail and limit is not None:
1997
2002
  return self.arraySlice(result, -limit)
1998
- return self.filter_by_limit(result, limit, key)
2003
+ # if the user provided a 'since' argument
2004
+ # we want to limit the result starting from the 'since'
2005
+ shouldFilterFromStart = not tail and sinceIsDefined
2006
+ return self.filter_by_limit(result, limit, key, shouldFilterFromStart)
1999
2007
 
2000
2008
  def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Int = None, limit: Int = None, key='timestamp', tail=False):
2001
2009
  valueIsDefined = self.valueIsDefined(value)
@@ -2016,7 +2024,7 @@ class Exchange(object):
2016
2024
  result.append(entry)
2017
2025
  if tail and limit is not None:
2018
2026
  return self.arraySlice(result, -limit)
2019
- return self.filter_by_limit(result, limit, key)
2027
+ return self.filter_by_limit(result, limit, key, sinceIsDefined)
2020
2028
 
2021
2029
  def set_sandbox_mode(self, enabled):
2022
2030
  if enabled:
@@ -2165,18 +2173,30 @@ class Exchange(object):
2165
2173
  def fetch_funding_rates(self, symbols: List[str] = None, params={}):
2166
2174
  raise NotSupported(self.id + ' fetchFundingRates() is not supported yet')
2167
2175
 
2168
- def transfer(self, code: str, amount, fromAccount, toAccount, params={}):
2176
+ def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}):
2169
2177
  raise NotSupported(self.id + ' transfer() is not supported yet')
2170
2178
 
2171
- def withdraw(self, code: str, amount, address, tag=None, params={}):
2179
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2172
2180
  raise NotSupported(self.id + ' withdraw() is not supported yet')
2173
2181
 
2174
2182
  def create_deposit_address(self, code: str, params={}):
2175
2183
  raise NotSupported(self.id + ' createDepositAddress() is not supported yet')
2176
2184
 
2177
- def set_leverage(self, leverage, symbol: str = None, params={}):
2185
+ def set_leverage(self, leverage: Int, symbol: str = None, params={}):
2178
2186
  raise NotSupported(self.id + ' setLeverage() is not supported yet')
2179
2187
 
2188
+ def fetch_open_interest_history(self, symbol: str, timeframe='1h', since: Int = None, limit: Int = None, params={}):
2189
+ raise NotSupported(self.id + ' fetchOpenInterestHistory() is not supported yet')
2190
+
2191
+ def fetch_open_interest(self, symbol: str, params={}):
2192
+ raise NotSupported(self.id + ' fetchOpenInterest() is not supported yet')
2193
+
2194
+ def sign_in(self, params={}):
2195
+ raise NotSupported(self.id + ' signIn() is not supported yet')
2196
+
2197
+ def fetch_payment_methods(self, params={}):
2198
+ raise NotSupported(self.id + ' fetchPaymentMethods() is not supported yet')
2199
+
2180
2200
  def parse_to_int(self, number):
2181
2201
  # Solve Common intmisuse ex: int((since / str(1000)))
2182
2202
  # using a number which is not valid in ts
@@ -2973,10 +2993,10 @@ class Exchange(object):
2973
2993
  def repay_isolated_margin(self, symbol: str, code: str, amount, params={}):
2974
2994
  raise NotSupported(self.id + ' repayIsolatedMargin is not support yet')
2975
2995
 
2976
- def borrow_cross_margin(self, code: str, amount, params={}):
2996
+ def borrow_cross_margin(self, code: str, amount: float, params={}):
2977
2997
  raise NotSupported(self.id + ' borrowCrossMargin is not support yet')
2978
2998
 
2979
- def borrow_isolated_margin(self, symbol: str, code: str, amount, params={}):
2999
+ def borrow_isolated_margin(self, symbol: str, code: str, amount: float, params={}):
2980
3000
  raise NotSupported(self.id + ' borrowIsolatedMargin is not support yet')
2981
3001
 
2982
3002
  def borrow_margin(self, code: str, amount, symbol: Str = None, params={}):
@@ -3500,16 +3520,16 @@ class Exchange(object):
3500
3520
  result = self.convert_trading_view_to_ohlcv(ohlcvs)
3501
3521
  return self.parse_ohlcvs(result, market, timeframe, since, limit)
3502
3522
 
3503
- def edit_limit_buy_order(self, id, symbol, amount, price=None, params={}):
3523
+ def edit_limit_buy_order(self, id, symbol, amount: float, price: float = None, params={}):
3504
3524
  return self.edit_limit_order(id, symbol, 'buy', amount, price, params)
3505
3525
 
3506
- def edit_limit_sell_order(self, id, symbol, amount, price=None, params={}):
3526
+ def edit_limit_sell_order(self, id, symbol, amount: float, price: float = None, params={}):
3507
3527
  return self.edit_limit_order(id, symbol, 'sell', amount, price, params)
3508
3528
 
3509
- def edit_limit_order(self, id, symbol, side, amount, price=None, params={}):
3529
+ def edit_limit_order(self, id, symbol, side, amount: float, price: float = None, params={}):
3510
3530
  return self.edit_order(id, symbol, 'limit', side, amount, price, params)
3511
3531
 
3512
- def edit_order(self, id: str, symbol, type, side, amount=None, price=None, params={}):
3532
+ def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: float = None, price: float = None, params={}):
3513
3533
  self.cancelOrder(id, symbol)
3514
3534
  return self.create_order(symbol, type, side, amount, price, params)
3515
3535
 
@@ -3550,6 +3570,15 @@ class Exchange(object):
3550
3570
  def fetch_bids_asks(self, symbols: List[str] = None, params={}):
3551
3571
  raise NotSupported(self.id + ' fetchBidsAsks() is not supported yet')
3552
3572
 
3573
+ def fetch_borrow_interest(self, code: str = None, symbol: str = None, since: Int = None, limit: Int = None, params={}):
3574
+ raise NotSupported(self.id + ' fetchBorrowInterest() is not supported yet')
3575
+
3576
+ def fetch_ledger(self, code: str = None, since: Int = None, limit: Int = None, params={}):
3577
+ raise NotSupported(self.id + ' fetchLedger() is not supported yet')
3578
+
3579
+ def fetch_ledger_entry(self, id: str, code: str = None, params={}):
3580
+ raise NotSupported(self.id + ' fetchLedgerEntry() is not supported yet')
3581
+
3553
3582
  def parse_bid_ask(self, bidask, priceKey: IndexType = 0, amountKey: IndexType = 1, countOrIdKey: IndexType = 2):
3554
3583
  price = self.safe_number(bidask, priceKey)
3555
3584
  amount = self.safe_number(bidask, amountKey)
@@ -3799,6 +3828,8 @@ class Exchange(object):
3799
3828
  return self.handle_option_and_params(params, methodName, 'marginMode', defaultValue)
3800
3829
 
3801
3830
  def throw_exactly_matched_exception(self, exact, string, message):
3831
+ if string is None:
3832
+ return
3802
3833
  if string in exact:
3803
3834
  raise exact[string](message)
3804
3835
 
@@ -3866,7 +3897,7 @@ class Exchange(object):
3866
3897
  def fetch_unified_order(self, order, params={}):
3867
3898
  return self.fetch_order(self.safe_value(order, 'id'), self.safe_value(order, 'symbol'), params)
3868
3899
 
3869
- def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
3900
+ def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, params={}):
3870
3901
  raise NotSupported(self.id + ' createOrder() is not supported yet')
3871
3902
 
3872
3903
  def create_trailing_amount_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, trailingAmount=None, trailingTriggerPrice=None, params={}):
@@ -3913,7 +3944,7 @@ class Exchange(object):
3913
3944
  return self.create_order(symbol, type, side, amount, price, params)
3914
3945
  raise NotSupported(self.id + ' createTrailingPercentOrder() is not supported yet')
3915
3946
 
3916
- def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost, params={}):
3947
+ def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost: float, params={}):
3917
3948
  """
3918
3949
  create a market order by providing the symbol, side and cost
3919
3950
  :param str symbol: unified symbol of the market to create an order in
@@ -3926,7 +3957,7 @@ class Exchange(object):
3926
3957
  return self.create_order(symbol, 'market', side, cost, 1, params)
3927
3958
  raise NotSupported(self.id + ' createMarketOrderWithCost() is not supported yet')
3928
3959
 
3929
- def create_market_buy_order_with_cost(self, symbol: str, cost, params={}):
3960
+ def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
3930
3961
  """
3931
3962
  create a market buy order by providing the symbol and cost
3932
3963
  :param str symbol: unified symbol of the market to create an order in
@@ -3938,7 +3969,7 @@ class Exchange(object):
3938
3969
  return self.create_order(symbol, 'market', 'buy', cost, 1, params)
3939
3970
  raise NotSupported(self.id + ' createMarketBuyOrderWithCost() is not supported yet')
3940
3971
 
3941
- def create_market_sell_order_with_cost(self, symbol: str, cost, params={}):
3972
+ def create_market_sell_order_with_cost(self, symbol: str, cost: float, params={}):
3942
3973
  """
3943
3974
  create a market sell order by providing the symbol and cost
3944
3975
  :param str symbol: unified symbol of the market to create an order in
@@ -3969,7 +4000,7 @@ class Exchange(object):
3969
4000
  return self.create_order(symbol, type, side, amount, price, params)
3970
4001
  raise NotSupported(self.id + ' createTriggerOrder() is not supported yet')
3971
4002
 
3972
- def create_stop_loss_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, stopLossPrice=None, params={}):
4003
+ def create_stop_loss_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, stopLossPrice: float = None, params={}):
3973
4004
  """
3974
4005
  create a trigger stop loss order(type 2)
3975
4006
  :param str symbol: unified symbol of the market to create an order in
@@ -3988,7 +4019,7 @@ class Exchange(object):
3988
4019
  return self.create_order(symbol, type, side, amount, price, params)
3989
4020
  raise NotSupported(self.id + ' createStopLossOrder() is not supported yet')
3990
4021
 
3991
- def create_take_profit_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, takeProfitPrice=None, params={}):
4022
+ def create_take_profit_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, takeProfitPrice: float = None, params={}):
3992
4023
  """
3993
4024
  create a trigger take profit order(type 2)
3994
4025
  :param str symbol: unified symbol of the market to create an order in
@@ -4007,7 +4038,7 @@ class Exchange(object):
4007
4038
  return self.create_order(symbol, type, side, amount, price, params)
4008
4039
  raise NotSupported(self.id + ' createTakeProfitOrder() is not supported yet')
4009
4040
 
4010
- def create_order_with_take_profit_and_stop_loss(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, takeProfit=None, stopLoss=None, params={}):
4041
+ def create_order_with_take_profit_and_stop_loss(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, takeProfit: float = None, stopLoss: float = None, params={}):
4011
4042
  """
4012
4043
  create an order with a stop loss or take profit attached(type 3)
4013
4044
  :param str symbol: unified symbol of the market to create an order in
@@ -4161,21 +4192,18 @@ class Exchange(object):
4161
4192
  """
4162
4193
  raise NotSupported(self.id + ' fetchDepositsWithdrawals() is not supported yet')
4163
4194
 
4164
- def fetch_deposits(self, code: str = None, since: Int = None, limit: Int = None, params={}):
4195
+ def fetch_deposits(self, symbol: str = None, since: Int = None, limit: Int = None, params={}):
4165
4196
  raise NotSupported(self.id + ' fetchDeposits() is not supported yet')
4166
4197
 
4198
+ def fetch_withdrawals(self, symbol: str = None, since: Int = None, limit: Int = None, params={}):
4199
+ raise NotSupported(self.id + ' fetchWithdrawals() is not supported yet')
4200
+
4167
4201
  def fetch_deposits_ws(self, code: str = None, since: Int = None, limit: Int = None, params={}):
4168
4202
  raise NotSupported(self.id + ' fetchDepositsWs() is not supported yet')
4169
4203
 
4170
- def fetch_withdrawals(self, code: str = None, since: Int = None, limit: Int = None, params={}):
4171
- raise NotSupported(self.id + ' fetchWithdrawals() is not supported yet')
4172
-
4173
4204
  def fetch_withdrawals_ws(self, code: str = None, since: Int = None, limit: Int = None, params={}):
4174
4205
  raise NotSupported(self.id + ' fetchWithdrawalsWs() is not supported yet')
4175
4206
 
4176
- def fetch_open_interest(self, symbol: str, params={}):
4177
- raise NotSupported(self.id + ' fetchOpenInterest() is not supported yet')
4178
-
4179
4207
  def fetch_funding_rate_history(self, symbol: str = None, since: Int = None, limit: Int = None, params={}):
4180
4208
  raise NotSupported(self.id + ' fetchFundingRateHistory() is not supported yet')
4181
4209
 
@@ -4248,7 +4276,7 @@ class Exchange(object):
4248
4276
  raise NotSupported(self.id + ' createExpiredOptionMarket() is not supported yet')
4249
4277
 
4250
4278
  def handle_withdraw_tag_and_params(self, tag, params):
4251
- if isinstance(tag, dict):
4279
+ if (tag is not None) and (isinstance(tag, dict)):
4252
4280
  params = self.extend(tag, params)
4253
4281
  tag = None
4254
4282
  if tag is None:
@@ -4257,22 +4285,22 @@ class Exchange(object):
4257
4285
  params = self.omit(params, 'tag')
4258
4286
  return [tag, params]
4259
4287
 
4260
- def create_limit_order(self, symbol: str, side: OrderSide, amount, price, params={}):
4288
+ def create_limit_order(self, symbol: str, side: OrderSide, amount: float, price: float, params={}):
4261
4289
  return self.create_order(symbol, 'limit', side, amount, price, params)
4262
4290
 
4263
- def create_market_order(self, symbol: str, side: OrderSide, amount, price=None, params={}):
4291
+ def create_market_order(self, symbol: str, side: OrderSide, amount: float, price: float = None, params={}):
4264
4292
  return self.create_order(symbol, 'market', side, amount, price, params)
4265
4293
 
4266
- def create_limit_buy_order(self, symbol: str, amount, price, params={}):
4294
+ def create_limit_buy_order(self, symbol: str, amount: float, price: float, params={}):
4267
4295
  return self.create_order(symbol, 'limit', 'buy', amount, price, params)
4268
4296
 
4269
- def create_limit_sell_order(self, symbol: str, amount, price, params={}):
4297
+ def create_limit_sell_order(self, symbol: str, amount: float, price: float, params={}):
4270
4298
  return self.create_order(symbol, 'limit', 'sell', amount, price, params)
4271
4299
 
4272
- def create_market_buy_order(self, symbol: str, amount, params={}):
4300
+ def create_market_buy_order(self, symbol: str, amount: float, params={}):
4273
4301
  return self.create_order(symbol, 'market', 'buy', amount, None, params)
4274
4302
 
4275
- def create_market_sell_order(self, symbol: str, amount, params={}):
4303
+ def create_market_sell_order(self, symbol: str, amount: float, params={}):
4276
4304
  return self.create_order(symbol, 'market', 'sell', amount, None, params)
4277
4305
 
4278
4306
  def cost_to_precision(self, symbol: str, cost):
@@ -4366,19 +4394,19 @@ class Exchange(object):
4366
4394
  else:
4367
4395
  raise NotSupported(self.id + ' fetchMarketLeverageTiers() is not supported yet')
4368
4396
 
4369
- def create_post_only_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price, params={}):
4397
+ def create_post_only_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, params={}):
4370
4398
  if not self.has['createPostOnlyOrder']:
4371
4399
  raise NotSupported(self.id + 'createPostOnlyOrder() is not supported yet')
4372
4400
  query = self.extend(params, {'postOnly': True})
4373
4401
  return self.create_order(symbol, type, side, amount, price, query)
4374
4402
 
4375
- def create_reduce_only_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price, params={}):
4403
+ def create_reduce_only_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, params={}):
4376
4404
  if not self.has['createReduceOnlyOrder']:
4377
4405
  raise NotSupported(self.id + 'createReduceOnlyOrder() is not supported yet')
4378
4406
  query = self.extend(params, {'reduceOnly': True})
4379
4407
  return self.create_order(symbol, type, side, amount, price, query)
4380
4408
 
4381
- def create_stop_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, stopPrice=None, params={}):
4409
+ def create_stop_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, stopPrice: float = None, params={}):
4382
4410
  if not self.has['createStopOrder']:
4383
4411
  raise NotSupported(self.id + ' createStopOrder() is not supported yet')
4384
4412
  if stopPrice is None:
@@ -4386,13 +4414,13 @@ class Exchange(object):
4386
4414
  query = self.extend(params, {'stopPrice': stopPrice})
4387
4415
  return self.create_order(symbol, type, side, amount, price, query)
4388
4416
 
4389
- def create_stop_limit_order(self, symbol: str, side: OrderSide, amount, price, stopPrice, params={}):
4417
+ def create_stop_limit_order(self, symbol: str, side: OrderSide, amount: float, price: float, stopPrice: float, params={}):
4390
4418
  if not self.has['createStopLimitOrder']:
4391
4419
  raise NotSupported(self.id + ' createStopLimitOrder() is not supported yet')
4392
4420
  query = self.extend(params, {'stopPrice': stopPrice})
4393
4421
  return self.create_order(symbol, 'limit', side, amount, price, query)
4394
4422
 
4395
- def create_stop_market_order(self, symbol: str, side: OrderSide, amount, stopPrice, params={}):
4423
+ def create_stop_market_order(self, symbol: str, side: OrderSide, amount: float, stopPrice: float, params={}):
4396
4424
  if not self.has['createStopMarketOrder']:
4397
4425
  raise NotSupported(self.id + ' createStopMarketOrder() is not supported yet')
4398
4426
  query = self.extend(params, {'stopPrice': stopPrice})
@@ -4908,7 +4936,8 @@ class Exchange(object):
4908
4936
  response = getattr(self, method)(symbol, None, maxEntriesPerRequest, params)
4909
4937
  responseLength = len(response)
4910
4938
  if self.verbose:
4911
- self.log('Dynamic pagination call', calls, 'method', method, 'response length', responseLength, 'timestamp', paginationTimestamp)
4939
+ backwardMessage = 'Dynamic pagination call ' + calls + ' method ' + method + ' response length ' + responseLength + ' timestamp ' + paginationTimestamp
4940
+ self.log(backwardMessage)
4912
4941
  if responseLength == 0:
4913
4942
  break
4914
4943
  errors = 0
@@ -4922,7 +4951,8 @@ class Exchange(object):
4922
4951
  response = getattr(self, method)(symbol, paginationTimestamp, maxEntriesPerRequest, params)
4923
4952
  responseLength = len(response)
4924
4953
  if self.verbose:
4925
- self.log('Dynamic pagination call', calls, 'method', method, 'response length', responseLength, 'timestamp', paginationTimestamp)
4954
+ forwardMessage = 'Dynamic pagination call ' + calls + ' method ' + method + ' response length ' + responseLength + ' timestamp ' + paginationTimestamp
4955
+ self.log(forwardMessage)
4926
4956
  if responseLength == 0:
4927
4957
  break
4928
4958
  errors = 0
@@ -4954,6 +4984,7 @@ class Exchange(object):
4954
4984
  errors += 1
4955
4985
  if errors > maxRetries:
4956
4986
  raise e
4987
+ return None
4957
4988
 
4958
4989
  def fetch_paginated_call_deterministic(self, method: str, symbol: str = None, since: Int = None, limit: Int = None, timeframe: str = None, params={}, maxEntriesPerRequest=None):
4959
4990
  maxCalls = None
@@ -5008,7 +5039,8 @@ class Exchange(object):
5008
5039
  errors = 0
5009
5040
  responseLength = len(response)
5010
5041
  if self.verbose:
5011
- self.log('Cursor pagination call', i + 1, 'method', method, 'response length', responseLength, 'cursor', cursorValue)
5042
+ cursorMessage = 'Cursor pagination call ' + i + 1 + ' method ' + method + ' response length ' + responseLength + ' cursor ' + cursorValue
5043
+ self.log(cursorMessage)
5012
5044
  if responseLength == 0:
5013
5045
  break
5014
5046
  result = self.array_concat(result, response)
@@ -5044,7 +5076,8 @@ class Exchange(object):
5044
5076
  errors = 0
5045
5077
  responseLength = len(response)
5046
5078
  if self.verbose:
5047
- self.log('Incremental pagination call', i + 1, 'method', method, 'response length', responseLength)
5079
+ incrementalMessage = 'Incremental pagination call ' + i + 1 + ' method ' + method + ' response length ' + responseLength
5080
+ self.log(incrementalMessage)
5048
5081
  if responseLength == 0:
5049
5082
  break
5050
5083
  result = self.array_concat(result, response)
ccxt/base/types.py CHANGED
@@ -210,6 +210,16 @@ class Transaction(TypedDict):
210
210
  comment: Str
211
211
  internal: Bool
212
212
 
213
+ class TransferEntry(TypedDict):
214
+ info: Dict[str, any]
215
+ id: Str
216
+ timestamp: Int
217
+ datetime: Str
218
+ currency: Str
219
+ amount: Num
220
+ fromAccount: Str
221
+ toAccount: Str
222
+ status: Str
213
223
 
214
224
  class Ticker(TypedDict):
215
225
  info: Dict[str, Any]
ccxt/bigone.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bigone import ImplicitAPI
8
- from ccxt.base.types import Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Bool, Strings, Ticker, Tickers, Trade, Transaction
8
+ from ccxt.base.types import Balances, Currency, Int, Market, Order, TransferEntry, OrderBook, OrderSide, OrderType, Str, Bool, Strings, Ticker, Tickers, Trade, Transaction
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import PermissionDenied
@@ -521,6 +521,7 @@ class bigone(Exchange, ImplicitAPI):
521
521
  def fetch_markets(self, params={}):
522
522
  """
523
523
  retrieves data on all markets for bigone
524
+ :see: https://open.big.one/docs/spot_asset_pair.html
524
525
  :param dict [params]: extra parameters specific to the exchange API endpoint
525
526
  :returns dict[]: an array of objects representing market data
526
527
  """
@@ -779,6 +780,7 @@ class bigone(Exchange, ImplicitAPI):
779
780
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
780
781
  """
781
782
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
783
+ :see: https://open.big.one/docs/spot_tickers.html
782
784
  :param str symbol: unified symbol of the market to fetch the ticker for
783
785
  :param dict [params]: extra parameters specific to the exchange API endpoint
784
786
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -817,6 +819,7 @@ class bigone(Exchange, ImplicitAPI):
817
819
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
818
820
  """
819
821
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
822
+ :see: https://open.big.one/docs/spot_tickers.html
820
823
  :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
821
824
  :param dict [params]: extra parameters specific to the exchange API endpoint
822
825
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -898,6 +901,7 @@ class bigone(Exchange, ImplicitAPI):
898
901
  def fetch_time(self, params={}):
899
902
  """
900
903
  fetches the current integer timestamp in milliseconds from the exchange server
904
+ :see: https://open.big.one/docs/spot_ping.html
901
905
  :param dict [params]: extra parameters specific to the exchange API endpoint
902
906
  :returns int: the current integer timestamp in milliseconds from the exchange server
903
907
  """
@@ -916,6 +920,7 @@ class bigone(Exchange, ImplicitAPI):
916
920
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
917
921
  """
918
922
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
923
+ :see: https://open.big.one/docs/contract_misc.html#get-orderbook-snapshot
919
924
  :param str symbol: unified symbol of the market to fetch the order book for
920
925
  :param int [limit]: the maximum amount of order book entries to return
921
926
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1130,6 +1135,7 @@ class bigone(Exchange, ImplicitAPI):
1130
1135
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1131
1136
  """
1132
1137
  get the list of most recent trades for a particular symbol
1138
+ :see: https://open.big.one/docs/spot_asset_pair_trade.html
1133
1139
  :param str symbol: unified symbol of the market to fetch trades for
1134
1140
  :param int [since]: timestamp in ms of the earliest trade to fetch
1135
1141
  :param int [limit]: the maximum amount of trades to fetch
@@ -1191,6 +1197,7 @@ class bigone(Exchange, ImplicitAPI):
1191
1197
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1192
1198
  """
1193
1199
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1200
+ :see: https://open.big.one/docs/spot_asset_pair_candle.html
1194
1201
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1195
1202
  :param str timeframe: the length of time each candle represents
1196
1203
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1261,6 +1268,8 @@ class bigone(Exchange, ImplicitAPI):
1261
1268
  def fetch_balance(self, params={}) -> Balances:
1262
1269
  """
1263
1270
  query for balance and get the amount of funds available for trading or funds locked in orders
1271
+ :see: https://open.big.one/docs/fund_accounts.html
1272
+ :see: https://open.big.one/docs/spot_accounts.html
1264
1273
  :param dict [params]: extra parameters specific to the exchange API endpoint
1265
1274
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1266
1275
  """
@@ -1380,7 +1389,7 @@ class bigone(Exchange, ImplicitAPI):
1380
1389
  params['createMarketBuyOrderRequiresPrice'] = False
1381
1390
  return self.create_order(symbol, 'market', 'buy', cost, None, params)
1382
1391
 
1383
- def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
1392
+ def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: float = None, params={}):
1384
1393
  """
1385
1394
  create a trade order
1386
1395
  :see: https://open.big.one/docs/spot_orders.html#create-order
@@ -1477,6 +1486,7 @@ class bigone(Exchange, ImplicitAPI):
1477
1486
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1478
1487
  """
1479
1488
  cancels an open order
1489
+ :see: https://open.big.one/docs/spot_orders.html#cancel-order
1480
1490
  :param str id: order id
1481
1491
  :param str symbol: Not used by bigone cancelOrder()
1482
1492
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1503,6 +1513,7 @@ class bigone(Exchange, ImplicitAPI):
1503
1513
  def cancel_all_orders(self, symbol: Str = None, params={}):
1504
1514
  """
1505
1515
  cancel all open orders
1516
+ :see: https://open.big.one/docs/spot_orders.html#cancel-all-orders
1506
1517
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1507
1518
  :param dict [params]: extra parameters specific to the exchange API endpoint
1508
1519
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1530,6 +1541,7 @@ class bigone(Exchange, ImplicitAPI):
1530
1541
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1531
1542
  """
1532
1543
  fetches information on an order made by the user
1544
+ :see: https://open.big.one/docs/spot_orders.html#get-one-order
1533
1545
  :param str symbol: not used by bigone fetchOrder
1534
1546
  :param dict [params]: extra parameters specific to the exchange API endpoint
1535
1547
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1543,6 +1555,7 @@ class bigone(Exchange, ImplicitAPI):
1543
1555
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1544
1556
  """
1545
1557
  fetches information on multiple orders made by the user
1558
+ :see: https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1546
1559
  :param str symbol: unified market symbol of the market orders were made in
1547
1560
  :param int [since]: the earliest time in ms to fetch orders for
1548
1561
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1589,6 +1602,7 @@ class bigone(Exchange, ImplicitAPI):
1589
1602
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1590
1603
  """
1591
1604
  fetch all trades made by the user
1605
+ :see: https://open.big.one/docs/spot_trade.html#trades-of-user
1592
1606
  :param str symbol: unified market symbol
1593
1607
  :param int [since]: the earliest time in ms to fetch trades for
1594
1608
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1654,6 +1668,7 @@ class bigone(Exchange, ImplicitAPI):
1654
1668
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1655
1669
  """
1656
1670
  fetch all unfilled currently open orders
1671
+ :see: https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1657
1672
  :param str symbol: unified market symbol
1658
1673
  :param int [since]: the earliest time in ms to fetch open orders for
1659
1674
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1668,6 +1683,7 @@ class bigone(Exchange, ImplicitAPI):
1668
1683
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1669
1684
  """
1670
1685
  fetches information on multiple closed orders made by the user
1686
+ :see: https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1671
1687
  :param str symbol: unified market symbol of the market orders were made in
1672
1688
  :param int [since]: the earliest time in ms to fetch orders for
1673
1689
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1714,6 +1730,7 @@ class bigone(Exchange, ImplicitAPI):
1714
1730
  def fetch_deposit_address(self, code: str, params={}):
1715
1731
  """
1716
1732
  fetch the deposit address for a currency associated with self account
1733
+ :see: https://open.big.one/docs/spot_deposit.html#get-deposite-address-of-one-asset-of-user
1717
1734
  :param str code: unified currency code
1718
1735
  :param dict [params]: extra parameters specific to the exchange API endpoint
1719
1736
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1861,6 +1878,7 @@ class bigone(Exchange, ImplicitAPI):
1861
1878
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1862
1879
  """
1863
1880
  fetch all deposits made to an account
1881
+ :see: https://open.big.one/docs/spot_deposit.html#deposit-of-user
1864
1882
  :param str code: unified currency code
1865
1883
  :param int [since]: the earliest time in ms to fetch deposits for
1866
1884
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1908,6 +1926,7 @@ class bigone(Exchange, ImplicitAPI):
1908
1926
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1909
1927
  """
1910
1928
  fetch all withdrawals made from an account
1929
+ :see: https://open.big.one/docs/spot_withdrawal.html#get-withdrawals-of-user
1911
1930
  :param str code: unified currency code
1912
1931
  :param int [since]: the earliest time in ms to fetch withdrawals for
1913
1932
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1952,7 +1971,7 @@ class bigone(Exchange, ImplicitAPI):
1952
1971
  withdrawals = self.safe_value(response, 'data', [])
1953
1972
  return self.parse_transactions(withdrawals, currency, since, limit)
1954
1973
 
1955
- def transfer(self, code: str, amount, fromAccount, toAccount, params={}):
1974
+ def transfer(self, code: str, amount: float, fromAccount, toAccount, params={}) -> TransferEntry:
1956
1975
  """
1957
1976
  transfer currency internally between wallets on the same account
1958
1977
  :see: https://open.big.one/docs/spot_transfer.html#transfer-of-user
@@ -2008,7 +2027,7 @@ class bigone(Exchange, ImplicitAPI):
2008
2027
  'id': None,
2009
2028
  'timestamp': None,
2010
2029
  'datetime': None,
2011
- 'currency': code,
2030
+ 'currency': None,
2012
2031
  'amount': None,
2013
2032
  'fromAccount': None,
2014
2033
  'toAccount': None,
@@ -2021,9 +2040,10 @@ class bigone(Exchange, ImplicitAPI):
2021
2040
  }
2022
2041
  return self.safe_string(statuses, status, 'failed')
2023
2042
 
2024
- def withdraw(self, code: str, amount, address, tag=None, params={}):
2043
+ def withdraw(self, code: str, amount: float, address, tag=None, params={}):
2025
2044
  """
2026
2045
  make a withdrawal
2046
+ :see: https://open.big.one/docs/spot_withdrawal.html#create-withdrawal-of-user
2027
2047
  :param str code: unified currency code
2028
2048
  :param float amount: the amount to withdraw
2029
2049
  :param str address: the address to withdraw to