1.在回测模式中使用klines=api.get_kline_serial取K线序列,对于回测的起始时间”start_dt”来说,取出来的第一个klines对象是当前K线+在此之前的199根(kline_serial默认长度为200)还是只有第一根K线(主要考虑此时去算macd或ma等指标时,k线数量够不够,能不能实现往前取值)
2.使用单线程异步协程来实现多品种策略,最多支持多少个异步任务(品种)同时运行?我写了一个30多个期货合约异步的策略,回测起来明显感觉很慢,一个月的回测周期要跑10多分钟,这个问题是需要从带宽上解决还是内存上解决,还是只能减少品种?
3.回测主连时,KQ.m@合约不支持直接交易,但KQ.i合约可以,是否可直接用KQ.i@合约去回测?还是只能通过KQ.m映射到主力合约再去回测?二者有何区别。
期盼老师答复,非常感谢!
1.前者(200根)
为了避免数据不够,无法计算,可以加个判断
api.wait_update()
if api.is_changing(quote):
# 如果最新的几根k线有nan,则跳过本次计算
if any(np.isnan(klines.close.iloc[-20:])):
continue
2.不会,坐等大佬
3.可以直接用指数KQ.i回测,也可以通过KQ.m映射到主力合约再去回测(无法直接用KQ.m直接回测)。用主力合约回测是交易的真实的合约,而指数回测交易的是非真实的指数。如果用指数回测的话,首先要解决的问题是回测结果是否有意义。
用主连合约映射方法进行回测可以看一下这个文章:
天勤主力合约换月/回测 – A BC的文章 – 知乎 https://zhuanlan.zhihu.com/p/486538059
感谢大佬!