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