好文档 - 专业文书写作范文服务资料分享网站

期货程序化交易——交易开拓者(TradeBlazer)公式详细介

天下 分享 时间: 加入收藏 我要投稿 点赞

下列的关系操作符号都可以应用到逻辑表达式中。

操作符 < > <= >= <> == 小于 大于 小于等于 大于等于 不等于 等于 说明 应用上述的关系运算符,我们可以对两个数值或字符串表达式进行对比,在下列的语句中,我们就是找到一个Bar,它的前一个Bar收盘价要高于前一个Bar最高价: Close>High[1]; 在字符串的比较运算中,首先是把每一个字符用它的ASCII来代替,其次对两个表达式中的字符逐一比较其ASCII值,从第一个开始,直到两个表达式中的所有字符都已经被计算完为止。例如: \在这个例子中,我们对把第一个字符串表达式中的字符和第二个表达式中的字符进行比较运算,字母\的ASCII值是小于\的,同样其它的字符也是一样,所有该表达式的值为True。

逻辑操作符

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

表达式1 True True False False 表达式2 True False True False True False False False 表达式1 AND 表达式2 下表列出OR逻辑操作符的应用情况:

表达式1 True True False 表达式2 True False True True True True 表达式1 OR 表达式2 False False False 下表列出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。 再看下面一个例子:

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; 通过上述的说明,我们应该知道,逻辑表达式的组合时,应该尽可能的把容易判别整个表达式逻辑的条件放在前面,以减少整个表达式的计算时间。

表达式

表达式是操作符和保留字的有机组合,任意表达式都代表了一个值,表达式的值只能是以下的三种类型:

? 数值型: 即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(\使用注释

注释可以标注解释语句,公式在编译执行时会忽略注释语句。 注释分为单行注释和多行注释。

单行注释

在单行中对需要注释部分之前通过添加//,使//之后的语句形成注释。以下是注释的例子: //这是一个注释语句; 多行注释

在需要注释的部分之前添加/*,之后添加*/,形成注释。以下是注释的例子: /*这是一个多行 注释的 语句; */ 系统函数

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

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

标点符号

通常,在写语句的过程中,会用到很多的标点符号。可用来定义参数、定义变量、创建规则的优先权。 例如,TradeBlazer公式用\;\来标注一个语句结束。标点符号也是一个保留字,因为符号也是语言结构的一部分,在下表中列出了TradeBlazer公式中所用到的标点符号,和该标点符号所表达的意思:

符号 ; , () \ [] 名称 分号 逗号 小括号 双引号 中括号 语句结束的标志。 当函数带有多个参数时,用于分隔多个参数。 括号之内的表达式有计算的优先权。 字符串常量。 回溯数据,引用以前的数据,或者数组中的元素。 说明 {} . 大括号 点 控制语句的起始。 扩展数据源的数据调用。 控制语句

TradeBlazer公式支持两大类的控制语句:条件语句和循环语句。

条件语句

条件语句包括以下四类表达方式:

If

If语句是一个条件语句,当特定的条件满足后执行一部分操作。 语法如下: If (Condition) { TradeBlazer公式语句; } Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,您可以计算图表中上升缺口(当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下: Vars NumericSeries Counter(0); Begin If ( Open > High[1]) { Counter = Counter[1] + 1; ... } ... End 在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件

期货程序化交易——交易开拓者(TradeBlazer)公式详细介

下列的关系操作符号都可以应用到逻辑表达式中。操作符===小于大于小于等于大于等于不等于等于说明应用上述的关系运算符,我们可以对两个数值或字符串表达式进行对比,在下列的语句中,我们就是找到一个Bar,它的前一个Bar收盘价要高于前一个Bar最高价:Close>High[1];在字符串的比较运算中,首先是把每一个字符用它的ASCII来
推荐度:
点击下载文档文档为doc格式
5a9b8204u903ypi6btap
领取福利

微信扫码领取福利

微信扫码分享