vn.py官网
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 13
声望: 0

之前看了前辈们有关,日内交易在收盘前平掉所有仓位的代码,有些看不明白,自己有一点想法,重写一种,但是写出来是报错的,想请各位大佬们指出下我的错误

需求:在每天夜盘(23:00)前3分钟清掉仓位以及在下午(15:00)前3分钟清掉仓位。

我的平仓思路是这样的:如果bar.datetime 落在 14:58到15:00之间 或者 22:58到23:00之间,清仓。
exit_time_start_1 = time(hour=14, minute=57)
exit_time_end_1 = time(hour=15, minute=00)
exit_time_start_2 = time(hour=22, minute=57)
exit_time_end_2 = time(hour=23, minute=00)

我的判断逻辑:
if self.exit_time_start_1 < bar.datetime <self.exit_time_end_1 or self.exit_time_start_2<bar.datetime<self.exit_time_end_2 :
if self.pos > 0:
self.sell(bar.close_price,abs(self.pos))
elif self.pos <0:
self.cover(bar.close_price,abs(self.pos))
但是,策略现在运行后提示我错误在
File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\backtesting.py", line 228, in run_backtesting
self.callback(data)
File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\strategies\Emarbshfe20211122.py", line 110, in on_bar
self.bg.update_bar(bar)
File "c:\vnstudio\lib\site-packages\vnpy\trader\utility.py", line 266, in update_bar
self.update_bar_minute_window(bar)
File "c:\vnstudio\lib\site-packages\vnpy\trader\utility.py", line 303, in update_bar_minute_window
self.on_window_bar(self.window_bar)
File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\strategies\Emarbshfe20211122.py", line 143, in on_3min_bar
if self.exit_time_start_1 < bar.datetime <self.exit_time_end_1 or self.exit_time_start_2<bar.datetime<self.exit_time_end_2 :
TypeError: '<' not supported between instances of 'datetime.time' and 'datetime.datetime'

1、请问下我的思路是否有问题。
2、如果思路没问题的话,这个报错该怎么修改。

Administrator
avatar
加入于:
帖子: 4469
声望: 302

bar.datetime对象,是datetime类型

你要用的是bar.datetime.time(),也就是time类型对象去和exit_time比较

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

沪公网安备 31011502017034号