使用 Binance API 的 .create_margin_order() 函数有什么问题

What is wrong with this .create_margin_order() function using the Binance API

我正在尝试对 Binance API 使用 .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% 确定它与创建订单方法有关,因为我将代码更改为:

print('preorder')
order = client.create_margin_order(symbol, side, quantity, price, type)
print('postorder, preoutput')

它只打印了 preorder

编辑 2:决定使用其他一些 Binance API 函数来尝试调试此问题。我用了client.get_account()['permissions'],发现这只返回了'SPOT'。我如何修复我的账户以允许保证金?我可以在这个账户上进行保证金交易,所以我不确定为什么会这样。

代码没有问题。保证金账户在现货市场交易。

您需要考虑交易对的资产LOT_SIZE。 LOT_SIZE 基本上告诉您交易所可以处理的资产的精度。

BTCUSDT BUY 0.00030085801697862135 66476.54 LIMIT There was an order error

BTC的LOT_SIZE BTCUSTD只允许最多10位小数。您的金额包含两倍的小数。因此,您需要格式化金额或将其四舍五入到最接近的小数点后 10 位。