python二进制api ordermarket_buy和ordermarket_sell的问题



我正在尝试使用order_market_buy和order_markt_sell进行买卖,以BTCUSDT为例,当购买时,我想使用我所有的美元,当出售时,我想要出售所有的BTC。

我使用

order_buy = Client.order_market_buy(symbol='BTCUSDT', quoteOrderQty=my_USDT_position)
order_sell = Client.order_market_sell(symbol='BTCUSDT', quoteOrderQty=my_BTC_position)

它不起作用,流行起来"缺少1个必需的位置参数:"self";

请帮我解决这个问题,谢谢!

您可以获得特定资产的当前余额,然后将其作为参数传递给order_market_buy方法。

示例:

usdtBalance = client.get_asset_balance(asset='USDT').get('free')
btcBalance = client.get_asset_balance(asset='BTC').get('free')
order_buy = Client.order_market_buy(symbol='BTCUSDT', quantity=usdtBalance)
order_sell = Client.order_market_sell(symbol='BTCUSDT', quantity=btcBalance)

从他们的文档中:https://python-binance.readthedocs.io/en/latest/binance.html?highlight=order_market_buy#binance.client.Client.order_market_buy

在order_market_buy和order_market _sell的函数调用中似乎没有输入数量参数,这就是为什么会出现错误的原因。数量和符号是这些函数所必需的参数。

所以我认为要解决";缺少1个必需的位置参数:"self";你应该做的错误:

order_buy = Client.order_market_buy(symbol='BTCUSDT', quantity=<your quantity>, quoteOrderQty=my_USDT_position)
order_sell = Client.order_market_sell(symbol='BTCUSDT', quantity=<your quantity>, quoteOrderQty=my_BTC_position)

你也试过这样的东西吗?

usdtBalance = Client.get_asset_balance(asset='USDT').get('free') 
#use param quoteOrderQty instead of param quantity when buying
order_buy = Client.order_market_buy(symbol='BTCUSDT', quoteOrderQty=usdtBalance)
##Some time later##
btcBalance = Client.get_asset_balance(asset='BTC').get('free')
#use param quantity instead of param quoteOrderQty when selling
order_sell = Client.order_market_sell(symbol='BTCUSDT', quantity=btcBalance)

根据您的评论,Client.order_market_buy(symbol='BTCUSDT', quoteOrderQty=usdtBalance)似乎适用于购买,但Client.order_market_sell(symbol='BTCUSDT', quantity=btcBalance)不适用于出售

我倾向于认为这是因为您在btcBalance中存储的信息是在您初始化btcBalance之后进行购买之前,这是有意义的,因为这样您就可以存储0.00或只是"灰尘">这是基础资产的一个非常低的金额,不能用于币安交易,而只能转换为BNB

在本指南中,有一个使用Testnet Binance Vision的示例,尽管它很好地说明了如何使用Python Binance包设置Market Sell Order

from binance.exceptions import BinanceAPIException
api_key = '<testnet api_key>'
api_secret = '<testnet api_secret>'
async def main():
quantity = '0.000001'
client = await AsyncClient.create(api_key=api_key, api_secret=api_secret, testnet=True)
try:
market_res = await client.order_market_sell(symbol='BTCUSDT', quantity=quantity)
except BinanceAPIException as e:
print(e)
else:
print(json.dumps(market_res, indent=2))
await client.close_connection()

它甚至说,如果存储在quantity中的值不大于MIN_NOTIONAL的值,您将得到以下错误:

APIError(code=-1013): Filter failure: MIN_NOTIONAL

我建议你去看看,它可能会在处理这个话题时帮助你更好。

交易一对(BTC和USDT(时,您可以在quantity参数中指定要买入/卖出的BTC金额,也可以在quoteOrderQty参数中指定想要买入/售出的USDT。

btc_balance = client.get_asset_balance(asset='BTC')
btc_balance = btc_balance['free']
usdt_balance = client.get_asset_balance(asset='USDT')
usdt_balance = usdt_balance['free']
# Sell BTC
sell_order = client.order_market_sell(
symbol='BTCUSDT', 
quantity=btc_balance
)
# Buy BTC
buy_order = client.order_market_buy(
symbol='BTCUSDT', 
quoteOrderQty = usdt_balance
)

最新更新