大家好,我是冷风,欢迎大家使用 发明者量化,从今天起,我开陆续写新手入门的文章,以方便大家快速入门,写出自己的策略。
文章风格是极简风格,我尽量做到每篇小文章可以解决一个小问题,并附带一个完整,可运行的例子。在网站QQ群里有我的
联系方式,有问题的话也可以与我联系,我会尽量帮大家解决一些问题,因为也在上班,时间会比较紧张,不能及时回复,也
请大家谅解。
获取K线,在群里有朋友经常问到,这里我提供一个简单的小例子让大家了解,有些交易平台是提供了K线数据的,(比如火币)
okcoin,针对这样的平台,可以直接获取,而大多数交易平台,是没有提供K线数据的,这种情况下要自己搜集K线。
注:在测试环境中是不用搜集K线,因为,发明者量化 提供了测试的历史K线,为什么 发明者量化 的历史K线,不让用户在实盘交易时
使用呢?主要是考虑, 发明者量化 的K线是自己收集的,在数量与精准性上,可能会由细微差异,所以在实盘操作时,没有提供给用户。
要注意的是 exchange.GetRecords();收集的K线数量,最大是 1411,加到1441条以后,就会删除最早的,这是为了避免影响性能。
function onTick(exchange) {
var records = exchange.GetRecords();//搜集K线,最多可以搜集1411条
if (!records) {
return;
}
Log("当前搜集到的K(分钟)线数量",records.length);
}
function main() {
Log(exchange.GetName(), exchange.GetCurrency());
while (true) {//循环执行
onTick(exchange);
Sleep(10000);
}
}
卖大 大家好,我是冷风,欢迎大家使用BOTVS,从今天起,我开陆续写新手入门的文章,以方便大家快速入门,写出自己的策略。 关于这个很期待,但是好像没有或者很少!!!
feng_yq 有几个问题想请教一下。 1. 我用这个代码在回测环境中发现收集来的K线历史数据和回测日志的图是不同的,K线数据基本上OPEN/HIGH/LOW/CLOSE有两个是相同的,而且变化明显小于日志的图。我只是在onTick的最后加了一行代码打印records的最后一个。 回测的时间选2015-08-10 17:10:24至2015-08-10 20:10:24,5分钟K线,火币BTC,实际上选其他时间段也有同样问题。请看17:55开始的3根K线,对应的打印如下: {"Time":1439200500000,"Open":1649.44,"High":1649.443213,"Low":1649.44,"Close":1649.443213,"Volume":226.632} {"Time":1439200800000,"Open":1645.52,"High":1645.52,"Low":1646.59212,"Close":1646.59212,"Volume":231.261} {"Time":1439201100000,"Open":1643.88,"High":1643.884816,"Low":1643.88,"Close":1643.884816,"Volume":702.867} 2、楼主这里想说明的是,实盘环境下(无论是火币之类提供K线历史的还是其他不提供的)都要依靠我们自己的机器人收集K线数据,机器人最多会缓存1411条K线,是这样吗?
Zero 不好意思这么晚看到.. 如果交易所有提供API获取K线,托管者在实盘下面是不会自己收集的,直接获取交易所提供的K线,如果交易所不提供就自己收集, 只保存最近的1411条的, 模拟测试的话,tick级的数据是模拟的,跟实际有差别的.