为什么当市场价格低于限价买入时,为什么不履行?

Why when the market price is below a limit buy, why is it not fullfilled?

我正在用 C++ 编写交易机器人。我正在制作允许 1% 宽大处理的限价订单。如您所见,市场价格为 2.2532,我在 2.2757 限价买入。从逻辑上讲,如果市场价格等于或低于限价,则应激活限价买入。但是,正如您从下面的图片中看到的那样,情况并非如此。我张贴了订单簿和交易历史的图片。我想知道的是为什么。这跟订单簿有关系吗?我还注意到,在设置市场价值时,通常市场价格与填充的平均价格之间存在相当大的差异。

因为在 Binance 上获取市场价格似乎并不能真正告诉你市场订单是否会以该价格完全成交,或者限价订单是否可以在该价格附近成交。有没有办法 programmatically/mathematically 查明限价订单是否会通过。或者,找出当时买入的市价订单的实际平均价格是多少?

更新

所以当我去下市价单时,我收到这条消息: Your order price will be 8% higher than the latest market price. Please proceed cautiously. 当我想以市价买入时。部分我想知道为什么。而且,有没有办法获得这个价格的确切数字?另外,有没有办法在 API 上得到这个确切的下一个市场 buy/sell 会是什么?

我不知道为什么 post 被否决了,这是一个非常合理的问题。然而,这里是答案:

经过对这个问题的更多研究。根据investopedia

A trade will only occur when someone is willing to sell the security at the bid price, or buy it at the ask price.

意思是,资产的出售价格与当前市场价格关系不大,而与订单簿关系更大。看上面的图片,当时根据限价订单,有人愿意出售资产的最低价格是2.500,有人愿意购买资产的最高价格是2.499。这些分别是卖价和买价。由于没有人愿意以要价买入或以出价卖出,因此交易没有完成。请注意,数量对于了解订单的成交量也很重要,供您日后参考。

对于那些可能有点困惑的人,您需要在有人愿意出售的最低价买入。您需要以有人愿意购买的最高价出售。这些来自限价单。

回到原来的问题,更新8%的差异是有道理的,要价可能下降了一点。但是,如果您注意到 2.2532 * 1.082.433456,它比在 2.2757 时创建的限价买入更接近 2.5 价格,这意味着 8% 的通知是有意义的。

我现在将解释如何使用数学和编码来计算它。您需要从订单簿代码中提取。此 api 请求是 /api/v3/ticker/bookTicker

我将使用想要市场购买 GRTUSD 的示例。你从 link https://api.binance.us/api/v3/ticker/bookTicker?symbol=GRTUSD 得到的字典是 {"symbol":"GRTUSD","bidPrice":"0.1391","bidQty":"3613.45000000","askPrice":"0.1393","askQty":"5183.18000000"}

一些简单的数学表明,5183.18000000 的 GRT 相当于要价略高于 722 美元。这意味着如果我对 GRTUSD 进行市价买入。只要我当时投资的美元金额等于或低于 722 美元,它就会以 0.1393

的要价成交