最终目的:
在portfolio_strategy模块上,运行单一策略,同时回测多个股票品种。
说明:
在portfolio_strategy模块示例策略里,直接在策略on_bars里进行指标计算和买卖,在回测多标的股票时,会出现bar找不到的错误。这是由于在交易日股票停牌,当天没有此股票K线数据。如果在前一天发送了交易信号,cross_limit_order时会造成停牌当天找不到bar数据,即在active_limit_orders里有某只股票数据,而在当天的self.bars[order.vt_symbol]找不到相应的k线数据。
解决办法:在backtesting的cross_limit_order加一个判断,进行过滤:
不知道大家有没有遇到过类似情况,怎么回测股票策略的?
我也遇到这个问题了,lz解决了吗?
请问下,下面代码,long_entry = max(self.buy_break, self.day_high)为什么要取self.buy_break 和 self.day_high的最大值,为什么不用buy_break 直接挂单呢?
if bar.datetime.time() < self.exit_time:
if self.pos == 0:
self.intra_trade_low = bar.low_price
self.intra_trade_high = bar.high_price
if self.tend_high > self.sell_setup:
long_entry = max(self.buy_break, self.day_high)
self.buy(long_entry, self.fixed_size, stop=True)
请问下面代码的这句 long_entry = max(self.buy_break, self.day_high) ,为什么要取self.buy_break, self.day_high的最大值,为什么不直接用self.buy_break价格挂单呢?谢谢
if bar.datetime.time() < self.exit_time:
if self.pos == 0:
self.intra_trade_low = bar.low_price
self.intra_trade_high = bar.high_price
if self.tend_high > self.sell_setup:
long_entry = max(self.buy_break, self.day_high)
self.buy(long_entry, self.fixed_size, stop=True)
请问lz用的什么数据库?时间戳对齐的作用是?
参考公众号的文章(https://mp.weixin.qq.com/s/5NmGO5enaUrCHbaTBuY3Ww)
把csv数据导入数据库,为了省事直接用了sqlite
代码如下:
策略回测时候报错:
应该是由于数据在入库的时候,用strftime转成了str类型,策略回测的时候str类型没有day属性导致。
是我入库代码写的有问题,还是需要取数据的时候再转换一下?
如果在加载数据的时候再把类型转换为datetime,是不是需要改源码了?本来用sqlite就是想偷个懒。。。。
请问陈总和各位朋友用sqlite有没有遇到过这种情况,如何解决?多谢~
用Python的交易员 wrote:
- 请删除下C:\users\administrator.vntrader\cta_strategy_data.json
- SIMNOW不支持市价单~~无数新手栽坑于此
- 把显示器分辨率改为1920x1080
感谢您回答。不过第一个问题,删除了C:\users\administrator.vntrader\cta_strategy_data.json文件后,仍然报错,报错内容跟之前一样。请问应该如何解决?
另外,我在报错后 退出程序 打开了cta_strategy_data.json,文件没写完,如下:
策略我启动一下,就停止,没有成交
------更新-----
又删除了一遍文件,重启了一遍程序,正常了。不过没能复现之前的错误,不知道什么原因造成的。
感谢陈总。
第一次使用,连接了CTP模拟盘,试着跑了自带的一个策略,出现如下问题,烦请大佬帮忙解答一下,多谢。
1、CTP模拟连接,策略初始化、启动都正常,点击停止“停止”后(策略为自带的的dualthrust,未更改),报错如下图:
2、有一个已经成交的单子,为什么手动没撤掉呢?用市价,平今、平昨都试过,看委托记录,为什么都是“已撤销”状态呢,另外,为什么多了一手空单,数量0,均价0?如下图:
3、策略界面,信息显示不全,如下图,鼠标无法调整字符所在窗口大小,请问应该如何调整能正常显示?