A:当需要局部改变系统参数时,可以使用With语句。
例如:
setsysparam(pn_stock(),'SZ000001');
setsysparam(pn_cycle(),cy_day());
begt:=inttodate(20130901);
endt:=inttodate(20130920);
dateArr:=StockTradeDayQk(begt,endt);
r:=array();
for nI:=0 to length(dateArr)-1 do
begin
day:=dateArr[nI];
setsysparam(pn_date(),day);
r[nI]['日期']:=datetostr(day);
r[nI]['收盘价']:=close();
//收盘前10分钟的1分钟线价格
param:=array(pn_cycle():cy_1m(),pn_date():day+strtotime("14:50:00"));
with *,param do
begin
r[nI]['收盘前10分钟价格']:=close();
end;
r[nI]['涨幅(%)']:=stockzf3();
end;
return r;
在这个范例中,要求取开始日begt到截止日endt之间的收盘价、收盘前10分钟的价格、收益率这几个指标。
其中,收盘价和涨幅均取的日线的数据,收盘前10分钟价格取的是14:50的数据。由于在循环之外设置了周期为日线,如果要取时间点的数据,则必须改变周期。
Param是需要改变的系统参数列表,没有列上去的,则表示维持原系统参数形式,这里需要修改的是当前时间和周期。把这两个系统参数组成参数数组,with…do begin…end 函数体中执行的参数即param中获取的系统参数,在with…do begin…end函数体外的语句不受param的影响。
[关键字]:with、修改系统参数、局部修改、系统参数