📦 deps(tsl): sync tsl-playbook from 49e6dadc

Source-Commit: 49e6dadc60
This commit is contained in:
ci[bot]
2026-07-20 01:42:42 +00:00
parent 713671152c
commit 9fedb2cf7f
61 changed files with 27118 additions and 25747 deletions
File diff suppressed because it is too large Load Diff
@@ -1,108 +0,0 @@
# Builtin - 基础 / 表达式与动态调用
## `fn_MainAndSubFunc()`
函数的定义与调用教学函数。函数本身调用了另外一个累积求和的函数,返回0到9的累积求和。
返回:any
## `fn_Func2(bkname)`
getbk()函数教学函数。返回Bkname板块的所有股票。
| 参数 | 类型 | 说明 |
| -------- | ------ | -------- |
| `bkname` | string | 系统板块 |
返回:any
## `fn_CallByPara()`
函数的定义与调用教学函数。函数本身定义了一个整数a=1,调用另一个函数使得a自加1。
返回:any
## `fn_CallByParaSub(a)`
TSL基本函数教学函数。函数对传入的参数自加1,本身不返回任何值。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `a` | any | 整数 |
返回:any
## `fn_Main(begt, endt)`
TSL基本函数教学函数。获得板块‘深圳A股’股票序列中各股票在Begt至EndT的换手率与涨幅。
| 参数 | 类型 | 说明 |
| ------ | -------- | -------------- |
| `begt` | datetime | 日期,开始日期 |
| `endt` | datetime | 日期,截止日期 |
返回:any
## `fc_tryExcept()`
Try-Except教学函数。对字符串‘3.2’进行整形转字符串,如果捕获到错误,则抛出异常'类型转换错误'。
返回:string
## `fc_Raise(a)`
Raise教学函数。参数a和0比较大小,如果a大于0则返回a的值,否则弹出 异常信息'a不能小于0'。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `a` | any | real |
返回:any
## `fc_DebugReturn()`
DebugReturn教学函数。调试返回,后面跟返回值,可在任何地方直接将结果返回到客户端,而不是象RETURN一样返回到上一级别,这有助于用户调试使用。
返回:any
## `fc_break()`
循环语句教学函数。对nI自1向10000自乘,当自乘值大于10000时结束循环,返回nI的值。
返回:any
## `fc_while()`
while循环语句教学函数。对i自1向99累加到初始值为1的sum,返回sum。
返回:any
## `fc_continue()`
continue循环语句教学函数。对i自0向100累积求和,若遇到偶数则跳出本次循环,返回0到100的奇数和。
返回:any
## `fc_For()`
for循环语句教学函数。对数组array(1,2,3)遍历,返回累积求和值。
返回:array
## `fCallBack()`
字符串或函数指针,call事件回调函数;未指定时,必须重写CallBack方法
返回:any
## `callBack(name, param, realdata)`
虚方法,TS-OPS服务端call事件处理函数;若未指定FCallBack,则必须重写该方法
| 参数 | 类型 | 说明 |
| ---------- | ----------------- | ---- |
| `name` | string\|tfunction | |
| `param` | array | |
| `realdata` | array | |
返回:array,tablearray
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -2,24 +2,6 @@
## 类型转换
### `floatN(r, n)`
使用银行家算法进行四舍五入,精确到10Adigit位。“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一”
| 参数 | 类型 | 说明 |
| ---- | ------- | ------------------------ |
| `r` | real | 实数 |
| `n` | integer | 整型数据,保留的小数位数 |
返回:real
#### 示例
```tsl
return floatN(12.6578, 2);
// 结果:12.66
```
### `dataType(data, n)`
根据Data的数据类型返回对应的值。当Data为数组时,N生效,支持对数组中的每个维度或每个单元格进行数据类型的判断。
@@ -33,25 +15,38 @@ return floatN(12.6578, 2);
#### 示例
范例01:当参数为数组型变量时,返回数组类型对应的整数 5
```tsl
// 当参数为数组型变量时,返回数组类型对应的整数5。
a := Array(34, 12); // 定义a为一个数组
result := dataType(a);
return result; // 5
// 当参数为整数型变量时,返回整数类型对应的整数0。
return result;
// 输出:5
```
范例02:当参数为整数型变量时,返回整数类型对应的整数 0
```tsl
a := 23; // 定义a为一个整数
result := dataType(a);
return result; // 0
// 对数组第一维度数据进行类型判断
return result;
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.14, "A", (1, 2, 3), nil);
return dataType(t, -1);
// 输出:
// 对数组中每一数据进行类型判断
// 输出:array(0,1,2,5,10)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3.14, "A", (1, 2, 3), nil);
return dataType(t, 1);
// 输出:
// array(0,1,2,
// (0,0,0),10)
// 输出:array(0,1,2,(0,0,0),10)
```
### `createBinary(len)`
@@ -86,161 +81,6 @@ return dataType(t, 1);
返回:bool
### `DataBaseRatioId_Jy()`
Jy常用的财务比率分析数据
返回:array
### `DataBaseRatioId_Wind()`
Wind常用的财务比率分析数据
返回:array
### `DataBaseRatioId_Tinysoft(id)`
Tinysoft常用的财务比率分析数据
| 参数 | 类型 | 说明 |
| ---- | ---- | -------- |
| `id` | any | 整数类型 |
返回:array
### `DataBaseRatioId_tdhy()`
泰达荷银-常用的财务数据
返回:array
### `DataBaseRatioId_Jy2(id)`
Jy常用的财务比率分析数据
| 参数 | 类型 | 说明 |
| ---- | ---- | -------- |
| `id` | any | 整数类型 |
返回:array
### `DataBaseRatioId_Ht(id)`
海通常用的财务比率分析数据
| 参数 | 类型 | 说明 |
| ---- | ---- | -------- |
| `id` | any | 整数类型 |
返回:array
### `DataBaseRatioId_Genius(id)`
Genius常用的财务比率分析数据
| 参数 | 类型 | 说明 |
| ---- | ---- | -------- |
| `id` | any | 整数类型 |
返回:array
### `DataBaseRatioId_Wind2()`
Wind常用的财务比率分析数据
返回:array
### `DataBaseRatioId_ghjj()`
国海基金-常用的财务数据
返回:array
### `DataBaseRatioId_nfjj()`
南方基金-常用的财务数据
返回:array
### `IF_1(c)`
条件语句if教学函数。传入参数C,如果C大于10则返回整数20,否则返回10。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `c` | float | 实数 |
返回:any
### `IF_2(q)`
条件语句if教学函数。传入参数q,对q的值进行判断来返回相应的字符串。
| 参数 | 类型 | 说明 |
| ---- | ----- | ---- |
| `q` | float | 实数 |
返回:string
### `IF_3(a)`
条件语句if教学函数。传入参数a,对a的值进行判断来返回相应的字符串。
| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `a` | any | 整数 |
返回:string
### `createComObj(guid, obj)`
创建COM对象。如果创建成功则返回真,否则返回假。
| 参数 | 类型 | 说明 |
| ------ | ------ | ---------------- |
| `guid` | string | 对象的类GUID串。 |
| `obj` | object | 保存创建的对象。 |
返回:bool
### `dataisequal(v1, v2)`
判断2个变量是否相等
| 参数 | 类型 | 说明 |
| ---- | ---- | -------------- |
| `v1` | any | 任意类型,变量1 |
| `v2` | any | 任意类型,变量2 |
返回:bool
### `DataProcess_MF(arr, fwm)`
极值处理(多因子),对数据表以列为单位处理奇异值。其中arr为数据表,fwm为处理方法。
| 参数 | 类型 | 说明 |
| ----- | ------ | -------------------- |
| `arr` | array | 数据表类型 |
| `fwm` | string | 用户自定义,处理方法 |
返回:any
### `create(url, header, onmessage, u, p, s, reconn)`
构造方法
| 参数 | 类型 | 说明 |
| ----------- | --------- | --------------------------------------------------------------- |
| `url` | string | TS-OPS服务注册地址 |
| `header` | string | TS-OPS服务注册时需要指定的头部信息,比如TS-OPS-CALL等 |
| `onmessage` | tfunction | 消息处理过程,指向一个函数。可通过Findfunction("函数名")产生 |
| `u` | string | 用户名 |
| `p` | string | 用户密码 |
| `s` | string | 租户Session Key;使用特殊租户(调用功能列表为\*)替代用户时指定 |
| `reconn` | bool | 是否启用断开自动重连机制 |
返回:any
### `ifInt(value, n)`
判断value是否是一个32位整数类型。可通过可选参数N对数组中的行或元素进行判断。
@@ -263,7 +103,7 @@ r2 := ifInt(3.14);
r3 := ifInt("A");
r4 := ifInt(array(1, 2, 3));
return array(r1, r2, r3, r4);
// 结果array(1,0,0,0)
// 输出array(1,0,0,0)
```
范例二:
@@ -272,7 +112,7 @@ return array(r1, r2, r3, r4);
// 对数组第一维度数据进行类型判断
t := array(1, 3.14, "A", (1, 2, 3), nil);
return ifInt(t, -1);
// 结果array(1,0,0,0,0)
// 输出array(1,0,0,0,0)
```
范例三:
@@ -281,7 +121,7 @@ return ifInt(t, -1);
// 对数组中每一数据进行类型判断
t := array(1, 3.14, "A", (1, 2.1, 3), nil);
return ifInt(t, 1);
// 结果array(1,0,0,(1,0,1),0)
// 输出array(1,0,0,(1,0,1),0)
```
### `ifInt64(value, n)`
@@ -297,21 +137,36 @@ return ifInt(t, 1);
#### 示例
范例01:当参数为长整型变量时,返回 1
```tsl
// 当参数为整数类型变量时,返回true。
a := 23L; // 定义a为一个64位整数
return ifInt64(a);
// 当参数为非整数型变量时,返回false。
// 输出:1
```
范例02:当参数为非长整型变量时,返回 0
```tsl
a := 2.3; // 定义a为一个非64位整数
return ifInt64(a);
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3L, "A", (1, 2, 3), nil);
return ifInt64(t, -1);
// 结果array(0,1,0,0,0)
// 对数组中每一数据进行类型判断
// 输出array(0,1,0,0,0)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3L, "A", (1, 2L, 3), nil);
return ifInt64(t, 1);
// 结果array(0,1,0,(0,1,0),0)
// 输出array(0,1,0,(0,1,0),0)
```
### `ifReal(value, n)`
@@ -327,23 +182,38 @@ return ifInt64(t, 1);
#### 示例
范例01:当参数为实数类型变量时,返回 1
```tsl
// 当参数为实数类型变量时,返回true。
a := 2.233; // 定义a为一个实数
result := ifReal(a);
return result;
// 当参数为非整数型变量时,返回false。
// 输出:1
```
范例02:当参数为非实数类型变量时,返回 0
```tsl
a := array(23, 54, 67); // 定义a为一个非实数
result := ifReal (a);
result := ifReal(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.56, "A", (1, 2, 3), nil);
return ifInt64(t, -1);
// 结果array(0,1,0,0,0)
// 对数组中每一数据进行类型判断
return ifReal(t, -1);
// 输出array(0,1,0,0,0)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3.56, "A", (1, 2.14, 3), nil);
return ifInt64(t, 1);
// 结果array(0,1,0,(0,1,0),0)
return ifReal(t, 1);
// 输出array(0,1,0,(0,1,0),0)
```
### `ifNumber(value, n)`
@@ -359,23 +229,38 @@ return ifInt64(t, 1);
#### 示例
范例01:当参数为数字类型(整数或者实数)变量时,返回 1
```tsl
// 当参数为数字类型(整数或者实数)变量时,返回true。
a := 2.233; // 定义a为一个实数
result := ifNumber (a);
result := ifNumber(a);
return result;
// 当参数为非数字类型(整数或者实数)变量时,返回false。
// 输出:1
```
范例02:当参数为非数字类型变量时,返回 0
```tsl
a := array(23, 54, 67); // 定义a为一个非数字类型
result := ifNumber (a);
result := ifNumber(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.56, "A", (1, 2, 3), nil);
return ifNumber(t, -1);
// 结果array(1,1,0,0,0)
// 对数组中每一数据进行类型判断,nan也为数字类型
// 输出array(1,1,0,0,0)
```
范例04:对数组中每一数据进行类型判断,nan 也为数字类型
```tsl
t := array(1, 3.56, "A", (nan, 2.14, "C"), nil);
return ifNumber(t, 1);
// 结果array(1,1,0,(1,1,0),0)
// 输出array(1,1,0,(1,1,0),0)
```
### `ifString(value, n)`
@@ -391,23 +276,38 @@ return ifNumber(t, 1);
#### 示例
范例01:当参数为字符串类型变量时,返回 1
```tsl
// 当参数为字符串类型变量时,返回true。
a := 'test'; // 定义a为一个字符串
result := ifString (a);
result := ifString(a);
return result;
// 当参数为非字符串类型变量时,返回false。
// 输出:1
```
范例02:当参数为非字符串类型变量时,返回 0
```tsl
a := array(23, 54, 67); // 定义a为一个非字符串
result := ifString (a);
result := ifString(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.56, "A", (1, 2, 3), nil);
return ifString(t, -1);
// 结果array(0,0,1,0,0)
// 对数组中每一数据进行类型判断
// 输出array(0,0,1,0,0)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3.56, "A", (nan, 2.14, "C"), nil);
return ifString(t, 1);
// 结果array(0,0,1,(0,0,1),0)
// 输出array(0,0,1,(0,0,1),0)
```
### `ifArray(value, n)`
@@ -423,23 +323,38 @@ return ifString(t, 1);
#### 示例
范例01:当参数为数组类型变量时,返回 1
```tsl
// 当参数为数组类型变量时,返回true。
a := array(23, 54, 67); // 定义a为一个数组
result := ifArray (a);
result := ifArray(a);
return result;
// 当参数为非数组类型变量时,返回false。
// 输出:1
```
范例02:当参数为非数组类型变量时,返回 0
```tsl
a := 34; // 定义a为一个非数组
result := ifArray (a);
result := ifArray(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.56, "A", (1, "C", 3.14), nil);
return ifArray(t, -1);
// 结果array(0,0,0,1,0)
// 对数组中每一数据进行类型判断
// 输出array(0,0,0,1,0)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3.56, "A", (nan, 2.14, "C"), nil);
return ifArray(t, 1);
// 结果array(0,0,0,(0,0,0),0)
// 输出array(0,0,0,(0,0,0),0)
```
### `ifNil(value, n)`
@@ -455,22 +370,37 @@ return ifArray(t, 1);
#### 示例
范例01:当参数为空时,返回 1
```tsl
// 参数为空时,返回true。
result := ifNil (nil); // 函数参数为空
result := ifNil(nil); // 函数参数为空
return result;
// 当参数不为空时,返回false。
// 输出:1
```
范例02:当参数不为空时,返回 0
```tsl
a := 34; // 函数参数不为空
result := ifNil (a);
result := ifNil(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.16, "A", (nil, "C", 3.14), nil);
return ifNil(t, -1);
// 结果array(0,0,0,0,1)
// 对数组中每一数据进行类型判断
// 输出array(0,0,0,0,1)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3.56, "A", (nil, 2.14, "C"), nil);
return ifNil(t, 1);
// 结果array(0,0,0,(1,0,0),1)
// 输出array(0,0,0,(1,0,0),1)
```
### `ifExp(value, n)`
@@ -486,23 +416,38 @@ return ifNil(t, 1);
#### 示例
范例01:当参数是一个表达式类型时,返回 1
```tsl
// 当参数是一个表达式类型时,返回true。
a := @'dfhdv'+'dbf'; // 函数参数a为一个表达式
result := ifExp (a);
result := ifExp(a);
return result;
// 当参数不是一个表达式类型时,返回false。
// 输出:1
```
范例02:当参数不是一个表达式类型时,返回 0
```tsl
a := 'sdhv'+'dbf'; // 函数参数a不为表达式
result := ifExp (a);
result := ifExp(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
t := array(1, 3.16, @"A", (nil, @"C", 3.14), nil);
return ifExp(t, -1);
// 结果array(0,0,1,0,0)
// 对数组中每一数据进行类型判断
// 输出array(0,0,1,0,0)
```
范例04:对数组中每一数据进行类型判断
```tsl
t := array(1, 3.56, @"A", (nil, 2.14, @"C"), nil);
return ifExp(t, 1);
// 结果array(0,0,1,(0,0,1),0)
// 输出array(0,0,1,(0,0,1),0)
```
### `ifBinary(value, n)`
@@ -518,25 +463,40 @@ return ifExp(t, 1);
#### 示例
范例01:当参数是一个二进制类型时,返回 1
```tsl
// 当参数是一个二进制类型时,返回true。
a := binary('111111'); // 函数参数a为二进制类型
result := ifBinary (a);
result := ifBinary(a);
return result;
// 当参数不是一个二进制类型时,返回false。
// 输出:1
```
范例02:当参数不是一个二进制类型时,返回 0
```tsl
a := 'sdhv'; // 函数参数a不为二进制类型
result := ifBinary (a);
result := ifBinary(a);
return result;
// 对数组第一维度数据进行类型判断
// 输出:0
```
范例03:对数组第一维度数据进行类型判断
```tsl
b := binary("3.14");
t := array(1, b, "A", (nil, b, 3.14), nil);
return ifBinary(t, -1);
// 结果array(0,1,0,0,0)
// 对数组中每一数据进行类型判断
// 输出array(0,1,0,0,0)
```
范例04:对数组中每一数据进行类型判断
```tsl
b := binary("3.14");
t := array(1, b, "A", (nil, 2.14, b), nil);
return ifBinary(t, 1);
// 结果array(0,1,0,(0,0,1),0)
// 输出array(0,1,0,(0,0,1),0)
```
### `ifFmarray(value)`
@@ -574,16 +534,23 @@ return ifBinary(t, 1);
#### 示例
范例01:当参数是一个图形类型时,返回 1
```tsl
// 当参数是一个图形类型时,返回true。
g_data := nDay2('MA5' , ma( close() , 5 ) );
g1 := graph( gtLine() , "MA5" , gdata , gfColor() , clBlue() );
result := ifGraph (g1);
g_data := nDay2('MA5', ma(close(), 5));
g1 := graph(gtLine(), "MA5", g_data, gfColor(), clBlue());
result := ifGraph(g1);
return result;
// 当参数不是一个图形类型时,返回false。
// 输出:1(该示例依赖行情与图表运行环境,命令行解释器下无法构造图形对象)
```
范例02:当参数不是一个图形类型时,返回 0
```tsl
a := 'sdhv'+'dbf'; // 函数参数a不为图形类型
result := ifGraph (a);
result := ifGraph(a);
return result;
// 输出:0
```
### `ifGraphgroup(value, n)`
@@ -599,21 +566,27 @@ return result;
#### 示例
范例01:当参数是一个图形组合类型时,返回 1
```tsl
// 当参数是一个图形组合类型时,返回true。
vol_data := nDay2(gfVol() , vol() , gfColor() , ifThen ( close() > open() , clRed() , clGreen() ) );
mavol := nDay2('MA5', ma ( vol() , 5 ) );
vol_data := nDay2(gfVol(), vol(), gfColor(), ifThen(close() > open(), clRed(), clGreen()));
mavol := nDay2('MA5', ma(vol(), 5));
vol_graph := graph(gtBar(), 'VOLGraph', vol_data);
mavol_graph := graph(gtLine(), 'MA5Graph', mavol, gfColor(), clBlue());
g1 := graphGroup(vol_graph, mavol_graph, gfMinValue(), 0);
// 调用函GraphGroup创建一个图形组合类型变量g1
result := ifGraphGroup (g1);
g1 := graphGroup(vol_graph, mavol_graph, gfMinValue(), 0); // 用GraphGroup创建图形组合类型变量g1
result := ifGraphGroup(g1);
return result;
g_data := nDay2('MA5' , ma( close() , 5 ) );
g1 := graph( gtLine() , "MA5" , gdata , gfColor() , clBlue() );
result := ifGraphGroup (g1);
// 输出:1(该示例依赖行情与图表运行环境,命令行解释器下无法构造图形组合对象)
```
范例02:当参数是图形(非图形组合)类型时,返回 0
```tsl
g_data := nDay2('MA5', ma(close(), 5));
g1 := graph(gtLine(), "MA5", g_data, gfColor(), clBlue());
result := ifGraphGroup(g1);
return result;
// 返回0
// 输出:0(该示例依赖行情与图表运行环境,命令行解释器下无法构造图形对象)
```
### `ifMatrix(value, n)`
@@ -629,15 +602,22 @@ return result;
#### 示例
范例01:当参数是一个Matrix类型时,返回 1
```tsl
// 当参数是一个Matrix类型时,返回true。
a := createMatrix(3, 4); // 使用CreateMatrix创建一个Matrix类型变量
result := ifMatrix (a);
result := ifMatrix(a);
return result;
// 当参数不是一个Matrix类型时,返回false。
// 输出:1
```
范例02:当参数不是一个Matrix类型时,返回 0
```tsl
a := 'sdhv'; // 函数参数a不为Matrix类型
result := ifMatrix (a);
result := ifMatrix(a);
return result;
// 输出:0
```
### `ifObj(value, n)`
@@ -653,8 +633,9 @@ return result;
#### 示例
范例01:当参数是一个对象类型时,返回 1
```tsl
// 当参数是一个对象类型时,返回true。
type function14=class() // 声明类
function SetName(new_name);
begin
@@ -662,12 +643,18 @@ name := new_name;
end;
end;
obj := CreateObject('Function14'); // 使用CreateObject函数创建上面类Function14的对象
result := ifObj (obj);
result := ifObj(obj);
return result;
// 当参数不是一个对象类型时,返回false。
// 输出:1(该示例依赖对象运行环境,命令行解释器下无法构造类对象)
```
范例02:当参数不是一个对象类型时,返回 0
```tsl
a := 'sdhv'; // 函数参数a不为对象类型
result := ifObj (a);
result := ifObj(a);
return result;
// 输出:0
```
### `getOleObject(class_name, method, obj)`