VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 152
声望: 4

请问一下,以螺纹钢为例,如果策略中这样写:self.buy(bar.close_price+5, 1),请问

  1. 回测中的成交价是使用的close_price,还是close_price+5?
  2. 实盘中,如果策略中这样写,实际成交价会以close_price+5成交,还是市价单成交(close_price,或者close_price+1,close_price+2),如果以市价单成交,那实盘中实际成交价格与close_price一般相差几个点?谢谢。

因为我回测中发现,设定滑点为1,策略是盈利 的,如果将滑点设为4,策略变成亏钱的了。所以这个对策略的影响 还是挺大的。

Administrator
avatar
加入于:
帖子: 4513
声望: 322
  1. 约等于前者,这个在vnpy-community公众号的进阶教程中有详细讲解
  2. 市价成交

滑点是在计算交易盈亏时候额外加上的成本,并不会影响回测中的成交价格。

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

我实盘测试了一下,使用bar.close_price+5,

成交价有的是bar.close_price+3,有的是bar.close_price+6,滑点太严重了,回测盈利的策略这样搞也会亏损了。

另外请问
if bar.close_price>x:
self.buy(bar.close_price+5, 1)

上一根k线的收盘价满足条件,是在上一根bar结束就触发self.buy?还是要等这根k线走完?

因为我想将策略改成tick级别来规避滑点,如果上一根bar结束就触发self.buy,那改成tick级别也没用了。

请教陈总不知有没有好的方法解决滑点的问题,谢谢!

Administrator
avatar
加入于:
帖子: 4513
声望: 322

你收到bar推送的时候,就是这跟bar刚走完,同样策略也就是此时发出委托。

改成TICK需要能理解细粒度的委托状态机管理,需要挺多时间折腾的...

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

我的代码是这样的(品种 为螺纹钢):
if 条件4:
self.cover(bar.close_price, 1)
self.buy(bar.close_price, 1)
self.f1.write("平空仓,反手,时间是{},价格是{}".format(bar.datetime, bar.close_price)+"\n")

我查看自己的self.f1文件的记录:
平空仓,反手, 时间是2019-11-04 10:30:00,价格是3380.0
再看期货账户的实际成交记录:
2019-11-04 10:31:00 3383.00元。

请问是不是这样的:
当10:30:00这根1分钟的bar(时间戳为:10:30:00-10:31:00)走完,程序在10:31:00 下单,
这样看来,程序的下单时间和close_bar的结束时间 基本上0.01秒都不差啊,可是为什么也有3383-3380=3这么大的滑点?

那些与close_bar的结束时间差了 零点零几秒再成交的有几个滑点还好说,这个基本没什么差异呀。

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

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】