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 的 OrderIdclientOrderId 回复。一周后,我想出售订单头寸并拥有以下可用选项:

    只卖出该订单的利润并(可能)平仓 卖出该订单的所有头寸(无论是否获利)并(可能)平仓

问题:我怎样才能完成这两种情况?

【问题讨论】:

【参考方案1】:
    您需要等待订单何时处于FILLED 状态。对于MARKET 的订单,它通常会立即发生,但要确保您需要检查响应状态,如果是NEWPARTIALLY_FILLED,请拨打此电话GET /api/v3/order。 好的,您已完成订单。在此步骤中,您需要保存executedQtycummulativeQuoteQty 字段。一是你买了多少 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?

Binance API 列出来自公共端点的所有符号及其名称

如何在一个请求中从 Binance API 获取所有(或多个)对的历史 klines?

在 Binance API 中获取有关交易佣金的信息

有没有办法使用 Binance API 获得硬币的市值或市值排名?

如何使用 Binance API,通过股票代码简单 GET 价格