我正在尝试使用Binance的.create_margin_order()
方法,但它不起作用。以下是订购函数的代码:
def limit_order(symbol, side, quantity, price, type=ORDER_TYPE_LIMIT):
try:
order = client.create_margin_order(symbol, side, quantity, price, type)
output = {
'status': True,
'symbol': symbol,
'side': side,
'quantity': quantity,
'price': price
}
print("Sending order:")
print(output)
except:
output = {
'status': False
}
print(symbol, side, quantity, price, type)
print("There was an order error")
return output
return output
我正在使用print
函数来尝试查看值和调试。以下是一个响应示例:
BTCUSDT BUY 0.00030085801697862135 66476.54 LIMIT
There was an order error
所有这些数字在我看来都不错,我唯一能想到的就是最低限度地花在Binance身上,但我很确定那是10美元,而且我有一些数学来确保每次订单是20美元。
我的Binance API管理中启用的设置是:
启用阅读支持现货和保证金交易使保证金贷款、偿还和转移
当我测试我的应用程序时,我把它设置为不受限制的,我的目的是在我让它正常运行后重新访问受信任的IP。
编辑1:我100%确信这与create方法有关,因为我将代码更改为:
print('preorder')
order = client.create_margin_order(symbol, side, quantity, price, type)
print('postorder, preoutput')
而且它只打印了preorder
编辑2:决定使用其他Binance API函数来尝试并调试此问题。我使用了client.get_account()['permissions']
,发现这只返回了'SPOT'
。如何修正我的帐户以允许保证金?我可以在这个帐户上进行保证金交易,所以我不知道为什么会这样。
发布于 2021-12-17 12:06:53
代码没有什么问题。保证金账户在现货市场上交易。
您需要考虑交易对的资产的LOT_SIZE。LOT_SIZE基本上告诉您交换所能处理的资产的精度。
BTCUSDT购买0.00030085801697862135 66476.54限价有定单错误
用于BTCUSTD的BTC的LOT_SIZE只允许最多10个小数点。你的数字包含两倍的小数。因此,您需要格式化该金额或将其舍入至最近的10小数点tik。
https://stackoverflow.com/questions/69651170
复制