Python Coinbase Pro API 如何计算限价单的执行价值?

Posted

技术标签:

【中文标题】Python Coinbase Pro API 如何计算限价单的执行价值?【英文标题】:How does the Python Coinbase Pro API calculate executed value of a limit order? 【发布时间】:2021-12-26 07:03:17 【问题描述】:

我正在使用 Coinbase Pro API Python SDK。我这样下限价买单……

import cbpro
...
self._get_auth_client(account).place_limit_order(product_id=formatted_name,
                              side='buy',
                              price=fiat_price,
                              size=amount)

当它被填充时,我得到如下所示的结果


    'id': '1eaa9934-ccef-489d-80d7-540e0b9ef62a', 
    'price': '64262.83000000', 
    'size': '0.01556109', 
    'product_id': 'BTC-USD', 
    'profile_id': 'bb05c122-e394-40a9-b183-60456a67b188', 
    'side': 'buy', 
    'type': 'limit', 
    'time_in_force': 'GTC', 
    'post_only': False, 
    'created_at': '2021-11-14T19:55:03.791866Z', 
    'done_at': '2021-11-14T19:55:08.990951Z', 
    'done_reason': 'filled', 
    'fill_fees': '1.5639532769270500', 
    'filled_size': '0.01556109', 
    'executed_value': '999.8760512847000000', 
    'status': 'done', 
    'settled': True

我不明白的是他们如何计算“executed_value”?根据购买的金额乘以价格减去费用,(64262.83000000 * 0.01556109 - 1.5639532769270500)我认为执行值将是 998.435728008,这比报告的要少。我错过了什么?

【问题讨论】:

我的猜测是——他们有一个你可以买卖的最小单位,然后你的订单被四舍五入到较低的值,给你留下一些额外的原始货币和少一点的目标货币。不过,这听起来不像是 SO 的问题。 我一直在查看Coinbase documentation 和source code。由于您的买入是这个价格 64262.83000000 的限价单,您是否以较低的价格获得了 BTC?这就是基于 executed_value 的样子。如果是这样,这就是造成差异的原因。 【参考方案1】:

基于我对您的Buy API call 和Coinbase 文档中的这句话的解释。

executed_value 是累积匹配大小 * 价格,仅 2016 年 5 月 20 日之后下的订单。

似乎executed_value 对您的交易是正确的,因为executed_value 输出没有考虑fill_fees

当您查询您的Order Book 时,您应该会看到从您的购买订单中提取的fill_fees

参考:https://help.coinbase.com/en/pro/trading-and-funding/orders/overview-of-order-types-and-settings-stop-limit-market

【讨论】:

即使没有“fill_fees”,“executed_value”的值如何正确?我的尺寸是 0.01556109,价格是 64262.83000000 。将这两件事相乘得到 999.999681285 。这与上面的“executed_value”不同,即 999.8760512847000000。我是不是算错了什么? 我不认为您在计算任何错误。我在 Coinbase 文档中指出,订单簿是任何交易的真正来源,并且根据执行时间,购买响应可能存在差异。为什么会有差异是没有意义的。 目前还不清楚为什么 executed_value 偏离了 0.1236300003。根据文档,与购买和响应相关的几毫秒内似乎发生了一些变化。 BTC 价格在这几毫秒内下降了几美分吗?您是否已将该 Buy Order 与您的 Order Book 交叉引用? 当我阅读trading rules 时,似乎订单簿 将反映正确的交易细节。我仍在尝试确定这对于限价单意味着什么——“未结订单可能会根据市场情况在请求和响应之间改变状态。” 我没有使用 Coinbase 的经验,但据我了解,如果您的限价出价高于当前报价,那么您支付的报价不是限价。听起来这可能就是这里发生的事情:在提交的投标登记时,要价已略微低于投标。如果是这种情况,那么您的价格将是 executed_value / filled_size 或大约 64,254.885 美元。

以上是关于Python Coinbase Pro API 如何计算限价单的执行价值?的主要内容,如果未能解决你的问题,请参考以下文章

coinbase pro API - 我可以更新未平仓限价单吗?

调用 Coinbase pro 沙盒 api 时,无效:401 Unauthorized。文本:""message":"invalid signature&qu

Python coinbase API 价格为浮动

Coinbase Python API 上的分页

Coinbase Pro 费用和总额

Coinbase pro web socket 获取货币的当前价格