Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/datawarehouse/system_parameter_names.md
T

16 KiB
Raw Blame History

数据仓库 / 系统参数名称函数

pn_changedDateMode()

声明:function

设置获取股本数据模式: 0:考虑变动日和公布日 1:仅考虑变动日 2:通过生效日判断。 1)变动日>公布日,生效日=变动日 2)变动日<=公布日,生效日=公布日+1 取endt最近一条生效日的数据。 默认为0,即考虑变动日和公布日

返回:string

示例

范例01:结果:array(11039152001.0,11302143001.0)

endt := 20190404T;
setsysparam(pn_stock(), 'SZ000002');
v1 := StockTotalShares(endt); // 考虑变动日及公布日
setsysparam(PN_ChangedDateMode(), 1);
v2 := StockTotalShares(endt); // 仅考虑变动日
return array(v1, v2);
// 输出:array(11039152001.0,11302143001.0)

pn_cycle()

声明:function

周期,相关数据为字符串类型(见周期函数)或整数。当周期为整数的时候,表示为滚动秒数的自由周期

返回:string

示例

范例01:取万科A在2019-02-18 11:25:00时的五分钟线成交量

// 取万科A在2019-02-18 11:25:00时的五分钟线成交量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), 20190218.1125T);
setsysparam(pn_cycle(), cy_5m());
return vol();
// 输出:1389725

范例02:取上证指数一段时间内的5分钟线数据

// 取上证指数一段时间内的5分钟线数据
setsysparam(pn_cycle(), cy_5m());
return select ['date'], ['close'], ['vol'] from markettable datekey 20190218.1030T to 20190218.1120T of 'SH000001' end;

pn_date()

声明:function

当前时间,相关数据为日期时间类型 在什么时候需要设置当前时间? 1、取行情数据、财务数据时需要。 2、调用的函数,函数说明中有提到与时间相关时,需要在调用该函数之前设置该系统参数

返回:string

示例

范例01:设置当前时间为2019-2-18

// 设置当前时间为2019-2-18
setsysparam(pn_date(), 20190218T);
return sp_time(); // 或return getsysparam(pn_date());//获取当前时间
// 输出:43514,即2019-02-18

范例02:取指定证券SH60000在指定日2019-02-18这一天的收盘价

// 取指定证券SH60000在指定日2019-02-18这一天的收盘价
setsysparam(pn_stock(), 'SH600000');
setsysparam(pn_date(), 20190218T); // 设置当前时间
return close(); // 取收盘价
// 输出:10.84

pn_emptymode()

声明:function

当前空记录模式,系统参数选项,对应系统参数下标'EmptyMode',可以设定当记录不存在的时候report和base返回的数据表示形式的缺省行为。该系统参数取值如下: 取值 说明 0 缺省值,设置为整数0 1 设置为Nil 2 根据字段的数据类型设定,浮点为0.0 3 设置为短杠字符串 4 设置为N/A字符串 5 设置为浮点NAN 6 根据类型设定,浮点为NAN

返回:string

示例

范例01:取万科A在2019年的三季报与年报的股东权益合计,笔者执行日期为20191224日,年报还未出

// 取万科A在2019年的三季报与年报的股东权益合计,笔者执行日期为20191224日,年报还未出
setsysparam(pn_emptymode(), 5); // 空记录设置为浮点NAN
setsysparam(pn_stock(), 'SZ000002');
t1 := reportofall(44111, 20190930);
t2 := reportofall(44111, 20191231);
return array(t1, t2);

pn_freeCycle()

声明:function

设为自由周期模式,系统参数的值为真假值。设置自由周期模式后,分钟线和秒线从固定截止时间的周期变换为滚动周期,也就是周期为设置的pn_date的时间往前滚动周期的长度。例如当设置pn_FreeCycle()参数为1时,设置pn_Cycle()为cy_1m(),设置pn_date()为11:03:05秒,则时间序列为以11:03:05为截止点,一分钟为单位(会自动跳过非交易时段)的时序。 采用设置pn_FreeCycle()为1,设置周期为cy_1m()的效果与直接设置pn_cycle()为60是一样的,而cy_FreeCycle(60)的值亦为60

返回:string

pn_i64Trans()

声明:function

Int64在COM中转换的行为。 假如用户在其他的本地应用中与外部COM打交道,例如调用EXCEL,那么用户可以在TSL中设置该系统参数的方式来调整INT64对COM数据类型转换的行为。 设置的值可为下列值(默认为0): 0:转换为64位整数。默认值 1:转换为32位整数。可能会溢出。 2:转换为双精度浮点数。可能会丢失精度。 以上增强是因为目前买卖盘量已经转换为64位整数,而某些COM前端不支持64位整数,例如Matlab2009等。用户可以设置该属性来控制转换的行为。如Matlab中用ts.SetSysParam('I64Trans ',2)来设置

返回:string

pn_nDay()

声明:function

Nday2执行的周期数目,相关数据为整数类型,一般在使用nday2函数的时候使用pn_nday设置当前的交易日数据,否则默认180天

返回:string

示例

范例01:调用 pn_nDay

setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), inttodate(20140115));
setsysparam(pn_nday(), 250);
return nday2('time', datetostr(sp_time()), 'close', close());

pn_nilTrans()

声明:function

NIL在COM中转换的行为。 假如用户在其他的本地应用中与外部COM打交道,例如调用EXCEL,那么用户可以在TSL中设置该系统参数的方式来调整NIL对COM数据类型转换的行为。 设置的值可为下列值(默认为0): 0: 转换为Unassigned 1: 转换为Empty 2: 转换为NULL 3: 转换为NaN 4: 转换为整数0 5: 转换为浮点0 6: 转换为空字符串 7: 转换为'NIL'字符串 8: 转换为'NULL'字符串 9: 转换为'-'字符串 10: 转换为'/'字符串 其他值: 转换为Unassigned

返回:string

示例

范例01matlab代码

// matlab代码
ts=actxserver('TSExpert.CoExec')
ts.SetSysParam('NilTrans', 9)
ts.RemoteExecute('return array((1,2,nil,4),(2,nil,3,nil));')

pn_precision()

声明:function

保留小数点位数,-1表示保留所有小数。 对返回的结果保留小数点位数,即return时生效。例如BackupSystemParameters2()中系统参数的恢复是在return之前执行,所以精度的设置需要在系统参数备份之前设置

返回:string

示例

范例01:返回结果保留3位小数:

setsysparam(PN_Precision(), 3); // 设置有效
ov := BackupSystemParameters2();
setsysparam(PN_Precision(), 2); // 设置无效,在return 之前被恢复到备份之前的状态
return rand(2, 3);
// 输出:保留3位小数:

范例02:提取万科A2019-2-19日的5分钟线收盘价,并保留2位小数结果输出

// 提取万科A2019-2-19日的5分钟线收盘价,并保留2位小数结果输出
setsysparam(PN_Precision(), 2); // 有效
setsysparam(pn_cycle(), cy_30m());
return select datetimetostr(['date']) as 'date', ['close']
from markettable datekey 20190219T to 20190219.16T of 'SZ000002' end;

pn_rate()

声明:function

复权方式,0为不复权;1为比例复权(考虑股改),计算一个复权因子,通过与除权发生日的复权因子相乘,得到比例复权数据;2为采用分红送配数据除权,该种除权算法不仅仅考虑送股的比例关系,还考虑了诸如分红的加减关系;3为比例复权(不考虑股改),同样通过计算复权因子,后与除权发生日的复权因子相乘,得到比例复权数据,但是不考虑股改时发生权益变动。 注意,比例复权(1和3)主要使用的是交易所发送的系统昨收计算,系统昨收考虑了分红送股的数据

返回:string

示例

范例01:以第一个交易日为基准进行复杂复权后的截止20110909万科A的收盘价时间序列

// 以第一个交易日为基准进行复杂复权后的截止20110909万科A的收盘价时间序列
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
setsysparam(pn_rate(), rt_complex()); // 复权方式:复杂复权
setsysparam(pn_rateday(), rd_firstday()); // 复权基准日:第一个交易日
return nday(30, 'date', datetostr(sp_time()),
    'close', close());

pn_rateDay()

声明:function

复权基准日,0为最后交易日为基准日,-1为上市日为基准日,其他为TDateTime类型的指定的复权基准日。一般与pn_rate()一起使用

返回:string

示例

范例01:设置2018-08-20为复权基准日,小于这个日期的前复权,大于这个日的后复权

// 设置2018-08-20为复权基准日,小于这个日期的前复权,大于这个日的后复权。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), 20180905T);
setsysparam(pn_rate(), 1); // 复权方式:比例复权
setsysparam(pn_rateday(), 20180820T); // 复权基准日
return nday(30, 'date', datetostr(sp_time()), 'close', close());

pn_reportMode()

声明:function

设定报表数据规则模式。对报告期相关的表格数据(Infotable、InfoArray)进行取调整前调整后的数据选择。该系统参数取值如下: 赋值 说明 1 只返回调整前(即:未调整数据) 0 如果有调整后,则返回;否则,返回调整前(即:取最新可取得到的) -1 返回调整前、调整后(即:全表数据)

返回:string

示例

范例01pn_ReportMode()=-1,返回调整前、调整后

SetSysParam(PN_Stock(), 'SH600170');
// pn_ReportMode()=-1,返回调整前、调整后
SetSysParam(pn_ReportMode(), -1);
return Select ['StockID'], ['StockName'], ['截止日'], ['公布日'], ['营业收入'], ['归属于母公司所有者净利润']
from infotable 46
of 'SH600170'
where ['截止日']>=20171231 end;
// 输出:
// StockID
// StockName
// 截止日
// 公布日
// 营业收入
// 归属于母公司所有者净利润
// SH600170
// 上海建工
// 20171231
// 20180328
// 142, 082, 638, 561.83
// 2, 584, 465, 203.87
// SH600170
// 上海建工
// 20171231
// 20190329
// 142, 082, 638, 561.83
// 2, 584, 465, 203.87
// SH600170
// 上海建工
// 20180331
// 20180428
// 31, 075, 378, 878.24
// 532, 834, 340.41
// SH600170
// 上海建工
// 20180331
// 20190430
// 31, 075, 378, 878.24
// 532, 834, 340.41
// SH600170
// 上海建工
// 20180630
// 20180829
// 78, 290, 436, 984.83
// 1, 289, 780, 254.93
// SH600170
// 上海建工
// 20180930
// 20181031
// 115, 410, 360, 329.49
// 1, 811, 096, 340.58
// SH600170
// 上海建工
// 20181231
// 20190329
// 170, 545, 783, 102.81
// 2, 779, 866, 799.83
// SH600170
// 上海建工
// 20190331
// 20190430
// 47, 099, 976, 904.12
// 1, 317, 287, 587.90

pn_reportType()

声明:function

报告类型,用于控制财务数据取数的报告源与优先级

返回:string

示例

范例01:返回结果:20220930, 财报2022年三季报已公布,年报未公布

EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 0); // 财报最新报告期,等价于不设置该系统参数
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 输出:20220930 财报2022年三季报已公布,年报未公布

范例02:返回结果:20221231, 财报和快报2022年年报未公布,预测已公布

EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 1); // 财报>快报>预测
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 输出:20221231 财报和快报2022年年报未公布,预测已公布

范例03:返回结果:20220930,财报和快报2022年年报未公布,财报2022年三季报已公布

EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 2); // 财报>快报
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 输出:20220930,财报和快报2022年年报未公布,财报2022年三季报已公布

范例04:返回结果:20221231,财报2022年年报未公布,预测已公布

EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 3); // 财报>预测
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 输出:20221231,财报2022年年报未公布,预测已公布

范例05:返回结果:20220930 按财报公布规则20230121t,2022年年报未公布在4月底才公布,2022年三季报已在2022年10月公布了

EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_ReportType(), 90); // 财报按财报发布规则
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 输出:20220930 按财报公布规则20230121t,2022年年报未公布在4月底才公布,2022年三季报已在2022年10月公布了

范例06:返回结果:20220930 20230121T指定报告期2022年年报未公布,2022年三季报已公布

EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_ReportType(), 20221231); // 财报指定报告期已公布
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 输出:20220930 20230121T指定报告期2022年年报未公布,2022年三季报已公布

pn_stock()

声明:function

当前股票,相关数据为字符串类型。 在什么时候需要设置当前股票?1、取行情数据、基本面数据、财务数据时需要。2、调用的函数,函数说明中有提到与证券相关时,需要在调用该函数之前设置该系统参数

返回:string

示例

范例01:设置当前证券为万科A

// 设置当前证券为万科A
setsysparam(pn_stock(), 'SZ000002');
return getsysparam(pn_stock()); // 获取当前的证券代码
// 输出:字符串SZ000002

范例02:取指定证券SH60000在指定日2019-02-18这一天的收盘价

// 取指定证券SH60000在指定日2019-02-18这一天的收盘价
setsysparam(pn_stock(), 'SH600000');
setsysparam(pn_date(), 20190218T); // 设置当前时间
return close(); // 取收盘价
// 输出:10.84

pn_viewPoint()

声明:function

设定时点仿真的时点,系统参数的值为一个精确的仿真时间,如果仿真时间为0表示不进行仿真历史。设置时点仿真以后,各类周期均不会访问到未来数据,例如设置时点为11:03:05秒,访问日线、周线、分钟线、秒线等均会和11:03:05秒的时刻访问相同。此外,对于RD等实时函数,访问到的行情数据均会推移到这一时刻

返回:string

示例

范例01:调用 pn_ViewPoint

setsysparam(pn_stock(), "SH600519");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_ViewPoint(), 20240702.102942T); // 仿真时间为10:29:42
setsysparam(pn_date(), 20240702.1030T); // 取分钟线十点半时的价量
return array(close(), vol());