avatar of Han_nuo_ta Han_nuo_ta
关注 私信
33
关注
57
关注者

多品种回测存在的一个小问题,以及解决方案

创建于: 2025-03-16 14:45:25, 更新于: 2025-03-16 21:06:36
comments   5
hits   164

发明者的回测系统存在一个问题,我曾经发帖咨询过, https://www.fmz.com/bbs-topic/10581 ,作为一个付费老用户,说实话,并没还有从实质上解决问题。 涉及到多品种的回测,特别是配对交易,夸品种套利时,这个问题会被放大。 因为在回测系统中,getticker这个函数需要耗时,那么意味着,品种超过几十个时,一个轮询获取多个品种的价格, 会消耗大量的时间,有时候长达十几分钟甚至几十分钟,跟实际情况会完全脱节。我看了论坛和文档,几乎没有人提出这个 问题,我很奇怪。

我研究getrecords这个函数,它在回测系统中是不耗时的,所以,如果我们用re[re.length-1].Close来代替ticker.Last,反而 能同时获取多个品种的实时报价,没有耗时,没有误差。希望对大家有所帮助。

相关推荐
全部留言
avatar of 发明者量化-小小梦
发明者量化-小小梦
对于套利,高频类的策略,尽量用实盘级别。高频策略,对冲套利策略在模拟级别回测,可以用于参考宏观上的验证。
2025-03-16 21:09:49
avatar of 发明者量化-小小梦
发明者量化-小小梦
```js function main() { while (true) { var begin = new Date().getTime() exchanges[0].GetTicker("LTC_USDT") exchanges[0].GetTicker("BTC_USDT") exchanges[0].GetTicker("ETH_USDT") exchanges[1].GetTicker("LTC_USDT") exchanges[1].GetTicker("BTC_USDT") exchanges[1].GetTicker("ETH_USDT") var end = new Date().getTime() Log(end - begin) Sleep(1000) } } ``` 您好,现在回测系统支持直接指定品种信息。 /upload/asset/16d15d7bc98bf6fc03b8.png 实盘级别回测,耗时很短。模拟级别回测因为tick是模拟生成的,不同品种可能一个周期内生成的tick数量并不同,所以一轮时间间隔可能会有增大的情况。
2025-03-16 21:06:24
avatar of 发明者量化-小小梦
发明者量化-小小梦
好的,感谢您提出建议和问题,回测系统这边会持续优化升级。
2025-03-16 21:32:24
avatar of Han_nuo_ta
Han_nuo_ta
mt4或者聚宽等平台,不存在这个耗时问题,按道理说,发明者跟他们的原理是一样的。问题,在于GetRecords不耗时,但是GetTicker耗时,实在是有点难理解。我现在只要是品种多了,就不用GetTicker了,而用Records代替,误差反而小。在这里分享给大家,避免回测错误。
2025-03-16 21:16:15
avatar of Han_nuo_ta
Han_nuo_ta
谢谢你的回答。我的确只是做了模拟级别的回测,没有做实盘级别的。实盘级别,数据太大了,对于几十个品种的策略而言,别说ticker级别的数据,就是1分钟甚至5分钟的k线数据,都无法获取,根本无法回测,会提示内存错误,之前我有发帖求助,尚未解决。
2025-03-16 21:12:56