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

Q:SetSysParams 一次性设置整个系统参数如何使用    

  • A:SetSysParams 是在与第三方交互时使用的函数,不支持在客户端中调用。在天软中,系统参数的获取跟设置,有以下几种方法:
    1、使用setsysparam一个个设置:作用于整个函数;
    2、使用
     with * , array(参数1:参数1的值,参数2:参数2的值...) do
     begin
     ...
     end
    的方法:作用于被begin...end封装起来的代码段
    3、使用specAll(调用函数,array(设置的系统参数1:参数值,设置的系统参数2:参数值...):仅作用于第一个参数“调用函数”

    下面是几种方法的使用案例:

    echo '默认系统参数:'$ tostn(sysparams); //sysparams获取当前所有系统参数详情
    //设置指定系统参数 ->setsysparam ->作用范围:全局
    setsysparam(pn_rate(),1);
    setsysparam(pn_cycle(),cy_week());
    setsysparam('myParam',12345);//设置用户自定义的全局变量,可用getsysparam('myParam');获取
    //系统参数的设置 -->with  ->作用范围:with语句段
    echo 'with前状态:'$tostn(sysparams);
    a:=array(pn_stock():"SZ000002",pn_cycle():cy_1m(),pn_date():20170710T+10/24);
    with *,a do  //即以变量a中的设置为最新系统参数,其他的保留此前的设置
    begin    //a的更改只作用于with语句段中
      echo 'with中状态:'$tostn(sysparams);
    end
    echo 'with结束后状态:'$tostn(sysparams); //回到with前的系统参数值状态

    //指定系统参数的设置-->spec、specdate、specAll ->作用范围:该语句
    a:=spec(close(),'SH600000');//指定股票SH600000的当前时间的收盘价->该票只在该语句中有效
    b:=specdate(close(),20170505T);//当前票在指定日20170505日的收盘价->该当前时间只在该语句中有效
    //指定票、指定周期、指定时间点、指定复权方式后的收盘价
    c:=specAll(close(),array(pn_stock():'SZ000001',pn_cycle():cy_10m(),pn_date():20170505.1450T,pn_rate():1));
    return array(a,b,c);