vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 4
声望: 0

vnpy 限价单成交价的计算是 order.price 和 ***_best_price 作比较:

if long_cross:
    trade_price = min(order.price, long_best_price)
    pos_change = order.volume
else:
    trade_price = max(order.price, short_best_price)
    pos_change = -order.volume

这是否意味着每次都是把限价单当做 taker order来撮合的
假如这个 order 是上一根 K 线没有匹配上,那么这个 order 就会进入 orderbook 成为一个 maker order
那这里是不是就不用取 max/min 了,直接 trade_price = order.price ? 但是假如流动性好的话,我们可以认为 bar(T).open == bar(T-1).close,所以其实影响不大?

Administrator
avatar
加入于:
帖子: 4040
声望: 223
  1. 并不是把所有限价单都当作taker来撮合
  2. 这里的best_price,指的是如果成交,最优的成交价应该是多少
  3. 如果这根K线没撮合匹配上,则限价委托会继续存在(进入orderbook),在下一个K线再撮合
Member
avatar
加入于:
帖子: 2
声望: 0

用Python的交易员 wrote:

  1. 并不是把所有限价单都当作taker来撮合
  2. 这里的best_price,指的是如果成交,最优的成交价应该是多少
  3. 如果这根K线没撮合匹配上,则限价委托会继续存在(进入orderbook),在下一个K线再撮合

我也在看这一集,我有些疑惑,请问这个long_best_price的best该怎么理解的?
“这里的best_price,指的是如果成交,最优的成交价应该是多少”这里看不懂,后面有min(order.price, long_best_price), 既然这样,这个来自于bar的open_price为何是best?这个best是站在哪一方的角度来说的?

Member
avatar
加入于:
帖子: 4
声望: 0

上期所对撮合价格的说明:

交易所计算机撮合系统将买卖申报指令以价格优先、时间优先的原则进行排序,当买入价大于、等于卖出价则自动撮合成交。
交易所交易系统的撮合成交价等于买入价(bp)、卖出价(sp)和前一成交价(cp)三者中居中的一个价格。即:
当 bp≥sp≥cp, 则: 最新成交价=sp
bp≥cp≥sp, 最新成交价=cp
cp≥bp≥sp, 最新成交价=bp

vnpy这样回测应该是有道理的

Administrator
avatar
加入于:
帖子: 4040
声望: 223

bryce wrote:

用Python的交易员 wrote:

  1. 并不是把所有限价单都当作taker来撮合
  2. 这里的best_price,指的是如果成交,最优的成交价应该是多少
  3. 如果这根K线没撮合匹配上,则限价委托会继续存在(进入orderbook),在下一个K线再撮合

我也在看这一集,我有些疑惑,请问这个long_best_price的best该怎么理解的?
“这里的best_price,指的是如果成交,最优的成交价应该是多少”这里看不懂,后面有min(order.price, long_best_price), 既然这样,这个来自于bar的open_price为何是best?这个best是站在哪一方的角度来说的?

best指的是:如果成交,那么你有可能拿到的最优成交价格(即比较保守的一个估计)

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3