问题1:
在OnBar函数里,既存在开平仓逻辑,还有各种指标公式的计算和显示逻辑,甚至把K线图也重新用绘图函数绘制了,这样做会影响策略公式运行时候的交易效率吗?是不是每个Tick新号进来都会执行画图逻辑?还是说TBQ能智能的在 没有打开K线 的时候不去执行画图操作?
我的策略是低频策略,可能一天一个品种就交易0-2次,在这种情况下应该可以忽略上述的代码写法吧?推荐这样写吗?
问题2:
我把所有参数都用Series<Type>包裹了,大概有60个参数,如果长时间不关机运行,Series的参数不断增长会导致内存溢出或者其他数值溢出问题吗?
编写、测试的时候 画图有助于调试
完成后注销相应不必要的作图函数
Series定义时候
可以设置长度
从实际使用来看
你说的两种问题
其实没有必要过度忧虑
TBQ/TBQ3效率挺高的
我的策略是设置了夜盘策略重启
且半个月重启TBQ/TBQ3
虽然TBQ/TBQ3的序列变量很好用
各数据源逐bar都会分配内存
如果你确实担忧效率
一个方案是必须使用序列变量的话
设置仅少量冗余必要的长度
第二是多用全局 少用序列
我个人的习惯
1、除了需要回溯的值
其他一律用全局或普通变量
2、且序列变量都设置了长度
3、每日夜盘前重启策略 释放一次内存
4、半个月重启TBQ 释放一次内存
我现在所有不使用TBQ自带的函数的变量都(尽可能)不用序列变量,即使需要回溯也可以用数组代替。
回溯用数组消耗差不多的
实际上不必太担心效率
谢谢回答,你们好专业啊!👍
当然会咯,事实上一个交易模型可以不用画图的,画图只是画给人看的,机器不画图又不影响它的模型运行
谢谢回答,那我可以搞一个只用于交易的不画图版本,再弄一个工作区搞个有画图的用于对指标信号有效性的分析和复盘。
一般来说,策略分析开发完成后,就会把所有用于调试的代码注释掉了
知道了,谢谢回答。