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

2019-02-15 18:14

} }Else { If (Condition3) { TradeBlazer公式语句3; }Else { TradeBlazer公式语句4; } } Condition1是一个逻辑表达式,当Condition1为True的时候,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句1将会被执行。Condition2为False时,TradeBlazer公式语句2将会被执行。当Condition1为False的时候,将会继续判断Condition3的值,当Condition3为True时,TradeBlazer公式语句3将会被执行。Condition3为False时,TradeBlazer公式语句4将会被执行。Condition1,Condition2,Condition3可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。 例如,在一个交易指令中,条件设臵如下:当前行情上涨的时候,如果收盘价高于开盘价时,则产生一个以收盘价买入1张合约;否则产生一个以开盘价买入1张合约。当前行情没有上涨的时候,如果收盘价高于开盘价,则产生一个以收盘价卖出1张合约;否则产生一个以开盘价卖出1张合约。脚本如下: If (Open > High[1]) { If (Close>Open) { Buy(1,Open); }Else { Buy(1,Close); } }Else

36

{ If (Close > Open) { Sell(1,Open); }Else { Sell (1,Close); } } 6-3、循环语句 循环语句包括两种表达方式:For和While。 For For语句是一个循环语句,重复执行某项操作,直到循环结束。 语法如下: For 循环变量 = 初始值 To 结束值 { TradeBlazer公式语句; } 循环变量为在之前已经定义的一个数值型变量,For循环的执行是从循环变量从初始值到结束值,按照步长为1递增,依次执行TradeBlazer公式语句。结束值必须大于或等于初始值才有意义,初始值和结束值可以使用浮点数,但是在执行过程中会被直接取整。只计算其整数部分。 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。 第一次执行时,首先将循环变量赋值为初始值,然后判断循环变量是否小于等于结束值,如果满足条件,则执行TradeBlazer公式语句,同时循环变量加1。接着重新判断循环变量是否小于等于结束值,一直到条件为False,退出循环。 例如,以下的用户计算Price最近Length周期的和。 Params NumericSeries Price(1); Numeric Length(10);

37

Vars Numeric SumValue(0); Numeric i; Begin for i = 0 to Length - 1 { SumValue = SumValue + Price[i]; } Return SumValue; End 如果希望For语句从大到小进行循环,可以使用以下的语法: For 循环变量 = 初始值 DownTo 结束值 { TradeBlazer公式语句; } For-DownTo让循环变量从结束值每次递减1直到等于结束值,依次调用TradeBlazer公式语句执行,初始值必须大于或等于结束值才有意义。 For语句是比较常用的一种循环控制语句,它应用于知道循环次数的地方,很多内建用户函数中都使用For语句来完成相应的功能,比如Summation,Highest,Lowest,LinearReg等。 While While语句在条件为真的时候重复执行某一项操作。即,只要条件表达式的值为真(True)时,就重复执行某个动作。直到行情信息改变以致条件为假(False)时,循环才结束。 语法如下: While (Condition) { TradeBlazer公式语句; } Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被循环执行,Condition可以是多个条件表达式

38

的逻辑组合,Condition必须用()括起来。 TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。 例如,以下的公式用来计算要产生大于100000成交量需要最近Bar的个数: Vars Numeric SumVolume(0); Numeric Counter (0); Begin While (SumVolume < 100000) { SumVolume = SumVolume + Vol[Counter] Counter = Counter + 1; } End 首先,我们定义两个变量SumVolume和Counter,并将其默认值设为0。当SumVolume <100000这个表达式为True时,While内的TradeBlazer公式语句一直被调用,将前Counter个Bar的Vol加到SumVolume中,当SumVolume大于等于100000时,退出循环。 在使用While循环的时候,有可能会遇到循环一直执行,永远不能退出的情况,这种情况我们称之为死循环,比如下面的语句; While (True) { TradeBlazer公式语句; } 在这种情况下,循环将一直执行,导致程序不能继续工作,在这种情况,我们可以使用Break来跳出循环,详细情况参加下节。 Break 针对上节的例子,要想从死循环中跳出,我们可以在循环之中添加Break语句,如下: While (True) { TradeBlazer公式语句; If (Condition) Break;

39

} 循环在每次执行后,都将判断Condition的值,当Condition为True时,则执行Break语句,跳出整个循环。 Continue 有的时候在循环中,我们可能希望跳过后面的代码,进入下一次循环,在这种情况下,可以使用Continue语句来达到目的,如下: While (Condition1) { TradeBlazer公式语句1; If (Condition2) Continue; TradeBlazer公式语句2; } 当Condition1满足时,循环被执行,在执行完TradeBlazer公式语句1后,将判断Condition2的值,当Condition2为True,将跳过TradeBlazer公式语句2,重新判断Condition1的值,进入下一次循环。否则将继续执行TradeBlazer公式语句2。

七、用户函数的使用与说明 7-1、TB用户函数 用户函数

用户函数是可以通过名称进行调用的一组语句的集合,用户函数返回一个值,这个值可以是Numeric,Bool,String三种类型中的任何一种。您可以在需要的任何地方调用用户函数来完成相应的功能。

例如,在TradeBlazer公式中经常使用的一个用户函数Summation,Summation通过输入Price序列数据,以及Length统计周期数,计算Price最近Length周期的和,每次用户需要进行求和计算的时候,都可以调用Summation代替冗长的求和代码,输入参数并获取返回值。 Summation是TradeBlazer公式中一个比较简单的用户函数,TradeBlazer公式提供了上百个内建用户函数,当然,您也可以编写您自己的用户函数。

用户函数通过参数传递输入数据,通过引用参数或返回值传递输出数据,以上例子中的Summation函数,在被调用的时候格式如下: Value1 = Summation(Close,10);

40


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

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

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

马上注册会员

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