关于基础数据的读取,文档里面提到有两种方式: ( https://www.tbquant.net/helper?navigate=tbquant&cid=753 )
1、通过变量定义的方式,例如 Vars Dic<Array<String>> aa(\"TB_BOND_CVBASE\"); 然后就可以通过类似于aa[0][0]、aa[2][1]的方式在OnInit或者OnBar等不同阶段来使用aa这个可回溯的数组序列得到基础数据
2、直接读取数据库,使用函数GetDicValue(String name, String symbol, Numeric time, 接收基础数据的变量 rValue)得到基础数据,其中需要指定time时间
以前我一直使用变量定义的方式,觉得比较简单方便,但是现在遇到了在tbq新版本里,OnInit阶段取不到变量定义的值的问题( https://www.tbquant.net/forumDetail?cur=tbquan&id=10416&cid=all )。所以想求一个和原来的语句Dic<Array<String>> aa(\"TB_BOND_CVBASE\");等价的使用GetDic方式的语句,希望最终也能得到一个可回溯的aa数组,通过类似于aa[0][0]、aa[2][1]的方式得到基础数据。而且希望能在OnInit阶段使用。
以前只关注了变量定义的基础数据读取方式,没写过数据库读取方式,所以想麻烦老师给一个指引,省去点自己摸索碰壁的过程,提前衷心感谢。
看到例程里面GetDicValue的使用方式是: Bool ret = GetDicValue(arrDic, SystemDateTime, values);,需要传入一个时间值作为参数,所以就有了疑问,这样得到的基础数据应该只是那个时间值所在的时间截面上的基础数据的值吧?那就没法像aa[2][1]这样的方式进行回溯了吧?而且如果传入的时间值是SystemDateTime, 那也没法做回测了吧?
还请老师和同学们给看看,多谢多谢
没人回答吗?
比如下面这段程序,改写成GetDic系列函数的方式需要怎么写?
Params
Vars
Dic<Array<String>> FeData(\"TB_BOND_CVBASE\");
Events
OnInit()
{
Print(\"Data:\"+FeData[0][0]);
SubscribeBar(FeData[0][0],Frequency,BeginDateTime);
}