收藏 分享(赏)

天软金融分析平台及TSL语言培训大纲.doc

上传人:gnk289057 文档编号:6122077 上传时间:2019-03-28 格式:DOC 页数:21 大小:155KB
下载 相关 举报
天软金融分析平台及TSL语言培训大纲.doc_第1页
第1页 / 共21页
天软金融分析平台及TSL语言培训大纲.doc_第2页
第2页 / 共21页
天软金融分析平台及TSL语言培训大纲.doc_第3页
第3页 / 共21页
天软金融分析平台及TSL语言培训大纲.doc_第4页
第4页 / 共21页
天软金融分析平台及TSL语言培训大纲.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、天软金融分析平台及 TSL 语言培训大纲建立模型从创建函数开始什么是 TSL 语言执行的开始?Pascal 有 Program,C 语言有 Main 函数,TSL 语言没有这些限制,TSL 语言可以从任何一个函数开始执行,所以任何函数都可以成为一个应用或者模型。怎么开始编写函数在管理器中建立函数分类以及函数,无论函数目录是什么,建立的这些函数都是全局函数,可以被任何其他函数所直接调用,而不需要引入,因此在这里边建立的函数均不能同名。在全局函数体里还可以自己添加新的函数,这些函数的包括头部信息,参数信息均由用户自己写。这些函数允许重名,但是只可在当前的函数体内调用,属于局部函数。函数添加参数建立

2、的函数无法直接增加参数,需要使用函数编辑器中的右端功能来添加参数。函数的参数类型简单类型,如整数,实数,字符串,布尔型,各种数组等。其他有些特殊类型大多实际是一种简单类型,只是和业务相关,例如市场板块,证券,用户数据等均为字符串类型。市场板块的参数类型,并不代表市场板块里的股票,而只是表示版块名这个字符串。其他的类似的数据类型也是如此。报告期数据类型,是一个整数类型,例如整数 20081231 是 2008 年年报。用户自定义类型,是一种最特殊的数据类型。由显示的字符串和实际的值两个字段组成,是一个下拉组合框,显示的部分就是下拉框的显示内容,值可以是任何的简单类型,也可以是一个计算,也可以是一

3、个函数调用。理解天软的全局函数需要定义参数类型为什么天软的全局函数需要定义参数类型,不能自己写?参数的类型是为了不需要定义运行界面,可以直接根据参数的类型显示交互界面,局部函数以及类函数等不需要使用界面定义类型。仅仅有且只有全局函数需用界面来定义参数类型。函数的返回结果的显示在平台上编写模型和指标,不需要开发输出界面,直接返回即可。客户端会根据返回的数据类型显示,这些类型包括简单类型,也包括数组,同时也包括 TSL 支持的图形类型数据。此外,利用结果显示的图形功能,可以利用数组类型结果做出折线,柱状,散点图等等图形,支持双轴图,也支持混合图形等。理解我们的客户端结果类型里的研究功能,所有的结果

4、数据处理的功能均由 TSL 扩展而成,用户均可以扩展。如何更快速地进行函数编辑以及查阅函数在黑体的函数名上点鼠标右键,可以查看源代码。可以敲入要引用的函数名的前几个字母,然后连续按下两次 CTRL,可以自动查找出所有以此开头的所有的函数。在系统函数的黑体上或者其他关键字上,点击 F1 键可以获得语言帮助。语言语言的简述语言是类 Object pascal 的语言,也就是说,在语法上与 pascal 有最大的相似度,面向对象的方面与 Object pascal 很类似。语言具备 return,?表达式,+,-等类 C 语言语法。语言具备表达式类型等脚本语言特性,可以利用 eval 等函数对表达式

5、进行求值运算。语言内置了类 SQL 的语法支持,可支持对数组结构、天软数据仓库、以及外部数据库进行查询以及其他处理,熟悉 SQL 语法的用户也可以很容易使用,而且 TSL 类 SQL 语法和 TSL 语法是融为一体的,可以调用 TSL 的所有函数,还支持时间序列等金融分析所必需具备的功能。语言内置支持 COM,可以很容易和其他支持 COM 的软件打交道。语言支持 WEB 开发。语言支持 WORD 模板开发。语言具备对 EXCEL VBA 的支持,同时支持 MATLAB 等其他软件。语言支持 WEBSERVICE,对.NET 以及 J2EE 等应用开发提供支持。数据类型为弱类型,每个变量的数据类

6、型运行时相关。语言一些特点变量不需要事先声明变量的名称大小写无关赋值语句为 :=,在 TSL 语言中=仅仅只是作为条件判断,类似于 C 语言中的=。语句要以;结尾语句段以 begin end 封装函数的返回返回使用 return,函数返回结果只可返回一个结果,不像 MATLAB可以同时返回多个,但可以使用变参的方式返回多个内容,也可以利用数组来打包多个结果的返回。注释采用 (* *) 或者单行注释 /由于支持(*),所以 TSL 语言支持的类 SQL 语法中的类似于 SQL 的 count(*)的countof(*)不能直接这么写,而要在(和*之间用空格隔开,例如 countof( * )。运

7、算符算术运算符运算符 运算 运算对象 结果类型+ 加,正号,可为一元或者二元运算符整型、实型、字符串- 减,负号,可为一元或者二元运算符整型、实型* 乘 整型、实型/ 除 整型、实型只要有一个运算对象是实型,结果就是实型,如果全部的运算对象都是整型并且运算不是除法,则结果为整型,若运算是除法,则结果是实型%,Mod 取余 整型 整型Div 除取整 整型、实型 整型+ 加 1,一元运算符 实型 实型- 减 1,一元运算符 实型 实型逻辑运算符运算符 运算 运算对象 结果类型Not 逻辑非,一元运算符布尔型 布尔型And 逻辑与 布尔型 布尔型Or 逻辑或 布尔型 布尔型关系运算符运算符 运算 运

8、算对象 结果类型= 等于 简单类型 布尔型0.5 order by “ABCD” end;Return B;JOINA:=Array();B:=array();For i:=0 to 99 dobeginAi“ABCD”:=Random();Ai“INDEX”:=i;Bi“ABCD”:=random();Bi“INDEX”:=i;End;Return Select * from A join B On 1.“INDEX” = 2.“INDEX” end;WITH ON一个 On 运算符在 JOIN 的时候的计算复杂度为两个运算的表的元素个数相差,是一个N*M 的复杂度。事实上,绝大多数 JOI

9、N 是可以优化的。我们 TSL 里支持 WITH ON 语法,使得计算复杂度降低到 N+M 的关系。Return Return Select * from A Join B with(1.“INDEX” On 2.“INDEX”) end;倘若有多个字段需要相等,那么把 ON 左边以及右边的多个表达式用逗号分隔开来。例如:Return Return Select * from A Join B with(1.“INDEX”,1.“ABCD” On 2.“INDEX”,2.“ABCD”) end;SSelectSSelect 返回一个一维数组 ,例如只返回其中一列而且要一个一维向量。这在很多使用

10、的时候非常有用,例如 sselect “ABCD” from A end;VSelectVSelect 返回单个值,主要用于如 SumOf,CountOf 这类统计中。例如 cnt:=Vselect countof( * ) from a end;聚集函数为了防止和 TSL 其他函数产生冲突,聚集函数一般都以 OF 结尾,例如平均值是AVGOF,求和是 SumOf。聚集函数支持条件聚集,并且支持序列化,例如移动平均。例如:A:=array();For i:=0 to 999 dobeginAi“KKK”:=Random();End;Return Select AVGOf(“KKK”,True,

11、60) from A End;以上是得到的是 60 个的移动平均值。Return Select AVGOF(“KKK”,“KKK”0.5) ,AVGOF(“KKK”,“KKK”0.5 的平均数以及0.5,10) ,AVGOF(“KKK”,“KKK”0.5 的 10 个移动平均数以及EndT then raise “截止日还未上市”elseIf FirstDay()BegT then BegT:=FirstDay();例如,我们如果判断在截止日还未交易,则报告一个异常,如果开始日小于第一个交易日,则将开始日设置成为第一个交易日。Sp_timeSP_Time(1)就返回了原始你的设置时间,SP_T

12、IME()不带参数的行为等同于GetSysParam(pn_Date()。我们经常可能看到写:Nday3(N,”time”,sp_time(),.)这样的写法,就是获得当前环境的时间值。Ref取前 N 日的值。例如我们可能要取昨天的收盘价格,那么我们使用 Ref(Close(),1)就可以了。Spec,临时修改当前证券的快捷方法我们已经知道了,使用 SetSysParam(pn_Stock(),StockId)的模式来设置当前的证券。但是在某些应用要求,我们可能需要临时使用其他的证券的数据,这就可以使用 Spec 函数。调用描述:Spec(Exp,StockId);例如:我们需要在计算的过程中

13、使用到指数的涨幅和自己的涨幅相比的超额收益。A:=Close()/Ref(Close(),1)-Spec(Close()/Ref(Close(),1),”SH000001”);SpecDate,临时修改当前时间的快捷方法类似于 Spec,同样存在 SpecDate(Exp,Date)来临时修改时间。例如我们要取 2008-12-31 日的收盘,我们也可以使用SpecClose:=SpecDate(Close(),IntToDate(20081231);当然我们还可以综合 Spec 一起来做更多的事情,例如:SpecIndexClose:=Spec(SpecDate(Close(),IntToD

14、ate(20081231),”SH000001”);这样就可以取出指定日的指数收盘。数据统计函数下列的数据统计函数的最大优势是数据并不需要提取出来,直接利用平台计算,这样的效率是最高的。这些数据统计函数不同于其他统计函数,例如 Mean 函数可以做平均值,但是 Mean 的对象是一个一维数组。这样,假如我们需要用 Mean 来做平均值,需要先使用 Nday 来取出数据,例如:Mean(Nday(100,Close()就是一个 100 天的收盘价的平均值。但是这类的方法效率会比较低下,那我们有 Ma(Close(),100)来做完成这个需求。还是要提醒下,假使统计的内容不是 N 日的,而是区间段

15、内的,可以结合TRADEDAYS,以及 SPECDATE 来完成。Ma求 N 日平均值。例如 Ma(Close(),100)为 100 日的平均收盘价。SumN求 N 日的和。例如 SumN(Vol(),100)为 100 日的成交量和。Hhv求 N 日的最大值。HHV(High(),100)为 100 日的最高的最高价采用 GetSysParam(“hhvtime”)可以获得这个最高值发生的时间。Llv求 N 日的最小值LLV(Low(),100)为 100 日的最低的最低价采用 GetSysParam(“llvtime”)可以获得这个最低值发生的时间。其他统计类的函数我们提供 Sp_std

16、,sp_stdp,sp_var,sp_varp,sp_avedev,sp_devsq 等统计函数。例如求 100 天的收盘价的标准差可以这么用:Sp_Std(close(),100);交易明细数据提取ToverData,取成交明细例如取万科的 2008 年 12 月 31 日的交易明细数据:SetSysParam(pn_Stock(),”SZ000002”);Return ToverData(IntToDate(20081231);ToverDataEx,成交明细查询函数。具体请参照语言帮助。基本面数据的提取理解基本面 ID 和报告期 ID天软的基本面数据都是基于数据仓库的,无论数据来源于天软

17、的财务数据,还是来自于其他的数据提供商的数据,这些数据最后都被转换成了数据元素,这些数据元素都有一个 ID 来标识,这就是基本面 ID,例如货币资金在平台上的 ID 是 44002,那么编码 44002就代表了货币资金。其中 44 为虚拟表编号,002 为虚拟表号内的序号。报告期 ID,是一个数字类型,例如 2008 年报为 20081231。数据提取函数TSL 提供了三个主要函数来提取各种财务数据:Report 取定期报告的财物数据SetSysParam(pn_Stock(),”SZ000002”);Return Report(44002,20081231);这就是取 2008 年报万科的货

18、币资金。Base 取最新值或者最初值例如,如果要取最新的总股本SetSysParam(pn_Stock(),”SZ000002”);Return base(16002);这就是取万科的最新总股本,当然用 base(44002)可以取出最新的货币资金。InfoArray 取出整个表例如,要取整个股本变更表,可以用SetSysParam(pn_Stock(),”SZ000002”);Return InfoArray(16);GETBK 取板块或者市场内的股票列表Return GETBK(“深证 A 股”);例如返回深证 A 股的股票列表。 SaveTable,LoadTable 来保存或者获取用户

19、自己的数据存贮用户数据可以用程序来获取和保存,也可以在客户端前端界面的数据菜单或者管理器里来完成。定义:SaveTable(TableName,Value)LoadTable(TableName)例如:A:=Array(1,2,3,4);SaveTable(“mmm”,A);Return LoadTable(“mmm”);我们执行完后,发现返回了 array(1,2,3,4)这个返回的内容是存贮在用户数据里的内容。你可以在管理器里对数据进行刷新,发现数据的菜单里出现了 MMM 以及其内容。类 SQL 语法对数据提取的支持类 SQL 语法可以用来提取基本面数据和市场数据,当然 GROUP BY

20、,ORDER BY,WHERE 等基本的类 SQL 语法一样是可以支持。INFOTABLE提取基本面数据:例如:Return Select * from infotable 44 of “SZ000002” end;MARKETTABLEReturn Select * from MarketTable DateKey Now()-1 to Now() Of “SZ000002” end;取出昨天到今天的市场数据。如果只要取收盘价:Return Select “close” from MarketTable DateKey Now()-1 to Now() Of “SZ000002” end;如

21、果要取的数据是 5 秒线SetSysParam(pn_cycle(),cy_5s();Return Select “close” from MarketTable DateKey Now()-1 to Now() Of “SZ000002” end;TRADETABLE取从昨天到今天的交易明细数据Return Select * from TradeTable DateKey Now()-1 to Now() Of “SZ000002” end;SQLTABLE,HUGESQLTABLE语法:Return Select * from SQLTABLE “TABLE1” Of “DBALIAS”

22、end;关于这项功能可以参照语言帮助。特殊高级语言特性不定参数个数的支持TSL 允许给函数的参数个数为 0 的函数在调用的时候送入任意多个参数ParamCountParams例如:If ParamCount=2 thenBeginX:=Params1;Y:=Params2;Z:=1;End;If ParamCount2 thenZ:=Params3;理解表达式类型理解 和Exp2:=利用 EVAL 执行表达式类型。EVAL(Exp1);EVAL(Exp2);案例,QUERYWITHPERIOD利用系统参数解决表达式执行的变量传递问题例如:B:=99;A:=b+2;C:=Eval(testmuli(a,b); /错误Setsysparam(“a”,a);SetSysParam(“b”,b);D:=Eval(testmulti(GetSysParam(“a”),GetSysParam(“b”);Return array(C,D);Function testmulti(a,b);BeginReturn a*b;End;CALL 语法支持直接 CALL 函数名或者函数类型。“函数”数据类型,FindFunction 来返回典型应用,多元回归的回调函数。例如:Return Call(“IntToStr”,1000);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报