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


