期货程序化TB公式的结构与编程(7)

2019-02-15 18:14

函数回溯 函数回溯分为系统函数的回溯和用户函数的回溯。 系统函数中回溯的使用主要是针对Bar数据。比如我们需要获取上2个Bar的收盘价,脚本为Close[2];又或者我们需要获取10个Bar前的成交量,脚本为Vol[10]。对于Bar数据的回溯是系统函数中最常用的,虽然也可以对行情数据和交易数据等进行回溯,但是大部分并无实质的意义,返回的结果和不回溯是一样的,因此,不推荐如此使用。 要对函数回溯引用,我们可以通过在函数名称后面添加\获取其回溯值,nOffset是要回溯引用的Bar相对于当前Bar的偏移值,该值必须大于等于0,当nOffset = 0时,即为获取当前Bar的参数值。 带有参数的函数回溯,需要将\放到参数之后,另外,无参数和使用默认参数的情况下,函数调用的括号可以省略。例如:Close[2]等同于Close()[2]。 用户函数的回溯和系统函数原理基本一致,但考虑到系统的执行速度和效率等因素,目前,TradeBlazer公式不支持对用户函数的回溯,如果您想要获取用户函数的回溯值,建议您将函数返回值赋值给一个序列变量,通过对序列变量的回溯来达到相同的目的。 如下面的脚本所示,取Close的10个Bar平均值的4个周期前的回溯值: Vars NumericSeries AvgValue; Numeric TmpValue; Begin AvgValue = Average(Close,10); TmpValue = AvgValue[4]; ... End 六、系统函数的使用

TB公式的系统函数,可根据使用范围在相应类型的公式中直接调用,计算后返回结果值。

目前的系统函数支持四种数据类型,除了TradeBlazer公式中定义的三种基本数据类型:Bool,Numeric,String之外,新加入Long(长整型)类型,使系统函数能够更加快捷的进行计算,TradeBlazer公式在处理的时候自动将Numeric和Long进行转化,用户无需进行特别的处理。

TB公式现有的系统函数主要分为:数据函数、时间函数、数学函数、其它函数、交易函数、属性函数、账户函数、颜色函数、字符串函数等。每个系统函数都有自己的适用范围和使用规范,详细说明参见附录。 6-1、标点符号

31

通常,在写语句的过程中,会用到很多的标点符号。可用来定义参数、定义变量、创建规则的优先权。 例如,TradeBlazer公式用\;\来标注一个语句结束。标点符号也是一个保留字,因为符号也是语言结构的一部分,在下表中列出了TradeBlazer公式中所用到的标点符号,和该标点符号所表达的意思: 符号 ; , () \[] {} . 名称 分号 逗号 小括号 双引号 中括号 大括号 点 说明 语句结束的标志。 当函数带有多个参数时,用于分隔多个参数。 括号之内的表达式有计算的优先权。 字符串常量。 回溯数据,引用以前的数据,或者数组中的元素。 控制语句的起始。 扩展数据源的数据调用。 6-2、控制语句

TradeBlazer公式支持两大类的控制语句:条件语句和循环语句。 条件语句 条件语句包括以下四类表达方式: If If语句是一个条件语句,当特定的条件满足后执行一部分操作。 语法如下: If (Condition) { TradeBlazer公式语句; } Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

32

例如,您可以计算图表中上升缺口(当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下: Vars NumericSeries Counter(0); Begin If ( Open > High[1]) { Counter = Counter[1] + 1; ... } ... End 在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件满足的时候,在满足条件的Bar上面进行标记。例如,下面的语句就是特征走势的例子: If(High > High[1] AND Low < Low[1]) { PlotNumeric(\} If语句在不是用括号的情况,只执行下面的第一条语句,如下的语句,Alert不会只在条件为True时执行,而是每次都执行。 If(High > High[1] AND Low < Low[1]) PlotNumeric(\Alert(\要想Alert只在条件为True时执行,您需要按照下面的格式编写: If(High > High[1] AND Low < Low[1]) { PlotNumeric(\ Alert(\

33

} 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 > Close[1],Value1 = Value1 + Vol;否则Value1 = Value1 - Vol,脚本如下: If (Colse > Close[1]) Value1 = Value1 + Vol; Else Value1 = Value1 - Vol; If-Else-If If-Else-If是在If-Else的基础上进行扩展,支持条件的多重分支。 语法如下: If (Condition1) { TradeBlazer公式语句1; }Else If(Condition2) { TradeBlazer公式语句2;

34

}Else { TradeBlazer公式语句3; } Condition1是一个逻辑表达式,当Condition1为True的时候,TradeBlazer公式语句1将会被执行,Condition1为False时,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句2将会被执行。Condition2为False时,TradeBlazer公式语句3将会被执行。Condition1,Condition2可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。 If-Else-If的语句可以根据需要一直扩展,在最后的Else之后再加If(Condition)和新的执行代码即可。当然您也可以省略最后的Else分支,语法如下: If (Condition1) { TradeBlazer公式语句1; }Else If(Condition2) { TradeBlazer公式语句2; } If-Else的嵌套 If-Else的嵌套是在If-Else的执行语句中包含新的条件语句,即一个条件被包含在另一个条件中。 语法如下: If (Condition1) { If (Condition2) { TradeBlazer公式语句1; }Else { TradeBlazer公式语句2;

35


期货程序化TB公式的结构与编程(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:汽车饰物项目可行性研究报告评审方案设计(2013年发改委标准案例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: