133 KiB
数据仓库函数
内容
- 系统参数名称函数
- 多市场支撑函数
- 时间相关函数
- 判定函数
- 盘中相关
- 盘后相关(在当日可用于盘中)
- 时间序列统计
- 成交明细数据函数
- 交易明细字段标识函数
- 查询和轮询函数
- 市场和板块函数
- 取行情数据序列函数
- 引用指定函数
- 系统参数设置和获取函数
- 复权类型函数
- 复权基准日函数
- 周期函数
- 财务函数
- 选股与取数
- 向导函数
- 条件判定
系统参数名称函数
内容
- cyclefilter
- pn_Stock
- pn_Date
- pn_Rate
- pn_RateDay
- pn_nDay
- pn_Cycle
- pn_Precision
- pn_NilTrans
- Pn_I64Trans
- pn_ViewPoint
- pn_FreeCycle
- pn_ReportMode
- Pn_Emptymode
- pn_ChangedDateMode
- pn_ReportType
- pn_NoRaiseNoData
- pn_CalcCTRLWord
cyclefilter
主要用于过滤假期的分时数据。
参数值说明:
0: 没有过滤器,可用于取消设置的参数
1: 过滤掉期货放假期间的夜盘
3: 新增集合竞价周期点
范例1:
// 结果集将只有20161010的数据,没有假期的夜盘数据。
setsysparam("cyclefilter", 1);
setsysparam(pn_cycle(), cy_15m());
return select * from markettable datekey 20161007T to 20161010.1600T of"ag1612"end;
范例2:
// 结果将会新增20161010T08:59:00的集合竞价数据
// (期货夜盘有两个集合竞价时点,正常夜盘是20:59:00,放假无夜盘是8:59:00)
setsysparam("cyclefilter", 3);
setsysparam(pn_cycle(), cy_15m());
return select * , datetimetostr(["date"]) as"date"
from markettable datekey 20161007T to 20161010.1600T of"ag1612"end;
pn_Stock
范例
范例1:
// 设置当前证券为万科A
setsysparam(pn_stock(), 'SZ000002');
return getsysparam(pn_stock()); // 获取当前的证券代码
// 返回字符串SZ000002
范例2:
// 取指定证券SH60000在指定日2019-02-18这一天的收盘价
setsysparam(pn_stock(), 'SH600000');
setsysparam(pn_date(), 20190218T); // 设置当前时间
return close(); // 取收盘价
// 返回10.84
参考SetSysParam GetSysParam pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_Date
范例
范例1:
// 设置当前时间为2019-2-18
setsysparam(pn_date(), 20190218T);
return sp_time(); // 或return getsysparam(pn_date()); // 获取当前时间
// 返回43514,即2019-02-18
范例2:
// 取指定证券SH60000在指定日2019-02-18这一天的收盘价
setsysparam(pn_stock(), 'SH600000');
setsysparam(pn_date(), 20190218T); // 设置当前时间
return close(); // 取收盘价
// 返回10.84
参考SetSysParam GetSysParam pn_Stock pn_Rate pn_RateDay pn_nDay pn_Cycle pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_Rate
范例
// 以第一个交易日为基准进行复杂复权后的截止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());
结果(部分):
参考SetSysParam GetSysParam pn_Stock pn_Date pn_RateDay pn_nDay pn_Cycle pn_Precision 复权基准日函数 pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_RateDay
范例
// 设置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());
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_nDay pn_Cycle pn_Precision 复权类型函数 pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_nDay
范例
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), inttodate(20140115));
setsysparam(pn_nday(), 250);
return nday2('time', datetostr(sp_time()), 'close', close());
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_Cycle pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_Cycle
范例
范例1:
// 取万科A在2019-02-18 11:25:00时的五分钟线成交量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), 20190218.1125T);
setsysparam(pn_cycle(), cy_5m());
return vol();
// 返回:1389725
范例2:
// 取上证指数一段时间内的5分钟线数据
setsysparam(pn_cycle(), cy_5m());
return select ['date'], ['close'], ['vol'] from markettable datekey 20190218.1030T to 20190218.1120T of'SH000001'end;
// 返回结果:
参考周期函数 SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode 自由周期
pn_Precision
范例
范例1:设置与生效
setsysparam(PN_Precision(), 3); // 设置有效
ov := BackupSystemParameters2();
setsysparam(PN_Precision(), 2); // 设置无效,在return 之前被恢复到备份之前的状态
return rand(2, 3);
// 返回结果保留3位小数:
范例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;
// 返回结果:
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_NilTrans
范例
matlab调用
// matlab代码
ts := actxserver('TSExpert.CoExec')
ts.SetSysParam('NilTrans', 9)
ts.RemoteExecute('return array((1,2,nil,4),(2,nil,3,nil));')
// 返回:
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ViewPoint pn_FreeCycle pn_ReportMode
Pn_I64Trans
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ViewPoint pn_FreeCycle pn_ReportMode
pn_ViewPoint
范例在分钟线下,指定仿真时间为10点29分42秒,求仿真下10点30分的分钟线价量
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());
参见专题:非整周期行情数据提取陷阱和时点真实行情数据回溯参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_FreeCycle pn_ReportMode
pn_FreeCycle
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ReportMode 自由周期
pn_ReportMode
范例
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
参考财务数据调整的处理专题 财务函数 SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_FreeCycle pn_ReportMode
Pn_Emptymode
范例
// 取万科A在2019年的三季报与年报的股东权益合计,笔者执行日期为20191224日,年报还未出
setsysparam(pn_emptymode(), 5); // 空记录设置为浮点NAN
setsysparam(pn_stock(), 'SZ000002');
t1 := reportofall(44111, 20190930);
t2 := reportofall(44111, 20191231);
return array(t1, t2);
返回:
244,851,895,300.25
NAN
pn_ChangedDateMode
范例
提取万科A的在20190404日的总股本数据
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_ReportType
pn_ReportType取值说明:
| 取值 | 含义 | 涉及报表 | 应用范围 | 是否与pn_stock/pn_date相关 |
|---|---|---|---|---|
| 0(默认) | 提取最新公布的报告期 | 正式财报 | 应用最广泛 | 与pn_stock、pn_date相关 |
| 1 | 优先级:正式财报>业绩快报>业绩预测 | 正式财报、业绩快报、业绩预测 | 适用于实时财务数据提取 | 与pn_stock、pn_date相关 |
| 2 | 优先级:正式财报>业绩快报 | 正式财报、业绩快报 | 适用于实时财务数据提取 | 与pn_stock、pn_date相关 |
| 3 | 优先级:正式财报>业绩预测 | 正式财报、业绩预测 | 适用于实时财务数据提取 | 与pn_stock、pn_date相关 |
| 90 | 按正式财报发布规则提取 | 正式财报 | 定期更新,所有股票规则相同 | 与pn_stock、pn_date无关 |
| >=19000101 | 指定报告期,若指定报告期未发布,取最新发布报告期 | 正式财报 | 指定报告期 | 与pn_stock相关,与pn_date无关 |
相关专题文档
实时财务数据相关:2025-11-21-量化数据-因子研究09:关于利用实时财务信息的财务数据提取说明(更新版)
正式财报发布规则说明
发布规则:
| 财报类型 | 公布日期 |
|---|---|
| 一季报 | 4月底全部公布(4月最后一天开盘前已全部公布) |
| 中报 | 8月底全部公布(8月最后一天开盘前已全部公布) |
| 三季报 | 10月底全部公布(10月最后一天开盘前已全部公布) |
| 年报 | 次年4月底全部公布(次年4月最后一天开盘前已全部公布) |
按财报发布规则获取最新报告期与最新年度报告期案例:
| 截止日 | 最新报告期 | 最新年度报告期 |
|---|---|---|
| 2023-01-01~2023-04-29 | 20220930 | 20211231 |
| 2023-04-30~2023-08-30 | 20230331 | 20221231 |
| 2023-08-31~2023-10-30 | 20230630 | 20221231 |
| 2023-10-31~2023-12-31 | 20230930 | 20221231 |
范例:
范例1:pn_ReportType()=0
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 0); // 财报最新报告期,等价于不设置该系统参数
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果:20220930, 财报2022年三季报已公布,年报未公布
范例2:pn_ReportType()=1
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 1); // 财报>快报>预测
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果:20221231, 财报和快报2022年年报未公布,预测已公布
范例3:pn_ReportType()=2
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 2); // 财报>快报
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果:20220930,财报和快报2022年年报未公布,财报2022年三季报已公布
范例4:pn_ReportType()=3
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 3); // 财报>预测
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果:20221231,财报2022年年报未公布,预测已公布
范例5:pn_ReportType()=90,发布规则提取
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_ReportType(), 90); // 财报按财报发布规则
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果:20220930, 按财报公布规则20230121t,2022年年报未公布在4月底才公布,2022年三季报已在2022年10月公布了
范例6:pn_ReportType()=20221231,指定报告期
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_ReportType(), 20221231); // 财报指定报告期已公布
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果:20220930, 20230121T指定报告期2022年年报未公布,2022年三季报已公布
pn_NoRaiseNoData
用途:获取/设置“无数据不抛异常”的系统参数键。 参数:无。 返回:系统参数名(用于 SetSysParam/GetSysParam)。
范例
范例1:获取当前禁用无数据异常模式
setsysparam(pn_noraisenodata(), 1);
return getsysparam(pn_noraisenodata());
返回:1
范例2:当指定证券无数据时,不报错,通过close()取价格返回0
setsysparam(pn_noraisenodata(), 1);
return spec(close(), "abc");
返回:0
范例3:当指定证券无数据时,不报错,通过Rd取盘口时返回nil
setsysparam(pn_noraisenodata(), 1);
return spec(rd(-1), "abc");
返回:nil
pn_CalcCTRLWord
用途:获取/设置 CalcCTRLWord 系统参数键,用于控制 nil 参与计算或浮点除 0 的提示/报错行为。 参数:无。 返回:系统参数名(用于 SetSysParam/GetSysParam)。
说明:
设置系统参数"CalcCTRLWord"可以控制程序中若有nil参与计算以及浮点除0时,进行警告或者程序抛出异常。
设置语法:setsysparam(pn_CalcCTRLWord(),v);
此为全局变量,对设置后的所有程序有效,默认为0,不启动。
系统参数值说明:
异常值运算报错与警告:警告是指在运行信息中运行时打印提醒信息,报错即出现该类运算时直接报错,终止当前程序。
该参数值类型为二进制:(ps:天软中0b开头表示二进制数)
从低位到高位(位值为1则为启动,为0则为不启动,默认都不启动,则默认值为0):
第一位:浮点除0警告
第二位:浮点除0报错
第三位:Nil计算警告
第四位:Nil计算报错
第五位:Nil大小比较警告
第六位:Nil大小比较报错
第七位:Nil等于不等于警告
第八位:Nil等于不等于报错
第九位:Nil.与[]操作返回nil,并警告
第十位:Nil.与[]操作返回nil,不报错也不警告
使用范例01:只提醒,不报错
Echo #127; // 清除掉客户端ECHO窗口中的内容
// 启动:浮点除0警告,Nil计算警告,Nil大小比较警告,Nil等于不等于警告
setsysparam("CalcCTRLWord", 0b01010101); // 等同setsysparam("CalcCTRLWord",85);
return array(0 / 0,
1 / 0,
nil * 2,
nil > 0,
1 + 1);
// 程序不报错,不终止,且有返回值,打印提醒信息为:
float division by zero at:noname86(TSCheckModel) line: 5
float division by zero at:noname86(TSCheckModel) line: 6
nil calculation at:noname86(TSCheckModel) line: 7
nil Numerical great / less comparison at:noname86(TSCheckModel) line: 8
使用范例02:报错+提醒
Echo #127;
setsysparam("CalcCTRLWord", 0b11111111); // 报错+提醒
return array(0 / 0,
1 / 0,
nil * 2,
nil > 0,
1 + 1);
程序报错:提示第5行出现除0操作
使用范例03:Nil的.与[]操作不报错
setsysparam(pn_CalcCTRLWord(), 0x100); // 默认是会报错的,设置后不报错只提醒
t := nil;
return array(t.a, t[1]);
程序不报错,返回数组:array(nil,nil),会打印信息如
NIL invoke at:NoName339(xxx) line: 6
NIL [] get at:NoName339(xxx) line: 6
报错类型有以下六类,分别对应如下:
1、float division by zero :出现除0运算
2、NIL calculation:存在Nil运算
3、NIL Numerical great/less comparison:存在Nil大小比较运算
4、NIL Numerical eq/neq comparison:存在Nil等于或不等于运算
5、NIL invoke:存在Nil.操作
6、NIL [] get:存在Nil[n]操作
多市场支撑函数
天软平台支持多市场数据的接入,每个市场都是独立开盘和收盘,用户可以获得所在市场的相关信息。
内容
- MarketID
- MarketInfo
- MarketOpenCloseTime
- DefaultTimeZone
- TSPeriod
MarketID
MarketInfo
范例
// 获取SH60000所属市场的市场相关信息
return MarketInfo(MarketID("SH600000"));
交易的分段信息结构details字段的内容如下:
34200对应的时间是9:30分,41400对应的时间是11:30分。46800对应的是13:00,54000对应的是15:00。
注意:在details中的相应的minutes字段,该分钟数不是当前区间内的分钟数,而是截止到当前区间为止包含的分钟数。
MarketOpenCloseTime
DefaultTimeZone
TSPeriod
范例
范例一:取万科A在2023年6月28日的一分钟线交易时间序列
stockid := "SZ000002";
cycle := cy_1m();
dt := 20230628T;
return tsperiod(stockid, cycle, dt);
结果:
范例二:取期货合约i2307在2023年6月28日的一分钟线交易时间序列,包含夜盘
stockid := "i2307";
cycle := cy_1m();
dt := 20230628T;
return tsperiod(stockid, cycle, dt);
结果:
范例三:传入自由周期,取万科A在2023年6月28日的8秒线交易时间序列
stockid := "SZ000002";
cycle := 8;
dt := 20230628T;
return tsperiod(stockid, cycle, dt);
结果:
范例四:传入自由周期以及基准时间点,取万科A在2023年6月28日的8秒线交易时间序列
stockid := "SZ000002";
cycle := 8;
dt := 20230628.133015T;
return tsperiod(stockid, cycle, dt);
结果:
时间相关函数
内容
- sp_time
- tradeDays
- FirstDay
- LastDay
sp_time
范例
范例一:设置的日期为交易日时sp_time()的结果
// 系统证券代码对应的交易时间
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140103)); // 2014-01-03是一个交易日
a := sp_time();
return a;
// 返回41642 (2014-01-03);
范例二:设置的日期为非交易日时sp_time(0)和sp_time(1)的结果对比
// 如果设置日期是一个非交易日(2014-01-05周日),sp_time被设定为离指定日最新的一个交易日
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140105));
b := sp_time();
c := sp_time(1);
return array(b, c);
// 返回:array(41642,41644),即(2014-01-03和2014-01-05);
范例三:对比sp_time(2)与sp_time(0)、sp_time(1)返回日期的差异
// 如果要返回设定的日期,例如(2014-01-05),1月5日是周日,不受交易日的影响。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140105));
d := sp_time(1); // 返回:41644 (2014-01-05);
e := Nday(1, ”t”, sp_time(), ”t1”, sp_time(1), ”t2”, sp_time(2));
// e中的t列和t1列一致,而t2列可以访问到2014-01-05的日期值41644
范例四:sp_time 在NDay中的使用
// sp_time 在NDay中的使用;
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140105));
c := nday(10, 'date', datetostr(sp_time()), 'close', close());
参考SpecDate GetSysParam SetSysParam
tradeDays
范例
范例一:
setsysparam(pn_stock(), 'SZ000002');
beg_date := inttodate(20100101);
end_date := inttodate(20101231);
// end_date 必须大于beg_date
return tradedays(beg_date, end_date); // 返回240
范例二:
StockID := "SZ000002";
BegT := inttodate(20130101);
EndT := inttodate(20130122);
setsysparam(pn_stock(), StockID);
setsysparam(pn_cycle(), cy_1m());
return tradedays(BegT, EndT);
// 结果:240
// 万科A在2012年12月26日至2013年1月18日停牌,以上只取到2013-01-21 00:00:00 至2013-01-22 00:00:00之间的交易日数据,即240个分钟周期
参考TDateTime
FirstDay
范例
setsysparam(pn_stock(), 'SZ000002');
// 获得系统品种的第一个交易日
return firstday(); // 33240(1991-01-02);
// 获得指定参数品种的第一个交易日
return firstday('SH600086');
// 结果:35587(1997-06-06);
参考TDateTime
LastDay
范例
// 获取某只股票的最后一个交易日。
setsysparam(pn_stock(), 'SZ000002');
return lastday(); // 40794 (2011-09-08)
return lastday('SH600001');
// 结果:40162(2009-12-15)该股已经下市
参考TDateTime
判定函数
内容
- IsStock
- IsTradeDay
- TestStock
- IsValidCode
- ValidFullCode
- IsCashFlowInfoId
- IsMainReportId
- AnalyseStockArr
- IsBalanceInfoId
- IsInterestInfoId
- IsFundBalanceSheetInfoId
- IsFundInterestInfoId
- IsStockFinancialItem
- IsFinancialInfoID
IsStock
范例
// 判定一个代码是否为有效的股票代码。
return IsStock('SZ000001');
// 返回1
return IsStock('SZ100002'); // 返回0
IsTradeDay
范例
// 判定系统品种在指定时间是否有交易。
setsysparam(pn_stock(), 'SZ000002');
return IsTradeDay(inttodate(20110828)); // 返回0
return IsTradeDay(inttodate(20110826)); // 返回1
TestStock
范例
// 判定是否存在该股票的历史或者实时数据。
return TestStock('SZ000002'); // 返回1
IsValidCode
范例
// 判定指定的品种代码是否为合法有效。
return IsValidCode('600036'); // 返回1
return IsValidCode('SH600036'); // 返回1
return IsValidCode('s600036'); // 返回0
// 获得完整的代码。
return isValidCode('SZ000002', ID); // 'SZ000002'是有效的代码,ID为'SZ000002'
return IsValidCode('S600', ID); // 'S600'不是有效的代码,ID为0
参考isstock
ValidFullCode
范例
// 返回一个有效股票代码的完整代码。
stock_id := '000002';
_id := ValidFullCode(stock_id);
return _id;
// 返回:'SZ000002'
IsCashFlowInfoId
范例
return IsCashFlowInfoId(48003);
// 返回:1
IsMainReportId
范例
return IsMainReportId(46002);
// 返回:1
AnalyseStockArr
范例
return AnalyseStockArr('上证50', 'IF01;IF02');
返回:
IsBalanceInfoId
范例
return IsBalanceInfoId(44003);
// 返回:1
IsInterestInfoId
范例
return IsInterestInfoId(46003);
// 返回:1
IsFundBalanceSheetInfoId
范例
return IsFundBalanceSheetInfoId(312002);
// 返回:1
IsFundInterestInfoId
范例
return IsFundInterestInfoId(314002);
// 返回:1
IsStockFinancialItem
范例
return IsStockFinancialItem(62003);
// 返回:1
IsFinancialInfoID
- IsStock
- IsTradeDay
- TestStock
- IsValidCode
- ValidFullCode
- IsCashFlowInfoId
- IsMainReportId
- AnalyseStockArr
- IsBalanceInfoId
- IsInterestInfoId
- IsFundBalanceSheetInfoId
- IsFundInterestInfoId
- IsStockFinancialItem
- IsFinancialInfoID
盘中相关
内容
- Rd
Rd
范例
范例01:取个股盘口行情
setsysparam(pn_stock(), 'SZ000002');
rds := array(datetimetostr(sp_time()),
rd(0),//股票代码
rd(1),//股票名称
rd(2),//开盘价
rd(3)//昨收
);
return rds;
范例02:取多个股票盘口行情
stocks := getbk('A股'); // 所有A股个股
ret := array();
for i := 0 to length(stocks) - 1 do
begin
setsysparam(Pn_stock(), stocks[i]);
ret[i, 'StockID'] := stocks[i];
ret[i, 'StockName'] := StockName(stocks[i]);
ret[i, '盘口时间'] := datetimetostr(rd(-1));
ret[i, '价格'] := rd(6);
ret[i, '成交量'] := rd(8); // 可以类似新增其它指标
end;
return ret;
范例03:与行情函数的对比
默认与现在指标函数对比
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
return array(rd(6), close()); // 两者返回的结果相同
与指定日函数取数对比
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
SetSysParam(pn_date(), inttodate(20121212));
return array(rd(6), close()); // 两者返回的结果不同,rd(6)返回的是最新价格,而close()返回的是20121212这天万科A的收盘价。
差别在与rd只是得到实盘的价格数据,close()可以通过设置系统时间得到历史某个时点的价格。
默认当前时间对比
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
return array(rd(-1), sp_time()); // 两者返回的结果相同
指定日当前时间对比
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
SetSysParam(pn_date(), inttodate(20121212));
return array(rd(-1), sp_time()); // 两者返回的结果不同。
第一个程序都是取到万科A最新的成交时间。在第二个程序中rd(-1)取到的是当前万科A的最新成交时间,但是sp_time()取到的是2012/12/12 00:00:00这个时刻前万科A最新的成交时间。
综上rd得到的就是程序运行这个时间点的行情的最新值,系统参数的设置对rd不起作用。
盘后相关(在当日可用于盘中)
内容
- Low
- SseSyl2
- Sys_PrevClose
- Open
- Close
- BuyVol3
- Vol
- Buy2
- TradeCount
- 行情数据说明
- BuyVol2
- Buy1
- Amount
- BuyVol1
- High
- SseSyl1
- Buy3
- SectionOpen
- Sale2
- SaleVol3
- Sale5
- SectionVol
- Buy4
- SaleVol4
- SectionLow
- SectionHigh
- BuyVol5
- SectionPrevClose
- VolRate
- Sale3
- SectionAmount
- Buy5
- SaleVol1
- Sale1
- SectionTradeCount
- SaleVol5
- BuyVol4
- SaleVol2
- Sale4
- InitialtiveBuyVol
- SectionalInitialtiveSaleVol
- SubmitBuyVol
- SectionalInitialtiveBuyAmount
- Advance
- Prev_Settlement
- SectionTradeWay
- SubmitSaleVol
- Decline
- SectionalSubmitBSR
- InitialtiveSaleAmount
- OpenInterest
- SectionalInitialtiveBuyVol
- SectionOpenInterest
- InitialtiveBuyAmount
- SectionalSubmitBuyVol
- SectionalSubmitSaleVol
- InitialtiveSaleVol
- SectionalInitialtiveSaleAmount
- SubmitBSR
- Settlement
- IsEqual
- Flat
- IsDown
- IsUp
Low
范例
// 返回平安银行最低价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return low(); // 返回11.35
参考High Close Open Vol Amount Sys_PrevClose
SseSyl2
范例
// 返回股指期货IF1401在2014年1月15日的昨结算价
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_date(), inttodate(20140115));
return SseSyl2 (); // 返回2213.6
Sys_PrevClose
范例
// 返回平安银行系统昨收
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return Sys_PrevClose (); // 返回11.36
参考High Close Open Vol Low Amount
Open
范例
// 取平安银行在2025年4月29日的开盘价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), 20250429T);
setsysparam(pn_cycle(), cy_day());
return open(); // 结果11
// 获取万科A ,2014年1月22日当天的复权开盘价,复权方式为比例复权,复权基准日是上市日。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), strtodate('2014-01-22'));
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
return open(); // 结果:615.24
// 获取万科A ,2014年1月22日14:00:00,1分钟线的复权开盘价,复权方式为比例复权,复权基准日是上市日。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-22 14:00:00'));
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
return open(); // 结果:648.38
参考Close High Low Vol Amount Sys_PrevClose SectionOpen
Close
范例
范例一:
// 不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据
// 执行日期2014年1月27日,取当天的数据
return close();
// 结果:2033.3
范例二:
// 设置当前股票为‘万科A’,当前时间为2014-01-15
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_date(), inttodate(20140115));
return close();
// 结果:7.17
范例三:
// 设置当前股票为‘万科A’,当前时间为2014-01-15 10:00:00,周期为1分钟线,该数据取的是09:59:01至10:00:00区间的最后一笔的价格
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-15 10:00:00'));
return close();
// 结果:7.18
范例四:
// 设置当前股票为‘万科A’,当前时间为2014-01-15 10:00:00,周期为1分钟线,比例复权,复权基准日为上市日
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
c := close();
return c;
// 结果:610.14
范例五:
// 应用于nday,取一段时间的收盘,10日均价,20日均价
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_day());
setsysparam(pn_date(), strtodate("2014-01-15"));
r := nday(100, 'time', datetostr(sp_time()), 'close', close(), 'ma10', ma(close(), 10), 'ma20', ma(close(), 20));
return r;
参考Open High Low Vol Amount Sys_PrevClose
BuyVol3
范例参见BuyVol1。
Vol
范例
范例一:
// 不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据
// 执行日期2014年1月27日,取当天的数据
return vol();
// 结果:8881542144
范例二:
// 设置当前股票为‘万科A’,当前时间为2014-01-15
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_date(), inttodate(20140115));
return vol();
// 结果:49175340
范例三:
// 设置当前股票为‘万科A’,当前时间为2014-01-15 10:00:00,周期为1分钟线,该数据取的是09:59:01至10:00:00区间加总的数据
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-15 10:00:00'));
return vol();
// 结果:307063
范例四:
// 设置当前股票为‘万科A’,当前时间为2014-01-15 10:00:00,周期为1分钟线,比例复权,复权基准日为上市日
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
v := vol();
return v;
// 结果:3613.47
参考High Close Open Amount Low Sys_PrevClose
Buy2
范例参见Buy1。
TradeCount
范例
// 返回平安银行实际成交笔数
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return TradeCount (); // 返回28778
行情数据说明
行情数据一般与股票pn_stock、周期pn_cycle、当前时间pn_date、复权pn_rate、复权基准日pn_rateday相关。取行情数据相关函数,一般需要先设置当前股票、周期、时间、复权、基准日等系统参数,否则取默认值。默认当前股票为上证指数SH000001、当前周期为日线cy_day()、当前时间为今天today()、不复权、复权基准日为最后交易日。
周期说明:
分钟线的时间分割:从上一时间的01秒开始,到指定周期点的00秒结束。比如1分钟线,取10:00:00的时间区间:[09:59:01,10:00:00]。
其中,close、buy1、buyvol1、buy2、buyvol2、buy3、buyvol3、buy4、buyvol4、buy2、buyvol5、sale1、salevol1、sale2、salevol2、sale3、salevol3、sale4、salevol4、sale5、salevol5、VolRate、InitiativeBuyAmount、InitiativeBuyVol、InitiativeSaleAmount、InitiativeSaleVol以及当日时点累计数据,取的都是该周期内最后一笔的数据。
high、low、open、vol、Amount、TradeCount、SubmitBuyVol、SubmitSaleVol等取区间统计数据。
时间说明:
如果取分时数据,时间设置时,需要加上时间部分,如setsysparam(pn_date(),strtodatetime("2014-01-02 10:00:00"));
如果不指定时间部分,如setsysparam(pn_date(),strtodate ("2014-01-02")),则默认取当天0点0分的数据,即会取到前一个交易日的最后一个分时周期的数据。
BuyVol2
范例参见BuyVol1。
Buy1
范例
// 返回平安银行买一价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return Buy1(); // 返回11.78,当天收盘时的买一价
Amount
范例
范例一:
// 设置当前股票为‘万科A’,当前时间为2014-01-15 10:00:00,周期为1分钟线,该数据取的是09:59:01至10:00:00区间加总的数据
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-15 10:00:00'));
return Amount();
// 结果:2204439.5
范例二:
// 设置当前股票为‘万科A’,当前时间为2014-01-15 10:00:00,周期为1分钟线,比例复权,复权基准日为上市日
// 跟复权无关,复权之后与范例一中不复权的结果相同
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
A := Amount();
return A;
// 结果:2204439.5
参考High Close Open Vol Low Sys_PrevClose
BuyVol1
范例
// 返回平安银行买一量
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return BuyVol1 (); // 返回480265,当天收盘时的买一量
High
范例
// 返回平安银行最高价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return High();
// 返回11.86
参考Close Open Low Vol Amount Sys_PrevClose
SseSyl1
范例
// 返回股指期货IF1401在2014年1月15日的结算价
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_date(), inttodate(20140115));
return SseSyl1 (); // 返回2210.4
Buy3
范例参见Buy1。
SectionOpen
范例
通过范例一和范例二,可以比较SectionOpen和open的区别
范例一:
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
SO := SectionOpen();
O := open();
return array(SO, O);
// 返回array(2220.2,2212.2)
范例二:
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SO := SectionOpen();
O := open();
return array(SO, O);
// 返回array(2220.2,2206.6)
参考High close Open Vol Amount Sys_PrevClose
Sale2
范例参见Buy1。
SaleVol3
范例参见BuyVol1。
Sale5
范例参见Buy1。
SectionVol
范例
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SV := SectionVol ();
return SV;
// 返回372927,截止至14:00:00止,1月15日的成交量
参考High close Open Amount Low Sys_PrevClose
Buy4
范例参见Buy1。
SaleVol4
范例参见BuyVol1。
SectionLow
范例
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SL := SectionLow ();
return SL;
// 返回2196,截止至14:00:00止,1月15日的最低价
参考High close Open Vol Amount Sys_PrevClose
SectionHigh
范例
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SH := SectionHigh ();
return SH;
// 返回2221.8,截止至14:00:00止,1月15日的最高价
参考High close Open Vol Amount Sys_PrevClose
BuyVol5
范例参见BuyVol1。
SectionPrevClose
范例参见SectionOpen。参考High close Open Vol Low Amount
VolRate
范例参见Close。
Sale3
范例参见Buy1。
SectionAmount
范例
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SA := SectionAmount ();
return SA;
// 返回247128702720,截止至14:00:00止,1月15日的成交金额
参考High close Open Vol Low Sys_PrevClose
Buy5
范例参见Buy1。
SaleVol1
范例参见BuyVol1。
Sale1
范例参见Buy1。
SectionTradeCount
范例
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
STC := SectionTradeCount ();
return STC;
// 返回73643,截止至14:00:00止,1月15日的成交比数
SaleVol5
范例参见BuyVol1。
BuyVol4
范例参见BuyVol1。
SaleVol2
范例参见BuyVol1。
Sale4
范例参见Buy1。
InitialtiveBuyVol
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
SectionalInitialtiveSaleVol
范例参见Close。参考High close Open Vol Low Sys_PrevClose
SubmitBuyVol
范例参见Vol。参考High Close Open Vol Low Sys_PrevClose
SectionalInitialtiveBuyAmount
范例参见Close参考High close Open Vol Low Sys_PrevClose
Advance
范例
// 获得上证A股板块的涨跌情况;
setsysparam(pn_stock(), 'SH000001');
setsysparam(pn_date(), inttodate(20110908));
market_ad := array('上涨家数':advance(),
'下跌家数':decline(),
'平盘家数':flat()
);
return market_ad;
参考Decline Flat
Prev_Settlement
范例
返回沪深300股指期货当月合约在20110907的前结算价
SetSysParam(PN_Stock(), 'IF01');
SetSysParam(PN_Date(), inttodate(20110907));
SetSysParam(PN_Cycle(), cy_day());
return Prev_Settlement();
// 返回2011年9月7日的前结算价2726.6
SectionTradeWay
SubmitSaleVol
范例参见Vol。参考High close Open Vol Low Sys_PrevClose
Decline
范例参见Advance参考Advance Flat
SectionalSubmitBSR
范例参见Close参考High close Open Vol Low Sys_PrevClose
InitialtiveSaleAmount
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
OpenInterest
范例
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
OI := OpenInterest();
return OI;
// 结果18
SectionalInitialtiveBuyVol
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
SectionOpenInterest
范例参见Close。
InitialtiveBuyAmount
范例参见close。参考High close Open Vol Low Sys_PrevClose
SectionalSubmitBuyVol
范例参见Close。参考High close Open Vol Low Sys_PrevClose
SectionalSubmitSaleVol
范例参见Close。参考High close Open Vol Low Sys_PrevClose
InitialtiveSaleVol
范例参见close。参考High close Open Vol Low Sys_PrevClose
SectionalInitialtiveSaleAmount
范例参见Close。参考High close Open Vol Low Sys_PrevClose
SubmitBSR
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
Settlement
范例参见Close。
IsEqual
范例参见IsUp参考IsUp IsDown
Flat
范例参见Advance参考Advance Decline
IsDown
范例参见IsUp。参考IsUp IsEqual
IsUp
范例
// 万科在指定区间内的上涨下跌情况;
setsysparam(pn_stock(), 'SZ000002');
end_date := inttodate(20110909);
beg_date := IncWeek(end_date, -1); // end_date 前推一个
r := array();
i := 0;
for d := end_date downto beg_date do
begin
if not istradeday(d) then continue;
setsysparam(pn_date(), d);
r[i]['date'] := datetostr(d);
if IsUp() then r[i]['ud_state'] := '涨';
else if IsDown() then r[i]['ud_state'] := '跌';
else if IsEqual() then r[i]['ud_state'] := '平';
i++;
end;
return r;
返回结果如下图:
参考IsDown IsEqual
时间序列统计
此处的时间序列统计是直接对天软数据仓库中的时间序列数据的统计。如果需要对其他类型的数据进行统计,可以使用统计函数或者TS-SQL的时间序列统计功能。
内容
- HHV
- LLV
- MA
- EMA
- SMA
- Count
- SumN
- SP_STD
- SP_STDP
- SP_VAR
- SP_VARP
- SP_AVEDEV
- SP_DEVSQ
- Cross
- sp_large
- sp_small
- sp_percentile
- sp_percentrank
- sp_quartile
- sp_rank
- sp_trimmean
- sp_frequency
- sp_geomean
- sp_harmean
- sp_median
- sp_mode
- sp_product
- sp_totalvariance
- sp_norm
- sp_skewness
- sp_kurtosis
- sp_skewness2
- sp_kurtosis2
- 双序列统计
- 时间序列统计缓存标志与性能加速
HHV
范例
// 获取万科A(SZ000002)截止2011-09-09日14个交易日内的最高,最低的收盘价以及
// 发生日期。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
N := 14;
r := array('h_value':hhv(close(), N),
'h_date':datetostr(GetSysParam('hhvtime')),
'l_value':llv(close(), N),
'l_date':datetostr(GetSysparam('llvtime'))
);
return r;
参考LLV
LLV
范例参见HHV
参考HHV
MA
范例
范例一:
// 获得万科A(SZ000002)在2011-09-09日的10日均价
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
N := 10;
return ma(close(), N);
// 返回8.103
范例二:
// 获取万科A一段时间的10日均价
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_date(), strtodate("2014-01-15"));
t := nday(100, 'time', sp_time(), 'close', close(), 'ma10', ma(close(), 10), 'ma20', ma(close(), 20));
return t;
EMA
算法函数EMA算法说明:
Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1),
其中Y'表示上一周期Y值,它的初值为X的第一个数据,一般推到上市日当天
手算可参考:
附件:ema手算.xlsx
范例
// 获得万科A(SZ000002)在2011-09-09日的10日平滑移动均价
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
N := 10;
return ema(close(), N);
// 结果:8.1158
SMA
算法若Y=SMA(X,N,M),则Y=[M*X+(N-M)*Y']/N,其中Y'表示上一周期Y值,N必须大于M。范例
// 获得万科A(SZ000002)在2011-09-09日的10日平滑移动均价,3为权重
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
N := 10;
M := 3;
return sma(close(), N, M); // 返回8.0914
Count
范例
// 上证指数在最近100天内的上涨天数;
setsysparam(pn_stock(), 'SH000001');
setsysparam(pn_date(), inttodate(20140122));
return count(isup(), 100);
// 返回47。
SumN
范例
// 获得万科A(SZ000002)在2011-09-09日的5日总成交量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return sumn(VOL(), 5); // 返回152502152
SP_STD
范例
// 计算万科A截止20110909前30个交易日股价的统计信息
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
_stat := array();
_stat := array('标准差':sp_std(close(), 30),
'总体标准差':sp_stdp(close(), 30),
'方差':sp_var(close(), 30),
'总体方差':sp_varp(close(), 30),
'平均绝对偏差':sp_avedev(close(), 30),
'偏差平方和':sp_devsq(close(), 30));
return _stat;
参考时间序列统计
SP_STDP
范例
// 计算万科截止20110909前30个交易日股票的总体标准差
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return sp_stdp(close(), 30); // 返回0.1456
参考时间序列统计
SP_VAR
范例
// 计算万科截止20110909前30个交易日股票的样本方差
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return sp_var(close(), 30); // 返回0.0219
参考时间序列统计
SP_VARP
范例参见SP_VAR参考时间序列统计
SP_AVEDEV
范例参见SP_VAR参考时间序列统计
SP_DEVSQ
范例参见SP_VAR参考时间序列统计
Cross
范例
// 万科在指定区间内的均线穿越情况;
setsysparam(pn_stock(), 'SZ000002');
end_date := inttodate(20110829);
beg_date := IncWeek(end_date, -1); // end_date 前推一个
r := array();
i := 0;
for d := end_date downto beg_date do
begin
if not istradeday(d) then continue;
setsysparam(pn_date(), d);
r[i]['date'] := datetostr(d);
case cross(close(), ma(close(), 5)) of
1:begin
r[i]['cross_state'] := '突破5日均线';
end;
-1:begin
r[i]['cross_state'] := '跌破5日均线';
end;
0:begin
r[i]['cross_state'] := '';
end;
end;
i++;
end;
return r;
sp_large
算法
备注:指定表达式与系统当前时间相关,M的取值数据小于N.范例
万科A在2018/10/30最近10个日线交易日内分时数据成交量的最大值
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "分钟线最大成交量", Specall(SP_Large(Vol(), 1, 240), array(Pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
sp_small
范例
万科A在2018/10/30最近12月中月末最后5个日线交易日的最小值价格序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
Setsysparam(pn_Cycle(), cy_Month());
return Nday(12, "日期", SP_time(), "月末5日最小价格", Specall(SP_Small(Close(), 1, 5), array(Pn_Cycle():Cy_day())));
sp_percentile
范例
万科A在2018/10/30最近10个日线交易日中每天分钟线收盘价格第0.8百分比对应的价格数据序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "价格", SpecAll(SP_percentile(close(), 0.8, 240), array(pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
sp_percentrank
范例万科A在2018/10/30日最近10个交易的收盘价在每天分时价格的百分比排名
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "百分比", SpecAll(SP_percentRank(close(), close(), 240), array(pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
sp_quartile
范例万科A在2018/10/30日最近10个交易日的收盘价在每天第2个四分位的价格序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "价格", Specall(SP_quartile(Close(), 2, 4800), array(Pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
sp_rank
范例万科A在2018/10/30最近10个交易日的收盘价在每日分时价格序列中的排名
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "排名", SpecAll(SP_Rank(close(), close(), 240), array(pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
sp_trimmean
范例万科A在2018/10/30最近10个交易日每天交易价格去除掉首尾比例占10%后的平均价格序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "平均价格", Specall(SP_trimmean(Close(), 0.8, 4800), array(Pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
sp_frequency
范例万科A在2018/10/30最近20个交易日每天涨幅在(-7,-3,0,3,7)的分布情况
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return sp_frequency(Stockzf3(), array(-7, -3, 0, 3, 7), 20);
sp_geomean
范例万科A在2018/10/30最近10个交易日每天60分钟线的几何平均价格序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(),
"几何平均价格", Specall(SP_geomean(Close(), 4),
array(Pn_Cycle():Cy_60m(), pn_date():SP_time() + 0.99)));
sp_harmean
范例万科A在2018/10/30最近10个交易日每天交易价格的调和平均价格序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "调和平均价格", Specall(SP_Harmean(Close(), 4800), array(Pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
sp_median
范例万科A在2018/10/30前30个交易日中每天交易价格的中位数序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(30, "日期", SP_time(), "众数", Specall(Sp_Median(Close(), tradedays(SP_time(), SP_time() + 14 / 24 + 57 / 24 / 60)), array(pn_date():SP_Time() + 14 / 24 + 57 / 24 / 60, pn_Cycle():Cy_3s())));
sp_mode
范例万科A在2018/10/30前30个交易日中每天交易价格的众数序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(30, "日期", SP_time(), "众数", Specall(Sp_Mode(Close(), tradedays(SP_time(), SP_time() + 14 / 24 + 57 / 24 / 60)), array(pn_date():SP_Time() + 14 / 24 + 57 / 24 / 60, pn_Cycle():Cy_3s())));
sp_product
范例万科A在2018/10/30最近12个月中每月最后5个日线交易日累计涨幅序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
Setsysparam(pn_Cycle(), cy_Month());
return Nday(12, "日期", SP_time(), "最后一周累计涨幅", Specall((SP_product(1 + stockzf3() / 100, 5)) * 100 - 100, array(pn_date():SP_time(), pn_Cycle():Cy_day())));
sp_totalvariance
范例万科A在2018/10/30最近10个交易日每天交易价格的总体偏差
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "偏差", Specall(SP_totalvariance(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
sp_norm
范例万科A在2018/10/30最近10个交易日每天成交价格相对平均价格波动的标准差
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "标准差", 1 / SQRT(4800) * Specall(sp_Norm(Close() - StockPJCJ4(SP_time()), 4800), array(pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
sp_skewness
范例万科A在2018/10/30最近10个交易日每天交易价格的偏度序列,其中偏度的计算用的是3秒线的价格序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "偏度", Specall(SP_skewness(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
sp_kurtosis
范例万科A在2018/10/30最近10个交易日每天交易价格的峰度序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "峰度", Specall(SP_kurtosis(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
sp_skewness2
范例万科A在2018/10/30最近10个交易日每天交易价格的偏度序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "偏度", Specall(SP_skewness2(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
sp_kurtosis2
范例
万科A在2018/10/30最近10个交易日每天交易价格的峰度序列
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "峰度", Specall(SP_kurtosis2(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
双序列统计
内容
- sp_cov
- sp_correl
- sp_slope
- sp_intercept
- sp_rsq
- sp_steyx
- sp_slopeandintercept
sp_cov
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的协方差序列
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "协方差", Specall(SP_Cov(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
sp_correl
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的相关系数序列
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "相关系数", Specall(SP_Correl(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
sp_slope
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的回归斜率
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "回归斜率", Specall(SP_slope(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
sp_intercept
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的回归截距
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "回归截距", Specall(SP_intercept(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
sp_rsq
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的Pearson乘积矩相关系数的平方
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "系数平方", Specall(SP_RSQ(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
sp_steyx
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的相对标准偏差
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "相对标准偏差", Specall(SP_steyx(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
sp_slopeandintercept
用途:双序列统计相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的回归斜率和截距
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday3(10, Specall(SP_slopeandintercept(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
时间序列统计缓存标志与性能加速
技术时间序列统计相关函数会自动进行数据缓存以进行加速,例如:
EMA(Close(),30)在执行的时候,如果存在在Nday或者MA,EMA等序列函数中,每一步计算均会利用前一个交易日计算的缓存。这样效率可以得到大大的提高,但是这个时候产生了一个问题,例如:
EMA(EMA(Close(),N),30),在这个外围EMA的计算中,由于内层EMA的参数N是不定的,所以外层EMA的缓存无法知道按照什么规则进行缓存,如果直接缓存的话,有可能在N的不同参数的调用时得到错误的结果。这个时候,我们通过给每个时间序列统计函数(CROSS除外)增加了一个可选的参数,即一个缓存的字符串标志。这个字符串标志作用域仅仅用于当前调用的时间序列统计函数,和其他调用的标志定义无关(也就是说可以和其他调用的标志定义重复也可以)。
这样说起来很拗口,我们可以来一个例子来说明:
DEA:=EMA(EMA(Close(),Short)-EMA(Close(),Long),M,""Short" "$Long);
这个上述代码是MACD的定义中的一段代码,我们可以看到,对于DEA而言,由于EMA的内还有两个EMA的计算,分别和SHORT参数和LONG参数有关,我们可以将SHORT参数和LONG参数组成一个字符串来作为外层EMA的缓存标志串,这样,当具有缓存的时候,当SHORT和LONG进行了改变,我们不会利用其他参数组存贮的缓存数据来进行EMA的计算,也就是说我们只会用SHORT和LONG相同的计算缓存,这样就避免了缓存错误的问题。
对于上述的除CROSS函数以外的时间序列统计函数而言,我们均支持在最后增加一个可选的缓存标志串。
由于缓存会占据存贮空间,而且还因为不会因数据变化而改变而得到不正确的结果,因此缓存仅仅在NDAY以及上述时间序列函数中被打开,在执行完最外层的时间序列统计函数之后缓存会被清除。
我们有时候会在策略回测多因素模型等开发的时候,希望利用到技术指标加速,但我们又不是使用NDAY等序列函数来提取数据,而是通过循环来提取数据,这个时候,我们需要利用相应的指令来打开这个缓存。有的时候,我们又或许不希望使用缓存。
内容
- TechCacheDo打开技术类缓存
- NoTechCacheDo禁用技术类缓存
TechCacheDo打开技术类缓存
范例
TechCacheDo
begin
for i := 0 to length(Days) - 1 do
begin
setsysparam(pn_Date(), Days[i]);
Kdj := kdj_f(9, 3, 3, 0); // 在时间循环中,需要在KDJ计算中进行加速:
..........................
end;
end;
NoTechCacheDo禁用技术类缓存
成交明细数据函数
内容
- toverData
- toverDataEx
- TD
- TDByIndex
- TDCount
- TDCountEx
- TDInfo
- TDInfoByIndex
- TDSum
toverData
范例
// 获得万科A(SZ000002)当日(交易日)的成交明细;
setsysparam(pn_stock(), 'SZ000002');
t := toverdata(inttodate(20140115));
update t set ['time'] = datetimetostr(['time']) end;
return t;
toverDataEx
范例
// 获得万科A(SZ000002)在2014-1-15日13点至15点之间,成交量在10000~90000
// 成交金额0~9000000,价格7.00~8.00之间的交易明细
setsysparam(pn_stock(), 'SZ000002');
fields := 0;
d := inttodate(20140115);
trade_flag := 0;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 7.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.00;
return toverdataex(fields, d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price, max_vol, max_amount, max_price);
TD
范例
// 获得万科A(SZ0000002)在2011-09-09 14:15:33的10s
setsysparam(pn_stock(), 'SZ000002');
setsysparam(PN_Cycle(), cy_10s());
setsysparam(pn_date(), strtodatetime('2011-09-09 14:15:33'));
tds := array(
datetimetostr(td(0)),//时间
td(1),//价格
td(2),//成交金额
td(3)//成交量
);
return tds;
TDByIndex
范例
// 返回万科A在20110909日第100条交易记录的时间、价格、成交金额和成交量。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
tds := array(
datetimetostr(tdbyindex(0, 100)),//日期时间
tdbyindex(1, 100),//价格
tdbyindex(2, 100),//成交金额
tdbyindex(3, 100)//成交量
);
return tds;
返回结果如下图:
TDCount
范例
// 获取万科A(SZ000002)截止2011-09-09的5天内系统记录的交易记录数量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday(5, 'date', datetostr(sp_time()), '系统记录交易点数量', tdcount());
返回结果如下图:
TDCountEx
范例
// 获得万科A(SZ000002)在2014-1-15日13点至15点之间,成交量在10000~90000
// 成交金额0~9000000,价格7.00~8.00之间的主买的交易记录个数
setsysparam(pn_stock(), 'SZ000002');
fields := 0;
d := inttodate(20140115);
trade_flag := 1;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 7.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.00;
return tdcountex(d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price,
max_vol, max_amount, max_price);
// 返回221
TDInfo
范例
// 获得万科A(SZ000002)在2014-1-15 10:00:00时间点的交易明细数组
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
return TDInfo();
TDInfoByIndex
范例
// 获得万科A(SZ000002)在2011-9-9日最后一条交易明细数组
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return TDInfoByIndex(-1);
返回结果如下图:
TDSum
范例
// 对万科A(SZ000002)在2011-9-9日统计满足以下条件的成交量,成交金额:
// 13点至15点之间、成交量在10000~90000
// 成交金额0~9000000、价格8.00~8.50之间且是主买
setsysparam(pn_stock(), 'SZ000002');
d := inttodate(20110909);
trade_flag := 1;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 8.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.50;
TDSum(sumVol, sumAmount, d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price,
max_vol, max_amount, max_price);
return array(sumVol, sumAmount);
返回结果如下图:
交易明细字段标识函数
内容
- tdf_buy2
- tdf_sale3
- tdf_vol
- tdf_buy5
- tdf_time
- tdf_price
- tdf_buy3
- tdf_amount
- tdf_sale1
- tdf_lb
- tdf_sale4
- tdf_buy4
- tdf_sale5
- tdf_buy1
- tdf_sale2
- tdf_buy3count
- tdf_tradecount
- tdf_sale2count
- tdf_buy5count
- tdf_buy2count
- tdf_sale3count
- tdf_sale5count
- tdf_buy1count
- tdf_buy4count
- tdf_syl2
- tdf_sale1count
- tdf_sale4count
- tdf_syl1
tdf_buy2
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale3
范例参见tdf_time。参考toverDataEx tdf_time
tdf_vol
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy5
范例参见tdf_time。参考toverDataEx tdf_time
tdf_time
范例
// 获得万科A(SZ000002)在2011-9-9日13点至15点之间,成交量在10000~90000
// 成交金额0~9000000,价格8.00~8.50之间的时间序列
setsysparam(pn_stock(), 'SZ000002');
fields := 0;
d := inttodate(20110909);
trade_flag := 0;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 8.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.50;
return toverdataex(tdf_time(), d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price, max_vol, max_amount, max_price);
返回结果如下图:
参考toverDataEx
tdf_price
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy3
范例参见tdf_time。参考toverDataEx
tdf_amount
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale1
范例参见tdf_time。参考toverDataEx
tdf_lb
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale4
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy4
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale5
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy1
范例参见tdf_time。参考toverDataEx
tdf_sale2
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy3count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_tradecount
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale2count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy5count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy2count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale3count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale5count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy1count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_buy4count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_syl2
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale1count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_sale4count
范例参见tdf_time。参考toverDataEx tdf_time
tdf_syl1
范例参见tdf_time。参考toverDataEx tdf_time
查询和轮询函数
内容
- Query
- Foreach
Query
范例
// 查询指定日期,在板块上证A股;创业板以及SZ000001;SZ000002;SZ000997中满足
// 收盘价大于10日均线的股票的以下信息:证券代码、证券名称,收盘价。
setsysparam(pn_date(), inttodate(20110909));
data := Query('上证A股;创业板', 'SZ000001;SZ000002;SZ000997',
close() > ma(close(), 10), '',
'证券代码', DefaultStockID(),
'证券名称', CurrentStockName(),
'收盘价', close());
return data;
Foreach
市场和板块函数
内容
- GetBK
- GetUserBKList
- GetBKList
- GetUserBKList2
- GetBKList2
GetBK
范例
stocks := GetBk('上证A股;创业板');
return stocks;
返回结果如下图:
参考GetUserBKList GetBKList GetUserBKList2 GetBKList2 getbkbydate
GetUserBKList
范例
范例一:获取所有的用户板块名称
my_sectors := GetUserbkList ();
return my_sectors;
范例二:获取指定目录下的用户板块名称
// 用户板块的申万行业下,有多个子目录,用户需要指定子目录获取子目录下的用户板块
my_sectors := GetUserbkList ("申万行业\\申万金融业");
return my_sectors;
参考GetBK GetBKList GetUserBKList2 GetBKList2
GetBKList
范例
范例01:
// 获得申万行业列表,其中,“申万行业”是申万相关行业板块的目录名称或父板块名称。
bk_list := GetBKList('申万行业');
return bk_list;
范例02:
// 获得申万行业-采掘业子行业列表
bk_list2 := GetBKList('申万行业\\申万采掘');
return bk_list2;
参考GetBK GetUserBKList GetUserBKList2 GetBKList2
GetUserBKList2
范例
// 获得用户板块的申万行业下的所有板块及其所属的行业组别
my_sectors := GetUserBKList2("申万行业");
return my_sectors;
参考GetBK GetBKList GetUserBKList GetBKList2
GetBKList2
范例
// 返回所有系统板块列表
return GetBklist2();
返回结果如下图:
范例二:
// 返回系统申万行业板块列表
return GetBklist2('申万行业');
结果(部分):
参考GetBK GetUserBKList GetUserBKList2 GetBKList
取行情数据序列函数
内容
- NDay
- NDay2
- NDay3
NDay
范例
// 返回万科A历史2天的收盘价
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140115));
Table := NDay( 2, 'close', Close() );
{默认当前周期为日线,设置当前时间为2014年1月15日,当前股票的昨天的收盘价格为7.23,今天的当前价格为7.17,则返回的结果相当于
Table := array (('close': 7.23), ('close': 7.17));
// 也就是说X相当于
Table[0]['close'] := 7.23;
Table[1]['close'] := 7.17;
}
// 取得万科截止20110909前30个交易日的若干行情信息;
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday(30, '时间', datetimetostr(sp_time()),
'收盘价', close(),
'当日高价', high(),
'30日均线', ma(close(), 30));
结果(部分):
参考NDay2 NDay3
NDay2
范例
// 用NDAY2取得万科截止20110909前30个交易日的若干行情信息;
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
setsysparam(pn_nDay(), 30);
return nday2('时间', datetimetostr(sp_time()),
'收盘价', close(),
'当日高价', high(),
'30日均线', ma(close(), 30));
返回结果(部分):
参考NDay NDay3
NDay3
范例
// 取得万科截止20110909前30个交易日的价格序列(按交易日升序排列);
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday3(30, close());
参考NDay NDay2
引用指定函数
内容
- Ref
- SpecDate
- Spec
- SpecAll
Ref
范例
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
r := array();
r := array('设定日价格':close(),//20110909
'设定日前1交易日收盘':ref(close(), 1),//20110908
'设定日后1交易日收盘':ref(close(), -1)); // 20110913
return r;
SpecDate
范例
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday(30, 'date', datetostr(sp_time()),
'close', close(),
// 使用年初价格作为参照。
'close_20110101', specdate(close(), inttodate(20110101)));
结果(部分):
参考Spec TDateTime
Spec
范例
// 获得两个指数时间序列净值曲线
setsysparam(pn_stock(), 'SH000904');
setsysparam(pn_date(), inttodate(20110909));
N := 30;
beg_close1 := ref(close(), N - 1); // SH000904 N日前收盘
beg_close2 := spec(ref(close(), N - 1), 'SH000300'); // SH000300 N日前收盘
return nday(N, 'date', datetostr(sp_time()),
'中证200', 1000 * close() / beg_close1,
'沪深300', 1000 * spec(close(), 'SH000300') / beg_close2);
结果(部分):
参考SpecDate
SpecAll
范例
return specall(close(),
array(pn_stock():'SZ000001',
pn_date():inttodate(20140117),
pn_rate():1,
pn_rateday():-1));
// 获取SZ000001的2014年01月17日的复权价格,复权方式为比例复权,复权基准日为上市日。
参考SpecDate Spec
系统参数设置和获取函数
内容
- GetSysParam
- SetSysParam
- sp_s
- sp_g
GetSysParam
范例
// 获取当前的股票代码
return GetSysParam(pn_stock()); // 返回’SH000001’;
参考SetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS
SetSysParam
范例
范例1:设置及提取
setsysparam('Abc', 123); // 自定义参数名为'Abc',并赋值为123
return getsysparam('Abc'); // 提取参数名为'Abc'的值。
// 返回123
// 或
setsysparam('Abc', 123);
return sysparams['Abc']; // 提取参数名为'Abc'的值。
范例2:常用于设置系统参数如证券,时间,周期等。
setsysparam(pn_stock(), 'SZ000002'); // 设置当前证券为万科A
setsysparam(pn_date(), 20190218T); // 设置当前时间为2019-2-18
setsysparam(pn_cycle(), cy_day()); // 设置周期为日线
return close(); // 提取收盘价
// 返回27.2
范例3:
// 设置当前的股票为平安银行SZ000001,设置当前的时间为2014-01-15
Setsysparam(pn_stock(), 'SZ000001');
Setsysparam(pn_date(), inttodate(20140115));
return close();
参考GetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS
sp_s
范例
范例一:设置及提取
sp_s ('Abc', 123); // 自定义参数名为'Abc',并赋值为123
return sp_g('Abc'); // 提取参数名为'Abc'的值。
// 返回123
范例二:常用于设置系统参数如证券,时间,周期等。
sp_s (pn_stock(), 'SZ000002'); // 设置当前证券为万科A
sp_s (pn_date(), 20190218T); // 设置当前时间为2019-2-18
sp_s (pn_cycle(), cy_day()); // 设置周期为日线
return close(); // 提取收盘价
// 返回27.2
sp_g
范例
// 获取当前的股票代码
return sp_g (pn_stock()); // 返回’SH000001’;
复权类型函数
内容
- rt_none
- rt_scale
- rt_complex
rt_none
参考pn_Rate
rt_scale
参考pn_Rate
rt_complex
参考pn_Rate
复权基准日函数
内容
- rd_lastday
- rd_firstday
rd_lastday
参考pn_RateDay
rd_firstday
参考pn_RateDay
周期函数
周期函数为设置周期系统参数的常量函数。
周期有四类,第一类是日、周、月、季、半年、年,第一类是分钟为单位的周期,第三类是秒为单位的周期,第四类是以成交明细里的点为单位。
从2014年7月起,天软平台开始提供了对自由周期的支持,自由周期分为两种类型,一种是任意秒滚动周期,另外一种是任意交易日滚动周期。对于任意秒滚动周期而言,周期是不跨天的,也就是说任意一个周期区间均在同一个交易天内。此外,在设置原有固定类型秒或者分钟周期的时候,我们可以用设置pn_FreeCycle()系统参数来转换为任意秒滚动周期。
参见:Q:天软自由周期
内容
- Cy_month
- Cy_20m
- Cy_1m
- Cy_HalfYear
- Cy_5m
- Cy_60m
- Cy_Year
- Cy_week
- Cy_2m
- Cy_10m
- Cy_Quarter
- Cy_120m
- Cy_day
- Cy_30m
- Cy_3m
- Cy_40m
- Cy_TwoYear
- Cy_15m
- cy_trailingseconds
- Cy_6s
- cy_trailingdays
- Cy_15s
- Cy_Detail
- Cy_30s
- Cy_5s
- Cy_2s
- Cy_12s
- Cy_1s
- Cy_10s
- Cy_20s
- Cy_4s
- Cy_FreeCycle
- Cy_3s
- Cy_Halfs
Cy_month
参考pn_Cycle 周期函数
Cy_20m
参考pn_Cycle 周期函数
Cy_1m
参考pn_Cycle 周期函数
Cy_HalfYear
参考pn_Cycle 周期函数
Cy_5m
参考pn_Cycle 周期函数
Cy_60m
参考pn_Cycle 周期函数
Cy_Year
参考pn_Cycle 周期函数
Cy_week
参考pn_Cycle 周期函数
Cy_2m
参考pn_Cycle 周期函数
Cy_10m
参考pn_Cycle 周期函数
Cy_Quarter
参考pn_Cycle 周期函数
Cy_120m
参考pn_Cycle 周期函数
Cy_day
参考pn_Cycle 周期函数
Cy_30m
参考pn_Cycle 周期函数
Cy_3m
参考pn_Cycle 周期函数
Cy_40m
参考pn_Cycle 周期函数
Cy_TwoYear
范例
return Cy_TwoYear();
// 结果:’两年’
Cy_15m
参考pn_Cycle 周期函数
cy_trailingseconds
参考pn_Cycle 周期函数 自由周期
Cy_6s
参考pn_Cycle 周期函数
cy_trailingdays
参考pn_Cycle 周期函数 自由周期
Cy_15s
参考pn_Cycle 周期函数
Cy_Detail
参考pn_Cycle 周期函数
Cy_30s
参考pn_Cycle 周期函数
Cy_5s
参考pn_Cycle 周期函数
Cy_2s
参考pn_Cycle 周期函数
Cy_12s
参考pn_Cycle 周期函数
Cy_1s
参考pn_Cycle 周期函数
Cy_10s
参考pn_Cycle 周期函数
Cy_20s
参考pn_Cycle 周期函数
Cy_4s
参考pn_Cycle 周期函数
Cy_FreeCycle
参考pn_Cycle 周期函数 自由周期
Cy_3s
参考pn_Cycle 周期函数
Cy_Halfs
参考pn_Cycle 周期函数
财务函数
内容
- Report
- ReportOfAll
- ReportOfDiy
- ReportExists
- ReportHist
- ReportHistExists
- LastQuarterData
- Last12MData
- Base
- BaseExists
- InfoArray
- InfoArrayExt
- InfoArrayExists
- bName
- idtType
- idfType
- BasicIDExists
- BaseArray
Report
范例
// 提取平安银行2017年3季报的营业收入
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031);
return report(46002, 20170930);
// 结果:79833000000
ReportOfAll
范例
范例1:提取平安银行2017年3季报的营业收入,与report一致
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031);
return reportofall(46002, 20170930);
// 结果:79833000000
范例2:提取平安银行2017年3季报的每股收益,report不能获取该指标,是report功能的扩展
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031);
return reportofall(9900000, 20170930);
// 结果:1.12
ReportOfDiy
范例
(注:实际的结果不一定和下同)
Setsysparam(pn_stock(), "SZ000002");
return ReportOfDiy(8025001, 20091231, now(), '刘研究员'); // 假定8025001为预测每股收益,则返回最新的刘研究员的2009年年度的预测每股收益。
return ReportOfDiy(8025001, 20091231, now(), ""); // 则返回最新的任何研究员的2009年年度的预测每股收益。
ReportExists
范例
// 通过红利比(18007)判断SH601888在2011年是否分红
setsysparam(pn_stock(), 'SH601888');
return ReportExists(18007, 20101231); // 返回1,是
ReportHist
范例
// 获取SH601888公布的利润分配表的所有报告期ID列表
setsysparam(pn_stock(), 'SH601888');
// 营业收入ID(利润分配表的一个科目)
infoid := DataBaseRatioId(1);
return ReportHist(infoid);
返回结果如下图:
// 获取SH601888公布的利润分配表的最接近20140331的报告期
setsysparam(pn_stock(), 'SH601888');
// 营业收入ID(利润分配表的一个科目)
infoid := DataBaseRatioId(1);
return ReportHist(infoid, 20140331);
// 返回20130930(执行时间20140117,未公布2013年报及2014一季报)
ReportHistExists
范例
// 检查SZ300002在曾经发生过分红
setsysparam(pn_stock(), 'SZ300002');
return ReportHistExists(18007);
// 返回1,表示历史有分红
LastQuarterData
范例
// 提取平安银行2017年3季度的营业收入
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return LastQuarterData(20170930, 46002, 0);
// 结果:25760000000
Last12MData
范例
// 提取平安银行2017年3季报TTM的营业收入
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return Last12MData(20170930, 46002);
// 结果:105580000000
Base
范例
// 获取SZ000002的公司全称
setsysparam(pn_stock(), 'SZ000002');
return base(10002); // 返回”万科企业股份有限公司”
BaseExists
范例
// 获取SZ000002的公司全称
setsysparam(pn_stock(), 'SZ000002');
if BaseExists(10002) then return base(10002);
else return "";
// 返回万科企业股份有限公司
InfoArray
范例
// 获取万科A分红送股表数据
setsysparam(pn_stock(), 'SZ000002');
// 分红送股表ID
infoid := DatabaseInfoArrayId(21);
return infoarray(infoid);
InfoArrayExt
范例
(注:实际的结果不一定和下同)
下表是深长城的股本变更表
记录号变动日总股本 A股未流通股已流通股流通A股变动原因
0 19940921 56300000 56300000 43300000 13000000 13000000
1 1995041056300000 56300000 40000000 16300000 16300000 职工股上市
2 19950607 106970000 106970000 76000000 30970000 30970000 送股上市
3 19960715 139061000 139061000 98800000 40261000 40261000 送股上市
4 19970512 171045030 171045030 121523999 49521031 49521031 配股上市
5 19970708 239463040 239463040 170133598 69329442 69329442 送股上市
如:
(1)InfoArrayExt(12,'变动日',19970512,-1) 返回的记录是第4条
(2)InfoArrayExt(12,'变动日',19970512,0) 返回的记录是第0条
(3)InfoArrayExt(12,'变动日',19970512,2) 返回的记录是第1条
(4) InfoArrayExt(12,'变动日',19970512,2,”总股本”,Shares) 返回的值为56300000。
// 第4个参数缺省,满足条件的最后一条记录,即返回股权登记日<=20130516的最后一条记录
setsysparam(pn_stock(), 'SZ000002');
infoid := DatabaseInfoArrayId(21);
return InfoArrayExt(infoid, '股权登记日', 20130516);
InfoArrayExists
范例
// 判断是否存在配股
setsysparam(pn_stock(), 'SH601888');
return InfoArrayExists(20);
// 返回0表示不存在配股数据。
bName
范例
return bName(18007);
// 返回”红利比”,即用18007可提取红利比数据。
idtType
范例
TYPES := array('', '报告期相关', '报告期无关', '报表');
TYPES[-1] := '未知';
return array('公司全称':TYPES[idttype(10002)],
'红利比':TYPES[idttype(18007)],
'分红送股表':TYPES[idttype(18)],
'未知':TYPES[idttype(99)]);
idfType
范例
TYPES := array('整型', '实数', '字符', '表格');
TYPES[-1] := '未知';
return array('公司全称':TYPES[idftype(10002)],
'红利比':TYPES[idftype(18007)],
'分红送股表':TYPES[idftype(18)],
'未知':TYPES[idftype(99)]);
BasicIDExists
范例
infoid := DatabaseInfoArrayId(21);
return BasicIDExists(infoid);
// 返回1,表示存在
BaseArray
范例
SetSysParam(pn_stock(), 'sz000001');
return BaseArray(46002, 20151231);
// 返回:96163000000
选股与取数
内容
- QueryBk
- QueryBkWithPeriod
- QueryWithPeriod
- DefaultRepID
- QWPMaxCount
- evalstring
QueryBk
范例
return
QueryBK("深证A股;上证A股;中小企业板", "", @true, "", "板块名", @DefaultBKName(),
"指定日流通市值和(万)(20120930,只考虑A股)", @Bk_MarketValue(41182, 1),
"指定日总股本和(万)(20120930,只考虑A股)", @Bk_TotalShares(41182, 1),
"每股主营收入(20111231,总股本加权,只考虑A股,全部,绩差股标准=0)", @Bk_MainincomePS(20111231, 0, 1, 0, 0));
QueryBkWithPeriod
范例
// 返回板块一段时间的成交数据
setsysparam(pn_begt(), inttodate(20120801));
setsysparam(pn_endt(), inttodate(20121001));
setsysparam("TimeIndex", 1);
return
QueryBKWithPeriod("深证A股", "", @true, "", "换手率(%)(加权,只考虑A股)", @Bk_HSL3(0, 1),
"成交量(万)(只考虑A股)", @Bk_VolSum3(1),
"成交金额(万)(只考虑A股)", @Bk_AmountSum3(1));
QueryWithPeriod
范例
// 返回一组股票一段时间的行情数据
oV := BackUpSystemParameters2();
setsysparam(pn_begt(), inttodate(20120801));
setsysparam(pn_endt(), inttodate(20121001));
setsysparam("TimeIndex", 1);
return
QueryWithPeriod("", "SZ000002;SZ000001;SH600000;SH600004", @true, "", "收盘价", @close(),
"成交量", @vol(),
"成交金额", @amount());
DefaultRepID
范例
// 返回万科A默认报告期的营业收入
oV := BackUpSystemParameters2();
setsysparam(pn_stock(), 'SZ000002');
// 获取默认报告期
RDate := DefaultRepID();
V := ReportNew(46002, RDate);
return v;
QWPMaxCount
范例
return QWPMaxCount();
// 返回:50000
evalstring
范例
return evalstring('1+3');
// 返回:4
向导函数
内容
- RelativeStrengthOfIndustry
- SpecSysParams
- RelativeStrengthOfSector
- ReportOfListed
- ReportPerShareOfListed
- Derivative1
- PositionOfSector
- ReduceWithHighestOfPeriod
- OccuredRepIdOfRepPeriod
- ContinuedMatchOfRepPeriod
- GrowthOfRepPeriod
- RelativeStrengthOfSectorDesc
- PositionOfSectorDesc
- GrowthWithLowestOfPeriod
- SumOfSector
- PositionOfIndustry
- AvgOfSector
- OccuredTimeOfPeriod
- SpecDateValue
- Derivative2
- N期
- N日
- 历史遗留
- 区间
- 中间函数
- N季
- 当日
- StockTrailingAvgByEndT
- StockTrailingStdByEndT
RelativeStrengthOfIndustry
SpecSysParams
范例
return SpecSysParams(@SpecSysParamsdemo(), 20180801T, cy_day(), 0, 0); // 其中SpecSysParamsdemo()函数定义股票为平安银行,返回收盘价
// 返回:9.15
RelativeStrengthOfSector
算法
1、获得板块Sector成分股
2、统计成分股中个券exp值>当前证券的exp值再加1,为result
3、相对强弱(%)= (1- result/成分股总个数)*100范例
// 统计A股板块与沪深300指数相比的相对强弱。结果得到A股中涨幅小于沪深300涨幅的个券占比
SetSysParam(pn_stock(), 'SH000300');
SetSysParam(pn_date(), 20180801T);
return RelativeStrengthOfSector(@stockzf3(), 'A股');
// 结果:41.4621
ReportOfListed
范例
SetSysParam(pn_stock(), 'SZ000001');
return ReportOfListed(46002, 20160331); // 平安银行在2016年一季报的营业收入
// 返回:27532000000
ReportPerShareOfListed
范例
SetSysParam(pn_stock(), 'SZ000001');
return ReportPerShareOfListed(46033, 20160331); // 平安银行在2016年一季报的每股收益(净利润/总股本)
// 返回:0.43
Derivative1
算法
指标趋势= (3前N日指标值-4前(N+1)日指标值+前(N+2)日指标值)/2*100范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return Derivative1(@close(), 0); // 指标值为收盘价
// 返回:-42
PositionOfSector
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return PositionOfSector(@close(), 'A股');
// 返回:1778
ReduceWithHighestOfPeriod
范例
SetSysParam(pn_stock(), 'SZ000001');
return ReduceWithHighestOfPeriod(@close(), 20180801T, 20180803T, 0);
// 返回:-0.24
OccuredRepIdOfRepPeriod
范例
// 从2010年开始到2018年,每年年报每股收益大于1.5的报告期
SetSysParam(pn_stock(), 'SZ000002');
return OccuredRepIdOfRepPeriod(@reportofall(42002, GetSysParam('DefaultRepID')) > 1.5, 20101231, 2018);
返回:
ContinuedMatchOfRepPeriod
范例
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20140331, 2018);
// 返回:1
GrowthOfRepPeriod
范例
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 1); // 返回平安银行在2015一季报中营业收入的同比增长
// 返回:28.39
RelativeStrengthOfSectorDesc
算法
1、获得板块Sector成分股
2、统计成分股中个券exp<当前证券的exp值再加1,为result
3、相对强弱(%)= (1- result/成分股总个数)*100范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return RelativeStrengthOfSectorDesc(@close(), 'A股');
// 返回:50.25
PositionOfSectorDesc
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return PositionOfSectorDesc(@close(), 'A股');
// 返回:1761
GrowthWithLowestOfPeriod
范例
SetSysParam(pn_stock(), 'SZ000001');
return GrowthWithLowestOfPeriod(@close(), 20180801T, 20180903T, 0);
// 返回:1.41
SumOfSector
范例
setsysparam(pn_bk(), "上证A股");
setsysparam(Pn_date(), 20180801T);
return SumOfSector(@close(), 20180801T, 20180801T, 1, 0, 0, 0);
// 返回在2018年8月1日上证A股板块在当日已经上市的股票收盘价的和。
// 返回:19495.45
PositionOfIndustry
AvgOfSector
范例
return AvgOfSector(@close(), 2, 20180801T, 20180801T, 1, 0, 0, 0); // 返回在2018年8月1日所有A股在当日已经上市的股票收盘价的算术平均。
// 返回:12.27
OccuredTimeOfPeriod
范例
SetSysParam(pn_stock(), 'SZ000001');
return OccuredTimeOfPeriod(@close(), 20180801T, 20180810T); // 返回平安银行在2018年8月1日至2018年8月10日存在行情数据(收盘价)的日期
返回:
SpecDateValue
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180917T);
return SpecDateValue(20180801T, @close()); // 返回2018年8月1号平安银行的收盘价
// 返回:9.15
Derivative2
算法
加速度=(2当日指标-5一日前指标+4*二日前指标-三日前指标)*100;范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return Derivative2(@close()); // 指标值为收盘价
// 返回:-49
N期
内容
- OccuredOfNReport
- ContinuedMatchOfNReport
- OccuredRepIdOfNReport
- SumOfNReport
- AvgOfNReport
- RefReportValue
- GrowthOfNReport
- ACCOfNReport
- RobustGrowthOfNReport
- RobustACCOfNReport
- HighestOfNReport
- lowestOfNReport
- StandGrowthOfNReport
- EAVOfNReport
- EAAOfNReport
- TurnPositiveOfNReport
- SecondOrderGrowthOfNReport
- HighGrowthOfNReport
OccuredOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例返回平安银行截止到2015年12月31日的所有年报数量
SetSysParam(pn_stock(), 'SZ000001');
return OccuredOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 100);
// 返回:25
ContinuedMatchOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例判断2014到2015这两年平安银行年报是否全部存在
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回:1
OccuredRepIdOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return OccuredRepIdOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20001231, 20);
返回结果:
SumOfNReport
用途:进行数值统计计算。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例计算平安银行2015年报与2014年报营业收入的和
SetSysParam(pn_stock(), 'SZ000001');
return SumOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回:169570000000
AvgOfNReport
用途:进行数值统计计算。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例返回平安银行2015年报与2014年报营业收入的平均
SetSysParam(pn_stock(), 'SZ000001');
return AvgOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回:84785000000
RefReportValue
用途:N期相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例返回平安银行2015年年报营业收入额
SetSysParam(pn_stock(), 'SZ000001');
return RefReportValue(@reportofall(46002, GetSysParam('DefaultRepID')), 20161231, 1);
// 返回:96163000000
GrowthOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例返回平安银行2014年与2015年报营业收入增长比例
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 1, 1);
// 返回:34.00
ACCOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
算法
过去N期数据,对期数t的二次方程进行回归,取二次项系数作为业绩增长加速度。以净利润为例,回归公式如下:NPt= at^2+bt+c。其中,NPt表示过去第t期的净利润,t取值为[1,2,……,N]。
假设当前报告期为20201231,取季度报告期,N=8,则最近连续8个季度报告期为[20190331,20190630,20190930,20191231, 20200331,20200630,20200930,20201231],对应的期数t为[1,2,3,4,5,6,7,8],回归二次项系数a即为净利润增长加速度。
为消除回归数据与期数t数量级差异对结果的影响,模型支持对回归数据,如净利润与t进行标准化处理(z-value),二次项系数a为加速度,二次回归抛物线的最低点为-b/(2*a)。范例
范例01:返回加速度,不标准化
setsysparam(pn_stock(), "SH600519");?
return ACCOfNReport(@Last12MData(DefaultRepID(), 46078), 20201231, 8, 1);
// 3004419.44946277
范例02:返回加速度,标准化
setsysparam(pn_stock(), "SH600519");
return ACCOfNReport(@Last12MData(DefaultRepID(), 46078), 20201231, 8, 1, 1); // 0.006
RobustGrowthOfNReport
用途:N期相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
算法过去N期的净利润增速均值除以净利润增速标准差,刻画过去一段时间内净利润增速的稳定性,当指标值比较高的时候,表示过去一段时间内上市公司的业绩保持了稳定增长的态势。范例
setsysparam(pn_stock(), "SH600519");
return RobustGrowthOfNReport(@Last12MData(DefaultRepID(), 9900604),
20201231, 8, 0); // 0.916987656203954
RobustACCOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
算法
N期稳健加速度=N期稳健增速一阶差分 ,即本期N期稳健增速- 上期N期稳健增速
上期:由参数LastReportType确定,0表示同比报告期,1表示环比报告期范例
setsysparam(pn_stock(), "SH600519");
return RobustACCOfNReport(@Last12MData(DefaultRepID(), 9900604), 20201231, 8, 0); // -0.0878801178157446
HighestOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在22年年报前5个年度报告期最高的总营业收入。
SetSysParam(pn_stock(), "SH600585");
return HighestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
// 返回:176294715308
lowestOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在22年年报前5个年度报告期最低的总营业收入。
SetSysParam(pn_stock(), "SH600585");
return lowestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
// 返回:128402625696
StandGrowthOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
算法N期标准化增长率=(当期-去年同期)/过去N期标准差范例
setsysparam(pn_stock(), "SH600519");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 46078);
ReportID := 20211231;
N := 8;
ReportType := 1; // 0:年度,1:季度
t := StandGrowthOfNReport(Exp, ReportID, N, ReportType);
return t; // 1.265
EAVOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
算法
N期加速度EAV=当期标准化增长率-上期标准化增长率
当期标准化增长率=(当期数据-去年同期数据)/过去N期标准差
上期:由参数LastReportType确定,0表示同比报告期【默认】,1表示环比报告期范例
setsysparam(pn_stock(), "SH600519");
Exp := @LastQuarterData(DefaultRepID(), 46078);
ReportID := 20200930;
N := 8;
ReportType := 1; // 0:年度,1:季度
LastReportType := 0;
t := EAVOfNReport(Exp, ReportID, N, ReportType, LastReportType);
return t; // -0.45
EAAOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
算法
N期加速度EAA=当期同比增长率-上期同比增长率
当期同比增长率=(当期数据-去年同期数据)/abs(去年同期数据)
上期:由参数LastReportType确定,0表示同比报告期【默认】,1表示环比报告期范例
setsysparam(pn_stock(), "SH600519");
Exp := @LastQuarterData(DefaultRepID(), 46078);
ReportID := 20211231;
LastReportType := 0;
t := EAAOfNReport(Exp, ReportID, LastReportType);
return t; // -0.016
TurnPositiveOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:整数。
范例
setsysparam(pn_stock(), "SH600110");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 42017); // 季度扣非净利润
ReportID := 20210331;
N := 5;
ReportType := 1; // 0:年度,1:季度
t := TurnPositiveOfNReport(Exp, ReportID, N, ReportType);
return t; // 1
SecondOrderGrowthOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SZ000636");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 9900604);
ReportID := 20200331;
N := 5;
ReportType := 1; // 0:年度,1:季度
t := SecondOrderGrowthOfNReport(Exp, ReportID, N, ReportType);
return t; // 1
HighGrowthOfNReport
用途:N期相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SZ002340");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 9900604);
ReportID := 20210331;
N := 5;
ReportType := 1; // 0:年度,1:季度
Range := 3;
t := HighGrowthOfNReport(Exp, ReportID, N, ReportType, Range);
return t; // 1
N日
内容
- HighestOfNDay
- RefValue
- OccuredOfNDay
- GrowthOfNDay
- SwingOfNDay
- ContinuedMatchOfNDay
- StdOfNDay
- SumOfNDay
- LowestOfNDay
- OccuredTimeOfNDay
- AvgOfNDay
- GrowthWithHighestOfNDay
- GrowthWithLowestOfNDay
- TimeOfHighestOfNDay
- TimeOfLowestOfNDay
- MedianOfNDay
- KurtosisOfNDay
- SkewnessOfNDay
- CovOfNDay
- RSQOfNDay
- SteyxOfNDay
- SlopeOfNDay2
- CorrelOfNDay2
- InterceptOfNDay2
- CorrelOfNDay
- DecayAvgOfNDay
- DeltaOfNDay
- HHVBarsOfNDay
- interceptofNday
- LLVBarsOfNDay
- PercentRankOfNDay
- SignedPower
- SlopeofNday
- CovarOfNDay
- ProductOfNDay
- WmaofNday
- SumifofNday
- SmaofNDay
- 中间函数
HighestOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return HighestOfNDay(@close(), 5);
// 返回:9.42
RefValue
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例返回上证指数在2018年7月18号的收盘价
SetSysParam(pn_stock(), 'SH000001');
SetSysParam(pn_date(), 20180801t);
return RefValue(@close(), 10);
// 返回:2787.257
OccuredOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return OccuredOfNDay(@close(), 10);
// 返回:10
GrowthOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return GrowthOfNDay(@close(), 5, 0);
// 返回:-0.23
SwingOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
算法
振幅=指标N日最大值-指标N日最小值
振幅(百分比)=abs(指标N日最大值-指标N日最小值)/(指标N日最小值)范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return SwingOfNDay(@close(), 5, 0);
// 返回:0.27
ContinuedMatchOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SH000001');
SetSysParam(pn_date(), 20180801t);
return ContinuedMatchOfNDay(@close(), 3);
// 返回:1
StdOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return StdOfNDay(@close(), 5);
// 返回:0.11
SumOfNDay
用途:进行数值统计计算。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例计算平安银行截止2018年8月1日最近10个交易日的成交量和
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return SumOfNDay(@vol(), 10);
// 结果: 962645765
LowestOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return LowestOfNDay(@close(), 5);
// 返回:9.15
OccuredTimeOfNDay
用途:日期时间处理函数。 参数:arg1,arg2(按示例顺序传入)。 返回:日期或时间值。
范例
SetSysParam(pn_stock(), 'SZ000063');
SetSysParam(pn_date(), 20180615t);
return OccuredTimeOfNDay(@vol(), 10);
返回:
AvgOfNDay
用途:进行数值统计计算。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return AvgOfNDay(@close(), 5);
// 返回:9.292
GrowthWithHighestOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在20231010T的100日价格N日最大与当前的偏离值。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return GrowthWithHighestOfNDay(@close(), 100, 0);
// 返回:-2.21
GrowthWithLowestOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在20231010T的100日价格N日最小与当前的偏离值。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return GrowthWithLowestOfNDay(@close(), 100, 0);
// 返回:1.82
TimeOfHighestOfNDay
用途:日期时间处理函数。 参数:arg1,arg2(按示例顺序传入)。 返回:日期或时间值。
范例
// 对SH600585在20231010T的100日价格最高时间。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return TimeOfHighestOfNDay(@close(), 100);
// 返回:2023-05-15
TimeOfLowestOfNDay
用途:日期时间处理函数。 参数:arg1,arg2(按示例顺序传入)。 返回:日期或时间值。
范例
// 对SH600585在20231010T的100日价格最低时间。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return TimeOfLowestOfNDay(@close(), 100);
// 返回:2023-07-12
MedianOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在20231010T的100日价格中位数。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return MedianOfNDay(@close(), 100);
// 返回:26.705
KurtosisOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在20231010T的100日价格峰度。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return KurtosisOfNDay(@close(), 100);
// 返回:-0.73
SkewnessOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 对SH600585在20231010T的100日价格偏度。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SkewnessOfNDay(@close(), 100);
// 返回:-0.65
CovOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 20231010T,SH600585前10日收盘与SH000001收盘的协方差。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CovOfNDay(@close(), 10, "SH000001");
// 返回:5.7123
RSQOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 20231010T,SH600585前10日收盘与SH000001收盘的相关系数平方。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return RSQOfNDay(@close(), 10, "SH000001");
// 返回:0.437
SteyxOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 20231010T,SH600585前10日收盘与SH000001收盘的相对标准偏差。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SteyxOfNDay(@close(), 10, "SH000001");
// 返回:13.72035
SlopeOfNDay2
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 20231010T,SH600585前10日收盘与SH000001收盘的回归斜率。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SlopeOfNDay2(@close(), 10, "SH000001");
// 返回:20.4608
CorrelOfNDay2
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 20231010T,SH600585前10日收盘与SH000001收盘的相关系数。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CorrelOfNDay2(@close(), 10, "SH000001");
// 返回:0.661
InterceptOfNDay2
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 20231010T,SH600585前10日收盘与SH000001收盘的回归截距。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return InterceptOfNDay2(@close(), 10, "SH000001");
// 返回:2569.49
CorrelOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CorrelOfNDay(@stockpjcj3(), @RefValue(@close(), 5), 10, "");
// 结果:-0.61
DecayAvgOfNDay
用途:进行数值统计计算。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return DecayAvgOfNDay(@close(), 5);
// 结果:25.61
DeltaOfNDay
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return DeltaOfNDay(@close(), 5);
// 结果:-1.39
HHVBarsOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return HHVBarsOfNDay(@close(), 10, "");
// 结果:8
interceptofNday
用途:N日相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return interceptofNday(@close(), @open(), 100, "");
// 结果:1.36
LLVBarsOfNDay
- SumOfNDay
- RefValue
- ContinuedMatchOfNDay
- OccuredTimeOfNDay
- HighestOfNDay
- StdOfNDay
- LowestOfNDay
- SwingOfNDay
- GrowthOfNDay
- AvgOfNDay
- OccuredOfNDay
- GrowthWithHighestOfNDay
- GrowthWithLowestOfNDay
- TimeOfHighestOfNDay
- TimeOfLowestOfNDay
- MedianOfNDay
- KurtosisOfNDay
- SkewnessOfNDay
- CovOfNDay
- RSQOfNDay
- SteyxOfNDay
- SlopeOfNDay2
- CorrelOfNDay2
- InterceptOfNDay2
- CorrelOfNDay
- DecayAvgOfNDay
- DeltaOfNDay
- HHVBarsOfNDay
- interceptofNday
- LLVBarsOfNDay
- PercentRankOfNDay
- SignedPower
- SlopeofNday
- CovarOfNDay
- ProductOfNDay
- WmaofNday
- SumifofNday
- SmaofNDay
- 中间函数
PercentRankOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return PercentRankOfNDay(@close(), 10, "");
// 结果:0.56
SignedPower
用途:N日相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
算法SignedPower(x,n)=sign(x)*(abs(x)^n)范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SignedPower(@close(), 3);
// 结果:14402.12
SlopeofNday
用途:N日相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SlopeofNday(@close(), @open(), 30, "");
// 结果:0.97
CovarOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
算法cov=mean(x*y)-mean(x)*mean(y)范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return CovarOfNDay(@close(), @open(), 30, "");
// 结果:0.79
ProductOfNDay
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return ProductOfNDay(@close(), 3, "");
// 结果:14359.59
WmaofNday
用途:N日相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return WmaofNday(@open(), 30, "");
// 结果:25.04
SumifofNday
用途:进行数值统计计算。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SumifofNday(@open(), 30, "@open()>@close()", "");
// 结果:763.47
SmaofNDay
用途:N日相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SmaofNDay(@open(), 30, 1, "");
// 结果:25.44
中间函数
####### 内容
- GetExpCaceStr
- TechCal_Unit
####### GetExpCaceStr
- GetExpCaceStr
- TechCal_Unit
####### TechCal_Unit
- GetExpCaceStr
- TechCal_Unit
历史遗留
内容
- SumOfSectorExceptNoTrade
- AvgOfSectorExceptNoTrade
SumOfSectorExceptNoTrade
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_bk(), '安徽');
SetSysParam(pn_date(), 20180801t);
return SumOfSectorExceptNoTrade(@close());
// 返回:1261.95
AvgOfSectorExceptNoTrade
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_bk(), '安徽');
SetSysParam(pn_date(), 20180801t);
return AvgOfSectorExceptNoTrade(@close(), 0);
// 返回:9.77
区间
内容
- SumOfPeriod
- SwingOfPeriod
- HighestOfPeriod
- TimeOfHighestOfPeriod
- OccuredOfPeriod
- AvgOfPeriod
- OccuredOfRepPeriod
- ContinuedMatchOfPeriod
- LowestOfPeriod
- AvgOfRepPeriod
- SumOfRepPeriod
- GrowthOfPeriod
- TimeOfLowestOfPeriod
- HHVBarsOfPeriod
- LLVBarsOfPeriod
- HighestOfRepPeriod2
- LowestOfRepPeriod2
- MedianOfPeriod
- PercentRankOfPeriod
- SkewnessOfPeriod
- KurtosisOfPeriod
- GrowthOfRepPeriod2
- SumOfRepPeriod2
- AvgOfRepPeriod2
- StdOfPeriod
- StdOfRepPeriod2
- CorrelOfPeriod
- RSQOfPeriod
- SlopeOfPeriod
- InterceptOfPeriod
- CovOfPeriod
- SteyxOfPeriod
SumOfPeriod
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return SumOfPeriod(@close(), 20180801T, 20180802T);
// 返回:18.09
SwingOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
算法
振幅=指标区间最大值-指标区间最小值
振幅(百分比)=abs(指标区间最大值-指标区间最小值)/(指标区间最小值)范例
SetSysParam(pn_stock(), 'SZ000001');
return SwingOfPeriod(@close(), 20180801T, 20180802T, 0);
// 返回:0.21
HighestOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return HighestOfPeriod(@close(), 20180801T, 20180802T);
// 返回:9.15
TimeOfHighestOfPeriod
用途:日期时间处理函数。 参数:
返回:日期或时间值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return TimeOfHighestOfPeriod(@close(), 20180801T, 20180802T);
// 返回:2018-08-01
OccuredOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T上涨次数。
SetSysParam(pn_stock(), "SH600585");
return OccuredOfPeriod(@IsUp(), 20230101T, 20231010T);
// 返回:84
AvgOfPeriod
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return AvgOfPeriod(@close(), 20180801T, 20180802T);
// 返回:9.045
OccuredOfRepPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return OccuredOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018); // 即返回2015年到2018年一季报的数量
// 返回:4
ContinuedMatchOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfPeriod(@close(), 20180801T, 20180803T);
// 返回:1
LowestOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return LowestOfPeriod(@close(), 20180801T, 20180803T);
// 返回:8.91
AvgOfRepPeriod
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例平安银行2015到2018四个一季报营业收入的平均值
SetSysParam(pn_stock(), 'sz000001');
return AvgOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018);
// 返回:25988750000
SumOfRepPeriod
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例平安银行2015到2018四个一季报营业收入的和
SetSysParam(pn_stock(), 'sz000001');
return SumOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018);
// 返回:103955000000
GrowthOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfPeriod(@close(), 20180801T, 20180803T, 1);
// 返回:-2.62
TimeOfLowestOfPeriod
用途:日期时间处理函数。 参数:
返回:日期或时间值。
范例
SetSysParam(pn_stock(), 'SZ000001');
return TimeOfLowestOfPeriod(@close(), 20180801T, 20180802T);
// 返回:2018-08-02
HHVBarsOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T最高点到当前的周期数。
SetSysParam(pn_stock(), "SH600585");
return HHVBarsOfPeriod(@close(), 20230101T, 20231010T);
// 返回:153
LLVBarsOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T最低点到当前的周期数。
SetSysParam(pn_stock(), "SH600585");
return LLVBarsOfPeriod(@close(), 20230101T, 20231010T);
// 返回:58
HighestOfRepPeriod2
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 对SZ000001在2020年年报至2022年报的最高营业收入。
SetSysParam(pn_stock(), "SZ000001");
return HighestOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回:179895000000
LowestOfRepPeriod2
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 对SZ000001在2020年年报至2022年报的最低营业收入。
SetSysParam(pn_stock(), "SZ000001");
return LowestOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回:153542000000
MedianOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T的价格中位数。
SetSysParam(pn_stock(), "SH600585");
return MedianOfPeriod(@close(), 20230101T, 20231010T);
// 返回:25.78
PercentRankOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T的价格分位数。
SetSysParam(pn_stock(), "SH600585");
return PercentRankOfPeriod(@close(), 20230101T, 20231010T);
// 返回:0.1476
SkewnessOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T的价格偏度。
SetSysParam(pn_stock(), "SH600585");
return SkewnessOfPeriod(@close(), 20230101T, 20231010T);
// 返回:0.1796
KurtosisOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T的价格峰度。
SetSysParam(pn_stock(), "SH600585");
return KurtosisOfPeriod(@close(), 20230101T, 20231010T);
// 返回:-0.602
GrowthOfRepPeriod2
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 对SZ000001在2020年年报至2022年报的营业收入增长率。
SetSysParam(pn_stock(), "SZ000001");
return GrowthOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 1);
// 返回:17.16
SumOfRepPeriod2
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
// 对SZ000001在2020年年报至2022年报的营业收入和。
SetSysParam(pn_stock(), "SZ000001");
return SumOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回:502820000000
AvgOfRepPeriod2
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
// 对SZ000001在2020年年报至2022年报的平均营业收入。
SetSysParam(pn_stock(), "SZ000001");
return AvgOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回:167606666666.667
StdOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// SH600585在20230101T至20231010T的价格标准差。
SetSysParam(pn_stock(), "SH600585");
return StdOfPeriod(@close(), 20230101T, 20231010T);
// 返回:2.1048
StdOfRepPeriod2
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 对SZ000001在2020年年报至2022年报的营业收入标准差。
SetSysParam(pn_stock(), "SZ000001");
return StdOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回:13265996846.57
CorrelOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 20230901T至20231010T,SH600585收盘与SH000001收盘的相关系数。
SetSysParam(pn_stock(), "SH600585");
return CorrelOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回:0.45
RSQOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 20230901T至20231010T,SH600585收盘与SH000001收盘的相关系数平方。
SetSysParam(pn_stock(), "SH600585");
return RSQOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回:0.21
SlopeOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 20230901T至20231010T,SH600585收盘与SH000001收盘的回归斜率。
SetSysParam(pn_stock(), "SH600585");
return SlopeOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回:21.84
InterceptOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 20230901T至20231010T,SH600585收盘与SH000001收盘的回归截距。
SetSysParam(pn_stock(), "SH600585");
return InterceptOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回:2550.63
CovOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 20230901T至20231010T,SH600585收盘与SH000001收盘的协方差。
SetSysParam(pn_stock(), "SH600585");
return CovOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回:4.93
SteyxOfPeriod
用途:区间相关函数。 参数:
返回:处理后的结果值。
范例
// 20230901T至20231010T,SH600585收盘与SH000001收盘的相对标准偏差。
SetSysParam(pn_stock(), "SH600585");
return SteyxOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回:21.40
中间函数
内容
- RatioValueByType
- isValidValue
- FilterSampleByCriterion_Wiz
- CompositeRatioValue
- SimplyRatioValue
- isNull
- isValidPositiveValue
- ReportValueOfPeriod
RatioValueByType
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
增长=V2-V1
增长率=(V2-V1)/V1*100%
复合增长率= (Sign(V2/V1)*Power(abs(V2/V1),1/N)-1)*100%,
其中sign为条件判断,依据给定参数的正/0/负返回1/0/-1,power为幂为1/N的幂函数范例
return RatioValueByType(1, 2, 1, 2);
// 返回:100
isValidValue
用途:判断条件是否成立。 参数:
返回:布尔值。
范例
return isValidValue(10);
// 返回:1
FilterSampleByCriterion_Wiz
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
范例
stockarr := GetBK('A股');
FilterSampleByCriterion_Wiz(stockarr, 20150101, 0, 0, 20180801);
return stockarr;
返回:
CompositeRatioValue
用途:中间函数相关函数。 参数:
返回:整数。
算法复合增长率= (Sign(V2/V1)*Power(abs(V2/V1),1/N)-1)*100%,
其中sign为条件判断,依据给定参数的正/0/负返回1/0/-1,power为幂为1/N的幂函数范例
return CompositeRatioValue(1, 4, 2);
// 返回:100
SimplyRatioValue
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法增长率=(V2-V1)/V1*100%范例
return SimplyRatioValue(1, 2);
// 返回:100
isNull
用途:判断条件是否成立。 参数:
返回:布尔值。
范例
return isNull(0);
// 返回:1
isValidPositiveValue
用途:判断条件是否成立。 参数:
返回:布尔值。
范例
return isValidPositiveValue(1);
// 返回:1
ReportValueOfPeriod
- RatioValueByType
- isValidValue
- FilterSampleByCriterion_Wiz
- CompositeRatioValue
- SimplyRatioValue
- isNull
- isValidPositiveValue
- ReportValueOfPeriod
N季
内容
- SumOfNReport2
- AvgOfNReport2
- StdOfNReport2
- ACCOfNReport2
- RobustGrowthOfNReport2
- RobustACCOfNReport2
SumOfNReport2
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return SumOfNReport2(Exp, ReportID, N); // 983299000000
AvgOfNReport2
用途:进行数值统计计算。 参数:
返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return AvgOfNReport2(Exp, ReportID, N); // 122912375000
StdOfNReport2
用途:N季相关函数。 参数:
返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return StdOfNReport2(Exp, ReportID, N); // 56286669451.8528
ACCOfNReport2
范例
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return RobustACCOfNReport2(Exp, ReportID, N); // -0.2568
RobustGrowthOfNReport2
用途:N季相关函数。 参数:
返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return RobustGrowthOfNReport2(Exp, ReportID, N); // -0.3269
RobustACCOfNReport2
用途:N季相关函数。 参数:
返回:处理后的结果值。
范例
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return RobustACCOfNReport2(Exp, ReportID, N); // -0.2568
当日
内容
- PercentRankOftheReport
- PercentRankOftheDay3
- RankOftheReport
- RankOftheDay3
- ScaleOfSeries3
- ScaleOfSeriesOftheReport
- IndNeutralize4
- IndNeutralizeOftheReport
- IndNeutralize
- IndNeutralize2
- PercentRankOftheDay
- PercentRankOftheDay2
- RankOftheDay
- RankOftheDay2
- ScaleOfSeries
- ScaleOfSeries2
- 中间函数
PercentRankOftheReport
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// SH600519,2022年报营业收入在沪深300成分股的分位排名。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231);
// 返回:0.7525
PercentRankOftheDay3
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// 20231010T,SH600519收盘价在沪深300成分股的分位排名。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheDay3(@close(), "", 1);
// 返回:1
RankOftheReport
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// SH600519,2022年报营业收入在沪深300成分股的排名。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
// 返回:75
RankOftheDay3
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// 20231010T,SH600519收盘价在沪深300成分股的排名。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheDay3(@close(), 0, "", 1);
// 返回:1
ScaleOfSeries3
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// 20231010T,SH600519收盘价在沪深300成分股的标准化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries3(@close(), 1, "", 1);
// 返回:0.1267
ScaleOfSeriesOftheReport
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// SH600519,2022年报在沪深300成分股的营业收入标准化。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeriesOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 1);
// 返回:0.00298
IndNeutralize4
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// 20231010T,SH600519收盘价在沪深300成分股的中性化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return IndNeutralize4(@close(), 0, "", 1);
// 返回:1723.43
IndNeutralizeOftheReport
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// SH600519,2022年报在沪深300成分股的营业收入中性化。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return IndNeutralizeOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
// 返回:-14699034441.7286
IndNeutralize
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
return IndNeutralize(@open(), 0, "");
// 结果:1735.87966666667
IndNeutralize2
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
return IndNeutralize2(@open(), 0, "");
// 结果:1735.87966666667
PercentRankOftheDay
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return PercentRankOftheDay(exp);
// 结果:0.4615
PercentRankOftheDay2
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return PercentRankOftheDay2(exp);
// 结果:0.4615
RankOftheDay
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return RankOftheDay(exp, 0);
// 结果:161
RankOftheDay2
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return RankOftheDay2(exp, 0);
// 结果:161
ScaleOfSeries
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// 20231010T,SH600519收盘价在沪深300成分股的标准化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries(@close(), 1, "");
// 返回:0.1267
ScaleOfSeries2
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
// 20231010T,SH600519收盘价在沪深300成分股的标准化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries2(@close(), 1, "");
// 返回:0.1267
中间函数
####### 内容
- CacheStrMerge
- pn_StockArrName
- GetParm_StockArr_ByEndt
- GetParm_GroupIndustry_ByEndt
- GetHBCacheStr
- SetParm_StockArrFunc
- pn_StockArrFunc
####### CacheStrMerge
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
return CacheStrMerge('1', 2, 20231020T);
// 结果:["1"][2][45219]
####### pn_StockArrName
用途:当日相关函数。 参数:无。 返回:处理后的结果值。
范例
return pn_StockArrName();
// 结果:CurrentStockArrName
####### GetParm_StockArr_ByEndt
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
A := function (endt);
begin
return GetBKByDate('SH000300', endt);
end;
B := function (endt);
begin
return GetBKByDate('SH000905', endt);
end;
SetParm_StockArrFunc(B, 'ZZ500');
SetParm_StockArrFunc(A, 'HS300');
sp_s(pn_StockArrName(), 'HS300');
stocks1 := GetParm_StockArr_ByEndt(sp_time(1));
sp_s(pn_StockArrName(), 'ZZ500');
stocks2 := GetParm_StockArr_ByEndt(sp_time(1));
return array(stocks1, stocks2);
####### GetParm_GroupIndustry_ByEndt
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
return GetParm_GroupIndustry_ByEndt(GetBKByDate('SH000300', 20231010T), 20231010T, 1);
####### GetHBCacheStr
- CacheStrMerge
- pn_StockArrName
- GetParm_StockArr_ByEndt
- GetParm_GroupIndustry_ByEndt
- GetHBCacheStr
- SetParm_StockArrFunc
- pn_StockArrFunc
####### SetParm_StockArrFunc
用途:当日相关函数。 参数:
返回:处理后的结果值。
范例
A := function (endt);
begin
return GetBKByDate('SH000300', endt);
end;
B := function (endt);
begin
return GetBKByDate('SH000905', endt);
end;
SetParm_StockArrFunc(B, 'ZZ500');
SetParm_StockArrFunc(A, 'HS300');
sp_s(pn_StockArrName(), 'HS300');
stocks1 := GetParm_StockArr_ByEndt(sp_time(1));
sp_s(pn_StockArrName(), 'ZZ500');
stocks2 := GetParm_StockArr_ByEndt(sp_time(1));
return array(stocks1, stocks2);
[/code]
####### pn_StockArrFunc
用途:当日相关函数。 参数:无。 返回:处理后的结果值。
范例
return pn_StockArrFunc();
// 结果:CurrentStockArrFunc
StockTrailingAvgByEndT
范例
范例01
// 获取万科A过去1年的日均成交金额
setsysparam(pn_stock(), "SZ000002");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "Amount()";
return StockTrailingAvgByEndT(Endt, RefType, Exp);
// 2172484158.52
范例02
// 获取厦门银行过去1年的日均成交金额(剔除上市日3天)
setsysparam(pn_stock(), "SH601187");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "Amount()";
IsExcludeIPO := 1; // 考虑剔除上市日影响
N := 3; // 上市行情3天
return StockTrailingAvgByEndT(Endt, RefType, Exp, IsExcludeIPO, N);
// 444243617.69
StockTrailingStdByEndT
范例
// 获取万科A过去1年的日收益率标准差
setsysparam(pn_stock(), "SZ000002");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "stockzf3()";
return StockTrailingStdByEndT(Endt, RefType, Exp); // 1.69
条件判定
内容
- IsTimePeriodInfoId
IsTimePeriodInfoId
范例
return IsTimePeriodInfoId(150003);
// 结果:1