期货量化学习园地_TB语言的数据类型(3)

论坛 期权论坛 股票     
期权匿名问答   2023-2-9 18:38   3162   0
最近都是涉及TB交易开拓者用到的TB语言的东西,是需要了解的基本东西,无聊但是又必须了解的东西。可以直接移步官网查看。

继续TB语言的学习,素材取自TB官网,这块需要了解,没什么可说的,所以本篇内容有点儿类似抄写了,今天到了数据类型了,一般来说常用数据类型基本够用,这里先大致了解一下即可,知道有这些东西,就行了,后续内容和之后拆解交易系统代码案例时,看到具体应用就好理解了。

不熟悉面向对象编程的小伙伴不用慌张,其实这个软件,自己些小模块,然后自己拼凑起来,对于普通交易者完全够用了。
TBQuant支撑6中类型,划分成4个级别,如下图:



注:图片引用自TB官网

【基本类型】【普通】
这里尤其要注意的,TB语言是没有日期类型、时间类型的,日期、时间也是浮点类型Numeric。
bool, 布尔类型,只有true和false.
Numeric, 浮点类型
integer 长整型
string 字符串,必须用双引号“”括起来。

【基本类型】【内嵌】
内嵌类型都是对象类型,所以还需要了解一下对象属性,先知道分别是什么,等能到用的时候直接在软件里、官网上找即可。

1)Tick-行情快照:对象类型
对象属性:



截取自TB官网

BidAsk,对象类型,属性如下:



2)Bar-K线数据,对象类型,属性如下



Position-持仓:对象类型,属性如下


Order-委托,对象类型
对象属性如下:



取自TB官网

Fill-成交,对象类型
对象属性如下:



CodeProperty-合约属性
可以定义一个合约属性结构体的变量,传入TB上的合约代码给属性,可以查看合约的各种属性。
官方示例:
//定义一个合约属性结构体的变量
CodeProperty cp;
//获取指定合约的所有合约属性
Bool ret = GetProperty("rb2410.SHFE", cp);
//输出整个结构体的所有属性
Print("GetProperty:" + IIFString(ret, "True", "False") + "," + Text(cp));
//查看结构体的某一个属性,这里是获取每个整数点的价值
Print(text(cp.bigPointValue));
//---除了上述示例的属性,还具有以下属性:


【容器里类型】一级
一维数组array
二位数组array<array>

【容器类型】二级
series序列变量,可以回溯K线数据用
map类型,字典结构,Map<keys,values>。一个key对应一个value,键值key不能重复。

【dic】基础数据,是基础数据类型,使用方便,可以很方便的自己创建个建议数据库存储信息,如果交易系统用得着的话。
如:
dic<numeric> dicVar1(key,true/false);
true和false是设置基础数据是持久化数据库,也就是有些东西可以保存在本地,默认是false内存读写,true就是持久化数据库保存了。

【ref】引用
用在函数参数。
1、函数需要返回多个变量的时候
2、没办法用return语句返回的数据类型,比如数组。

【global】修饰,全局变量
公式内的全局变量公式内的所有数据源共享,不会价格价格跳动后被重置,注意要放在Oninit之前。

【natural】修饰,针对于数据源变量,加了这个修饰的变量,在OnReady时间后就不会被重置了。
不能和global共用。
Global修饰的,是非数据源变量,初始化事件OnInit开始后,一直不重置。
Natural修饰的,是数据源变量的不重置,在OnReady之后不重置。如果修饰的是序列变量,新K线产生的时候,序列变量在当前K线中还没有被赋值之前,如果访问数据,得到的结果是上一根K线上复制的结果。

//------------------------------------------------
数据类型组合的基本原则
1、基本类型肯定是是必须指定的。
指定后,如果有需要,后续还可以扩展、引用、修饰。

2、数据类型是分级的,如果基本类型需要扩展、引用、修饰基本类型,需要按照级优先级排序,级别高的在最前面。
例:
global map<string,array<numeric>> var1;
这样,变量var1首先是个全局数据变量,是字典类型的,字典的键key是字符串类型,值value是一个浮点型的一维数据。也就是说可以通过这种方式,定义我们想要的数据类型。

3、同级别的不可以组合。
比如ref和global都是第4个级别的,就不能在一个语句中同时出现。
numeric和order都是第1个级别的,也不能同时出现。

4、一些特殊情况
1)series不支持引用ref扩展,不支持global修饰。
2)dic不支持内嵌类型,不持支global修饰。
3)Map<keys,values>,key的类型只能是integer/string,value的类型是基本类型和容器类型以及的组合。
4)MapRef只能用在def函数参数中,暂时不支持用户函数。
5)Dialog只能在Oninit中使用。

【数据类型的使用场景】



虽然这些内容枯燥且无聊,但是要想把自己的交易系统量化出来,这些素材又是不可缺少的。

下期见~
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:399277
帖子:79856
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP