期货量化学习_TB语言公式运行机制 (1)

论坛 期权论坛 股票     
期权匿名问答   2023-2-13 10:03   1989   0
TB交易开拓者作为一个优质的第三方量化交易软件,功能强大,我们之前通过一些示例,了解了TB语言的梗概,算是入门学习素材,取自TB官网。可以点击下方链接回顾。
Silly Man:汇总【入门】【期货量化】【TB交易开拓者】学习素材

了解了梗概之后,从这一期开始,就要深入细致学习TB语言了,专门针对编程语言学习了。
有些之前已经介绍过的东西,也会简单再介绍一下。

TB语言是TBQuant平台的编写策略的语言,仅限于在此平台使用,类似C++、Pascal,代码需要编译后才能运行,执行效率高。

要了解平台的编程语言,那么首先要做的事情就是了解平台的运行机制:

1、最常用最实用的OnBar机制,就是基于K线数据的运行机制,这个机制的运行,就是建立在K线数据源上的,开高低收、成交、持仓、时间等...在历史数据上。每一根K线上都会走一遍代码中的逻辑,从参数声明到结束,从左边定义的最早的K线开始,一直到最新形成的K线,一直到OnBar机制的最后一行代码。历史数据回测是每根K线上运行一次,而实时行情上,是价格每次跳动运行一次,就是每Tick运行一次。

2、上述OnBar机制,也可以采用多数据源,比如想大小周期兼顾,就至少需要两个周期的K线相关数据,数据源可以添加很多。
多数据源涉及:

1)数据对齐
多数据源的最后一根K线肯定是对齐在一起的,中间的数据源,按照K线数据出现的时间顺序对齐,把多个数据源时间上对齐后,多个数据源之间,按照时间顺序依次取数据运行。

2)数据源编号
---每一个数据源,就是K线数据信息,都是有编号的,第一个编号为0,第二个编号为1...依次累加。如果要取用第一个数据源内的数据,编号为0,就可以用data[0].的前缀获取。

---每个数据源都是独立运行的,公式在不同数据源内的局部变量都是独立的。如果有三个数据源里有变量ATR,那么三个数据源的ATR都是根据各自数据源的K线数据计算的ATR,分别是data[0].ATR,  data[1].ATR, data[2].ATR。

---不同数据源上的公式运行时,历史数据会按照同步的时间顺序依次运行,而实时数据就是每次价格波动都同步运行。

---语句在哪个数据源中执行,这样:
Range[i,j]{这里放从数据源编号从i到j要执行的语句}

---如果只要在数据源编号为i的数据源中执行,那就这样:
Range[i,i]{这里放从数据源编号从i到j要执行的语句}

---调用数据源i中的变量或者函数,就这样:
data.变量名或者函数名
这样的话,都是用的编号为i的数据源中的局部变量。

---data[0]可以写成data0

---跨数据源引用的数据可以作为参数使用

---跨数据源引用函数的时候,函数的参数如果不指明数据源,默认就是取函数所在数据源的数据。为了方便理解,我们从TB官网取一张截图,看一下即可了解什么情况下是在取那个数据源的数据了:



3、事件驱动机制
比如OnBar事件内的语句,是在价格数据更新后触发执行,除此之外还有:
策略执行前的树池话OnInit、K线开盘才驱动的事件OnBarOpen、持仓变动时驱动的事件OnPosition。
对于交易策略来说,这些其实并不常用,但是如果真的需要用到,也很方便,比如想在持仓有变化时做点儿什么,就可以增加新的事件。

上述内容之气那已经聊过,这里我们直接把官方的表格贴过来:



上述事件驱动的运行机制,运行逻辑:
策略运行前进行全局变量的初始化,然后在Oninit事件中完成数据源、定时器等设置的初始化操作,初始化操作完成开始准备要用到的数据源,然后猜到了普通变量的初始化,完成后就轮到事件驱动的触发了,事件驱动触发完成后,检查数据源是否刷新有变动了,继续针对数据源执行初始化事件之后的内容,如此循环往复。




事件驱动结构运行顺序,来源:TB官网

4、公式可以当作函数来用,可以通过拼装公式组成交易策略。

就是我们可以把各种条件,比如方向判断条件、入场选择条件、开仓条件、平仓条件、追踪止损条件等等,各种条件写成单独的模块,再进行拼装,以成为完成的交易系统。

需要注意的是,拼装策略按公式添加顺序依次执行,所以要注意一下添加公式的顺序,虽然公式之间持仓信息是共享的,但是不同的公式的交易信号是单独显示的。

TB有很多现成的公式代码,如果用得着也不用全都自己写了。

如果是多个入场条件和离场条件,先满足的先执行,比如价格有利波动幅度达到20%就平仓和均线交叉都设置为离场条件,先满足哪个,哪个就先执行,入场条件同理。

官网的例子:

要求最大持仓头寸为2,满足下面3个开仓条件都可以入场:
公式1:收盘价大于上一根收盘价0.2%,下一根K线开盘开多仓1手。
公式2:5、10日均线金叉开多仓1手。
公式3:收盘价大于上一根K线最高价2跳,下一根K线开盘开多仓1手。

满足下面两个条件就离场:
公式4:低于上一根K线收盘价0.5%,多头全部平仓
公式5:5、10日均线死叉,多头全部平仓

下面我们把5个条件的代码加上详细注释贴出来,然后再按顺序组成一个策略。
公式1:收盘价大于上一根收盘价0.2%,下一根K线开盘开多仓1手。



公式2:5、10日均线金叉开多仓1手
(注意,交叉逻辑有漏洞,示例仅仅为了了解软件功能)


公式3:收盘价大于上一根K线最高价2跳,下一根K线开盘开多仓1手


公式4:低于上一根K线收盘价0.5%,多头全部平仓



公式5:5、10日均线死叉,多头全部平仓
(死叉逻辑同样漏洞)



写完所有条件后,按照设计的执行顺序,策略交易功能中,依次添加即可以用于回测、交易,非常方便。
如下图:


一定是按照顺序添加,就想象代码文件中从上倒下执行即可,然后启动策略单元就可以进行策略回测或者交易了。

这个功能大大降低了这款良心量化软件的使用门槛。
除了技术服务,我们也提供硬核基本面报告,了解供求变化的同时运行量化工具寻找入场点体验更佳。

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

本版积分规则

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

下载期权论坛手机APP