文档详情

tb编程基础知识必备培训资料

youn****329
实名认证
店铺
PPT
959.50KB
约75页
文档ID:143159454
tb编程基础知识必备培训资料_第1页
1/75

华泰长城期货有限公司 Huatai Great Wall Futures Co., Ltd. :909118951,交易开拓者(TB)编程基础 ----公式篇,基本框架,什么是TradeBlazer公式,1、TradeBlazer公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、技术分析,交易指令等计算机能够识别的代码 2、TradeBlazer公式是一门语法简单但是功能强大的语言,利用它能创建自己的交易和技术分析工具通过组合普通的交易指令和简单的语句,TradeBlazer公式能够很容易并且直接的用简单语句表达自己的交易规则和行为 3、交易开拓者能够读取TradeBlazer公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将交易思想转化为实际的交易操作概述,数据类型,Bar数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间期货等品种还有持仓量等数据 叠加数据,交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据,针对这样的需求,TradeBlazer公式提供了叠加数据的支持。

行情数据,TradeBlazer公式还可以支持实时行情数据的调用,行情数据是指当前商品最新的报价数据,该数据和Bar无关,行情数据的回溯没有意义 属性数据,除了以上的各项数据之外,TradeBlazer公式还提供一组重要的属性数据,反映了该商品的一些基本信息,比如当前数据周期,买卖盘个数、保证金设置等信息在所有的Bar上面获取的市场属性数据都是一样的,属性数据的回溯没有意义数据,Bar数据,所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据 以下列出所有的Bar数据系统函数:,,计算方法,TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算如下图箭头所示,公式执行从上至下,Bar从左到右执行在公式的编写中,经常会遇到当前Bar的数据和上一个Bar,上N个Bar数据进行比较,计算的情况,针对这种情况,TradeBlazer公式提供了一种处理机制:回溯即对数据的向前引用,比如,获取上一个Bar的收盘价:Close1,获取10天前的成交量:Vol10。

以下提供一个简单的例子来说明如何进行回溯处理 假定有如下语句: If (Close Close1) Buy(1,Close); 以上公式执行一个简单的操作,当前Bar的收盘价大于上一个Bar的收盘价,即执行按照当前收盘价买入1手的动作根据上表的数据,公式将在CurrentBar为2和3的时候调用Buy指令 如果您足够仔细的话,您会发现:对于上面的一段公式的执行,有一个小小的问题,当第一次计算公式时,即CurrentBar = 0时,这个时候需要获取上一个Bar的数据,但是当前Bar已经是第一个Bar,这个时候就存在着问题,如何来获取此时的Close1呢,TradeBlazer公式将默认Close1为无效值,即系统函数中的InvalidNumeric,Close Close1的表达式计算结果是一个Bool值,其结果也是一个无效值,对于Bool值,我们将False作为其无效值因此,第一个Bar计算时,Buy指令不会被执行 对于技术分析这类公式来说,假定Bar数据的总数共有100,相同的代码将从CurrentBar = 0到CurrentBar = 99 共执行100遍,分别输出公式中的结果值。

注意:在执行TradeBlazer公式时,可能出现数据不存在的情况,可通过系统函数HistoryDataExist进行判断,如果该函数返回True,即为Bar数据有效叠加数据,交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据 假定,我们新建一个超级图表模块,其主数据对应的商品为:cu1107,在此基础上,我们叠加了cu1108和cu1109此时,根据叠加操作的先后顺序,cu1107为Data0,cu1108为Data1,cu1109为Data2,在TradeBlazer公式中,我们可以通过Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据一样,只是需要在调用的时候加上数据源 我们也可以使用Data0.Open()来调用Bar数据,默认情况下,可以省略对主数据源的指定,为了方便,一般直接使用Open()来代替Data0.Open()数据类型,TradeBlazer公式支持有三种基本数据类型:数值型、字符串、布尔型 为了通过用户函数返回多个值,我们对三种数据类型进行了扩展,增加了引用数据类型。

另外,为了对变量,参数进行回溯,我们增加了序列数据类型因此,我们的数据类型共有九种,如下表所示:,,,数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字,例如:保留字Close或者是通过运算符号组合的一个计算表达式,该表达式的结果是数值型下文中的例子都是数值型的表达式 154; Vol; (High+Low)/2; 布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进行评估,然后返回其值,要么为True,要么为False逻辑表达式永远要涉及到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是True还是False进行判断 Close Open; 5 < 2; 字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字符串的系统函数,如下,就是一个字符串的表达式: This is a test string expression ; Hello+World ;,命名规则,公式名称规则: 不区分大小写; 不能超过32个英文字符; 每一类公式不能出现相同的名称; 公式名称不能出现字母、数字、下划线以外的其他字符; 公式名称不能和系统保留字,系统函数等重名。

变量,参数规则: 不区分大小写; 不能超过32个英文字符; 每一个公式内部能不能重复命名; 名称不能出现字母、数字、下划线以外的其他字符; 名称不能和系统保留字,系统函数等重名; 不能使用已定义的用户函数名语句前奏,运算符,,,,,,,,AND逻辑操作符的应用情况:,OR逻辑操作符的应用情况:,,NOT逻辑操作符的应用情况:,算术运算符号,关系运算符号,字符串操作符,+是唯一的可以应用于控制字符串表达式的数学操作符,它可用于连接两个文本字符串为一个字符串如下: 这是一个字符串表达式,+返回值为数值型This is expression A+ and this is expression B.; 上面字符串表达式的输出值,应该是这是一个字符串表达式,返回值为数值型和This is expression A and this is expression B.使用注释,注释可以标注解释语句,公式在编译执行时会忽略注释语句注释分为单行注释和多行注释 单行注释 在单行中对需要注释部分之前通过添加//,使//之后的语句形成注释以下是注释的例子: //这是一个注释语句; 多行注释 在需要注释的部分之前添加/*,之后添加*/,形成注释。

以下是注释的例子: /*这是一个 多行注释 的语句; */,标点符号,通常,在写语句的过程中,会用到很多的标点符号可用来定义参数、定义变量、创建规则的优先权例如,TradeBlazer公式用;来标注一个语句结束标点符号也是一个保留字,因为符号也是语言结构的一部分,在下表中列出了TradeBlazer公式中所用到的标点符号,和该标点符号所表达的意思:,,功能关键字,,,数据源,,数据输出,,语句概念,一个语句代表一个完全的指示或描述,语句中包含有保留字、操作符、符号并且语句总是以;作为语句结束的标志 以下为语句的一些例子: This is one statement; This is another statement; This isone statement; This isanotherstatement; This is yet another; This is one statement;This is another;,语句,赋值语句,赋值语句用于给公式变量指定一个具体的值的语句,赋值语句使用赋值操作符(=)进行处理 以下为赋值语句的一些例子: Vars Bool b; Begin B = true; ... End Vars Numeric Value1; Begin Value1 = (Close + Open)/2; ... End Vars String str; Begin str =It Is A Test!; ... End,控制语句,TradeBlazer公式支持两大类的控制语句:条件语句和循环语句。

条件语句 条件语句包括以下四类表达方式: If If-Else If-Else-If If-Else的嵌套 循环语句 循环语句包括两种表达方式:For和WhileIf 语句,If语句是一个条件语句,当特定的条件满足后执行一部分操作 If (Condition) TradeBlazer公式语句; Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用 例如,您可以计算图表中上升缺口(当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下: Vars NumericSeries Counter(0); Begin If ( Open High1) Counter = Counter1 + 1; ... End,在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件满足的时候,在满足条件的Bar上面进行标记。

例如,下面的语句就是特征走势的例子: If(High High1 AND Low High1 AND Low High1 AND Low < Low1) PlotNumeric(Outside Bar,High); Alert(Outside Bar); ,if-Else语句,If-Else语句是对指定条件进行判断,如果条件满足执行If后的语句否则执行Else后面的语句 语法如下: If (Condition) TradeBlazer公式语句1; Else TradeBlazer公式语句2; Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句1将会被执行;Condition为False时,TradeBlazer公式语句2将会被执行Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用 例如,比较当前Bar和上一个Bar的收盘价,如果Close Close1,Value1 = Value1 + Vol;否则Value1 = Value1 - Vol,脚本如下: If (Colse Close1) 。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档