公式名称规则:
? 不区分大小写;
? 不能超过32个英文字符; ? 每一类公式不能出现相同的名称;
? 公式名称不能出现字母、数字、下划线以外的其他字符; ? 公式名称不能和系统保留字,系统函数等重名。
变量,参数规则:
? 不区分大小写;
? 不能超过32个英文字符; ? 每一个公式内部能不能重复命名;
? 名称不能出现字母、数字、下划线以外的其他字符; ? 名称不能和系统保留字,系统函数等重名; ? 不能使用已定义的用户函数名。
注意: 建议采取匈牙利命名规则命名变量,匈牙利命名规则是 Charles Simonyi 发明的一种给变量取名字的方式。他 在变量前加上变量的类型,这样,看看变量的名字就知道变量的类型了。
语句
一个语句代表一个完全的指示或描述,语句中包含有保留字、操作符、符号。并且语句总是以\;\作为语句结束的标志。
以下为语句的一些例子:
1. 2. 3. 4.
This is one statement; This is another statement; This is This is
one statement; another statement ; 5. 6.
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 =\ ... End 变量在赋值的时候忽略其扩展数据类型,只考虑其基本数据类型,即NumericSeries,NumericRef,Numeric之间可以相互赋值。此时序列数据类型只是对当前Bar的值进行操作。
保留字
保留字都有自己独特的意思或用途,主要是一些功能关键字,系统函数,以及数据类型等。 下面分类列举出系统主要的保留字。
数据类型
包含3种基本类型,共9种数据类型能够,详细说明参见数据类型。
运算符
类型 算术运算符 关系运算符 逻辑运算符 括号 + - * / % ^ > >= < <= == <> AND/&& OR/|| NOT/! (){} [] 保留字 其它 . , 功能关键字
保留字 Params Vars 说明 用该关键字宣告参数定义的起始,参数必须填写默认值。 用该关键字宣告变量定义的起始(可以赋初值), 变量不填写初值时,系统将自动为其填充初值。 If Else Begin End For To DownTo While Break Continue True False 条件语句。 条件语句。 用该关键字宣告程序主体的起始。 用该关键字宣告程序主体的结束。 循环语句。 循环语句。 循环语句。 循环语句。 循环语句。 循环语句。 真。 假。 数据源
保留字 Data0-Data49 支持50个数据源。 说明 数据输出
保留字 FieldBool FieldNumeric FieldString 用户字段的布尔型返回数据。 用户字段的数值型返回数据。 用户字段的字符串返回数据。 说明 PlotBool PlotNumeric PlotString PlotBar UnPlot Alert Buy Sell ... 输出布尔型值。 输出数值型值。 输出字符串值。 画K线型态。 取消指定位置的输出。 报警输出。 买入操作。 卖出操作。 其他系统函数。 操作符
操作符是一些象征具体操作运算行为的符号,例如操作符\代表对两个数求和,这些操作符适用于数值型、字符串、布尔型的数据。
TradeBlazer公式为您提供了多种操作运算符,便于您对保留字的操作和生成更复杂的数据类型、逻辑型、字符串类型的值。下面有四种不同类型的操作符可用于逻辑表达式、数值表达式、字符串表达式中。
数学操作符
数值型表达式的操作符有几种,如下表所示:
操作符 + - * / % ^ () 加 减 乘 除 求模 求幂 括号 说明 这些数学操作按其特定的优先级来进行计算,\求幂)最先,其次是\乘法),\除法)和\求模),加和减最后,如果有多个乘法/除发(或者是加法或减法),那么计算顺序是从左边到右边。 例如,在数值型的表达式中: High+2*range/2; 它首先计算的是range(此处range是指High-Low)与2的积,接着计算与2的商(除法),最后求2*range/2与最高价(High)的和。
如果要找到一个Bar的中间位置,可以尝试写成如下语句: High+Low/2; 然而在上面语句中,首先运算的是以最低价(Low)除于2,然后再与最高价求和。最后的值不是我们所需要的,并且和原来预想中的值是不一致的。
为了处理上述这样的情况,我们在运算符号中引入了括号\,可以用括号来操作和控制运算的规则,先计算括号里面的表达式,不考虑外面的操作符和常量。因此,获取某一个Bar上的中间位置(MidPoint)的语句可如下:
(High+Low)/2; 该语句就是返回最高价和最低价之和的1/2,即Bar的中间位置。
对于除法,有一些特别的提示,众所周知,0不能作为除数,否则将会导致系统溢出。TradeBlazer公式在对脚本进行执行时,碰到除法符号时,都需要对除数进行是否为0的检查,以保证脚本能够正确的执行下去,当遇到除数为0的情况下,我们将会返回一个无效值。
上面描述到求中间位置(MidPoint)的表达式,其实我们可以用另外一种形式来代替它: (High+Low)*0.5; 对于A/B这样的一个表达式,因为不知道B是否为0,所以总是需要对其进行有效性验证,计算的速度会受到一定的影响,因此,对于除法表达式,我们强烈建议使用时尽可能转换为乘法处理,即提高执行速度,也可以避免未知的错误发生。
字符串操作符
\是唯一的可以应用于控制字符串表达式的数学操作符,它可用于连接两个文本字符串为一个字符串。如下:
\这是一个字符串表达式,\返回值为数值型。\\ 上面字符串表达式的输出值,应该是\这是一个字符串表达式,返回值为数值型。\和\this is expression B.\。
关系操作符
逻辑运算符使用下列标准的比较符号,大于、小于、等于、小于等于、大于等于和不等于。