# TSL 函数参考（Function Reference）

本章从天软金融分析 .NET 函数大全整理而来，保留原始函数说明结构。

> ⚠️
> **重要提示**：由于函数数量庞大（22万+行），已按功能模块拆分为多个文件。建议使用编辑器的全局搜索功能查找特定函数。

## 快速导航

### 核心函数库

- **[01 TSL函数](./01_tsl_functions.md)** - 数学、系统、基础、图形等通用函数
  - 详细内容：[tsl/index.md](./tsl/index.md) (10个子文件，34,113行)
- **[02 金融函数](./02_financial_functions.md)** - 股票、行情、技术分析、财务等金融专用函数
  - 详细内容：[financial/index.md](./financial/index.md) (23个子文件，169,893行)
- **[03 数据仓库函数](./03_datawarehouse.md)**
  (7,270行) - 数据查询、时间序列、市场板块函数

### 专业领域

- **[算法交易支撑函数](./04_algo_trading.md)**
  (2,913行) - 算法交易服务器支撑、交易开发类
- **[服务器交互函数](./05_server_interaction.md)**
  (312行) - 连接、登录、执行、订阅等服务器交互
- **[文档处理函数](./06_document_processing.md)** (10,790行) -
  Office访问、Excel/Word/PDF处理、图片导出
- **[金融报表分析](./10_financial_reports.md)**
  (10,382行) - 个股、板块、基金、债券报表分析

### 开发工具

- **[CGI控制台相关函数](./07_cgi_console.md)** (185行) - CGI输入输出、环境变量
- **[GUI函数](./08_gui.md)** (1,244行) - 消息对话框、图形界面交互
- **[TSL编译工具](./09_compiler.md)** (936行) - 编译范围、TSL指令、依赖关系
- **[Web开发支撑](./11_web_development.md)** (747行) - TSL的Web支持、Web Tools

## 使用建议

1. **新手入门**：从 [TSL函数 → 基础函数](./tsl/base.md) 开始
2. **金融分析**：查阅 [金融函数](./financial/index.md)
3. **搜索函数**：使用编辑器全局搜索 `function/` 目录（推荐使用 `Ctrl+Shift+F` 或
   `Cmd+Shift+F`）
4. **API查询**：按功能模块浏览对应文件

## 拆分说明

原 `function.md` 文件有 221,389 行，已拆分为：

- **9个独立章节文件**（数据仓库、算法交易、服务器交互等）
- **TSL函数** → 10个子文件（数学、基础、系统等）
- **金融函数** → 23个子文件（股票、行情、技术分析等）

共计 **42个独立文件**，便于浏览和维护。

---

<details>
<summary>📖 函数使用说明（点击展开）</summary>

## 类型声明说明

注意:

1. **类型声明**：TSL的函数定义无需参数类型声明，也无需返回类型声明，在以下函数说明里，我们采用了PASCAL的函数声明模式，只是为了让用户更容易地理解各个函数的具体含义和对参数的要求。

2. **VAR**：在函数参数声明中，有的使用了VAR作为前缀，这表示该函数会修改该VAR管辖的定义域内的参数，如果没有VAR前缀，则表示其变量不会被该函数修改。在TSL中，所有的函数变量都是允许被修改的，也不支持VAR前缀。

## 表达式类型说明

3. **表达式类型**：许多系统函数的参数类型是表达式类型，系统为了方便用户使用，这些参数并不需要使用表达式类型，而只需要使用表达式语句，TSL语言会直接为用户将表达式语句转换为表达式类型，典型函数如:Spec,SpecDate,Ma,hhv,llv等，例如我们要求SZ000001的收盘价，我们使用
   `Spec('SZ000001',Close())` 而不是
   `Spec('SZ000001',@Close())`，如果我们由于应用需要而必需使用表达式类型变量，我们可以配合使用Eval函数，例如exp为表达式类型，其值为@Close()，我们可以
   `Spec('SZ000001',eval(exp))`
   来求值;一般地，在系统函数里，除了isExp，eval等明显必需使用表达式类型作为参数的函数以外，大部分符合以上规则。

4. **重名函数**：TSL并不支持用户函数重名，如果存在用户函数与其他类型函数重名，则用户函数优先。在以下文档中，有函数重名现象，这表示该系统函数有多种参数模式。

</details>

---

**原始文档**：本文档由 221,389 行的 `function.md` 拆分而来，原始大文件不在当前仓库保留；如需查看，请从历史版本获取。
