33
关注
63
关注者
发明者的回测系统存在一个问题,我曾经发帖咨询过,
https://www.fmz.com/bbs-topic/10581 ,作为一个付费老用户,说实话,并没还有从实质上解决问题。
涉及到多品种的回测,特别是配对交易,夸品种套利时,这个问题会被放大。
因为在回测系统中,getticker这个函数需要耗时,那么意味着,品种超过几十个时,一个轮询获取多个品种的价格,
会消耗大量的时间,有时候长达十几分钟甚至几十分钟,跟实际情况会完全脱节。我看了论坛和文档,几乎没有人提出这个
问题,我很奇怪。
我研究getrecords这个函数,它在回测系统中是不耗时的,所以,如果我们用re[re.length-1].Close来代替ticker.Last,反而
能同时获取多个品种的实时报价,没有耗时,没有误差。希望对大家有所帮助。
相关推荐
评论
全部评论 (5)
javascript
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)
}
}
实盘级别回测,耗时很短。模拟级别回测因为tick是模拟生成的,不同品种可能一个周期内生成的tick数量并不同,所以一轮时间间隔可能会有增大的情况。
1 年前
mt4或者聚宽等平台,不存在这个耗时问题,按道理说,发明者跟他们的原理是一样的。问题,在于GetRecords不耗时,但是GetTicker耗时,实在是有点难理解。我现在只要是品种多了,就不用GetTicker了,而用Records代替,误差反而小。在这里分享给大家,避免回测错误。
1 年前
谢谢你的回答。我的确只是做了模拟级别的回测,没有做实盘级别的。实盘级别,数据太大了,对于几十个品种的策略而言,别说ticker级别的数据,就是1分钟甚至5分钟的k线数据,都无法获取,根本无法回测,会提示内存错误,之前我有发帖求助,尚未解决。
1 年前
- 1


