【问题标题】:Binance API sell only the profit & all the positionBinance API仅出售利润和所有头寸
【发布时间】: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. 只卖出该订单的利润并(可能)平仓
  2. 卖出该订单的所有头寸(无论是否获利)并(可能)平仓

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

【问题讨论】:

    标签: php binance


    【解决方案1】:
    1. 您需要等待订单何时处于FILLED 状态。对于MARKET 的订单,它通常会立即发生,但要确保您需要检查响应状态,如果是NEWPARTIALLY_FILLED,请拨打此电话GET /api/v3/order
    2. 好的,您已完成订单。在此步骤中,您需要保存executedQtycummulativeQuoteQty 字段。一是你买了多少 BTC,二是你花了多少 USDT。
    3. 我不确定您在“仅出售利润”下的确切含义,但让我猜一下。您需要取 GET /api/v3/ticker/price 对的 lastPrice 然后计算

    $profit = $currentPrice * $exectuedQty - $cummulativeQuoteQty。 这将是您在 USDT 中的利润。部分出售需要下单

        'symbol' => 'BTCUSDT', 
        'side' => 'SELL', 
        'type' => 'MARKET', 
        'quoteOrderQty' => $profit, 
        'timestamp' => $timestamp
    

    请记住,quoteOrderQty 不能低于 10 美元

    1. 这是您完全关闭的命令
        '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”),似乎是最合适的。
    猜你喜欢
    • 2021-08-26
    • 2017-06-19
    • 2011-10-28
    • 2023-02-04
    • 2016-10-14
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多