gateio / gateapi-python

247 stars 92 forks source link

INVALID_CURRENCY #62

Closed HFLeon closed 3 years ago

HFLeon commented 3 years ago

全仓杠杆下单报错 {"label":"INVALID_CURRENCY","message":"DOGE"}

revilwang commented 3 years ago

具体的下单参数是什么?现在还会有这种问题吗?

HFLeon commented 3 years ago

26日这种情况持续了几个小时,后来正常了

revilwang commented 3 years ago

大概的时间范围提供一下?

revilwang commented 3 years ago

顺便问一下,在执行这个操作之前有划入 DOGE 到全仓杠杆账户去吗?

HFLeon commented 3 years ago

顺便问一下,在执行这个操作之前有划入 DOGE 到全仓杠杆账户去吗?

有的

HFLeon commented 3 years ago

大概的时间范围提供一下?

大概是26日的10:30-14:00

revilwang commented 3 years ago

请直接邮件私信用户 uid 给我

revilwang commented 3 years ago

问题已确认,这是一个错误提示,我们下一版更新会将该错误消除,当前可以通过执行一次任意数量的 DOGE 转入操作就可以规避这个问题。

14 点 45 分,该全仓账户才有了第一次 DOGE 币账户的操作,所以在此之前,DOGE 的下单会一直报该错误。

HFLeon commented 3 years ago

好的,谢谢

HFLeon commented 3 years ago

还有一个问题,全仓自动借入,该笔交易不满足最小借币数量会失败(比如订单交易400U,账户余额300U,最小借200U),有什么办法能规避这个问题吗

revilwang commented 3 years ago

最小借入等限制是统一配置的,只能靠 API 自己下单之前确认是否能够满足要求。

查询币种的时候返回的 min_borrow_amount 可以在下单前用于计算该笔自动借入时候能满足最小额限制,示例代码类似于下面这种

from decimal import Decimal as D
currency = margin_api.get_cross_margin_currency('DOGE')
balance = margin_api.get_cross_margin_account()
order = gate_api.Order(currency_pair='DOGE_USDT')

currency = 'USDT' if order.side == 'buy' else 'DOGE'
order_amount = D(order.amount) * D(order.price) if order.side == 'buy' else D(order.amount)
min_borrow = D(margin_api.get_cross_margin_currency(currency).min_borrow_amount)
avail = D(balance.balances.get(currency).available)

assert avail >= order_amount or order_amount - avail > min_borrow
revilwang commented 3 years ago

全仓杠杆未操作过的资金执行自动借入报错 INVALID_CURRENCY 的问题已修复