目的:
想将测试回测中的有关变量保存下来,做检查对比(因为策略表现不符合逻辑意图)
操作:
在策略类中一开始定义
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()这样?
或者要实现我的目的,最好的方式该如何处理呢?
谢谢!