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

2019-02-15 18:14

然而在上面语句中,首先运算的是以最低价(Low)除于2,然后再与最高价求和。最后的值不是我们所需要的,并且和原来预想中的值是不一致的。

为了处理上述这样的情况,我们在运算符号中引入了括号\,可以用括号来操作和控制运算的规则,先计算括号里面的表达式,不考虑外面的操作符和常量。因此,获取某一个Bar上的中间位臵(MidPoint)的语句可如下:

(High+Low)/2; 该语句就是返回最高价和最低价之和的1/2,即Bar的中间位臵。

对于除法,有一些特别的提示,众所周知,0不能作为除数,否则将会导致系统溢出。TradeBlazer公式在对脚本进行执行时,碰到除法符号时,都需要对除数进行是否为0的检查,以保证脚本能够正确的执行下去,当遇到除数为0的情况下,我们将会返回一个无效值。 上面描述到求中间位臵(MidPoint)的表达式,其实我们可以用另外一种形式来代替它: (High+Low)*0.5; 对于A/B这样的一个表达式,因为不知道B是否为0,所以总是需要对其进行有效性验证,计算的速度会受到一定的影响,因此,对于除法表达式,我们强烈建议使用时尽可能转换为乘法处理,即提高执行速度,也可以避免未知的错误发生。 字符串操作符

\是唯一的可以应用于控制字符串表达式的数学操作符,它可用于连接两个文本字符串为一个字符串。如下: \这是一个字符串表达式,\返回值为数值型。\\上面字符串表达式的输出值,应该是\这是一个字符串表达式,返回值为数值型。\和\is expression A and this is expression B.\。

16

关系操作符

逻辑运算符使用下列标准的比较符号,大于、小于、等于、小于等于、大于等于和不等于。下列的关系操作符号都可以应用到逻辑表达式中。 操作符 < > <= >= <> == 小于 大于 小于等于 大于等于 不等于 等于 说明 应用上述的关系运算符,我们可以对两个数值或字符串表达式进行对比,在下列的语句中,我们就是找到一个Bar,它的前一个Bar收盘价要高于前一个Bar最高价:

Close>High[1]; 在字符串的比较运算中,首先是把每一个字符用它的ASCII来代替,其次对两个表达式中的字符逐一比较其ASCII值,从第一个开始,直到两个表达式中的所有字符都已经被计算完为止。例如:

\在这个例子中,我们对把第一个字符串表达式中的字符和第二个表达式中的字符进行比较运算,字母\的ASCII值是小于\的,同样其它的字符也是一样,所有该表达式的值为True。 逻辑操作符

逻辑运算符常常用于比较两个True/False的表达式,共有三个逻辑操作符:AND(&&),OR(||),NOT(!)。 下表列出AND逻辑操作符的应用情况:

17

表达式1 True True False False 表达式2 True False True False True False False False 表达式1 AND 表达式2 下表列出OR逻辑操作符的应用情况: 表达式1 True True False False 表达式2 True False True False True True True False 表达式1 OR 表达式2 下表列出NOT逻辑操作符的应用情况: 表达式1 True False False True NOT表达式1 在上面的表格中,应用OR可以增加表达式的值为True的可能性,仅仅只要两个表达式中,只要有一个的值为True,那么整个表达式的值就为True。

其实在应用的过程中,还包含有一些复杂的组合运算。为了获得一个的关键反转Bar,可以使用如下的表达式: Low < Low[1] AND Close > High[1]; 在上面的表达式中,我们使用了AND逻辑运算符,因而要表达式的值为True,那么当前Bar的最低价一定要小于前一个Bar的最低价,而且当前Bar的收盘价还必须高于前一个Bar的最高价。只有当这两个条件都满足的时候,表达式的值才为True。 再看下面一个例子:

18

High > 10 OR Vol > 5000; 在上面的表达式中,如果要其值为True,那么只需要任意一个条件满足即值为True,那么表达式的值便为True,如果当前bar的最高价大于10,或者成交量大于5000,那么表达式的值便为True。而如果需要表达式的值为False时,则两个条件都必须为False,表达式的值才为False。

逻辑操作符的优先级低于数学操作符和关系操作符。逻辑操作符也遵循先括号的原则,如果没有括号,那么其运算顺序也是从左边到右边。

对于逻辑表达式中不同条件的先后顺序,可能会产生不同的运算逻辑,执行的效率也会有所不同。

以Con1 AND Con2这样的表达式举例,系统从左到右进行逻辑判断,当Con1为True时,需要继续判断Con2是否为True,只有当Con1,Con2都为True时,整个表达式才为True。但是只要当Con1为False时,就不再需要判断Con2的值,而是直接返回False。

因此,以下的两个表达式在执行效率方面是有差异的: 5 < 4 AND Close > Open; Close > Open AND 5 < 4; 第一条语句的执行速度大部分情况下都比第二条要快。

对于Con1 OR Con2表达式,情况也比较类似,当Con1为False时,需要继续判断Con2是否为False,只有当Con1,Con2都为False时,整个表达式才为False。但是只要当Con1为True时,就不再需要判断Con2的值,而是直接返回True。 以下两条语句的执行效率也是不一样的: 5 > 4 OR Close > Open; Close > Open OR 5 > 4; 通过上述的说明,我们应该知道,逻辑表达式的组合时,应该尽可能的把容易判别整个表达式逻辑的条件放在前面,以减少整个表达式的计算时间。 表达式

19

表达式是操作符和保留字的有机组合,任意表达式都代表了一个值,表达式的值只能是以下的三种类型: 数值型: 即Numeric,NumericRef,NumericSeries三种数据类型。 布尔型: 即Bool,BoolRef,BoolSeries三种数据类型。 字符串: 即String,StringRef,StringSeries三种数据类型。 使用TradeBlazer公式的过程中,便可应用三种广泛数据类型的表达式,来完成您自己的程序。 数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字,例如:保留字\。或者是通过运算符号组合的一个计算表达式,该表达式的结果是数值型。下文中的例子都是数值型的表达式。 154; Vol; (High+Low)/2; 布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进行评估,然后返回其值,要么为True,要么为False。逻辑表达式永远要涉及到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是True还是False进行判断。 Close > Open; 5 < 2; 字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字符串的系统函数,如下,就是一个字符串的表达式: \\Trim(\使用注释

注释可以标注解释语句,公式在编译执行时会忽略注释语句。注释分为单行注释和多行注释。 单行注释 在单行中对需要注释部分之前通过添加//,使//之后的语句形成注释。以下是注释的例子: //这是一个注释语句; 多行注释 在需要注释的部分之前添加/*,之后添加*/,形成注释。以下是注释的例子: /*这是一个多行注释的语句;

20


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

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

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

马上注册会员

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