Binance API仅出售利润和所有头寸
Posted
技术标签:
【中文标题】Binance API仅出售利润和所有头寸【英文标题】:Binance API sell only the profit & all the position 【发布时间】:2021-05-14 12:28:09 【问题描述】:我试图了解在仅出售给定订单的利润或所有头寸时实施的逻辑是什么。
我已经实现了 BUY 操作。所以,假设用户想以当前的 BTC 价格购买价值 100 美元的 BTC,我这样做:
$params =
[
'symbol' => 'BTCUSDT',
'side' => 'BUY',
'type' => 'MARKET',
'quoteOrderQty' => 100,
'timestamp' => $timestamp
];
$binance->buy($params);
https://binance-docs.github.io/apidocs/spot/en/#new-order-trade
我保存了来自 Binance 的 OrderId
和 clientOrderId
回复。一周后,我想出售订单头寸并拥有以下可用选项:
-
只卖出该订单的利润并(可能)平仓
卖出该订单的所有头寸(无论是否获利)并(可能)平仓
问题:我怎样才能完成这两种情况?
【问题讨论】:
【参考方案1】:-
您需要等待订单何时处于
FILLED
状态。对于MARKET
的订单,它通常会立即发生,但要确保您需要检查响应状态,如果是NEW
或PARTIALLY_FILLED
,请拨打此电话GET /api/v3/order
。
好的,您已完成订单。在此步骤中,您需要保存executedQty
和cummulativeQuoteQty
字段。一是你买了多少 BTC,二是你花了多少 USDT。
我不确定您在“仅出售利润”下的确切含义,但让我猜一下。您需要取 GET /api/v3/ticker/price
对的 lastPrice 然后计算
$profit = $currentPrice * $exectuedQty - $cummulativeQuoteQty
。
这将是您在 USDT 中的利润。部分出售需要下单
'symbol' => 'BTCUSDT',
'side' => 'SELL',
'type' => 'MARKET',
'quoteOrderQty' => $profit,
'timestamp' => $timestamp
请记住,quoteOrderQty
不能低于 10 美元
-
这是您完全关闭的命令
'symbol' => 'BTCUSDT',
'side' => 'SELL',
'type' => 'MARKET',
'quantity' => $exectuedQty,
'timestamp' => $timestamp
【讨论】:
利润不能只有$currentPrice - $priceBought
吗?还有 API 中的什么地方提到了 10 美元的规则?我看到它适用于 OCO 订单类型,但这似乎不是我正在使用的 (?)。
您的回复中没有 priceBought。你需要计算它。此外,您可以按基础或报价货币数量下订单。我做了第一个(更多控制),你建议第二个变体(易于理解)。
$10 规则来自币安过滤器。你可以在这里阅读更多内容binance-docs.github.io/apidocs/spot/en/#filters。所有 USDT 货币对的最小报价为 10 美元。
我不认为这一轮是个好主意。在这种情况下最好使用地板。该回合可以给出高于您当前货币金额的值。
找到这个解决方案github.com/jaggedsoft/php-binance-api/blob/master/…(搜索“roundStep”),似乎是最合适的。以上是关于Binance API仅出售利润和所有头寸的主要内容,如果未能解决你的问题,请参考以下文章
如何在一个请求中从 Binance API 获取所有(或多个)对的历史 klines?