6261 lines
133 KiB
Markdown
6261 lines
133 KiB
Markdown
### 数据仓库函数
|
||
|
||
#### 内容
|
||
|
||
- 系统参数名称函数
|
||
- 多市场支撑函数
|
||
- 时间相关函数
|
||
- 判定函数
|
||
- 盘中相关
|
||
- 盘后相关(在当日可用于盘中)
|
||
- 时间序列统计
|
||
- 成交明细数据函数
|
||
- 交易明细字段标识函数
|
||
- 查询和轮询函数
|
||
- 市场和板块函数
|
||
- 取行情数据序列函数
|
||
- 引用指定函数
|
||
- 系统参数设置和获取函数
|
||
- 复权类型函数
|
||
- 复权基准日函数
|
||
- 周期函数
|
||
- 财务函数
|
||
- 选股与取数
|
||
- 向导函数
|
||
- 条件判定
|
||
|
||
#### 系统参数名称函数
|
||
|
||
##### 内容
|
||
|
||
- 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:
|
||
|
||
```tsl
|
||
// 结果集将只有20161010的数据,没有假期的夜盘数据。
|
||
setsysparam("cyclefilter", 1);
|
||
setsysparam(pn_cycle(), cy_15m());
|
||
return select * from markettable datekey 20161007T to 20161010.1600T of"ag1612"end;
|
||
```
|
||
|
||
范例2:
|
||
|
||
```tsl
|
||
// 结果将会新增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:
|
||
|
||
```tsl
|
||
// 设置当前证券为万科A
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
return getsysparam(pn_stock()); // 获取当前的证券代码
|
||
// 返回字符串SZ000002
|
||
```
|
||
|
||
范例2:
|
||
|
||
```tsl
|
||
// 取指定证券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:
|
||
|
||
```tsl
|
||
// 设置当前时间为2019-2-18
|
||
setsysparam(pn_date(), 20190218T);
|
||
return sp_time(); // 或return getsysparam(pn_date()); // 获取当前时间
|
||
// 返回43514,即2019-02-18
|
||
```
|
||
|
||
范例2:
|
||
|
||
```tsl
|
||
// 取指定证券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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 以第一个交易日为基准进行复杂复权后的截止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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 设置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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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:
|
||
|
||
```tsl
|
||
// 取万科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:
|
||
|
||
```tsl
|
||
// 取上证指数一段时间内的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:设置与生效
|
||
|
||
```tsl
|
||
setsysparam(PN_Precision(), 3); // 设置有效
|
||
ov := BackupSystemParameters2();
|
||
setsysparam(PN_Precision(), 2); // 设置无效,在return 之前被恢复到备份之前的状态
|
||
return rand(2, 3);
|
||
// 返回结果保留3位小数:
|
||
```
|
||
|
||
范例2:
|
||
|
||
```tsl
|
||
// 提取万科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调用
|
||
|
||
```tsl
|
||
// 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分的分钟线价量
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 取万科A在2019年的三季报与年报的股东权益合计,笔者执行日期为20191224日,年报还未出
|
||
setsysparam(pn_emptymode(), 5); // 空记录设置为浮点NAN
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
t1 := reportofall(44111, 20190930);
|
||
t2 := reportofall(44111, 20191231);
|
||
return array(t1, t2);
|
||
```
|
||
|
||
返回:
|
||
|
||
```text
|
||
244,851,895,300.25
|
||
NAN
|
||
```
|
||
|
||
##### pn_ChangedDateMode
|
||
|
||
范例
|
||
|
||
提取万科A的在20190404日的总股本数据
|
||
|
||
```tsl
|
||
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
|
||
|
||
```tsl
|
||
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
|
||
|
||
```tsl
|
||
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
|
||
|
||
```tsl
|
||
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
|
||
|
||
```tsl
|
||
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,发布规则提取
|
||
|
||
```tsl
|
||
EndT := 20230121T;
|
||
ov := BackupSystemParameters2();
|
||
SetSysParam(pn_ReportType(), 90); // 财报按财报发布规则
|
||
RDate := NewReportDateOfEndT2(EndT);
|
||
return RDate;
|
||
// 返回结果:20220930, 按财报公布规则20230121t,2022年年报未公布在4月底才公布,2022年三季报已在2022年10月公布了
|
||
```
|
||
|
||
范例6:pn_ReportType()=20221231,指定报告期
|
||
|
||
```tsl
|
||
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:获取当前禁用无数据异常模式
|
||
|
||
```tsl
|
||
setsysparam(pn_noraisenodata(), 1);
|
||
return getsysparam(pn_noraisenodata());
|
||
```
|
||
|
||
返回:1
|
||
|
||
范例2:当指定证券无数据时,不报错,通过close()取价格返回0
|
||
|
||
```tsl
|
||
setsysparam(pn_noraisenodata(), 1);
|
||
return spec(close(), "abc");
|
||
```
|
||
|
||
返回:0
|
||
|
||
范例3:当指定证券无数据时,不报错,通过Rd取盘口时返回nil
|
||
|
||
```tsl
|
||
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:只提醒,不报错
|
||
|
||
```tsl
|
||
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:报错+提醒
|
||
|
||
```tsl
|
||
Echo #127;
|
||
setsysparam("CalcCTRLWord", 0b11111111); // 报错+提醒
|
||
return array(0 / 0,
|
||
1 / 0,
|
||
nil * 2,
|
||
nil > 0,
|
||
1 + 1);
|
||
```
|
||
|
||
程序报错:提示第5行出现除0操作
|
||
|
||
使用范例03:Nil的.与[]操作不报错
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取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日的一分钟线交易时间序列
|
||
|
||
```tsl
|
||
stockid := "SZ000002";
|
||
cycle := cy_1m();
|
||
dt := 20230628T;
|
||
return tsperiod(stockid, cycle, dt);
|
||
```
|
||
|
||
结果:
|
||
|
||
范例二:取期货合约i2307在2023年6月28日的一分钟线交易时间序列,包含夜盘
|
||
|
||
```tsl
|
||
stockid := "i2307";
|
||
cycle := cy_1m();
|
||
dt := 20230628T;
|
||
return tsperiod(stockid, cycle, dt);
|
||
```
|
||
|
||
结果:
|
||
|
||
范例三:传入自由周期,取万科A在2023年6月28日的8秒线交易时间序列
|
||
|
||
```tsl
|
||
stockid := "SZ000002";
|
||
cycle := 8;
|
||
dt := 20230628T;
|
||
return tsperiod(stockid, cycle, dt);
|
||
```
|
||
|
||
结果:
|
||
|
||
范例四:传入自由周期以及基准时间点,取万科A在2023年6月28日的8秒线交易时间序列
|
||
|
||
```tsl
|
||
stockid := "SZ000002";
|
||
cycle := 8;
|
||
dt := 20230628.133015T;
|
||
return tsperiod(stockid, cycle, dt);
|
||
```
|
||
|
||
结果:
|
||
|
||
#### 时间相关函数
|
||
|
||
##### 内容
|
||
|
||
- sp_time
|
||
- tradeDays
|
||
- FirstDay
|
||
- LastDay
|
||
|
||
##### sp_time
|
||
|
||
范例
|
||
|
||
范例一:设置的日期为交易日时sp_time()的结果
|
||
|
||
```tsl
|
||
// 系统证券代码对应的交易时间
|
||
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)的结果对比
|
||
|
||
```tsl
|
||
// 如果设置日期是一个非交易日(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)返回日期的差异
|
||
|
||
```tsl
|
||
// 如果要返回设定的日期,例如(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中的使用
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
beg_date := inttodate(20100101);
|
||
end_date := inttodate(20101231);
|
||
// end_date 必须大于beg_date
|
||
return tradedays(beg_date, end_date); // 返回240
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
// 获得系统品种的第一个交易日
|
||
return firstday(); // 33240(1991-01-02);
|
||
// 获得指定参数品种的第一个交易日
|
||
return firstday('SH600086');
|
||
// 结果:35587(1997-06-06);
|
||
```
|
||
|
||
参考TDateTime
|
||
|
||
##### LastDay
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取某只股票的最后一个交易日。
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 判定一个代码是否为有效的股票代码。
|
||
return IsStock('SZ000001');
|
||
// 返回1
|
||
return IsStock('SZ100002'); // 返回0
|
||
```
|
||
|
||
##### IsTradeDay
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 判定系统品种在指定时间是否有交易。
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
return IsTradeDay(inttodate(20110828)); // 返回0
|
||
return IsTradeDay(inttodate(20110826)); // 返回1
|
||
```
|
||
|
||
##### TestStock
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 判定是否存在该股票的历史或者实时数据。
|
||
return TestStock('SZ000002'); // 返回1
|
||
```
|
||
|
||
##### IsValidCode
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 判定指定的品种代码是否为合法有效。
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回一个有效股票代码的完整代码。
|
||
stock_id := '000002';
|
||
_id := ValidFullCode(stock_id);
|
||
return _id;
|
||
// 返回:'SZ000002'
|
||
```
|
||
|
||
##### IsCashFlowInfoId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsCashFlowInfoId(48003);
|
||
// 返回:1
|
||
```
|
||
|
||
##### IsMainReportId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsMainReportId(46002);
|
||
// 返回:1
|
||
```
|
||
|
||
##### AnalyseStockArr
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return AnalyseStockArr('上证50', 'IF01;IF02');
|
||
```
|
||
|
||
返回:
|
||
|
||
##### IsBalanceInfoId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsBalanceInfoId(44003);
|
||
// 返回:1
|
||
```
|
||
|
||
##### IsInterestInfoId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsInterestInfoId(46003);
|
||
// 返回:1
|
||
```
|
||
|
||
##### IsFundBalanceSheetInfoId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsFundBalanceSheetInfoId(312002);
|
||
// 返回:1
|
||
```
|
||
|
||
##### IsFundInterestInfoId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsFundInterestInfoId(314002);
|
||
// 返回:1
|
||
```
|
||
|
||
##### IsStockFinancialItem
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsStockFinancialItem(62003);
|
||
// 返回:1
|
||
```
|
||
|
||
##### IsFinancialInfoID
|
||
|
||
- IsStock
|
||
- IsTradeDay
|
||
- TestStock
|
||
- IsValidCode
|
||
- ValidFullCode
|
||
- IsCashFlowInfoId
|
||
- IsMainReportId
|
||
- AnalyseStockArr
|
||
- IsBalanceInfoId
|
||
- IsInterestInfoId
|
||
- IsFundBalanceSheetInfoId
|
||
- IsFundInterestInfoId
|
||
- IsStockFinancialItem
|
||
- IsFinancialInfoID
|
||
|
||
#### 盘中相关
|
||
|
||
##### 内容
|
||
|
||
- Rd
|
||
|
||
##### Rd
|
||
|
||
范例
|
||
|
||
范例01:取个股盘口行情
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
rds := array(datetimetostr(sp_time()),
|
||
rd(0),//股票代码
|
||
rd(1),//股票名称
|
||
rd(2),//开盘价
|
||
rd(3)//昨收
|
||
);
|
||
return rds;
|
||
```
|
||
|
||
范例02:取多个股票盘口行情
|
||
|
||
```tsl
|
||
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:与行情函数的对比
|
||
|
||
默认与现在指标函数对比
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000002');
|
||
SetSysParam(pn_cycle(), cy_detail());
|
||
return array(rd(6), close()); // 两者返回的结果相同
|
||
```
|
||
|
||
与指定日函数取数对比
|
||
|
||
```tsl
|
||
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()可以通过设置系统时间得到历史某个时点的价格。
|
||
|
||
默认当前时间对比
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000002');
|
||
SetSysParam(pn_cycle(), cy_detail());
|
||
return array(rd(-1), sp_time()); // 两者返回的结果相同
|
||
```
|
||
|
||
指定日当前时间对比
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回平安银行最低价
|
||
setsysparam(pn_stock(), "SZ000001");
|
||
setsysparam(pn_date(), inttodate(20140122));
|
||
return low(); // 返回11.35
|
||
```
|
||
|
||
参考High Close Open Vol Amount Sys_PrevClose
|
||
|
||
##### SseSyl2
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回股指期货IF1401在2014年1月15日的昨结算价
|
||
setsysparam(pn_stock(), "IF1401");
|
||
setsysparam(pn_date(), inttodate(20140115));
|
||
return SseSyl2 (); // 返回2213.6
|
||
```
|
||
|
||
##### Sys_PrevClose
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回平安银行系统昨收
|
||
setsysparam(pn_stock(), "SZ000001");
|
||
setsysparam(pn_date(), inttodate(20140122));
|
||
return Sys_PrevClose (); // 返回11.36
|
||
```
|
||
|
||
参考High Close Open Vol Low Amount
|
||
|
||
##### Open
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 取平安银行在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
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
// 不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据
|
||
// 执行日期2014年1月27日,取当天的数据
|
||
return close();
|
||
// 结果:2033.3
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科A’,当前时间为2014-01-15
|
||
setsysparam(pn_stock(), "SZ000002");
|
||
setsysparam(pn_date(), inttodate(20140115));
|
||
return close();
|
||
// 结果:7.17
|
||
```
|
||
|
||
范例三:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科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
|
||
```
|
||
|
||
范例四:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科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
|
||
```
|
||
|
||
范例五:
|
||
|
||
```tsl
|
||
// 应用于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
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
// 不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据
|
||
// 执行日期2014年1月27日,取当天的数据
|
||
return vol();
|
||
// 结果:8881542144
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科A’,当前时间为2014-01-15
|
||
setsysparam(pn_stock(), "SZ000002");
|
||
setsysparam(pn_date(), inttodate(20140115));
|
||
return vol();
|
||
// 结果:49175340
|
||
```
|
||
|
||
范例三:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科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
|
||
```
|
||
|
||
范例四:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回平安银行实际成交笔数
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回平安银行买一价
|
||
setsysparam(pn_stock(), "SZ000001");
|
||
setsysparam(pn_date(), inttodate(20140122));
|
||
return Buy1(); // 返回11.78,当天收盘时的买一价
|
||
```
|
||
|
||
##### Amount
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科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
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
// 设置当前股票为‘万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回平安银行买一量
|
||
setsysparam(pn_stock(), "SZ000001");
|
||
setsysparam(pn_date(), inttodate(20140122));
|
||
return BuyVol1 (); // 返回480265,当天收盘时的买一量
|
||
```
|
||
|
||
##### High
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回平安银行最高价
|
||
setsysparam(pn_stock(), "SZ000001");
|
||
setsysparam(pn_date(), inttodate(20140122));
|
||
return High();
|
||
// 返回11.86
|
||
```
|
||
|
||
参考Close Open Low Vol Amount Sys_PrevClose
|
||
|
||
##### SseSyl1
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回股指期货IF1401在2014年1月15日的结算价
|
||
setsysparam(pn_stock(), "IF1401");
|
||
setsysparam(pn_date(), inttodate(20140115));
|
||
return SseSyl1 (); // 返回2210.4
|
||
```
|
||
|
||
##### Buy3
|
||
|
||
范例参见Buy1。
|
||
|
||
##### SectionOpen
|
||
|
||
范例
|
||
|
||
通过范例一和范例二,可以比较SectionOpen和open的区别
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
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)
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得上证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的前结算价
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 万科在指定区间内的上涨下跌情况;
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取万科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
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
// 获得万科A(SZ000002)在2011-09-09日的10日均价
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
setsysparam(pn_date(), inttodate(20110909));
|
||
N := 10;
|
||
return ma(close(), N);
|
||
// 返回8.103
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
// 获取万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科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。范例
|
||
|
||
```tsl
|
||
// 获得万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 上证指数在最近100天内的上涨天数;
|
||
setsysparam(pn_stock(), 'SH000001');
|
||
setsysparam(pn_date(), inttodate(20140122));
|
||
return count(isup(), 100);
|
||
// 返回47。
|
||
```
|
||
|
||
##### SumN
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科A(SZ000002)在2011-09-09日的5日总成交量
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
setsysparam(pn_date(), inttodate(20110909));
|
||
return sumn(VOL(), 5); // 返回152502152
|
||
```
|
||
|
||
##### SP_STD
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 计算万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 计算万科截止20110909前30个交易日股票的总体标准差
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
setsysparam(pn_date(), inttodate(20110909));
|
||
return sp_stdp(close(), 30); // 返回0.1456
|
||
```
|
||
|
||
参考时间序列统计
|
||
|
||
##### SP_VAR
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 计算万科截止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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 万科在指定区间内的均线穿越情况;
|
||
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个日线交易日内分时数据成交量的最大值
|
||
|
||
```tsl
|
||
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个日线交易日的最小值价格序列
|
||
|
||
```tsl
|
||
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百分比对应的价格数据序列
|
||
|
||
```tsl
|
||
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个交易的收盘价在每天分时价格的百分比排名
|
||
|
||
```tsl
|
||
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个四分位的价格序列
|
||
|
||
```tsl
|
||
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个交易日的收盘价在每日分时价格序列中的排名
|
||
|
||
```tsl
|
||
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%后的平均价格序列
|
||
|
||
```tsl
|
||
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)的分布情况
|
||
|
||
```tsl
|
||
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分钟线的几何平均价格序列
|
||
|
||
```tsl
|
||
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个交易日每天交易价格的调和平均价格序列
|
||
|
||
```tsl
|
||
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个交易日中每天交易价格的中位数序列
|
||
|
||
```tsl
|
||
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个交易日中每天交易价格的众数序列
|
||
|
||
```tsl
|
||
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个日线交易日累计涨幅序列
|
||
|
||
```tsl
|
||
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个交易日每天交易价格的总体偏差
|
||
|
||
```tsl
|
||
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个交易日每天成交价格相对平均价格波动的标准差
|
||
|
||
```tsl
|
||
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秒线的价格序列
|
||
|
||
```tsl
|
||
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个交易日每天交易价格的峰度序列
|
||
|
||
```tsl
|
||
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个交易日每天交易价格的偏度序列
|
||
|
||
```tsl
|
||
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个交易日每天交易价格的峰度序列
|
||
|
||
```tsl
|
||
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天每天与大盘走势的协方差序列
|
||
|
||
```tsl
|
||
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天每天与大盘走势的相关系数序列
|
||
|
||
```tsl
|
||
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天每天与大盘走势的回归斜率
|
||
|
||
```tsl
|
||
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天每天与大盘走势的回归截距
|
||
|
||
```tsl
|
||
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乘积矩相关系数的平方
|
||
|
||
```tsl
|
||
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天每天与大盘走势的相对标准偏差
|
||
|
||
```tsl
|
||
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天每天与大盘走势的回归斜率和截距
|
||
|
||
```tsl
|
||
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打开技术类缓存
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科A(SZ000002)当日(交易日)的成交明细;
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
t := toverdata(inttodate(20140115));
|
||
update t set ['time'] = datetimetostr(['time']) end;
|
||
return t;
|
||
```
|
||
|
||
##### toverDataEx
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取万科A(SZ000002)截止2011-09-09的5天内系统记录的交易记录数量
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
setsysparam(pn_date(), inttodate(20110909));
|
||
return nday(5, 'date', datetostr(sp_time()), '系统记录交易点数量', tdcount());
|
||
```
|
||
|
||
返回结果如下图:
|
||
|
||
##### TDCountEx
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科A(SZ000002)在2011-9-9日最后一条交易明细数组
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
setsysparam(pn_date(), inttodate(20110909));
|
||
return TDInfoByIndex(-1);
|
||
```
|
||
|
||
返回结果如下图:
|
||
|
||
##### TDSum
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 查询指定日期,在板块上证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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
stocks := GetBk('上证A股;创业板');
|
||
return stocks;
|
||
```
|
||
|
||
返回结果如下图:
|
||
|
||
参考GetUserBKList GetBKList GetUserBKList2 GetBKList2 getbkbydate
|
||
|
||
##### GetUserBKList
|
||
|
||
范例
|
||
|
||
范例一:获取所有的用户板块名称
|
||
|
||
```tsl
|
||
my_sectors := GetUserbkList ();
|
||
return my_sectors;
|
||
```
|
||
|
||
范例二:获取指定目录下的用户板块名称
|
||
|
||
```tsl
|
||
// 用户板块的申万行业下,有多个子目录,用户需要指定子目录获取子目录下的用户板块
|
||
my_sectors := GetUserbkList ("申万行业\\申万金融业");
|
||
return my_sectors;
|
||
```
|
||
|
||
参考GetBK GetBKList GetUserBKList2 GetBKList2
|
||
|
||
##### GetBKList
|
||
|
||
范例
|
||
|
||
范例01:
|
||
|
||
```tsl
|
||
// 获得申万行业列表,其中,“申万行业”是申万相关行业板块的目录名称或父板块名称。
|
||
bk_list := GetBKList('申万行业');
|
||
return bk_list;
|
||
```
|
||
|
||
范例02:
|
||
|
||
```tsl
|
||
// 获得申万行业-采掘业子行业列表
|
||
bk_list2 := GetBKList('申万行业\\申万采掘');
|
||
return bk_list2;
|
||
```
|
||
|
||
参考GetBK GetUserBKList GetUserBKList2 GetBKList2
|
||
|
||
##### GetUserBKList2
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得用户板块的申万行业下的所有板块及其所属的行业组别
|
||
my_sectors := GetUserBKList2("申万行业");
|
||
return my_sectors;
|
||
```
|
||
|
||
参考GetBK GetBKList GetUserBKList GetBKList2
|
||
|
||
##### GetBKList2
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回所有系统板块列表
|
||
return GetBklist2();
|
||
```
|
||
|
||
返回结果如下图:
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
// 返回系统申万行业板块列表
|
||
return GetBklist2('申万行业');
|
||
```
|
||
|
||
结果(部分):
|
||
|
||
参考GetBK GetUserBKList GetUserBKList2 GetBKList
|
||
|
||
#### 取行情数据序列函数
|
||
|
||
##### 内容
|
||
|
||
- NDay
|
||
- NDay2
|
||
- NDay3
|
||
|
||
##### NDay
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回万科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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 用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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 取得万科截止20110909前30个交易日的价格序列(按交易日升序排列);
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
setsysparam(pn_date(), inttodate(20110909));
|
||
return nday3(30, close());
|
||
```
|
||
|
||
参考NDay NDay2
|
||
|
||
#### 引用指定函数
|
||
|
||
##### 内容
|
||
|
||
- Ref
|
||
- SpecDate
|
||
- Spec
|
||
- SpecAll
|
||
|
||
##### Ref
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获得两个指数时间序列净值曲线
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取当前的股票代码
|
||
return GetSysParam(pn_stock()); // 返回’SH000001’;
|
||
```
|
||
|
||
参考SetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS
|
||
|
||
##### SetSysParam
|
||
|
||
范例
|
||
|
||
范例1:设置及提取
|
||
|
||
```tsl
|
||
setsysparam('Abc', 123); // 自定义参数名为'Abc',并赋值为123
|
||
return getsysparam('Abc'); // 提取参数名为'Abc'的值。
|
||
// 返回123
|
||
// 或
|
||
setsysparam('Abc', 123);
|
||
return sysparams['Abc']; // 提取参数名为'Abc'的值。
|
||
```
|
||
|
||
范例2:常用于设置系统参数如证券,时间,周期等。
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), 'SZ000002'); // 设置当前证券为万科A
|
||
setsysparam(pn_date(), 20190218T); // 设置当前时间为2019-2-18
|
||
setsysparam(pn_cycle(), cy_day()); // 设置周期为日线
|
||
return close(); // 提取收盘价
|
||
// 返回27.2
|
||
```
|
||
|
||
范例3:
|
||
|
||
```tsl
|
||
// 设置当前的股票为平安银行SZ000001,设置当前的时间为2014-01-15
|
||
Setsysparam(pn_stock(), 'SZ000001');
|
||
Setsysparam(pn_date(), inttodate(20140115));
|
||
return close();
|
||
```
|
||
|
||
参考GetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS
|
||
|
||
##### sp_s
|
||
|
||
范例
|
||
|
||
范例一:设置及提取
|
||
|
||
```tsl
|
||
sp_s ('Abc', 123); // 自定义参数名为'Abc',并赋值为123
|
||
return sp_g('Abc'); // 提取参数名为'Abc'的值。
|
||
// 返回123
|
||
```
|
||
|
||
范例二:常用于设置系统参数如证券,时间,周期等。
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取当前的股票代码
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 提取平安银行2017年3季报的营业收入
|
||
setsysparam(pn_stock(), 'SZ000001');
|
||
setsysparam(pn_date(), 20171031);
|
||
return report(46002, 20170930);
|
||
// 结果:79833000000
|
||
```
|
||
|
||
##### ReportOfAll
|
||
|
||
范例
|
||
|
||
范例1:提取平安银行2017年3季报的营业收入,与report一致
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), 'SZ000001');
|
||
setsysparam(pn_date(), 20171031);
|
||
return reportofall(46002, 20170930);
|
||
// 结果:79833000000
|
||
```
|
||
|
||
范例2:提取平安银行2017年3季报的每股收益,report不能获取该指标,是report功能的扩展
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), 'SZ000001');
|
||
setsysparam(pn_date(), 20171031);
|
||
return reportofall(9900000, 20170930);
|
||
// 结果:1.12
|
||
```
|
||
|
||
##### ReportOfDiy
|
||
|
||
范例
|
||
|
||
(注:实际的结果不一定和下同)
|
||
|
||
```tsl
|
||
Setsysparam(pn_stock(), "SZ000002");
|
||
return ReportOfDiy(8025001, 20091231, now(), '刘研究员'); // 假定8025001为预测每股收益,则返回最新的刘研究员的2009年年度的预测每股收益。
|
||
return ReportOfDiy(8025001, 20091231, now(), ""); // 则返回最新的任何研究员的2009年年度的预测每股收益。
|
||
```
|
||
|
||
##### ReportExists
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 通过红利比(18007)判断SH601888在2011年是否分红
|
||
setsysparam(pn_stock(), 'SH601888');
|
||
return ReportExists(18007, 20101231); // 返回1,是
|
||
```
|
||
|
||
##### ReportHist
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取SH601888公布的利润分配表的所有报告期ID列表
|
||
setsysparam(pn_stock(), 'SH601888');
|
||
// 营业收入ID(利润分配表的一个科目)
|
||
infoid := DataBaseRatioId(1);
|
||
return ReportHist(infoid);
|
||
```
|
||
|
||
返回结果如下图:
|
||
|
||
```tsl
|
||
// 获取SH601888公布的利润分配表的最接近20140331的报告期
|
||
setsysparam(pn_stock(), 'SH601888');
|
||
// 营业收入ID(利润分配表的一个科目)
|
||
infoid := DataBaseRatioId(1);
|
||
return ReportHist(infoid, 20140331);
|
||
// 返回20130930(执行时间20140117,未公布2013年报及2014一季报)
|
||
```
|
||
|
||
##### ReportHistExists
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 检查SZ300002在曾经发生过分红
|
||
setsysparam(pn_stock(), 'SZ300002');
|
||
return ReportHistExists(18007);
|
||
// 返回1,表示历史有分红
|
||
```
|
||
|
||
##### LastQuarterData
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 提取平安银行2017年3季度的营业收入
|
||
setsysparam(pn_stock(), 'SZ000001');
|
||
setsysparam(pn_date(), 20171031T);
|
||
return LastQuarterData(20170930, 46002, 0);
|
||
// 结果:25760000000
|
||
```
|
||
|
||
##### Last12MData
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 提取平安银行2017年3季报TTM的营业收入
|
||
setsysparam(pn_stock(), 'SZ000001');
|
||
setsysparam(pn_date(), 20171031T);
|
||
return Last12MData(20170930, 46002);
|
||
// 结果:105580000000
|
||
```
|
||
|
||
##### Base
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取SZ000002的公司全称
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
return base(10002); // 返回”万科企业股份有限公司”
|
||
```
|
||
|
||
##### BaseExists
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取SZ000002的公司全称
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
if BaseExists(10002) then return base(10002);
|
||
else return "";
|
||
// 返回万科企业股份有限公司
|
||
```
|
||
|
||
##### InfoArray
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取万科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。
|
||
|
||
```tsl
|
||
// 第4个参数缺省,满足条件的最后一条记录,即返回股权登记日<=20130516的最后一条记录
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
infoid := DatabaseInfoArrayId(21);
|
||
return InfoArrayExt(infoid, '股权登记日', 20130516);
|
||
```
|
||
|
||
##### InfoArrayExists
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 判断是否存在配股
|
||
setsysparam(pn_stock(), 'SH601888');
|
||
return InfoArrayExists(20);
|
||
// 返回0表示不存在配股数据。
|
||
```
|
||
|
||
##### bName
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return bName(18007);
|
||
// 返回”红利比”,即用18007可提取红利比数据。
|
||
```
|
||
|
||
##### idtType
|
||
|
||
范例
|
||
|
||
```tsl
|
||
TYPES := array('', '报告期相关', '报告期无关', '报表');
|
||
TYPES[-1] := '未知';
|
||
return array('公司全称':TYPES[idttype(10002)],
|
||
'红利比':TYPES[idttype(18007)],
|
||
'分红送股表':TYPES[idttype(18)],
|
||
'未知':TYPES[idttype(99)]);
|
||
```
|
||
|
||
##### idfType
|
||
|
||
范例
|
||
|
||
```tsl
|
||
TYPES := array('整型', '实数', '字符', '表格');
|
||
TYPES[-1] := '未知';
|
||
return array('公司全称':TYPES[idftype(10002)],
|
||
'红利比':TYPES[idftype(18007)],
|
||
'分红送股表':TYPES[idftype(18)],
|
||
'未知':TYPES[idftype(99)]);
|
||
```
|
||
|
||
##### BasicIDExists
|
||
|
||
范例
|
||
|
||
```tsl
|
||
infoid := DatabaseInfoArrayId(21);
|
||
return BasicIDExists(infoid);
|
||
// 返回1,表示存在
|
||
```
|
||
|
||
##### BaseArray
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'sz000001');
|
||
return BaseArray(46002, 20151231);
|
||
// 返回:96163000000
|
||
```
|
||
|
||
#### 选股与取数
|
||
|
||
##### 内容
|
||
|
||
- QueryBk
|
||
- QueryBkWithPeriod
|
||
- QueryWithPeriod
|
||
- DefaultRepID
|
||
- QWPMaxCount
|
||
- evalstring
|
||
|
||
##### QueryBk
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回板块一段时间的成交数据
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回一组股票一段时间的行情数据
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 返回万科A默认报告期的营业收入
|
||
oV := BackUpSystemParameters2();
|
||
setsysparam(pn_stock(), 'SZ000002');
|
||
// 获取默认报告期
|
||
RDate := DefaultRepID();
|
||
V := ReportNew(46002, RDate);
|
||
return v;
|
||
```
|
||
|
||
##### QWPMaxCount
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return QWPMaxCount();
|
||
// 返回:50000
|
||
```
|
||
|
||
##### evalstring
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return SpecSysParams(@SpecSysParamsdemo(), 20180801T, cy_day(), 0, 0); // 其中SpecSysParamsdemo()函数定义股票为平安银行,返回收盘价
|
||
// 返回:9.15
|
||
```
|
||
|
||
##### RelativeStrengthOfSector
|
||
|
||
算法
|
||
|
||
1、获得板块Sector成分股
|
||
|
||
2、统计成分股中个券exp值>当前证券的exp值再加1,为result
|
||
|
||
3、相对强弱(%)= (1- result/成分股总个数)\*100范例
|
||
|
||
```tsl
|
||
// 统计A股板块与沪深300指数相比的相对强弱。结果得到A股中涨幅小于沪深300涨幅的个券占比
|
||
SetSysParam(pn_stock(), 'SH000300');
|
||
SetSysParam(pn_date(), 20180801T);
|
||
return RelativeStrengthOfSector(@stockzf3(), 'A股');
|
||
// 结果:41.4621
|
||
```
|
||
|
||
##### ReportOfListed
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return ReportOfListed(46002, 20160331); // 平安银行在2016年一季报的营业收入
|
||
// 返回:27532000000
|
||
```
|
||
|
||
##### ReportPerShareOfListed
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return ReportPerShareOfListed(46033, 20160331); // 平安银行在2016年一季报的每股收益(净利润/总股本)
|
||
// 返回:0.43
|
||
```
|
||
|
||
##### Derivative1
|
||
|
||
算法
|
||
|
||
指标趋势= (3*前N日指标值-4*前(N+1)日指标值+前(N+2)日指标值)/2\*100范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801T);
|
||
return Derivative1(@close(), 0); // 指标值为收盘价
|
||
// 返回:-42
|
||
```
|
||
|
||
##### PositionOfSector
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801T);
|
||
return PositionOfSector(@close(), 'A股');
|
||
// 返回:1778
|
||
```
|
||
|
||
##### ReduceWithHighestOfPeriod
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return ReduceWithHighestOfPeriod(@close(), 20180801T, 20180803T, 0);
|
||
// 返回:-0.24
|
||
```
|
||
|
||
##### OccuredRepIdOfRepPeriod
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 从2010年开始到2018年,每年年报每股收益大于1.5的报告期
|
||
SetSysParam(pn_stock(), 'SZ000002');
|
||
return OccuredRepIdOfRepPeriod(@reportofall(42002, GetSysParam('DefaultRepID')) > 1.5, 20101231, 2018);
|
||
```
|
||
|
||
返回:
|
||
|
||
##### ContinuedMatchOfRepPeriod
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return ContinuedMatchOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20140331, 2018);
|
||
// 返回:1
|
||
```
|
||
|
||
##### GrowthOfRepPeriod
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801T);
|
||
return RelativeStrengthOfSectorDesc(@close(), 'A股');
|
||
// 返回:50.25
|
||
```
|
||
|
||
##### PositionOfSectorDesc
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801T);
|
||
return PositionOfSectorDesc(@close(), 'A股');
|
||
// 返回:1761
|
||
```
|
||
|
||
##### GrowthWithLowestOfPeriod
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return GrowthWithLowestOfPeriod(@close(), 20180801T, 20180903T, 0);
|
||
// 返回:1.41
|
||
```
|
||
|
||
##### SumOfSector
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return AvgOfSector(@close(), 2, 20180801T, 20180801T, 1, 0, 0, 0); // 返回在2018年8月1日所有A股在当日已经上市的股票收盘价的算术平均。
|
||
// 返回:12.27
|
||
```
|
||
|
||
##### OccuredTimeOfPeriod
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return OccuredTimeOfPeriod(@close(), 20180801T, 20180810T); // 返回平安银行在2018年8月1日至2018年8月10日存在行情数据(收盘价)的日期
|
||
```
|
||
|
||
返回:
|
||
|
||
##### SpecDateValue
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180917T);
|
||
return SpecDateValue(20180801T, @close()); // 返回2018年8月1号平安银行的收盘价
|
||
// 返回:9.15
|
||
```
|
||
|
||
##### Derivative2
|
||
|
||
算法
|
||
|
||
加速度=(2*当日指标-5*一日前指标+4*二日前指标-三日前指标)*100;范例
|
||
|
||
```tsl
|
||
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日的所有年报数量
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return OccuredOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 100);
|
||
// 返回:25
|
||
```
|
||
|
||
###### ContinuedMatchOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例判断2014到2015这两年平安银行年报是否全部存在
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return ContinuedMatchOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
|
||
// 返回:1
|
||
```
|
||
|
||
###### OccuredRepIdOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return OccuredRepIdOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20001231, 20);
|
||
```
|
||
|
||
返回结果:
|
||
|
||
###### SumOfNReport
|
||
|
||
用途:进行数值统计计算。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例计算平安银行2015年报与2014年报营业收入的和
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return SumOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
|
||
// 返回:169570000000
|
||
```
|
||
|
||
###### AvgOfNReport
|
||
|
||
用途:进行数值统计计算。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例返回平安银行2015年报与2014年报营业收入的平均
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return AvgOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
|
||
// 返回:84785000000
|
||
```
|
||
|
||
###### RefReportValue
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例返回平安银行2015年年报营业收入额
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return RefReportValue(@reportofall(46002, GetSysParam('DefaultRepID')), 20161231, 1);
|
||
// 返回:96163000000
|
||
```
|
||
|
||
###### GrowthOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例返回平安银行2014年与2015年报营业收入增长比例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return GrowthOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 1, 1);
|
||
// 返回:34.00
|
||
```
|
||
|
||
###### ACCOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
算法
|
||
|
||
过去N期数据,对期数t的二次方程进行回归,取二次项系数作为业绩增长加速度。以净利润为例,回归公式如下:NPt=
|
||
a*t^2+b*t+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:返回加速度,不标准化
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600519");?
|
||
return ACCOfNReport(@Last12MData(DefaultRepID(), 46078), 20201231, 8, 1);
|
||
// 3004419.44946277
|
||
```
|
||
|
||
范例02:返回加速度,标准化
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600519");
|
||
return ACCOfNReport(@Last12MData(DefaultRepID(), 46078), 20201231, 8, 1, 1); // 0.006
|
||
```
|
||
|
||
###### RobustGrowthOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
算法过去N期的净利润增速均值除以净利润增速标准差,刻画过去一段时间内净利润增速的稳定性,当指标值比较高的时候,表示过去一段时间内上市公司的业绩保持了稳定增长的态势。范例
|
||
|
||
```tsl
|
||
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表示环比报告期范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600519");
|
||
return RobustACCOfNReport(@Last12MData(DefaultRepID(), 9900604), 20201231, 8, 0); // -0.0878801178157446
|
||
```
|
||
|
||
###### HighestOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在22年年报前5个年度报告期最高的总营业收入。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return HighestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
|
||
// 返回:176294715308
|
||
```
|
||
|
||
###### lowestOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在22年年报前5个年度报告期最低的总营业收入。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return lowestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
|
||
// 返回:128402625696
|
||
```
|
||
|
||
###### StandGrowthOfNReport
|
||
|
||
用途:N期相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
算法N期标准化增长率=(当期-去年同期)/过去N期标准差范例
|
||
|
||
```tsl
|
||
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表示环比报告期范例
|
||
|
||
```tsl
|
||
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表示环比报告期范例
|
||
|
||
```tsl
|
||
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(按示例顺序传入)。
|
||
返回:整数。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return HighestOfNDay(@close(), 5);
|
||
// 返回:9.42
|
||
```
|
||
|
||
###### RefValue
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例返回上证指数在2018年7月18号的收盘价
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SH000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return RefValue(@close(), 10);
|
||
// 返回:2787.257
|
||
```
|
||
|
||
###### OccuredOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return OccuredOfNDay(@close(), 10);
|
||
// 返回:10
|
||
```
|
||
|
||
###### GrowthOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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日最小值)范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return SwingOfNDay(@close(), 5, 0);
|
||
// 返回:0.27
|
||
```
|
||
|
||
###### ContinuedMatchOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SH000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return ContinuedMatchOfNDay(@close(), 3);
|
||
// 返回:1
|
||
```
|
||
|
||
###### StdOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return StdOfNDay(@close(), 5);
|
||
// 返回:0.11
|
||
```
|
||
|
||
###### SumOfNDay
|
||
|
||
用途:进行数值统计计算。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例计算平安银行截止2018年8月1日最近10个交易日的成交量和
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return SumOfNDay(@vol(), 10);
|
||
// 结果: 962645765
|
||
```
|
||
|
||
###### LowestOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return LowestOfNDay(@close(), 5);
|
||
// 返回:9.15
|
||
```
|
||
|
||
###### OccuredTimeOfNDay
|
||
|
||
用途:日期时间处理函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:日期或时间值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000063');
|
||
SetSysParam(pn_date(), 20180615t);
|
||
return OccuredTimeOfNDay(@vol(), 10);
|
||
```
|
||
|
||
返回:
|
||
|
||
###### AvgOfNDay
|
||
|
||
用途:进行数值统计计算。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return AvgOfNDay(@close(), 5);
|
||
// 返回:9.292
|
||
```
|
||
|
||
###### GrowthWithHighestOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格N日最大与当前的偏离值。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return GrowthWithHighestOfNDay(@close(), 100, 0);
|
||
// 返回:-2.21
|
||
```
|
||
|
||
###### GrowthWithLowestOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格N日最小与当前的偏离值。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return GrowthWithLowestOfNDay(@close(), 100, 0);
|
||
// 返回:1.82
|
||
```
|
||
|
||
###### TimeOfHighestOfNDay
|
||
|
||
用途:日期时间处理函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:日期或时间值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格最高时间。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return TimeOfHighestOfNDay(@close(), 100);
|
||
// 返回:2023-05-15
|
||
```
|
||
|
||
###### TimeOfLowestOfNDay
|
||
|
||
用途:日期时间处理函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:日期或时间值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格最低时间。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return TimeOfLowestOfNDay(@close(), 100);
|
||
// 返回:2023-07-12
|
||
```
|
||
|
||
###### MedianOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格中位数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return MedianOfNDay(@close(), 100);
|
||
// 返回:26.705
|
||
```
|
||
|
||
###### KurtosisOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格峰度。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return KurtosisOfNDay(@close(), 100);
|
||
// 返回:-0.73
|
||
```
|
||
|
||
###### SkewnessOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SH600585在20231010T的100日价格偏度。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return SkewnessOfNDay(@close(), 100);
|
||
// 返回:-0.65
|
||
```
|
||
|
||
###### CovOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20231010T,SH600585前10日收盘与SH000001收盘的协方差。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return CovOfNDay(@close(), 10, "SH000001");
|
||
// 返回:5.7123
|
||
```
|
||
|
||
###### RSQOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20231010T,SH600585前10日收盘与SH000001收盘的相关系数平方。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return RSQOfNDay(@close(), 10, "SH000001");
|
||
// 返回:0.437
|
||
```
|
||
|
||
###### SteyxOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20231010T,SH600585前10日收盘与SH000001收盘的相对标准偏差。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return SteyxOfNDay(@close(), 10, "SH000001");
|
||
// 返回:13.72035
|
||
```
|
||
|
||
###### SlopeOfNDay2
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20231010T,SH600585前10日收盘与SH000001收盘的回归斜率。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return SlopeOfNDay2(@close(), 10, "SH000001");
|
||
// 返回:20.4608
|
||
```
|
||
|
||
###### CorrelOfNDay2
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20231010T,SH600585前10日收盘与SH000001收盘的相关系数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return CorrelOfNDay2(@close(), 10, "SH000001");
|
||
// 返回:0.661
|
||
```
|
||
|
||
###### InterceptOfNDay2
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return CorrelOfNDay(@stockpjcj3(), @RefValue(@close(), 5), 10, "");
|
||
// 结果:-0.61
|
||
```
|
||
|
||
###### DecayAvgOfNDay
|
||
|
||
用途:进行数值统计计算。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return DecayAvgOfNDay(@close(), 5);
|
||
// 结果:25.61
|
||
```
|
||
|
||
###### DeltaOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return DeltaOfNDay(@close(), 5);
|
||
// 结果:-1.39
|
||
```
|
||
|
||
###### HHVBarsOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231010T);
|
||
return HHVBarsOfNDay(@close(), 10, "");
|
||
// 结果:8
|
||
```
|
||
|
||
###### interceptofNday
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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)范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231030T);
|
||
return SignedPower(@close(), 3);
|
||
// 结果:14402.12
|
||
```
|
||
|
||
###### SlopeofNday
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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)范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231030T);
|
||
return CovarOfNDay(@close(), @open(), 30, "");
|
||
// 结果:0.79
|
||
```
|
||
|
||
###### ProductOfNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231030T);
|
||
return ProductOfNDay(@close(), 3, "");
|
||
// 结果:14359.59
|
||
```
|
||
|
||
###### WmaofNday
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231030T);
|
||
return WmaofNday(@open(), 30, "");
|
||
// 结果:25.04
|
||
```
|
||
|
||
###### SumifofNday
|
||
|
||
用途:进行数值统计计算。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
SetSysParam(pn_date(), 20231030T);
|
||
return SumifofNday(@open(), 30, "@open()>@close()", "");
|
||
// 结果:763.47
|
||
```
|
||
|
||
###### SmaofNDay
|
||
|
||
用途:N日相关函数。
|
||
参数:arg1,arg2,arg3,arg4(按示例顺序传入)。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_bk(), '安徽');
|
||
SetSysParam(pn_date(), 20180801t);
|
||
return SumOfSectorExceptNoTrade(@close());
|
||
// 返回:1261.95
|
||
```
|
||
|
||
###### AvgOfSectorExceptNoTrade
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return SumOfPeriod(@close(), 20180801T, 20180802T);
|
||
// 返回:18.09
|
||
```
|
||
|
||
###### SwingOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
算法
|
||
|
||
振幅=指标区间最大值-指标区间最小值
|
||
|
||
振幅(百分比)=abs(指标区间最大值-指标区间最小值)/(指标区间最小值)范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return SwingOfPeriod(@close(), 20180801T, 20180802T, 0);
|
||
// 返回:0.21
|
||
```
|
||
|
||
###### HighestOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return HighestOfPeriod(@close(), 20180801T, 20180802T);
|
||
// 返回:9.15
|
||
```
|
||
|
||
###### TimeOfHighestOfPeriod
|
||
|
||
用途:日期时间处理函数。
|
||
参数:
|
||
|
||
返回:日期或时间值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return TimeOfHighestOfPeriod(@close(), 20180801T, 20180802T);
|
||
// 返回:2018-08-01
|
||
```
|
||
|
||
###### OccuredOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T上涨次数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return OccuredOfPeriod(@IsUp(), 20230101T, 20231010T);
|
||
// 返回:84
|
||
```
|
||
|
||
###### AvgOfPeriod
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return AvgOfPeriod(@close(), 20180801T, 20180802T);
|
||
// 返回:9.045
|
||
```
|
||
|
||
###### OccuredOfRepPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return OccuredOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018); // 即返回2015年到2018年一季报的数量
|
||
// 返回:4
|
||
```
|
||
|
||
###### ContinuedMatchOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return ContinuedMatchOfPeriod(@close(), 20180801T, 20180803T);
|
||
// 返回:1
|
||
```
|
||
|
||
###### LowestOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return LowestOfPeriod(@close(), 20180801T, 20180803T);
|
||
// 返回:8.91
|
||
```
|
||
|
||
###### AvgOfRepPeriod
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例平安银行2015到2018四个一季报营业收入的平均值
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'sz000001');
|
||
return AvgOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018);
|
||
// 返回:25988750000
|
||
```
|
||
|
||
###### SumOfRepPeriod
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例平安银行2015到2018四个一季报营业收入的和
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'sz000001');
|
||
return SumOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018);
|
||
// 返回:103955000000
|
||
```
|
||
|
||
###### GrowthOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return GrowthOfPeriod(@close(), 20180801T, 20180803T, 1);
|
||
// 返回:-2.62
|
||
```
|
||
|
||
###### TimeOfLowestOfPeriod
|
||
|
||
用途:日期时间处理函数。
|
||
参数:
|
||
|
||
返回:日期或时间值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), 'SZ000001');
|
||
return TimeOfLowestOfPeriod(@close(), 20180801T, 20180802T);
|
||
// 返回:2018-08-02
|
||
```
|
||
|
||
###### HHVBarsOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T最高点到当前的周期数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return HHVBarsOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:153
|
||
```
|
||
|
||
###### LLVBarsOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T最低点到当前的周期数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return LLVBarsOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:58
|
||
```
|
||
|
||
###### HighestOfRepPeriod2
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SZ000001在2020年年报至2022年报的最高营业收入。
|
||
SetSysParam(pn_stock(), "SZ000001");
|
||
return HighestOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
|
||
// 返回:179895000000
|
||
```
|
||
|
||
###### LowestOfRepPeriod2
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SZ000001在2020年年报至2022年报的最低营业收入。
|
||
SetSysParam(pn_stock(), "SZ000001");
|
||
return LowestOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
|
||
// 返回:153542000000
|
||
```
|
||
|
||
###### MedianOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T的价格中位数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return MedianOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:25.78
|
||
```
|
||
|
||
###### PercentRankOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T的价格分位数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return PercentRankOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:0.1476
|
||
```
|
||
|
||
###### SkewnessOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T的价格偏度。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return SkewnessOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:0.1796
|
||
```
|
||
|
||
###### KurtosisOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T的价格峰度。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return KurtosisOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:-0.602
|
||
```
|
||
|
||
###### GrowthOfRepPeriod2
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SZ000001在2020年年报至2022年报的营业收入增长率。
|
||
SetSysParam(pn_stock(), "SZ000001");
|
||
return GrowthOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 1);
|
||
// 返回:17.16
|
||
```
|
||
|
||
###### SumOfRepPeriod2
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SZ000001在2020年年报至2022年报的营业收入和。
|
||
SetSysParam(pn_stock(), "SZ000001");
|
||
return SumOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
|
||
// 返回:502820000000
|
||
```
|
||
|
||
###### AvgOfRepPeriod2
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SZ000001在2020年年报至2022年报的平均营业收入。
|
||
SetSysParam(pn_stock(), "SZ000001");
|
||
return AvgOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
|
||
// 返回:167606666666.667
|
||
```
|
||
|
||
###### StdOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600585在20230101T至20231010T的价格标准差。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return StdOfPeriod(@close(), 20230101T, 20231010T);
|
||
// 返回:2.1048
|
||
```
|
||
|
||
###### StdOfRepPeriod2
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 对SZ000001在2020年年报至2022年报的营业收入标准差。
|
||
SetSysParam(pn_stock(), "SZ000001");
|
||
return StdOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
|
||
// 返回:13265996846.57
|
||
```
|
||
|
||
###### CorrelOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20230901T至20231010T,SH600585收盘与SH000001收盘的相关系数。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return CorrelOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
|
||
// 返回:0.45
|
||
```
|
||
|
||
###### RSQOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20230901T至20231010T,SH600585收盘与SH000001收盘的相关系数平方。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return RSQOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
|
||
// 返回:0.21
|
||
```
|
||
|
||
###### SlopeOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20230901T至20231010T,SH600585收盘与SH000001收盘的回归斜率。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return SlopeOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
|
||
// 返回:21.84
|
||
```
|
||
|
||
###### InterceptOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20230901T至20231010T,SH600585收盘与SH000001收盘的回归截距。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return InterceptOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
|
||
// 返回:2550.63
|
||
```
|
||
|
||
###### CovOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 20230901T至20231010T,SH600585收盘与SH000001收盘的协方差。
|
||
SetSysParam(pn_stock(), "SH600585");
|
||
return CovOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
|
||
// 返回:4.93
|
||
```
|
||
|
||
###### SteyxOfPeriod
|
||
|
||
用途:区间相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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的幂函数范例
|
||
|
||
```tsl
|
||
return RatioValueByType(1, 2, 1, 2);
|
||
// 返回:100
|
||
```
|
||
|
||
###### isValidValue
|
||
|
||
用途:判断条件是否成立。
|
||
参数:
|
||
|
||
返回:布尔值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return isValidValue(10);
|
||
// 返回:1
|
||
```
|
||
|
||
###### FilterSampleByCriterion_Wiz
|
||
|
||
用途:中间函数相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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的幂函数范例
|
||
|
||
```tsl
|
||
return CompositeRatioValue(1, 4, 2);
|
||
// 返回:100
|
||
```
|
||
|
||
###### SimplyRatioValue
|
||
|
||
用途:中间函数相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
算法增长率=(V2-V1)/V1\*100%范例
|
||
|
||
```tsl
|
||
return SimplyRatioValue(1, 2);
|
||
// 返回:100
|
||
```
|
||
|
||
###### isNull
|
||
|
||
用途:判断条件是否成立。
|
||
参数:
|
||
|
||
返回:布尔值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return isNull(0);
|
||
// 返回:1
|
||
```
|
||
|
||
###### isValidPositiveValue
|
||
|
||
用途:判断条件是否成立。
|
||
参数:
|
||
|
||
返回:布尔值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return isValidPositiveValue(1);
|
||
// 返回:1
|
||
```
|
||
|
||
###### ReportValueOfPeriod
|
||
|
||
- RatioValueByType
|
||
- isValidValue
|
||
- FilterSampleByCriterion_Wiz
|
||
- CompositeRatioValue
|
||
- SimplyRatioValue
|
||
- isNull
|
||
- isValidPositiveValue
|
||
- ReportValueOfPeriod
|
||
|
||
##### N季
|
||
|
||
###### 内容
|
||
|
||
- SumOfNReport2
|
||
- AvgOfNReport2
|
||
- StdOfNReport2
|
||
- ACCOfNReport2
|
||
- RobustGrowthOfNReport2
|
||
- RobustACCOfNReport2
|
||
|
||
###### SumOfNReport2
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600000");
|
||
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
|
||
ReportID := 20211231;
|
||
N := 8;
|
||
return SumOfNReport2(Exp, ReportID, N); // 983299000000
|
||
```
|
||
|
||
###### AvgOfNReport2
|
||
|
||
用途:进行数值统计计算。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600000");
|
||
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
|
||
ReportID := 20211231;
|
||
N := 8;
|
||
return AvgOfNReport2(Exp, ReportID, N); // 122912375000
|
||
```
|
||
|
||
###### StdOfNReport2
|
||
|
||
用途:N季相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600000");
|
||
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
|
||
ReportID := 20211231;
|
||
N := 8;
|
||
return StdOfNReport2(Exp, ReportID, N); // 56286669451.8528
|
||
```
|
||
|
||
###### ACCOfNReport2
|
||
|
||
范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600000");
|
||
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
|
||
ReportID := 20211231;
|
||
N := 8;
|
||
return RobustACCOfNReport2(Exp, ReportID, N); // -0.2568
|
||
```
|
||
|
||
###### RobustGrowthOfNReport2
|
||
|
||
用途:N季相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600000");
|
||
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
|
||
ReportID := 20211231;
|
||
N := 8;
|
||
return RobustGrowthOfNReport2(Exp, ReportID, N); // -0.3269
|
||
```
|
||
|
||
###### RobustACCOfNReport2
|
||
|
||
用途:N季相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600519,2022年报营业收入在沪深300成分股的分位排名。
|
||
endt := 20221231T;
|
||
SetSysParam(pn_stock(), "SH600519");
|
||
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
|
||
return PercentRankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231);
|
||
// 返回:0.7525
|
||
```
|
||
|
||
###### PercentRankOftheDay3
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// SH600519,2022年报营业收入在沪深300成分股的排名。
|
||
endt := 20221231T;
|
||
SetSysParam(pn_stock(), "SH600519");
|
||
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
|
||
return RankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
|
||
// 返回:75
|
||
```
|
||
|
||
###### RankOftheDay3
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600519");
|
||
SetSysParam(Pn_date(), 20231010T);
|
||
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
|
||
return IndNeutralize(@open(), 0, "");
|
||
// 结果:1735.87966666667
|
||
```
|
||
|
||
###### IndNeutralize2
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
SetSysParam(pn_stock(), "SH600519");
|
||
SetSysParam(Pn_date(), 20231010T);
|
||
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
|
||
return IndNeutralize2(@open(), 0, "");
|
||
// 结果:1735.87966666667
|
||
```
|
||
|
||
###### PercentRankOftheDay
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return CacheStrMerge('1', 2, 20231020T);
|
||
// 结果:["1"][2][45219]
|
||
```
|
||
|
||
####### pn_StockArrName
|
||
|
||
用途:当日相关函数。
|
||
参数:无。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return pn_StockArrName();
|
||
// 结果:CurrentStockArrName
|
||
```
|
||
|
||
####### GetParm_StockArr_ByEndt
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:
|
||
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
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
|
||
|
||
用途:当日相关函数。
|
||
参数:无。
|
||
返回:处理后的结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return pn_StockArrFunc();
|
||
// 结果:CurrentStockArrFunc
|
||
```
|
||
|
||
##### StockTrailingAvgByEndT
|
||
|
||
范例
|
||
|
||
范例01
|
||
|
||
```tsl
|
||
// 获取万科A过去1年的日均成交金额
|
||
setsysparam(pn_stock(), "SZ000002");
|
||
endt := 20210714t;
|
||
RefType := 4; // 过去1年
|
||
exp := "Amount()";
|
||
return StockTrailingAvgByEndT(Endt, RefType, Exp);
|
||
// 2172484158.52
|
||
```
|
||
|
||
范例02
|
||
|
||
```tsl
|
||
// 获取厦门银行过去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
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 获取万科A过去1年的日收益率标准差
|
||
setsysparam(pn_stock(), "SZ000002");
|
||
endt := 20210714t;
|
||
RefType := 4; // 过去1年
|
||
exp := "stockzf3()";
|
||
return StockTrailingStdByEndT(Endt, RefType, Exp); // 1.69
|
||
```
|
||
|
||
#### 条件判定
|
||
|
||
##### 内容
|
||
|
||
- IsTimePeriodInfoId
|
||
|
||
##### IsTimePeriodInfoId
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IsTimePeriodInfoId(150003);
|
||
// 结果:1
|
||
```
|