A:模型
QueryWithPeriod是天软客户端中数据时间序列专家中的专用取数模型,为了避免造成误取过量数据导致客户端卡死或等待过长的问题,该模型中对返回结果集的数据大小设置了限制,
不能超过150万个数据点数,否则就会报该错误,用户需按照提示降低取数点数(缩小取数时间区间或减少证券样本数量等)可避免。
报错示例
获取20年A股的部分行情字段数据。
setsysparam(pn_begt(),inttodate(20060101));
setsysparam(pn_endt(),inttodate(20260101));
setsysparam("TimeIndex",1);
return
QueryWithPeriod("A股","",@True,"",
"开盘价",@open(),
"收盘价",@close(),
"最高价",@high(),
"最低价",@low(),
"开盘价",@open(),
"成交量",@vol(),
"成交金额",@amount());
结果:数据点过多,报错
解决方式
使用两重循环获取指标该限制,取数方式参考:FAQ:
Q:取数Demo-取一段时间内多个股票的指标值
实现代码:
begt:=inttodate(20060101);
endt:=inttodate(20260101);
setsysparam(pn_cycle(),cy_day()); //周期
stocks:=getbk("A股"); //获取股池
data:=array();
k:=0;
for i:=0 to length(stocks)-1 do //股票循环
begin
echo i," ",stocks[i];
setsysparam(pn_stock(),stocks[i]); //设置当前证券代码
dayList:= stocktradedayqk(begt,endt); //取当前证券的交易时间序列
for j:=0 to length(dayList)-1 do //时间循环
begin
dayEnd:=dayList[j];
setsysparam(pn_date(),dayEnd);//设置当前时间,给不需要时间参数的指标提供指定日
data[k]['StockID']:=stocks[i];
data[k]['StockName']:=stockName(stocks[i]);
data[k]['Date']:=datetostr(dayEnd);
//获取多个指标值
data[k,'开盘价']:=open();
data[k,'最高价']:=high();
data[k,'最低价']:=low();
data[k,'收盘价']:=close();
data[k,'成交量']:=vol();
data[k,'成交金额']:=amount();
k++;
end;
end;
return data;
部分结果:
