FAQ > 金融建模 > 建模问题 > 系统参数

Q:with在设置系统环境变量时用法    

  • 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、修改系统参数、局部修改、系统参数