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

目的:
想将测试回测中的有关变量保存下来,做检查对比(因为策略表现不符合逻辑意图)

操作:
在策略类中一开始定义
log_dict = {}

在on_init():中

    #定义要记录的变量
    self.log_dict['date'] = []
    self.log_dict['close'] = []
    self.log_dict['qqe'] = []
    self.log_dict['qqesf'] = []
    self.log_dict['ma1'] = []
    self.log_dict['ma2'] = []
    self.log_dict['pos'] = []

然后 在on_bar中,
...
self.put_event()

    self.log_dict['date'].append(bar.datetime)
    self.log_dict['close'].append(bar.close_price)
    self.log_dict['qqe'].append(round(self.qqe[-1], 2))
    self.log_dict['qqesf'].append(round(self.qqesf[-1], 2))
    self.log_dict['ma1'].append(round(self.ma_fast[-1], 2))
    self.log_dict['ma2'].append(round(self.ma_slow[-1], 2))
    self.log_dict['pos'].append(self.pos)

在on_stop中
pd.DataFrame(self.log_dict).to_csv('D:\maqqelog.txt')
self.write_log("策略停止")

但程序回测完了,相关图表也输出了,
但D盘没有这个文件,

但如果把这个 pd.DataFrame(self.log_dict).to_csv('D:\maqqelog.txt')
放在on_bar中,程序可能需要每更新一个bar就写一次,特别耗时。

请问:
在on_bar()里有没有可能,用那个变量,检测表现全部跑完?
if XXX:
log.to_csv()这样?

或者要实现我的目的,最好的方式该如何处理呢?

谢谢!

Administrator
avatar
加入于:
帖子: 3588
声望: 190

回测结束的时候,不会调用on_stop函数。。。只有实盘中才会调用

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